#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const double eps = 1e-8;
const int maxN = 5e3 + 10;
const int maxL = 45;
const int inf = 1e9 + 10;
string a[3];
int cnt[26][3];
inline void init() {
  cin >> a[0] >> a[1] >> a[2];
  for (int i = 0; i < 3; i++)
    for (int j = 0; j < a[i].size(); j++) cnt[a[i][j] - 'a'][i]++;
}
inline void solve() {
  int ans = 0, c1 = 0;
  for (int i = 0; i * a[1].size() <= a[0].size(); i++) {
    bool pos = true;
    for (int j = 0; j < 26; j++) {
      int k1 = cnt[j][0], k2 = i * cnt[j][1];
      if (k1 < k2) {
        pos = false;
        break;
      }
    }
    if (!pos) break;
    int mn = inf;
    for (int j = 0; j < 26; j++) {
      if (cnt[j][2] != 0)
        mn = min(mn, (cnt[j][0] - (i * cnt[j][1])) / cnt[j][2]);
    }
    if (ans < mn + i) {
      ans = mn + i;
      c1 = i;
    }
  }
  for (int i = 0; i < c1; i++) cout << a[1];
  for (int i = 0; i < ans - c1; i++) cout << a[2];
  for (int i = 0; i < 26; i++)
    cnt[i][0] -= cnt[i][1] * c1 + cnt[i][2] * (ans - c1);
  for (int i = 0; i < 26; i++)
    for (int j = 0; j < cnt[i][0]; j++) cout << (char)('a' + i);
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie();
  cout.tie();
  init();
  solve();
  return 0;
}
