#include <bits/stdc++.h>
using namespace std;
string s[105];
vector<int> adj[26];
string ans;
void dfs(int v) {
  ans += char('a' + v);
  if (!adj[v].empty()) dfs(adj[v][0]);
}
int main() {
  int n;
  cin >> n;
  set<int> starts;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    for (int j = 0; j < (int)s[i].size(); j++) {
      if (j == 0) {
        starts.insert(s[i][j] - 'a');
      }
      if (j < (int)s[i].size() - 1) {
        if (adj[s[i][j] - 'a'].empty()) {
          adj[s[i][j] - 'a'].push_back(s[i][j + 1] - 'a');
        }
      }
    }
  }
  set<int>::iterator it;
  for (int i = 0; i < n; i++) {
    for (int j = 1; j < (int)s[i].size(); j++) {
      it = starts.find(s[i][j] - 'a');
      if (it != starts.end()) starts.erase(it);
    }
  }
  for (it = starts.begin(); it != starts.end(); it++) {
    dfs(*it);
  }
  cout << ans << '\n';
}
