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 getSig(s):
  freq = {}
  for char in s:
    if char in freq:
      freq[char] += 1
    else:
      freq[char] = 1
  return freq

def getCount(x,y):
  temp = []
  for k in y:
    if k not in x:
      return 0
    cal = int(x[k]/y[k])
    if cal == 0:
      return 0
    temp.append(cal)
  return min(temp)

a = input()
b = input()
c = input()

sig_a = getSig(a)
sig_b = getSig(b)
sig_c = getSig(c)


cnt_b = getCount(sig_a,sig_b)
cnt_c = getCount(sig_a,sig_c)


ans_b = []
ans_c = []
best_b = 0
best_c = 0
if cnt_b > 0 or cnt_c > 0:

  if  cnt_b > 0:
   
    sig_a_b = getSig(a)
    ans_b.append(b*cnt_b)
    
    for k in sig_b:
      sig_a_b[k] -= (sig_b[k]*cnt_b)

    cnt_c_b = getCount(sig_a_b,sig_c)
    ans_b.append(c*cnt_c_b)

    if cnt_c_b > 0:
      for k in sig_c:
        sig_a_b[k] -=  (sig_c[k]*cnt_c_b)
    best_b = cnt_b + cnt_c_b

  if cnt_c> 0 :

    sig_a_c = getSig(a)
    ans_c.append(c*cnt_c)
    
    for k in sig_c:
      sig_a_c[k] -= (sig_c[k]*cnt_c)

    cnt_b_c = getCount(sig_a_c,sig_b)
    ans_c.append(b*cnt_b_c)

    if cnt_b_c > 0:
      for k in sig_b:
        sig_a_c[k] -=  (sig_b[k]*cnt_b_c)
    best_c = cnt_c + cnt_b_c

# print('best_b >> ',best_b)
# print('best_c >> ',best_c)
# print('sig_a:')
# print(sig_a)
if best_b > best_c:
  for k in sig_a_b:
    ans_b.append(k*sig_a_b[k])
 
  # print('sig_ans_b:')
  # print(getSig(''.join(ans_b)))
  # print(len(a),len(''.join(ans_b)))
  # print('<<<<<B>>>>>')
  print(''.join(ans_b))
else:
  for k in sig_a_c:
    ans_c.append(k*sig_a_c[k])

  # print('sig_ans_c:')
  # print(getSig(''.join(ans_c)))
  # print(len(a),len(''.join(ans_c)))
  # print('<<<<<C>>>>>')
  print(''.join(ans_c))
