#include <bits/stdc++.h>
using namespace std;
int n, in[300300], out[300300];
vector<int> g[300300];
char s[4];
vector<int> v;
string res;
void dfs(int cur) {
  while (!g[cur].empty()) {
    int nxt = g[cur].back();
    g[cur].pop_back();
    dfs(nxt);
  }
  v.push_back(cur);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%s", s);
    int x = (int)(1000 * s[0]) + (int)s[1];
    int y = (int)(1000 * s[1]) + (int)s[2];
    g[x].push_back(y);
    out[x]++;
    in[y]++;
  }
  int start = -1;
  for (int i = 0; i < 300300; i++) {
    if (in[i] + 1 == out[i]) {
      if (start != -1) {
        puts("NO");
        return 0;
      }
      start = i;
    } else if (in[i] == out[i])
      ;
    else if (in[i] == out[i] + 1)
      ;
    else {
      puts("NO");
      return 0;
    }
  }
  if (start == -1) {
    for (int i = 0; i <= 300300; i++) {
      if (out[i] > 0) {
        start = i;
        break;
      }
    }
  }
  dfs(start);
  reverse(v.begin(), v.end());
  if (v.size() != n + 1) {
    puts("NO");
    return 0;
  }
  res += (char)(v[0] / 1000);
  for (__typeof(v.begin()) it(v.begin()); it != v.end(); it++) {
    res += (char)(*it % 1000);
  }
  printf("YES\n%s\n", res.c_str());
  return 0;
}
