#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define repeat(i,n) for (long long i = 0; (i) < (n); ++ (i)) #define debug(x) cerr << #x << ": " << x << '\n' #define debugArray(x,n) for(long long i = 0; (i) < (n); ++ (i)) cerr << #x << "[" << i << "]: " << x[i] << '\n' #define debugArrayP(x,n) for(long long i = 0; (i) < (n); ++ (i)) cerr << #x << "[" << i << "]: " << x[i].first<< " " << x[i].second << '\n' using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair Pii; typedef vector vint; typedef vector vll; const ll INF = INT_MAX; const ll MOD = 1e9+7; int main(){ int N;cin>>N; vector S(N); repeat(i,N){ cin>>S[i]; for(int j=S[i].length();j<51;j++){ S[i] += 'z'+1; } } string ans; while(!S.empty()){ sort(S.begin(),S.end()); ans += S[0][0]; S[0].erase(S[0].begin()); if(S[0][0]=='z'+1)S.erase(S.begin()); } cout << ans << endl; return 0; }