Professor GukiZ doesn't accept string as they are. He likes to swap some letters in string to obtain a new one.

GukiZ has strings *a*, *b*, and *c*. He wants to obtain string *k* by swapping some letters in *a*, so that *k* should contain as many non-overlapping substrings equal either to *b* or *c* as possible. Substring of string *x* is a string formed by consecutive segment of characters from *x*. Two substrings of string *x* overlap if there is position *i* in string *x* occupied by both of them.

GukiZ was disappointed because none of his students managed to solve the problem. Can you help them and find one of possible strings *k*?
The first line contains string *a*, the second line contains string *b*, and the third line contains string *c* (1 ≤ |*a*|, |*b*|, |*c*| ≤ 10<sup class="upper-index">5</sup>, where |*s*| denotes the length of string *s*).

All three strings consist only of lowercase English letters. 

It is possible that *b* and *c* coincide.
def read_data():
    a = input()
    b = input()
    c = input()
    return a, b, c

def count_alphabets(S):
    counts = [0] * 26
    ord_a = ord('a')
    for s in S:
        counts[ord(s) - ord_a] += 1
    return counts

def solve(a, b, c):
    c_a = count_alphabets(a)
    c_a_copy = c_a[:]
    c_b = count_alphabets(b)
    c_c = count_alphabets(c)
    max_x = min(ca // cb for ca, cb in zip(c_a, c_b) if cb)
    record = 0
    best_pair = (0, 0)
    for x in range(max_x + 1):
        c_a = [ca - cb for ca, cb in zip(c_a, c_b)]
        y = min(ca // cc for ca, cc in zip(c_a, c_c) if cc)
        if x + y > record:
            record = x + y
            best_pair = (x, y)
    x, y = best_pair
    residue = [ca - x * cb - y * cc for ca, cb, cc in zip(c_a_copy, c_b, c_c)]
    residue = ''.join([chr(ord('a') + i) * r for i, r in enumerate(residue)])
    return b * x + c * y + residue

if __name__ == '__main__':
    a, b, c = read_data()
    print(solve(a, b, c))