#include <bits/stdc++.h>
using namespace std;
const int N = 4 * 1e5;
int n, numb, degIn[N], degOut[N], start[N];
vector<pair<int, int> > g[N];
vector<int> res;
string subs[N], s[N];
map<string, int> mp;
void addEdge(int u, int v) {
  degOut[u]++;
  degIn[v]++;
  g[u].push_back(make_pair(v, 1));
}
bool checkEulerPath() {
  int v1 = -1;
  int v2 = -1;
  bool bad = false;
  for (int i = 0; i < numb; i++) {
    int d = degIn[i] - degOut[i];
    if (abs(d) > 1) bad = true;
    if (d == 1)
      if (v1 == -1)
        v1 = i;
      else
        bad = true;
    if (d == -1)
      if (v2 == -1)
        v2 = i;
      else
        bad = true;
  }
  if (v1 != -1) {
    addEdge(v1, v2);
  }
  stack<int> st;
  st.push(0);
  while (!st.empty()) {
    int v = st.top();
    int i;
    for (i = start[v]; i < g[v].size(); i++) {
      if (g[v][i].second == 1) break;
    }
    if (i == g[v].size()) {
      res.push_back(v);
      st.pop();
    } else {
      st.push(g[v][i].first);
      g[v][i].second = 0;
      start[v]++;
    }
  }
  for (int i = 0; i < numb; i++) {
    for (int j = 0; j < g[i].size(); j++) {
      if (g[i][j].second) bad = true;
    }
  }
  if (bad) return false;
  reverse(res.begin(), res.end());
  if (v1 != -1) {
    for (int i = 0; i + 1 < res.size(); i++) {
      if (res[i] == v1 && res[i + 1] == v2) {
        vector<int> res2;
        for (int j = i + 1; j < res.size(); j++) res2.push_back(res[j]);
        for (int j = 1; j <= i; j++) res2.push_back(res[j]);
        res = res2;
        break;
      }
    }
  }
  return true;
}
void createGraph() {
  for (int i = 0; i < n; i++) {
    string us = subs[i].substr(0, 2);
    string vs = subs[i].substr(1, 2);
    if (!mp[us]) mp[us] = ++numb;
    if (!mp[vs]) mp[vs] = ++numb;
    int u = mp[us] - 1;
    int v = mp[vs] - 1;
    s[u] = us;
    s[v] = vs;
    addEdge(u, v);
  }
}
int main() {
  cin >> n;
  getline(cin, subs[0]);
  for (int i = 0; i < n; i++) {
    getline(cin, subs[i]);
  }
  createGraph();
  string ans = "";
  if (checkEulerPath()) {
    cout << "YES" << endl;
    for (int i = 0; i < res.size(); i++)
      for (int j = (i == 0 ? 0 : 1); j < 2; j++) printf("%c", s[res[i]][j]);
  } else
    cout << "NO" << endl;
}
