З моменту секвенування фага Фі-X174 у 1977 році, послідовності ДНК тисяч організмів було розшифровано та збережено в базах даних. Ці дані аналізуються для визначення генів, що кодують поліпептиди (білки), РНК-генів, регуляторних послідовностей, структурних мотивів і повторюваних послідовностей. Порівняння генів у межах одного виду або між різними видами може виявити подібності у функціях білків або родинні зв'язки між видами (застосування молекулярної систематики для побудови філогенетичних дерев). Зі зростанням обсягу даних виконати аналіз послідовностей ДНК вручну стало неможливо. Сьогодні комп'ютерні програми на кшталт BLAST щодня використовуються для пошуку у послідовностях більше як 260 000 організмів, що містять понад 190 мільярдів нуклеотидів. Такі програми можуть враховувати мутації (заміни, видалення або вставки основ) у ДНК, щоб знаходити споріднені, але не тотожні послідовності. Варіант цього вирівнювання застосовують і у самому процесі секвенування. Так звана техніка "дробного секвенування" (яку, наприклад, використали в Інституті геномних досліджень для секвенування першого бактеріального геному, Haemophilus influenzae) не дає повних хромосом, а натомість породжує безліч коротких фрагментів ДНК (довжиною від до нуклеотидів залежно від використовуваної технології). Їхні кінці перекриваються, і за належного вирівнювання спеціальною програмою можна зібрати повний геном. Дробне секвенування швидко дає великі обсяги даних, але задача збирання фрагментів для великих геномів досить складна. Для людського геному збирання може тривати багато днів процесорного часу на машини з великою пам'яттю та багатьма процесорами, і зібрана послідовність зазвичай містить численні розриви, які пізніше доводиться заповнювати. На сьогодні дробне секвенування — основний метод для майже всіх послідовностей, а методи збирання геномів — одна з найважливіших задач в біоінформатиці.
У вхідних даних задано рядків, кожен з яких має довжину . Всі рядки складаються лише з латинських літер [A-Za-z] (2 \le n \le 100\ 000, 2 \le l \le 100\ 000). Великі та малі літери вважаються різними. У тестах n \times l \le 5 \times 1\ 024 \times 1\ 024 для зменшення обсягу введення/виведення.
Виведіть рядок довжини l + n - 1, такий, що всі дані рядки є його підрядками, кожен починається з іншої позиції. Гарантується, що такий рядок існує. Якщо існує кілька відповідей — виведіть будь-яку.
Приклад 1