Олимпиадный тренинг

Задача . E. Склеивание слов


У Амуга есть предложение, состоящее из \(n\) слов. Он хочет склеить это предложение в одно слово. Амуга не любит повторений, поэтому, когда он склеивает два слова в одно, он удаляет самый длинный префикс второго слова, который совпадает с суффиксом первого слова. Например, слова «sample» и «please» он склеивает в «samplease».

Амуга хочет склеить предложение слева направо (т.е. сначала склеить первые два слова, потом склеить результат с третьим, и так далее). Напишите программу, которая найдет полученное после всех склеиваний слово.

Входные данные

Первая строка содержит одно целое число \(n\) (\(1 \le n \le 10^5\)) — количество слов в предложении Амуга.

Вторая строка содержит \(n\) слов, разделенных единичными пробелами. Каждое слово непусто и состоит из строчных и заглавных латинских букв, а также цифр ('A', 'B', ..., 'Z', 'a', 'b', ..., 'z', '0', '1', ..., '9'). Суммарная длина слов не превосходит \(10^6\).

Выходные данные

Выведите результат после всех склеиваний.


Примеры
Входные данныеВыходные данные
1 5
I want to order pizza
Iwantorderpizza
2 5
sample please ease in out
sampleaseinout

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя