#P1584. 三元组个数(tuple)

三元组个数(tuple)

题目描述

你在笔记本上写了一个数字 NN,然后拿出了一张草稿纸进行运算:

你先将 NN 平方然后加 11,得到 N0N_0 ,即 N0=(N×N)+1N_0 = (N \times N) + 1

接着将 N0N_0 模了一个正整数 aa,得到 N1N_1,即 N1=N0modaN_1 = N_0 \bmod a

然后你将 N1N_1 加了一个非负整数 bb,得到 N2N_2 ,即 N2=N1+bN_2 = N_1 + b

然后你将 N2N_2 模了一个正整数 cc,得到 N3N_3 ,即 N3=N2modcN_3 = N_2 \bmod c

最后你将 N3N_3 抄回了笔记本,过了几天,你发现草稿纸找不到了并且忘记了运算的中间过程。你希望根据笔记本上的 NNN3N_3 还原出中间的运算过程。

你记得你写的数字不会很大,大约不会超过 PP(1a,cP,0bP)(1 \le a,c \le P, 0 \le b \le P)。你希望知道符合条件的三元组 (a,b,c)(a,b,c) 个数,也想知道具体的方案,但符合条件的三元组个数可能很多,如果超过 105{10}^5 个,输出方案的时候只需要输出字典序最小的 105{10}^5 个三元组即可。

输入格式

一行三个整数 N,N3,PN,N_3,P

输出格式

第一行输出不同的三元组个数 QQ

接下来 min(Q,105)min(Q,{10}^5) 行按字典序输出对应的三元组(aa 小的先输出,若 aa 相同则 bb 小的先输出,若 aabb 均相同则 cc 小的先输出),每行三个数字以空格隔开。若符合条件的三元组个数超过 105{10}^5 ,你只需要输出字典序最小的 10510^5 个三元组。

样例数据

1 2 3
4
1 2 3
2 2 3
3 0 3
3 3 3

大样例

P158401.in/P158401.out

P158402.in/P158402.out

P158403.in/P158403.out

数据范围

0N3,NP,1P105 0 \le N_3, N \le P, 1 \le P \le 10^5