#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class MergeAndLexicographicOrderSort { public: void solve(void) { int N; cin>>N; auto lex_comp = [](string a, string b) { int n = max(a.length(), b.length()); a += string(n-a.length(),'~'); b += string(n-b.length(),'~'); return b,decltype(lex_comp)> S(lex_comp); REP(i,N) { string s; cin>>s; S.push(s); } string T; while (!S.empty()) { string s = S.top(); S.pop(); T += s[0]; s = s.substr(1); if (s.length() > 0) S.push(s); } cout<solve(); delete obj; return 0; } #endif