#include <bits/stdc++.h>
using namespace std;
const int len = 256 * 256;
int in[len], out[len];
vector<int> g[len];
char s[222222][4];
vector<int> euler(int n) {
  int cnt = 0;
  for (int i = 0; i < len; i++) {
    if (in[i] != out[i]) {
      cnt++;
    }
    if (abs(in[i] - out[i]) > 1) return {};
  }
  if (cnt != 0 && cnt != 2) {
    return {};
  } else {
    int s = -1;
    for (int i = 0; i < len; i++) {
      if (in[i] < out[i])
        s = i;
      else if (in[i] == out[i] && in[i] > 0 && s == -1)
        s = i;
    }
    vector<int> ans;
    stack<int> cur;
    cur.push(s);
    while (cur.size()) {
      int v = cur.top();
      if (g[v].size() > 0) {
        cur.push(g[v].back());
        g[v].pop_back();
      } else {
        ans.push_back(v);
        cur.pop();
      }
    }
    if (ans.size() != n + 1) return {};
    reverse(ans.begin(), ans.end());
    return ans;
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < len; i++) {
    out[i] = in[i] = 0;
  }
  for (int i = 0; i < n; i++) {
    scanf("%s", &s[i]);
    int u = s[i][0], v = s[i][1], w = s[i][2];
    int a = u * 256 + v, b = v * 256 + w;
    g[a].push_back(b);
    out[a]++;
    in[b]++;
  }
  vector<int> ans = euler(n);
  if (ans.size() == n + 1) {
    puts("YES");
    printf("%c%c", ans[0] / 256, ans[0] % 256);
    for (int i = 1; i < ans.size(); i++) {
      printf("%c", ans[i] % 256);
    }
    printf("\n");
  } else {
    puts("NO");
  }
}
