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

Задача . F. kotlinkotlinkotlinkotlin...


Поликарпу очень нравится писать слово «kotlin». Он выписал это слово несколько раз подряд без пробелов. Например, у него могла получиться такая строка «kotlinkotlinkotlinkotlin».

Полученную строку Поликарп порезал на \(n\) частей и перемешал полученные строки. В результате в настоящий момент у него есть \(n\) строк \(s_1, s_2, \dots, s_n\) таких, что их можно объединить в одну строку вида «kotlinkotlin...kotlin», расположив их в подходящем порядке.

Помогите Поликарпу найти такой порядок записи для строк \(s_1, s_2, \dots, s_n\), что если выписать все эти строки в этом порядке, то получится повторённое один или более раз слово «kotlin».

Обратите внимание, что необходимо использовать все заданные строки и при этом каждую ровно по одному разу.

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

В первой строке записано целое число \(n\) (\(1 \le n \le 10^5\)) — количество строк у Поликарпа. Далее идут сами строки. Сумма длин строк не превосходит \(3\cdot10^5\). Гарантируется, что существует такой порядок последовательной записи всех \(n\) строк, что в результате получится повторённое один или более раз слово «kotlin».

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

Выведите \(n\) различных целых чисел \(p_1, p_2, \dots, p_n\) (\(1 \le p_i \le n\)), где \(p_i\) это порядковый номер (индекс) строки, которая должна идти \(i\)-й в искомом объединении. Иными словами, результат конкатенации \(s_{p_1}+s_{p_2}+\dots+s_{p_n}\) должен иметь вид «kotlinkotlin...kotlin». Если решений, выведите любое из них.


Примеры
Входные данныеВыходные данные
1 2
lin
kot
2 1
2 4
linkotlinkotlinkotl
kotlin
in
kot
2 4 1 3
3 8
i
n
tlin
o
ko
t
k
l
7 4 3 5 6 8 1 2

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

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