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.
from collections import defaultdict


class CodeforcesTask551BSolution:
    def __init__(self):
        self.result = ''
        self.a = ''
        self.b = ''
        self.c = ''

    def read_input(self):
        self.a = input()
        self.b = input()
        self.c = input()

    def process_task(self):
        to_be_used = defaultdict(int)
        for a in self.a:
            to_be_used[a] += 1
        b_d = defaultdict(int)
        c_d = defaultdict(int)

        for a in self.b:
            b_d[a] += 1

        for a in self.c:
            c_d[a] += 1

        mnb = min([to_be_used[x] // b_d[x] for x in b_d.keys()])
        for x in b_d.keys():
            to_be_used[x] -= b_d[x] * mnb
        mnc = min([to_be_used[x] // c_d[x] for x in c_d.keys()])
        for x in c_d.keys():
            to_be_used[x] -= c_d[x] * mnc

        w1 = self.b * mnb + self.c * mnc
        for k in to_be_used.keys():
            if to_be_used[k]:
                w1 += k * to_be_used[k]
                to_be_used[k] = 0
        res1 = mnb + mnc
        for a in self.a:
            to_be_used[a] += 1
        b_d = defaultdict(int)
        c_d = defaultdict(int)

        for a in self.c:
            b_d[a] += 1

        for a in self.b:
            c_d[a] += 1

        mnb = min([to_be_used[x] // b_d[x] for x in b_d.keys()])
        for x in b_d.keys():
            to_be_used[x] -= b_d[x] * mnb
        mnc = min([to_be_used[x] // c_d[x] for x in c_d.keys()])
        for x in c_d.keys():
            to_be_used[x] -= c_d[x] * mnc

        w2 = self.c * mnb + self.b * mnc
        for k in to_be_used.keys():
            if to_be_used[k]:
                w2 += k * to_be_used[k]
        res2 = mnb + mnc
        self.result = w1 if res1 > res2 else w2

    def get_result(self):
        return self.result


if __name__ == "__main__":
    Solution = CodeforcesTask551BSolution()
    Solution.read_input()
    Solution.process_task()
    print(Solution.get_result())
