You're given a list of *n* strings *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub>. You'd like to concatenate them together in some order such that the resulting string would be lexicographically smallest.

Given the list of strings, output the lexicographically smallest concatenation.
The first line contains integer *n* — the number of strings (1 ≤ *n* ≤ 5·10<sup class="upper-index">4</sup>).

Each of the next *n* lines contains one string *a*<sub class="lower-index">*i*</sub> (1 ≤ |*a*<sub class="lower-index">*i*</sub>| ≤ 50) consisting of only lowercase English letters. The sum of string lengths will not exceed 5·10<sup class="upper-index">4</sup>.
none
4
abba
abacaba
bcd
er
abacabaabbabcder
5
x
xx
xxa
xxaa
xxaaa
xxaaaxxaaxxaxxx
3
c
cb
cba
cbacbc
10
aba
abaaca
aba
acaaaabbac
abaacac
b
cabbcccaab
baacbb
bcab
cc
abaabaabaacaabaacacacaaaabbacbaacbbbbcabcabbcccaabcc
13
clgknjjojyuvdtv
clgknjjojyuvdtvzxz
clgknjjojyuvdtvzxzxradqhm
gvzpnckalbaubfviyhijosiixvxaydxagvymq
clgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymt
bvwzpuut
clgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymth
clgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymtlkdl
rbwvaayhhunlvmwexvkmqbquypsnjbdkkeytthekttywypud
qlvkfkshkxyrfefigtngifxsuhpjgkb
lhxtkfjrrwcvzuamizotupjqckaq
enngvhxvpaoiyhctddyscasyqtilvbvgfphayykjeoylcvmjz
xkazwk
bvwzpuutclgknjjojyuvdtvclgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymtclgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymthclgknjjojyuvdtvjgcwarwvgilcctdiytmvmvfxxkezymtlkdlclgknjjojyuvdtvzxzclgknjjojyuvdtvzxzxradqhmenngvhxvpaoiyhctddyscasyqtilvbvgfphayykjeoylcvmjzgvzpnckalbaubfviyhijosiixvxaydxagvymqlhxtkfjrrwcvzuamizotupjqckaqqlvkfkshkxyrfefigtngifxsuhpjgkbrbwvaayhhunlvmwexvkmqbquypsnjbdkkeytthekttywypudxkazwk
k=[]

n=int(input())
for i in range(n):
    s=input()
    k.append(s)
k.sort()
sum=""
for i in range(0,len(k)):
    sum=sum+k[i]
print(sum)
    
			 	   		   	 		     	  		 		