func_code_string: #include <bits/stdc++.h>   using namespace std;   bool f[200000] = {0};   string ans, s;   multiset<int> g[66000];   int n, in[66000] = {0}, out[66000] = {0}, kol1 = 0, kol2 = 0, start = 0;   void dfs(int v) {     while (!g[v].empty()) {       int tmp = *g[v].begin();       g[v].erase(g[v].begin());       dfs(tmp);     }     ans += char(v % 255);   }   int main() {     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> s;       int v = int(s[0]) * 255 + int(s[1]);       int u = int(s[1] * 255) + int(s[2]);       start = v;       g[v].insert(u);       out[v]++;       in[u]++;     }     for (int i = 1; i <= 65025; i++) {       int d = out[i] - in[i];       if (d == 1) {         kol1++;         start = i;       } else {         if (d == -1)           kol2++;         else if (d != 0) {           cout <<  NO ;           return 0;         }       }       if (kol1 > 1 || kol2 > 1) {         cout <<  NO ;         return 0;       }     }     dfs(start);     ans += char(start / 255);     reverse(ans.begin(), ans.end());     if (ans.length() == n + 2) {       cout <<  YES             <<   n ;       cout << ans;     } else       cout <<  NO ;   }   