#include <bits/stdc++.h>
using namespace std;
const int ALPHABET_LENGTH = 26;
bool has_in_edge[ALPHABET_LENGTH];
bool marked[ALPHABET_LENGTH];
int graph[ALPHABET_LENGTH];
int main() {
  for (int i = 0; i < ALPHABET_LENGTH; i++) {
    graph[i] = -1;
  }
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    int l = s.length();
    for (int j = 0; j < l - 1; j++) {
      marked[s[j] - 'a'] = true;
      graph[s[j] - 'a'] = s[j + 1] - 'a';
    }
    marked[s[l - 1] - 'a'] = true;
  }
  for (int i = 0; i < ALPHABET_LENGTH; i++) {
    if (graph[i] >= 0) {
      has_in_edge[graph[i]] = true;
    }
  }
  string ans;
  for (int i = 0; i < ALPHABET_LENGTH; i++) {
    if (marked[i] && !has_in_edge[i]) {
      ans += 'a' + i;
      int cur = i;
      while (graph[cur] != -1) {
        cur = graph[cur];
        ans += 'a' + cur;
      }
    }
  }
  cout << ans;
  return 0;
}
