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.
a = input()
b = input()
c = input()

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

let2 = [0]*26
for i in b:
    let2[ord(i)-97] += 1
    
let3 = [0]*26
for i in c:
    let3[ord(i)-97] += 1
    
m = 1000000000
for i in range(26):
    if let2[i] and let1[i]:
        v = let1[i]//let2[i]
        if v < m:
            m = v

# m - максимальное кличество строк b
s = 0
k = a
mem1 = 0
mem2 = 0

for i in range(m+1):
    l = let1.copy()
    
    mc = 1000000000
    for j in range(26):
        if let3[j] != 0:
            l[j] -= let2[j]*i
            if l[j] != 0:
                v = l[j]//let3[j]
                if v < mc:
                    mc = v
            else:
                mc = 0

    # mc - максимальное количество строк с
    if i+mc > s:
        mem1 = i
        mem2 = mc
        s = mem1+mem2
        
        
if s != 0:
    k = b*mem1 + c*mem2
    for i in range(26):
        if let2[i]:
            let1[i] -= let2[i]*mem1
        if let3[i]:
            let1[i] -= let3[i]*mem2
        
        k += (chr(i+97))*let1[i]
        
print(k)