Del
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}对于给定的长度为 n,仅由字符串构成的数组 \{a_1, a_2, \dots, a_n\},每一个字符串都仅由小写字母构成。对于每一个字符串,你需要恰好删除其中的一个字符,随后将全部字符串按照任意顺序拼接成一个字符串(但是不改变每个字符串内部的顺序)。
\hspace{15pt}请你输出所有可能的拼接结果中,字典序最小的结果。

\hspace{15pt}从字符串的第一个字符开始逐个比较,直至发现第一个不同的位置,比较这个位置字符的字母表顺序,字母序较小的字符串字典序也较小;如果比较到其中一个字符串的结尾时依旧全部相同,则较短的字符串字典序更小。

输入描述:

\hspace{15pt}第一行输入一个整数 n \left(1 \leq n \leq 10^5\right),表示数组的长度。
\hspace{15pt}第二行输入 n 个字符串 a_1, a_2, \dots, a_n \left(1 \leq {\rm length}(a_i) \leq 10^5\right),每个字符串仅由小写字母构成。且至少有一个字符串的长度大于 1

\hspace{15pt}除此之外,保证单个测试文件的字符串长度之和不超过 10^6

输出描述:

\hspace{15pt}输出一个字符串,表示所有可能的拼接结果中,字典序最小的结果。
示例1

输入

复制
1
za

输出

复制
a
示例2

输入

复制
3
za ba bb

输出

复制
aab