#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
vector<int> adj[maxn];
int deg[maxn];
int N;
string res;
void dfs(int u) {
  while (adj[u].size()) {
    int v = adj[u].back();
    adj[u].pop_back();
    dfs(v);
  }
  res += char(u % 300);
}
signed main(void) {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  if (fopen("A.INP", "r")) {
    freopen("A.INP", "r", stdin);
    freopen("A.OUT", "w", stdout);
  }
  cin >> N;
  int st;
  for (int i = 1; i <= N; ++i) {
    string str;
    cin >> str;
    int u = str[0] * 300 + str[1];
    int v = str[1] * 300 + str[2];
    ++deg[u];
    --deg[v];
    adj[u].push_back(v);
    st = u;
  }
  int cnt = 0;
  for (int i = 1; i < maxn; ++i) {
    if (deg[i] > 1) {
      cout << "NO";
      return 0;
    }
    if (deg[i] == 1) {
      st = i;
      ++cnt;
    }
  }
  if (cnt > 1) {
    cout << "NO";
    return 0;
  }
  dfs(st);
  if (res.size() != N + 1) {
    cout << "NO";
    return 0;
  }
  reverse(res.begin(), res.end());
  cout << "YES\n" << char(st / 300) << res;
}
