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.
from   collections import Counter
import io

def div(a, b):
    result = 1005000
    for ch, count in b.items():
        if count == 0:
            return 0
        result = min(result, a[ch] // count)
    return result

def solve(a, b, c):
    result = 0
    ac = Counter(a)
    bc = Counter(b)
    cc = Counter(c)
    x = div(ac, bc)
    if x != 0:
        result += x
        for k in ac:
            ac[k] -= x * bc[k]
    y = div(ac, cc)
    if y != 0:
        result += y
        for k in ac:
            ac[k] -= y * cc[k]
    s = io.StringIO()
    # print("x = %d, y = %d" % (x, y))
    print(b * x, end="", file=s)
    print(c * y, end="", file=s)
    for k, v in ac.items():
        print(k * v, end="", file=s)
    return (result, s.getvalue())

a = input()
b = input()
c = input()

print(max(solve(a, b, c), solve(a, c, b))[1])
