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.
abc = "abcdefghijklmnopqrstuvwxyz"
dabc = {a: i for i, a in enumerate(abc)}

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

def freq(s):
    d = [0] * len(abc)
    for char in s:
        d[dabc[char]] += 1
    return d

da = freq(sa)
orig = da.copy()
db = freq(sb)
dc = freq(sc)

def highest(d):
    m = len(sa)
    for i, a in enumerate(d):
        if a == 0:
            continue

        lettermax = da[i]//a
        if lettermax < m:
            m = lettermax
    return m

ma = (0, 0)
limit = highest(db)
for i in range(0, limit+1):
    for j in range(0, len(abc)):
        da[j] -= db[j]

    add = highest(dc)
    if i + add > sum(ma):
        ma = (i, add)

l = [sb * ma[0]] + [sc * ma[1]]

for i, a in enumerate(orig):
    orig[i] -= db[i] * ma[0] + dc[i] * ma[1]
    l.append(abc[i] * orig[i])

print("".join(l))
