Codeforces Round 166 (Div. 2) |
---|
Закончено |
Самый Великий Секрет состоит из n слов, пронумерованных натуральными числами от 1 до n. Секрет требуется разделить между k Хранителями (пронумеруем их натуральными числами от 1 до k), i-ый Хранитель получает непустое множество слов c номерами из множества Ui = (ui, 1, ui, 2, ..., ui, |Ui|). Здесь и далее будем подразумевать, что при записи элементов множества они перечисляются в порядке возрастания.
Скажем, что секрет надежно хранится, если выполняются следующие условия:
Напомним, что элементы множества (u1, u2, ..., us) образуют арифметическую прогрессию, если существует такое число d, что для всех i (1 ≤ i < s) выполняется: ui + d = ui + 1. Например, элементы множеств (5), (1, 10) и (1, 5, 9) образуют арифметические прогрессии, а множеств (1, 2, 4) и (3, 6, 8) — не образуют.
Вам требуется найти разбиение множества слов на подмножества U1, U2, ..., Uk, чтобы секрет был надежно сохранен, либо указать, что искомого разбиения не существует.
Входные данные состоят из единственной строки, в которой записаны два целых числа n и k (2 ≤ k ≤ n ≤ 106) — количество слов в секрете и количество Хранителей. Числа разделены единственным пробелом.
Если не существует ни одного способа надежно хранить секрет, то выведите единственное целое число «-1» (без кавычек). Иначе выведите n целых чисел, i-ое из которых означает номер Хранителя, которому принадлежит i-ое слово секрета.
Если существует несколько решений, то выведите любое.
11 3
3 1 2 1 1 2 3 2 2 3 1
5 2
-1
Название |
---|