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
from array import array

input = lambda: sys.stdin.buffer.readline().decode().strip()
a, b, c = array('u', input()), array('u', input()), array('u', input())
mema = array('i', [0] * 26)
memc = array('i', [0] * 26)
ans = array('u')
lb, lc = 0, 0

for i in a:
    mema[ord(i) - 97] += 1

for i in c:
    memc[ord(i) - 97] += 1

for i in range(0, len(a) + 1, len(b)):
    num, val = 10 ** 9, 1

    for j in range(26):
        if memc[j]:
            num = min(num, mema[j] // memc[j])

    if i + num >= lb + lc:
        lb, lc = i // len(b), num

    for j in b:
        ix = ord(j) - 97
        if not mema[ix]:
            val = 0
            break
        mema[ix] -= 1

    if not val:
        break

for i in range(lb):
    ans.extend(b)
    for j in b:
        mema[ord(j) - 97] -= 1

for i in range(lc):
    ans.extend(c)
    for j in c:
        mema[ord(j) - 97] -= 1

for i in range(26):
    ans.extend(array('u', [chr(i + 97)] * mema[i]))
print(''.join(ans))
