#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 2, mod = 1e9 + 7, mod2 = 998244353;
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(6);
  map<char, long long> zip;
  map<long long, char> unzip;
  long long cur = 0;
  for (auto i = '0'; i <= '9'; ++i) unzip[cur] = i, zip[i] = cur++;
  for (auto i = 'A'; i <= 'Z'; ++i) {
    unzip[cur] = i, zip[i] = cur++;
  }
  for (auto i = 'a'; i <= 'z'; ++i) unzip[cur] = i, zip[i] = cur++;
  long long all = cur * cur;
  vector<vector<long long>> g(all), rev(all);
  long long n;
  cin >> n;
  for (long long i = 0; i < n; ++i) {
    string s;
    cin >> s;
    long long fst = zip[s[0]] * cur + zip[s[1]];
    long long snd = zip[s[1]] * cur + zip[s[2]];
    g[fst].push_back(snd);
    rev[snd].push_back(fst);
  }
  long long st = -1, end = -1;
  for (long long i = 0; i < all; ++i) {
    long long sz1 = g[i].size(), sz2 = rev[i].size();
    if (sz1 != sz2) {
      if (abs(sz1 - sz2) > 1) {
        cout << "NO\n";
        return 0;
      }
      if (sz1 - sz2 == 1) {
        if (st == -1)
          st = i;
        else {
          cout << "NO\n";
          return 0;
        }
      }
      if (sz1 - sz2 == -1) {
        if (end == -1)
          end = i;
        else {
          cout << "NO\n";
          return 0;
        }
      }
    }
  }
  if (st == -1) {
    for (long long i = 0; i < cur * cur; ++i)
      if (g[i].size()) {
        st = i;
        break;
      }
    assert(st != -1);
  }
  vector<bool> used(n);
  vector<long long> e(cur * cur), ans;
  vector<long long> stack = {st};
  while (!stack.empty()) {
    long long v = stack.back();
    if (e[v] == g[v].size()) {
      ans.push_back(v);
      stack.pop_back();
    } else {
      stack.push_back(g[v][e[v]]);
      e[v]++;
    }
  }
  reverse(ans.begin(), ans.end());
  if (ans.size() != n + 1) {
    cout << "NO\n";
    return 0;
  }
  cout << "YES\n";
  for (long long i = 0; i < ans.size(); ++i) {
    cout << unzip[ans[i] / cur];
    if (i == ans.size() - 1) cout << unzip[ans[i] % cur];
  }
  cout << '\n';
  return 0;
}
