#include <bits/stdc++.h>
using namespace std;
int n;
int g[3844][3844] = {};
int pos[3844] = {}, rem[3844] = {};
int vin[3844] = {}, vout[3844] = {};
char ss[5];
int st, fn, nz;
inline int ctoi(char c) {
  if ('0' <= c && c <= '9') return c - '0';
  if ('a' <= c && c <= 'z') return c - 'a' + 10;
  return c - 'A' + 36;
}
inline char itoc(int i) {
  if (i < 10) return '0' + i;
  if (i < 36) return 'a' + (i - 10);
  return 'A' + (i - 36);
}
stack<int> s;
vector<int> ans, tmp;
char ret[222222];
int main() {
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); ++i) {
    scanf("%s", ss);
    int from = ctoi(ss[0]) * 62 + ctoi(ss[1]);
    int to = ctoi(ss[1]) * 62 + ctoi(ss[2]);
    ++vout[from];
    ++vin[to];
    ++g[from][to];
  }
  int acnt = 0, bcnt = 0;
  for (int i = 0; i < (int)(3844); ++i) {
    if (vin[i] || vout[i]) nz = i;
    if (vin[i] == vout[i]) continue;
    if (vin[i] == vout[i] + 1)
      ++acnt, fn = i;
    else if (vout[i] == vin[i] + 1)
      ++bcnt, st = i;
    else {
      printf("NO\n");
      return 0;
    }
  }
  bool flag = false;
  if (acnt == 0 && bcnt == 0) {
    st = fn = nz;
    flag = true;
  } else if (acnt != 1 || bcnt != 1) {
    printf("NO\n");
    return 0;
  }
  if (!flag) {
    ++g[fn][st];
  }
  s.push(st);
  for (int i = 0; i < (int)(3844); ++i)
    for (int j = 0; j < (int)(3844); ++j) rem[i] += g[i][j];
  while (!s.empty()) {
    int v = s.top();
    s.pop();
    while (rem[v]) {
      s.push(v);
      --rem[v];
      while (g[v][pos[v]] == 0) ++pos[v];
      --g[v][pos[v]];
      v = pos[v];
    }
    ans.push_back(v);
  }
  reverse(ans.begin(), ans.end());
  if (!flag) {
    int sz = (int)ans.size();
    ans.resize(sz - 1);
    --sz;
    for (int i = 0; i < (int)(sz - 1); ++i)
      if (ans[i] == fn && ans[i + 1] == st) {
        for (int j = i + 1; j < sz; ++j) tmp.push_back(ans[j]);
        for (int j = 0; j < (int)(i + 1); ++j) tmp.push_back(ans[j]);
        ans = tmp;
        tmp.clear();
        break;
      }
  }
  if ((int)ans.size() + 1 != n + 2) {
    printf("NO\n");
    return 0;
  }
  for (int i = 0; i < (int)(ans.size()); ++i) {
    ret[i] = itoc(ans[i] / 62);
  }
  ret[(int)ans.size()] = itoc(ans[(int)ans.size() - 1] % 62);
  ret[(int)ans.size() + 1] = '\0';
  printf("YES\n");
  printf("%s\n", ret);
  return 0;
}
