#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cstdlib>
#include <iomanip>
#include <ctime>
#include <utility>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define sqr(x) (x)*(x)
#define _with_file
#define TASK ""
#define forn(i, n) for(int i = 0; i < (int)n; ++i)
void quit();
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef long double ld;
typedef pair <int, int> PII;
typedef pair <i64, i64> PII64;
typedef pair <ld, ld> PLL;
const ld PI = acos(-1);
const ld EPS = 1e-10;
double __t;
int val(char c)
{
if (c >= '0' && c <= '9')
return c - '0';
if (c >= 'a' && c <= 'z')
return c - 'a' + 10;
if (c >= 'A' && c <= 'Z')
return c - 'A' + 36;
}
char symb(int x)
{
if (x < 10)
return x + '0';
if (x < 36)
return x + 'a' - 10;
return x + 'A' - 36;
}
int toi(char c1, char c2)
{
return val(c1)*62 + val(c2);
}
string tos(int x)
{
string res = "";
res += symb(x/62);
res += symb(x%62);
return res;
}
int n;
vector <int> g[4000];
int p[4000];
bool u1[4000];
bool u2[4000];
vector <int> ans;
void dfs(int v)
{
u2[v] = 1;
while(p[v] < (int)g[v].size())
dfs(g[v][p[v]++]);
ans.pb(v);
}
int in[4000];
int out[4000];
int bc, ec;
int b, e;
int main()
{
#ifdef local
__t = clock();
#ifndef _with_files
freopen("z.in", "rt", stdin);
freopen("z.out", "wt", stdout);
#endif
#endif
#ifdef _with_files
freopen(TASK".in", "rt", stdin);
freopen(TASK".out", "wt", stdout);
#endif
cin >> n;
string s;
b = -1;
for(int i = 0; i < n; ++i)
{
cin >> s;
g[toi(s[0], s[1])].pb(toi(s[1], s[2]));
u1[toi(s[0], s[1])] = 1;
u1[toi(s[1], s[2])] = 1;
}
for(int i = 0; i < 4000; ++i)
{
out[i] = g[i].size();
for(int j = 0; j < (int)g[i].size(); ++j)
in[g[i][j]]++;
}
for(int i = 0; i < 4000; ++i)
{
if (u1[i])
{
if (in[i] == out[i] + 1)
{
e = i;
ec++;
} else
{
if (in[i] == out[i] - 1)
{
b = i;
bc++;
}
else
{
if (in[i] != out[i])
{
cout << "NO";
quit();
}
}
}
}
}
if (!((bc == 1 && ec == 1) || (bc == 0 && ec == 0)))
{
cout << "NO";
quit();
}
if (b == -1)
{
for(int i = 0; i < 4000; ++i)
{
if (u1[i])
{
b = i;
break;
}
}
}
dfs(b);
for(int i = 0; i < 4000; ++i)
{
if (u1[i] != u2[i])
{
cout << "NO";
quit();
}
}
reverse(ans.begin(), ans.end());
cout << "YES\n";
cout << tos(ans[0])[0];
for(int i = 1; i < (int)ans.size()-1; ++i)
cout << tos(ans[i])[0];
cout << tos(ans.back());
quit();
}
void quit()
{
#ifdef local
cerr << "\nTOTAL TIME: "<< (clock() - __t)/1000.0 << " s\n";
#endif
exit(0);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDx1dGlsaXR5PgoKI2RlZmluZSB4IGZpcnN0CiNkZWZpbmUgeSBzZWNvbmQKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBzcXIoeCkgKHgpKih4KQojZGVmaW5lIF93aXRoX2ZpbGUKI2RlZmluZSBUQVNLICIiCiNkZWZpbmUgZm9ybihpLCBuKSBmb3IoaW50IGkgPSAwOyBpIDwgKGludCluOyArK2kpCgp2b2lkIHF1aXQoKTsgCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgaTY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgcGFpciA8aW50LCBpbnQ+IFBJSTsKdHlwZWRlZiBwYWlyIDxpNjQsIGk2ND4gUElJNjQ7CnR5cGVkZWYgcGFpciA8bGQsIGxkPiBQTEw7Cgpjb25zdCBsZCBQSSA9IGFjb3MoLTEpOwpjb25zdCBsZCBFUFMgPSAxZS0xMDsKZG91YmxlIF9fdDsKCgppbnQgdmFsKGNoYXIgYykKewogICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQogICAgICAgIHJldHVybiBjIC0gJzAnOwogICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQogICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7CiAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCiAgICAgICAgcmV0dXJuIGMgLSAnQScgKyAzNjsKfQoKY2hhciBzeW1iKGludCB4KQp7CiAgICBpZiAoeCA8IDEwKQogICAgICAgIHJldHVybiB4ICsgJzAnOwogICAgaWYgKHggPCAzNikKICAgICAgICByZXR1cm4geCArICdhJyAtIDEwOwogICAgcmV0dXJuIHggKyAnQScgLSAzNjsgCn0KCmludCB0b2koY2hhciBjMSwgY2hhciBjMikKewogICAgcmV0dXJuIHZhbChjMSkqNjIgKyB2YWwoYzIpOyAKfQoKc3RyaW5nIHRvcyhpbnQgeCkKewogICAgc3RyaW5nIHJlcyA9ICIiOwogICAgcmVzICs9IHN5bWIoeC82Mik7CiAgICByZXMgKz0gc3ltYih4JTYyKTsKICAgIHJldHVybiByZXM7Cn0KCmludCBuOwoKdmVjdG9yIDxpbnQ+IGdbNDAwMF07CmludCBwWzQwMDBdOwpib29sIHUxWzQwMDBdOwpib29sIHUyWzQwMDBdOwp2ZWN0b3IgPGludD4gYW5zOwoKdm9pZCBkZnMoaW50IHYpCnsKICAgIHUyW3ZdID0gMTsKICAgIHdoaWxlKHBbdl0gPCAoaW50KWdbdl0uc2l6ZSgpKQogICAgICAgIGRmcyhnW3ZdW3Bbdl0rK10pOwogICAgYW5zLnBiKHYpOwp9CgppbnQgaW5bNDAwMF07CmludCBvdXRbNDAwMF07CgppbnQgYmMsIGVjOwppbnQgYiwgZTsKCmludCBtYWluKCkKewogICAgI2lmZGVmIGxvY2FsCiAgICAgICAgX190ID0gY2xvY2soKTsKICAgICAgICAjaWZuZGVmIF93aXRoX2ZpbGVzCiAgICAgICAgICAgIGZyZW9wZW4oInouaW4iLCAicnQiLCBzdGRpbik7CiAgICAgICAgICAgIGZyZW9wZW4oInoub3V0IiwgInd0Iiwgc3Rkb3V0KTsKICAgICAgICAjZW5kaWYKICAgICNlbmRpZgogICAgI2lmZGVmIF93aXRoX2ZpbGVzCiAgICAgICAgZnJlb3BlbihUQVNLIi5pbiIsICJydCIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLm91dCIsICJ3dCIsIHN0ZG91dCk7CiAgICAjZW5kaWYKICAgIGNpbiA+PiBuOwogICAgc3RyaW5nIHM7CiAgICBiID0gLTE7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgewogICAgICAgIGNpbiA+PiBzOwogICAgICAgIGdbdG9pKHNbMF0sIHNbMV0pXS5wYih0b2koc1sxXSwgc1syXSkpOwogICAgICAgIHUxW3RvaShzWzBdLCBzWzFdKV0gPSAxOwogICAgICAgIHUxW3RvaShzWzFdLCBzWzJdKV0gPSAxOwogICAgfQogICAgZm9yKGludCBpID0gMDsgaSA8IDQwMDA7ICsraSkKICAgIHsKICAgICAgICBvdXRbaV0gPSBnW2ldLnNpemUoKTsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgKGludClnW2ldLnNpemUoKTsgKytqKQogICAgICAgICAgICBpbltnW2ldW2pdXSsrOwogICAgfQogICAgZm9yKGludCBpID0gMDsgaSA8IDQwMDA7ICsraSkKICAgIHsKICAgICAgICBpZiAodTFbaV0pCiAgICAgICAgewogICAgICAgICAgICBpZiAoaW5baV0gPT0gb3V0W2ldICsgMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZSA9IGk7CiAgICAgICAgICAgICAgICBlYysrOwogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGluW2ldID09IG91dFtpXSAtIDEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYiA9IGk7CiAgICAgICAgICAgICAgICAgICAgYmMrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaW5baV0gIT0gb3V0W2ldKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCAiTk8iOwogICAgICAgICAgICAgICAgICAgICAgICBxdWl0KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCEoKGJjID09IDEgJiYgZWMgPT0gMSkgfHwgKGJjID09IDAgJiYgZWMgPT0gMCkpKQogICAgewogICAgICAgIGNvdXQgPDwgIk5PIjsKICAgICAgICBxdWl0KCk7CiAgICB9CiAgICBpZiAoYiA9PSAtMSkKICAgIHsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgNDAwMDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHUxW2ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBiID0gaTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9ICAgCiAgICAgICAgfQogICAgfSAgICAKICAgIGRmcyhiKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCA0MDAwOyArK2kpCiAgICB7CiAgICAgICAgaWYgKHUxW2ldICE9IHUyW2ldKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAiTk8iOwogICAgICAgICAgICBxdWl0KCk7CiAgICAgICAgfQogICAgfSAgCiAgICByZXZlcnNlKGFucy5iZWdpbigpLCBhbnMuZW5kKCkpOwogICAgY291dCA8PCAiWUVTXG4iOwogICAgY291dCA8PCB0b3MoYW5zWzBdKVswXTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPCAoaW50KWFucy5zaXplKCktMTsgKytpKQogICAgICAgIGNvdXQgPDwgdG9zKGFuc1tpXSlbMF07IAogICAgY291dCA8PCB0b3MoYW5zLmJhY2soKSk7CiAgICBxdWl0KCk7Cn0KCnZvaWQgcXVpdCgpCnsKICAgICNpZmRlZiBsb2NhbAogICAgICAgIGNlcnIgPDwgIlxuVE9UQUwgVElNRTogIjw8IChjbG9jaygpIC0gX190KS8xMDAwLjAgPDwgIiBzXG4iOwogICAgI2VuZGlmCiAgICBleGl0KDApOyAgICAgICAgCn0K