#include <bits/stdc++.h>
using namespace std;
const int L = 256 * 256;
vector<int> G[L];
string ans;
int cnt[L];
void DFS(int x) {
  while (!G[x].empty()) {
    int wi = G[x][0];
    G[x][0] = G[x].back();
    G[x].pop_back();
    DFS(wi);
  }
  ans += x % 256;
}
int main() {
  int N;
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    char s[10];
    scanf("%s", s);
    int st = s[0] * 256 + s[1], en = s[1] * 256 + s[2];
    G[st].push_back(en);
    cnt[st]++, cnt[en]--;
  }
  int st = -1, count = 0;
  for (int i = 0; i < L; i++) {
    if (cnt[i] >= 1) st = i, count++;
  }
  if (count >= 2 || cnt[st] > 1) {
    printf("NO\n");
    return 0;
  }
  if (st == -1)
    for (st = 0; st < L; st++)
      if (G[st].size() > 0) break;
  DFS(st);
  ans += st / 256;
  reverse(ans.begin(), ans.end());
  if (ans.size() == N + 2)
    printf("YES\n%s\n", ans.c_str());
  else
    printf("NO\n");
}
