#include <bits/stdc++.h>
using namespace std;
int const mxn = 5e5;
int mark[mxn], po[mxn], deg[mxn];
vector<int> tourans, adj[mxn];
void tourdfs(int v) {
  while (adj[v].size()) {
    int u = adj[v].back();
    adj[v].pop_back();
    tourdfs(u);
  }
  tourans.push_back(v);
}
int n;
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    int v = int(s[0]) * 256 + int(s[1]);
    int u = int(s[1]) * 256 + int(s[2]);
    adj[v].push_back(u);
    deg[v]++, deg[u]--;
  }
  int codd = 0, odd = 0, start = 0;
  for (int i = 1; i < mxn; i++) {
    if (abs(deg[i]) > 1) {
      cout << "NO";
      return 0;
    }
    if (deg[i] == 1) {
      codd++;
      odd = i;
      if (codd >= 2) {
        cout << "NO" << endl;
        return 0;
      }
    }
    if (adj[i].size()) start = i;
  }
  if (codd == 1)
    tourdfs(odd);
  else
    tourdfs(start);
  if (tourans.size() == n + 1) {
    cout << "YES" << endl;
    cout << char((tourans[tourans.size() - 1]) / 256);
    for (int i = tourans.size() - 1; i >= 0; i--) {
      cout << char(tourans[i] % 256);
    }
  } else
    cout << "NO";
}
