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.
sa = input()

a = [0] * 26
for i in sa:
    a[ord(i) - ord('a')] += 1

sb = input()

b = [0] * 26
for i in sb:
    b[ord(i) - ord('a')] += 1

sc = input()

c = [0] * 26
for i in sc:
    c[ord(i) - ord('a')] += 1

def zu(n):
    m = 1000000000
    for i in range(26):
        if n * b[i] > a[i]:
            return -1
        if c[i] > 0:
            m = min(m, (a[i] - n * b[i]) // c[i])
    return n + m

n = 0
m = 0
v = 0
for i in range(100000):
    u = zu(i)
    if u < 0:
        break
    if v < u:
        v = u
        n = i
        m = u - i

for i in range(n):
    print(sb, end = '')
for i in range(m):
    print(sc, end = '')
for i in range(26):
    a[i] -= n * b[i] + m * c[i]
    print(chr(i + ord('a')) * a[i], end = '')

    










