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.
alpha = "abcdefghijklmnopqrstuvwxyz"
dict_alpha = {j: i for i, j in enumerate(alpha)}

def freq(s):
    d = [0] * len(alpha)
    for c in s: d[dict_alpha[c]] += 1
    return d

sa = input()
sb = input()
sc = input()

n = len(sa)
cntA = freq(sa)
cntB = freq(sb)
cntC = freq(sc)
cpy_cntA = cntA.copy()

def highest(d):
    m = n
    for i in range(26):
        if d[i] == 0:
            continue
        mx = cntA[i] // d[i]
        if mx < m: m = mx
    return m

idx_len = (0, 0)
n = highest(cntB)
for i in range(n+1):
    add = highest(cntC)
    if i + add > sum(idx_len):
        idx_len = (i, add)
    for j in range(len(alpha)):
        cntA[j] -= cntB[j]

res = str(sb * idx_len[0]) + str(sc * idx_len[1])
for i in range(26):
    cpy_cntA[i] -= cntB[i] * idx_len[0] + cntC[i] * idx_len[1]
    if len(alpha[i] * cpy_cntA[i]) > 0:
        res += str(alpha[i] * cpy_cntA[i])

print(res)
