#include <bits/stdc++.h>
using namespace std;
bool f[200000] = {0};
string ans, s;
multiset<int> g[66000];
int n, in[66000] = {0}, out[66000] = {0}, kol1 = 0, kol2 = 0, start = 0;
void dfs(int v) {
  while (!g[v].empty()) {
    int tmp = *g[v].begin();
    g[v].erase(g[v].begin());
    dfs(tmp);
  }
  ans += char(v % 255);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> s;
    int v = int(s[0]) * 255 + int(s[1]);
    int u = int(s[1] * 255) + int(s[2]);
    start = v;
    g[v].insert(u);
    out[v]++;
    in[u]++;
  }
  for (int i = 1; i <= 65025; i++) {
    int d = out[i] - in[i];
    if (d == 1) {
      kol1++;
      start = i;
    } else {
      if (d == -1)
        kol2++;
      else if (d != 0) {
        cout << "NO";
        return 0;
      }
    }
    if (kol1 > 1 || kol2 > 1) {
      cout << "NO";
      return 0;
    }
  }
  dfs(start);
  ans += char(start / 255);
  reverse(ans.begin(), ans.end());
  if (ans.length() == n + 2) {
    cout << "YES"
         << "\n";
    cout << ans;
  } else
    cout << "NO";
}
