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

Задача . D. Между домами


В ряд расположено \(n\) домов. Они пронумерованы от \(1\) до \(n\) в порядке слева направо. Изначально вы находитесь у дома \(1\).

Вы хотите совершить \(k\) переходов между домами. Переходом является ходьба от текущего дома к другому дому. Вы не можете стоять на месте (то есть во время каждого перехода другой дом должен отличаться от текущего). Если вы идете от дома \(x\) до дома \(y\), дистанция, которую вы прошли, увеличивается на \(|x-y|\) единиц, где \(|a|\) — абсолютная величина (модуль числа) \(a\). Разрешается посещать один и тот же дом несколько раз (но нельзя посещать один и тот же дом два раза подряд).

Ваша задача — пройти суммарно ровно \(s\) единиц дистанции.

Если это невозможно, выведите «NO». Иначе выведите «YES» и один из возможных способов сделать это. Помните, что вы должны совершить ровно \(k\) переходов.

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

Первая строка входных данных содержит три целых числа \(n\), \(k\), \(s\) (\(2 \le n \le 10^9\), \(1 \le k \le 2 \cdot 10^5\), \(1 \le s \le 10^{18}\)) — количество домов, количество переходов и суммарная дистанция, которую вы должны пройти.

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

Если невозможно совершить ровно \(k\) переходов с суммарной пройденной дистанцией, равной \(s\), выведите «NO».

Иначе выведите «YES» в первой строке и затем выведите ровно \(k\) целых чисел \(h_i\) (\(1 \le h_i \le n\)) во второй строке, где \(h_i\) — дом, к которому вы переходите на \(i\)-м шаге.

Для каждого \(j\) от \(1\) до \(k-1\) должно выполняться следующее условие: \(h_j \ne h_{j + 1}\). Также должно выполняться \(h_1 \ne 1\).


Примеры
Входные данныеВыходные данные
1 10 2 15
YES
10 4
2 10 9 45
YES
10 1 10 1 2 1 2 1 6
3 10 9 81
YES
10 1 10 1 10 1 10 1 10
4 10 9 82
NO

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

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