Генератори#7567

Генератори

1 секунда
64 мегабайти
Складна

Маленький Роман вивчає лінійні конгруентні генератори — один з найстаріших і найвідоміших алгоритмів для генерації псевдовипадкових чисел. Лінійний конгруентний генератор (ЛКГ) починає свою роботу з невід'ємного цілого числа x_0, відомого як насіння, і генерує нескінченну послідовність невід'ємних цілих чисел x_i (0 \le x_i < c), які визначаються за наступним рекурентним співвідношенням:

x_{i+1} = (a \cdot x_i + b) \mod c

де , і — невід'ємні цілі числа, і 0 \le x_0 < c.

Роману цікаво дослідити взаємозв'язки між послідовностями, отриманими різними ЛКГ. У нього є різних ЛКГ з параметрами a^j, b^j і c^j для 1 \le j \le n, де -ий ЛКГ генерує послідовність x^j_i. Він хоче вибрати одне число з кожної послідовності, згенерованої кожним ЛКГ, так, щоб їх сума була максимальною, але не ділилася на задане число . Формально, Роман прагне знайти такі цілі числа t_j \ge 0 для 1 \le j \le n, які максимізують

prb7567.gif

за умови, що s \mod k \ne 0.

Вхідні дані

Перший рядок містить два цілі числа і (1 \le n \le 10000, 1 \le k \le 10^9). Наступні рядків описують ЛКГ. Кожен рядок містить чотири числа x^j_0, a^j, b^j і c^j (0 \le a^j, b^j \le 1000, 0 \le x^j_0 < c^j \le 1000).

Вихідні дані

Якщо задача Романа має розв'язок, то в першому рядку виведіть число — значення найбільшої суми, що не ділиться на , а в другому рядку виведіть чисел t_j (0 \le t_j \le 10^9), які визначають деяке рішення для виведеної суми.

Якщо розв'язку не існує, виведіть в окремому рядку.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading