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.
s=input()
a=input()
b=input()
t=[0 for i in range(150)]
u=[0 for i in range(150)]
for i in s:
	t[ord(i)]+=1
	u[ord(i)]+=1

x=0
c=""
bb=True
while(bb):
	for i in a:
		t[ord(i)]-=1
	cc=True
	for i in t:
		if i<0:cc=False
	if cc:
		c+=a
		x+=1
	else:
		bb=False
		for i in a:
			t[ord(i)]+=1
bb=True
while(bb):
	for i in b:
		t[ord(i)]-=1
	cc=True
	for i in t:
		if i<0:cc=False
	if cc:
		c+=b
		x+=1
	else:
		bb=False
		for i in b:
			t[ord(i)]+=1
		
y=0
d=""
bb=True
while(bb):
	for i in b:
		u[ord(i)]-=1
	cc=True
	for i in u:
		if i<0:cc=False
	if cc:
		d+=b
		y+=1
	else:
		bb=False
		for i in b:
			u[ord(i)]+=1
bb=True
while(bb):
	for i in a:
		u[ord(i)]-=1
	cc=True
	for i in u:
		if i<0:cc=False
	if cc:
		d+=a
		y+=1
	else:
		bb=False
		for i in a:
			u[ord(i)]+=1
		
for i in range(150):
	if t[i]>0:
		for j in range(t[i]):
			c+=chr(i)
for i in range(150):
	if u[i]>0:
		for j in range(u[i]):
			d+=chr(i)
			
if x>=y:print(c)
else:print(d)		
