#P6979. [NEERC 2015] Generators

[NEERC 2015] Generators

Description

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

给定非负整数 a,b,c (0x0<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) (1jn)a^{(j)}, b^{(j)}, c^{(j)}\space(1≤j≤n)。第 jj 个LCG会生成一个序列 xi(j)x_i^{(j)}

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

格式化一点来说,他希望找到整数 tj (tj>0,1jn)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)

Input Format

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

(1n10000,1k109)(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)}

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

Output Format

如果有解,第 11 行输出 ss,第 22 行输出 nntjt_j

(0tj109)(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

Hint

时间限制:1秒

空间限制:256MB