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 string
def solve(A,B,C,n):
  m = float('inf')
  for i in string.ascii_lowercase:
    if A[i] < B[i]*n:
      return None
    A[i] -= B[i]*n
  for i in string.ascii_lowercase:
    if A[i] == 0 and C[i] != 0:
      return (n,n)
    if C[i] != 0:
      m = min(m,A[i]//C[i])
  m = int(m)
  return (m+n,n)
a=list(input())
b=list(input())
c=list(input())
s=[]
A,B,C = {},{},{}
for d in string.ascii_lowercase:
  A[d] = 0
  B[d] = 0
  C[d] = 0
for d in a:
  A[d] += 1
for d in b:
  B[d] += 1
for d in c:
  C[d] += 1
answer = (0,0)
n = 0
while True:
  m = solve(dict(A),dict(B),dict(C),n)
  if m is None:
    break
  answer = max(answer,m)
  n += 1
for i in string.ascii_lowercase:
  A[i] -= B[i]*answer[1]
for _ in range(answer[1]):
  s += b
for i in string.ascii_lowercase:
  A[i] -= C[i]*(answer[0]-answer[1])
for _ in range(answer[0]-answer[1]):
  s += c
for i in string.ascii_lowercase:
  s += [i]*A[i]
print(''.join(s))