#include <bits/stdc++.h>
using namespace std;
int N = 1e6;
vector<bool> prime(N + 1, true);
vector<int> che;
void pri(int n) {
  for (int i = 2; i <= min(n, N); i++) {
    if (prime[i]) {
      che.push_back(i);
      for (int j = i * i; j <= n; j += i) {
        prime[j] = false;
      }
    }
  }
  return;
}
string rec(string k, string st) {
  string a = st + k;
  string b = k + st;
  string r = min(a, b);
  return r;
}
bool check(string &a, string &b) {
  if (a + b > b + a)
    return true;
  else
    return false;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<string> second(n);
  for (long long i = 0; i < n; i++) cin >> second[i];
  sort(second.begin(), second.end(), check);
  string st = second[0];
  for (int i = 1; i < n; i++) {
    st = rec(second[i], st);
  }
  cout << st << "\n";
}
