#P6979. [NEERC 2015] Generators

[NEERC 2015] Generators

题目描述

罗曼在学习线性同余发生器——最古老,也是最广为人知的伪随机数生成算法之一。线性同余发生器(LCG)以 x0x_0 为随机种子,生成很多非负整数 xix_i ,它遵循以下规则:

给定非负整数 a,b,c (0≤x0<c)a,b,c\space(0≤x_0<c) , xi+1=(axi+b) mod cx_{i+1} = (ax_i+b)\space mod \space c

罗曼很好奇由不同LCG产生的序列之间的关系。特别地,他有 nn 个不同的LCG,含有参数 a(j),b(j),c(j) (1≤j≤n)a^{(j)}, b^{(j)}, c^{(j)}\space(1≤j≤n)。第 jj 个LCG会生成一个序列 xi(j)x_i^{(j)} 。

他希望能从每个LCG产生的序列中挑出一个数,使他们的和最大,且不被给定的 kk 整除。

格式化一点来说,他希望找到整数 tj (tj>0,1≤j≤n)t_j \space(t_j>0,1≤j≤n) ,使s=∑j=1nxtj(j)s=\sum\limits_{j=1}^nx_{t_j}^{(j)}最大,且s≢0(mod k)s\not\equiv0(mod\space k)。

输入格式

第 11 行包括两个整数n,kn,k。

(1≤n≤10000,1≤k≤109)(1≤n≤10000,1≤k≤10^9)

接下来 nn 行描述LCG,每行包括4个整数:x0(j),a(j),b(j),c(j)x_0^{(j)},a^{(j)}, b^{(j)}, c^{(j)} 。

(0≤a(j),b(j)≤1000,0≤x0(j)<c(j)≤1000)(0≤a^{(j)}, b^{(j)}≤1000,0≤x_0^{(j)}<c^{(j)}≤1000)

输出格式

如果有解,第 11 行输出 ss,第 22 行输出 nn 个 tjt_j 。

(0≤tj≤109)(0≤t_j≤10^9) 。

如果无解,输出 −1-1 。

2 3
1 1 1 6
2 4 0 5

8
4 1

2 2
0 7 2 8
2 5 0 6

-1

提示

时间限制:1秒

空间限制:256MB