#include <bits/stdc++.h>
using namespace std;
struct slovo {
  char sl[30];
  int dlina;
};
int tabl[26][3];
int main() {
  std::ios::sync_with_stdio(false);
  slovo mas[105];
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> mas[i].sl;
    mas[i].dlina = strlen(mas[i].sl);
  }
  for (int i = 0; i < 26; i++) {
    tabl[i][0] = -1;
    tabl[i][2] = -1;
    tabl[i][1] = 0;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < mas[i].dlina - 1; j++) {
      tabl[int(mas[i].sl[j]) - 97][1] = int(mas[i].sl[j]);
      tabl[int(mas[i].sl[j]) - 97][2] = int(mas[i].sl[j + 1]) - 97;
      tabl[int(mas[i].sl[j + 1]) - 97][1] = int(mas[i].sl[j + 1]);
      tabl[int(mas[i].sl[j + 1]) - 97][0] = int(mas[i].sl[j] - 97);
    }
    if (mas[i].dlina == 1) {
      tabl[int(mas[i].sl[0]) - 97][1] = int(mas[i].sl[0]);
    } else if (mas[i].dlina > 1) {
      tabl[int(mas[i].sl[mas[i].dlina - 1]) - 97][0] =
          int(mas[i].sl[mas[i].dlina - 2]) - 97;
    }
  }
  int ful = 0;
  for (int i = 0; i < 26; i++)
    if (tabl[i][1] != 0) ful++;
  int ful2 = 0;
  for (int i = 0; i < 26; i++)
    if (tabl[i][1] != 0 && tabl[i][0] != -1 && tabl[i][1] != -1) ful2++;
  if (ful == ful2) {
    int st = -1;
    for (int i = 0; i < 26; i++)
      if (tabl[i][0] != -1 && tabl[i][2] != -1) {
        st = i;
        break;
      }
    if (st != -1) {
      int i = st;
      while (tabl[i][2] != -1) {
        if (tabl[i][1] >= 97) cout << char(tabl[i][1]);
        st = tabl[i][2];
        tabl[i][0] = -1;
        tabl[i][1] = 0;
        tabl[i][2] = -1;
        i = st;
      }
    }
  }
  int fl = 1;
  while (fl != 2) {
    int st = -1;
    for (int i = 0; i < 26; i++)
      if (tabl[i][0] == -1 && tabl[i][2] != -1) {
        st = i;
        break;
      }
    if (st == -1) fl = 2;
    if (st != -1) {
      int i = st;
      int vivod_posl = -1;
      while (tabl[i][2] != -1) {
        cout << char(tabl[i][1]);
        st = tabl[i][2];
        tabl[i][0] = -1;
        tabl[i][1] = 0;
        tabl[i][2] = -1;
        i = st;
        vivod_posl = 1;
      }
      if (vivod_posl == 1) {
        cout << char(tabl[i][1]);
        tabl[i][0] = -1;
        tabl[i][1] = 0;
        tabl[i][2] = -1;
      }
    }
  }
  for (int i = 0; i < 26; i++)
    if (tabl[i][1] != 0) {
      cout << char(tabl[i][1]);
      tabl[i][0] = -1;
      tabl[i][1] = 0;
      tabl[i][2] = -1;
    }
  return 0;
}
