#include <bits/stdc++.h>
using namespace std;
const long long M = 1000 + 100;
map<char, char> gha, ba;
map<char, bool> mark, is;
string ans;
inline void do_(string s) {
  for (long long i = (0); i <= (s.length() - 1); i++) {
    if (i != s.length() - 1) ba[s[i]] = s[i + 1];
    if (i != 0) gha[s[i]] = s[i - 1];
    is[s[i]] = true;
  }
}
inline string forward(char c) {
  mark[c] = true;
  string x1 = "";
  x1 += c;
  if (ba[c] == 'F') return x1;
  return c + forward(ba[c]);
}
inline void back() {
  for (long long i = (0); i <= (25); i++) {
    if (!mark[(i + 'a')] && gha[(i + 'a')] == 'F' && is[(i + 'a')]) {
      ans += forward((i + 'a'));
      return;
    }
  }
  cout << ans;
  exit(0);
}
int main() {
  ios::sync_with_stdio(false);
  long long n;
  cin >> n;
  for (long long i = (0); i <= (25); i++) ba[(i + 'a')] = gha[(i + 'a')] = 'F';
  string s;
  for (long long i = (0); i <= (n - 1); i++) cin >> s, do_(s);
  while (true) back();
  return 0;
}
