#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdtr1c++.h>
using namespace std;
inline static const nullptr_t _={\n ios::sync_with_stdio(0);
cin.tie(nullptr),cout.tie(nullptr);
return nullptr;
}();
int n;vector g[100005];char ch=127,ch2=0;
tr1::unordered_map<char,bool> vis;
void dfs(char c){
cout.put(c);
vis[c] = true;
for(int i=0;i<g[c].size();i++){
if(!vis[g[c][i]]){
dfs(g[c][i]);
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
char c1,c2;
cin>>c1>>c2;
ch=min(c1,c2);
ch2=max(c1,c2);
g[c1].emplace_back(c2);
g[c2].emplace_back(c1);
}
for(int i=ch;i<=ch2;i++) if(!g[i].empty()) stable_sort(g[i].begin(),g[i].end());
cout.put(ch);
dfs(ch);
cout.put(10);
return 0;
}