#include <bits/stdc++.h>
using namespace std;
int I[66000], O[66000], N;
multiset<int> E[66000];
string S;
void p(int n) {
  while (!E[n].empty()) {
    int v = *E[n].begin();
    E[n].erase(E[n].begin());
    p(v);
  }
  S += (char)(n % 256);
}
int main() {
  cin >> N;
  for (int i = (1); i <= (N); i++) {
    string s;
    cin >> s;
    int a = s[0] * 256 + s[1];
    int b = s[1] * 256 + s[2];
    E[a].insert(b);
    O[a]++, I[b]++;
  }
  int r = 0, l = 0, v = -1;
  for (int i = (0); i <= (66000 - 1); i++) {
    if (I[i] > O[i] + 1 || O[i] > I[i] + 1) {
      cout << "NO";
      return 0;
    }
    if (I[i] > O[i]) r++;
    if (O[i] > I[i]) l++, v = i;
    if ((I[i] || O[i]) && v < 0) v = i;
  }
  if (r > 1 || l > 1) {
    cout << "NO";
    return 0;
  }
  p(v);
  reverse(S.begin(), S.end());
  for (int i = (0); i <= (65999); i++)
    if (!E[i].empty()) {
      cout << "NO";
      return 0;
    }
  cout << "YES\n" << (char)(v / 256) << S;
}
