#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > al;
const int N = 128 * 128 + 128;
int n;
int d[N + 2];
vector<int> ans;
int r;
string id(int u) {
  string s;
  s.push_back(u / 128);
  s.push_back(u % 128);
  return s;
}
char trans(int u) {
  char c = u % 128;
  return c;
}
void dfs(int u) {
  while (al[u].size() != 0) {
    int t = al[u].back();
    al[u].pop_back();
    dfs(t);
  }
  ans.push_back(u);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  al.assign(N, vector<int>());
  for (int(i) = (1); (i) <= (n); (i)++) {
    string s;
    cin >> s;
    int st = s[0] * 128 + s[1];
    int en = s[1] * 128 + s[2];
    d[st]++;
    d[en]--;
    r = st;
    al[st].push_back(en);
  }
  int cnt = 0;
  int s = -1;
  for (int(i) = (1); (i) <= (N); (i)++) {
    if (d[i] == 1) {
      cnt++;
      s = i;
    }
    if (d[i] > 1) return cout << "NO", 0;
  }
  if (cnt > 1) return cout << "NO", 0;
  if (cnt == 0) s = r;
  if (s == -1) return cout << "NO", 0;
  dfs(s);
  string res;
  if (ans.size() != n + 1) return cout << "NO", 0;
  cout << "YES\n";
  res += id(ans[ans.size() - 1])[0];
  for (int i = ans.size() - 1; i >= 0; i--) {
    res += trans(ans[i]);
  }
  cout << res;
}
