#include <bits/stdc++.h>
using namespace std;
const int MX = 2e6 + 10;
const int mod = 1e9 + 7;
const long long int inf = 1LL << 62;
int dx4[] = {0, 0, -1, 1};
int dy4[] = {1, -1, 0, 0};
int dx[] = {1, 1, 1, 0, 0, -1, -1, -1};
int dy[] = {1, 0, -1, 1, -1, 1, 0, -1};
struct node {
  string str;
  char min_ch;
};
vector<node> vec;
bool cmp(node a, node b) { return a.str + b.str < b.str + a.str; }
int main() {
  long long int n, m, k, q, t, cnt = 0, sum = 0, mx = -inf, mn = inf;
  string str;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> str;
    char ch = *min_element((str).begin(), (str).end());
    vec.push_back({str, ch});
  }
  sort((vec).begin(), (vec).end(), cmp);
  str = "";
  for (auto it : vec) str += it.str;
  cout << (str) << endl;
  return 0;
}
