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.
def main():
    import sys
    
    a, b, c = sys.stdin.read().split()
    la = [0] * 26
    lb = [0] * 26
    lc = [0] * 26
    for i in a: la[ord(i) - ord('a')] += 1
    for i in b: lb[ord(i) - ord('a')] += 1
    for i in c: lc[ord(i) - ord('a')] += 1
    
    result = 0
    res_b = res_c = 0
    for i in range(10 ** 5):
        t = float("inf")
        for j in range(26):
            if la[j] < lb[j] * i:
                t = -1
                break
            if lc[j]:
                t = min(t, (la[j] - lb[j] * i) // lc[j])
        if t < 0:
            break
        if i + t > result:
            res_b, res_c = i, t
            result = i + t
    
    result = b * res_b + c * res_c
    result += ''.join(chr(i + ord('a')) * (la[i] - lb[i] * res_b - lc[i] * res_c) for i in range(26))
    
    sys.stdout.write(''.join(result))
    
    
main()
