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.
from fileinput import *

for line in input():
    if lineno() == 1:
        a = line.strip()
    if lineno() == 2:
        b = line.strip()
    if lineno() == 3:
        c = line.strip()

la = len(a)
list_a = list(a)
ld = []

lb = len(b)
lc = len(c)

def how_many_sets(substring, string):
    ls = len(substring)
    range_obj = range(ls)
    count = [0] * ls 
    string_list = list(string)

    for i in range(ls):
        letter = substring[i]
        if letter in string_list:
            del string_list[string_list.index(letter)]
        else:
            return 0

    return 1 + how_many_sets(substring, ''.join(string_list))

        
mb = how_many_sets(b, a)
mc = how_many_sets(c, a)

if mb < mc:
    b, c = c, b
    lb, lc = lc, lb
    mb, mc = mc, mb

answer = b * mb

for i in range(len(answer)):
    del list_a[list_a.index(answer[i])]

aa = ''.join(list_a)
mc = how_many_sets(c, aa)

answer += c * mc
list_a = list(a)

for i in range(len(answer)):
    del list_a[list_a.index(answer[i])]

answer = answer + ''.join(list_a)
print(answer)


