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.
import sys, os, io
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline

a = list(input().rstrip())
b = list(input().rstrip())
c = list(input().rstrip())
ca, cb, cc = [0] * 26, [0] * 26, [0] * 26
for i in a:
    ca[i - 97] += 1
for i in b:
    cb[i - 97] += 1
for i in c:
    cc[i - 97] += 1
n = len(a)
ok = 1
inf = pow(10, 9) + 1
u0, v0 = 0, 0
for u in range(n + 1):
    v = inf
    for i in range(26):
        x = ca[i] - u * cb[i]
        if x < 0:
            ok = 0
            break
        if cc[i]:
            v = min(v, x // cc[i])
    if not ok:
        break
    if u0 + v0 < u + v:
        u0, v0 = u, v
ans = []
for _ in range(u0):
    for i in b:
        ans.append(chr(i))
        ca[i - 97] -= 1
for _ in range(v0):
    for i in c:
        ans.append(chr(i))
        ca[i - 97] -= 1
for i in range(26):
    ans.append(chr(i + 97) * ca[i])
sys.stdout.write("".join(ans))