#include <bits/stdc++.h>
using namespace std;
string s[300000];
int step[50000], nexxt[300000], a[300000], last[50000];
string tr[50000];
bool b[300000];
int all = 0;
string anss = "", ans1 = "";
void add(int x, int y, string s1) {
  all++;
  nexxt[all] = last[x];
  a[all] = y;
  last[x] = all;
  tr[x] = "";
  tr[x].push_back(s1[0]);
  tr[x].push_back(s1[1]);
  tr[y] = "";
  tr[y].push_back(s1[1]);
  tr[y].push_back(s1[2]);
}
void ans(int v) {
  b[v] = true;
  int t = last[v];
  while (t > 0) {
    last[v] = nexxt[t];
    ans(a[t]);
    t = last[v];
  }
  if (anss.length() == 0)
    anss = tr[v];
  else {
    ans1.push_back(tr[v][0]);
  }
}
int main() {
  int n;
  for (int i = 0; i <= 49999; i++) {
    b[i] = true;
    step[i] = 0;
    last[i] = 0;
  }
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> s[i];
    step[s[i][0] + s[i][1] * 107]++;
    step[s[i][1] + s[i][2] * 107]--;
    add(s[i][0] + s[i][1] * 107, s[i][1] + s[i][2] * 107, s[i]);
  }
  int start = -1;
  int t = 0;
  for (int i = 1; i <= n; i++) {
    if (b[s[i][0] + s[i][1] * 107]) {
      if (step[s[i][0] + s[i][1] * 107] != 0) t++;
      if (step[s[i][0] + s[i][1] * 107] == 1) start = s[i][0] + s[i][1] * 107;
      b[s[i][0] + s[i][1] * 107] = false;
    }
    if (b[s[i][1] + s[i][2] * 107]) {
      if (step[s[i][1] + s[i][2] * 107] != 0) t++;
      if (step[s[i][1] + s[i][2] * 107] == 1) start = s[i][1] + s[i][2] * 107;
      b[s[i][1] + s[i][2] * 107] = false;
    }
  }
  if (t > 2) {
    cout << "NO" << endl;
  } else {
    if (t == 0) start = s[1][0] + s[1][1] * 107;
    if (start == -1) {
      cout << "NO";
      return 0;
    }
    for (int i = 0; i <= 49999; i++) {
      b[i] = false;
    }
    ans(start);
    for (int i = 1; i <= n; i++)
      if (b[s[i][0] + s[i][1] * 107] == false ||
          b[s[i][1] + s[i][2] * 107] == false) {
        cout << "NO";
        return 0;
      }
    cout << "YES" << endl;
    for (int i = ans1.length() - 1; i > -1; i--) {
      cout << ans1[i];
    }
    cout << anss;
  }
}
