Description
罗曼在学习线性同余发生器——最古老,也是最广为人知的伪随机数生成算法之一。线性同余发生器(LCG)以 x0 为随机种子,生成很多非负整数 xi ,它遵循以下规则:
给定非负整数 a,b,c (0≤x0<c) ,
xi+1=(axi+b) mod c
罗曼很好奇由不同LCG产生的序列之间的关系。特别地,他有 n 个不同的LCG,含有参数 a(j),b(j),c(j) (1≤j≤n)。第 j 个LCG会生成一个序列 xi(j) 。
他希望能从每个LCG产生的序列中挑出一个数,使他们的和最大,且不被给定的 k 整除。
格式化一点来说,他希望找到整数 tj (tj>0,1≤j≤n) ,使s=j=1∑nxtj(j)最大,且s≡0(mod k)。
第 1 行包括两个整数n,k。
(1≤n≤10000,1≤k≤109)
接下来 n 行描述LCG,每行包括4个整数:x0(j),a(j),b(j),c(j) 。
(0≤a(j),b(j)≤1000,0≤x0(j)<c(j)≤1000)
如果有解,第 1 行输出 s,第 2 行输出 n 个 tj 。
(0≤tj≤109) 。
如果无解,输出 −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