eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Генераторы

Генераторы

Маленький Роман изучает линейные конгруэнтные генераторы - один из старейших и наиболее известных алгоритмов генерации псевдослучайных чисел. Линейный конгруэнтный генератор (ЛКГ) начинает свою работу с неотрицательного целого числа x0 известного как семя и производит бесконечную последовательность неотрицательных целых чисел xi (0xi < c), которые задаются следующим рекуррентным соотношением:

xi+1 = (a *xi + b) mod c

здесь a, b и c - неотрицательные целые и 0x0 < c.

Роману любопытны соотношения между последовательностями, полученными разными ЛКГ. У него имеется n различных ЛКГ с параметрами aj, bj и cj для 1jn, где j-ый ЛКГ генерирует последовательность xj[i]. Он хочет выбрать одно число из каждой последовательности сгенерированной каждой ЛКГ так чтобы их сумма была наибольшей, но не делится на заданное число k. Формально, Роман хочет найти такие целые числа tj0 для 1jn, которые максимизируют

prb7567.gif

при условии что s mod k0.

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

Первая строка содержит два целых числа n и k (1n10 000, 1k109). Следующие n строк характеризуют ЛКГ. Каждая строка содержит четыре числа xj[0] , aj, bj и cj (0aj, bj1000, 0xj[0] < cj1000).

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

Если задача Романа имеет решение, то в первой строке вывести число s - значение наибольшей суммы, не делящейся на k, а во второй строке вывести n чисел tj (0tj109) задающих некоторое решение для выведенной суммы.

Иначе в отдельной строке выведите -1.

Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
2 3
1 1 1 6
2 4 0 5
Выходные данные #1
8
4 1
Входные данные #2
2 2
0 7 2 8
2 5 0 6
Выходные данные #2
-1
Источник 2015 ACM NEERC, Semifinals, December 6, Problem G