#include <bits/stdc++.h>
using namespace std;
void boost() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
int timer = 0;
string pas;
int mf;
map<string, vector<string> > g;
map<string, int> used, deg_in, deg_out, alll;
vector<string> lll;
void DFS(string u) {
  for (; used[u] < g[u].size();) {
    string v = g[u][used[u]];
    used[u]++;
    DFS(v);
  }
  mf++;
  lll.push_back(u);
}
int n;
int main() {
  boost();
  cin >> n;
  string start = "";
  for (int k = 1; k <= n; k++) {
    string s;
    cin >> s;
    string a, b;
    a += s[0];
    a += s[1];
    b += s[1];
    b += s[2];
    alll[a] = 1;
    alll[b] = 1;
    deg_in[b]++;
    deg_out[a]++;
    start = a;
    g[a].push_back(b);
  }
  int ind1 = 0, ind2 = 0, ind3 = 0;
  map<string, int>::iterator it;
  for (it = alll.begin(); it != alll.end(); it++) {
    string k = it->first;
    if (deg_in[k] != deg_out[k]) {
      if (ind1 == 0 && deg_in[k] - deg_out[k] == -1) {
        ind1++;
        start = k;
      } else {
        if (ind2 == 0 && deg_in[k] - deg_out[k] == 1) {
          ind2++;
        } else {
          cout << "NO";
          return 0;
        }
      }
    }
  }
  DFS(start);
  if (mf != n + 1) {
    cout << "NO";
    return 0;
  } else {
    reverse(lll.begin(), lll.end());
    cout << "YES" << endl;
    cout << lll[0];
    for (int i = 1; i < lll.size(); i++) cout << lll[i][1];
  }
  return 0;
}
