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.
contest = True
if not contest:
    fin = open("in", "r")
inp = input if contest else lambda: fin.readline()[:-1]
read = lambda: tuple(map(int, inp().split()))

cstr = lambda s: dict([[v, s.count(v)] for v in set(s)])

s, a, b = inp(), inp(), inp()
ks, ka, kb = cstr(s), cstr(a), cstr(b)

def suka(ks, kx, minusV, minusK):
    ans = ""
    d = 10**10
    for k in kx:
        if not k in ks: return 0
        c = ks[k]
        if k in minusV:
            c -= minusV[k] * minusK
        d = min(max(c, 0) // kx[k], d)
    #print(d, ka, b * d)
    return d

da = suka(ks, ka, ka, 0)
mx = 0
ans = (-1, -1)
for dai in range(0, da+1):
    db = suka(ks, kb, ka, dai)
    if dai + db >= mx:
        ans = (dai, db)
for k in ks:
    if k in ka: ks[k] -= ans[0] * ka[k]
    if k in kb: ks[k] -= ans[1] * kb[k]
print(ans[0] * a + ans[1] * b + "".join([str(k * ks[k]) for k in ks]))
