#include <bits/stdc++.h>
using namespace std;
typedef struct Edge {
  int u, v;
  Edge(int u = 0, int v = 0) : u(u), v(v) {}
} Edge;
int id(char a) {
  if (a >= 'a' && a <= 'z')
    return a - 'a';
  else if (a >= 'A' && a <= 'Z')
    return a - 'A' + 26;
  else
    return a - '0' + 52;
}
int id(char s[]) { return id(s[0]) * 62 + id(s[1]); }
char reid(int a) {
  if (a < 26)
    return a + 'a';
  else if (a < 52)
    return a - 26 + 'A';
  else
    return a - 52 + '0';
}
int n, in[5000] = {0}, out[5000] = {0}, cur[5000] = {0}, E = -1, S = -1, c = 0,
       r[200005], ed = 0, cnt[5000], le, ri;
char s[5];
bool vis[200005] = {0}, v[5000] = {0};
Edge edge[200005];
vector<int> G[5000];
void AddEdge(int u, int v) {
  edge[c] = Edge(u, v);
  G[u].push_back(c++);
}
void input() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%s", s);
    le = id(s), ri = id(s + 1);
    v[le] = v[ri] = 1;
    if (ri == le) {
      cnt[ri]++;
      continue;
    }
    in[le]++;
    out[ri]++;
    AddEdge(ri, le);
  }
}
void dfs(int x) {
  v[x] = 0;
  for (int &i = cur[x]; i < G[x].size(); i++) {
    if (!vis[G[x][i]]) {
      vis[G[x][i]] = 1;
      dfs(edge[G[x][i]].v);
    }
  }
  r[ed++] = x;
}
int main() {
  input();
  for (int i = 0; i < 62; i++)
    for (int j = 0; j < 62; j++) {
      if (out[i * 62 + j] - in[i * 62 + j] == 1) {
        if (S == -1)
          S = i * 62 + j;
        else {
          cout << "NO" << endl;
          return 0;
        }
      } else if (out[i * 62 + j] - in[i * 62 + j] == -1) {
        if (E == -1)
          E = i * 62 + j;
        else {
          cout << "NO" << endl;
          return 0;
        }
      } else if (out[i * 62 + j] != in[i * 62 + j]) {
        cout << "NO" << endl;
        return 0;
      }
    }
  if (S == -1) S = E = le;
  dfs(S);
  for (int i = 0; i < 5000; i++)
    if (v[i]) {
      cout << "NO" << endl;
      return 0;
    }
  if (r[0] != E) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (int i = 0; i < ed; i++) {
    printf("%c", reid(r[i] / 62));
    while (cnt[r[i]]) {
      printf("%c", reid(r[i] / 62));
      cnt[r[i]]--;
    }
  }
  printf("%c", reid(r[ed - 1] % 62));
  cout << endl;
  return 0;
}
