100 atcoder#ABC042B. [ABC042B] 文字列大好きいろはちゃんイージー

[ABC042B] 文字列大好きいろはちゃんイージー

配点 : 200200

問題文

いろはちゃんは 長さ LL の文字列を NN 個持っており、それぞれ S1,S2,...,SNS_1, S_2, ..., S_N です。

それらの文字列を好きな順番で全て結合してできる文字列のうち、もっとも辞書順で小さいものを求めてください。

なお、ある文字列 s=s1s2s3s=s_1s_2s_3...sns_nt=t1t2t3t=t_1t_2t_3...tmt_m について、以下のどちらかを満たすとき、辞書順比較で $s であるといいます。

  • ある整数 i(1imin(n,m))i(1 \leq i \leq min(n,m)) に関して、 1jを満たす任意の整数1 \leq j を満たす任意の整数 jにおいて において s_j = t_jが成立し、かつ が成立し、かつ s_i が成立する。
  • 任意の整数 i(1imin(n,m))i(1 \leq i \leq min(n,m)) に関して si=tis_i = t_i が成立し、かつ $n が成立する。

制約

  • 1N,L1001 \leq N, L \leq 100
  • 全ての i(1iN)i (1 \leq i \leq N) に対し、SiS_i の長さは LL に等しい。
  • ii について, SiS_i は全て半角英小文字のみから成る文字列である。

入力

入力は以下の形式で標準入力から与えられる。

NN LL

S1S_1

S2S_2

:

SNS_N

出力

与えられる文字列を好きな順番で全て結合してできる文字列のうち、もっとも辞書順で小さいものを出力せよ。

3 3
dxx
axx
cxx
axxcxxdxx

与えられた文字列を axx,cxx,dxx という順番に並び替えてから結合することで、辞書順最小を達成できます。