题目描述
你在笔记本上写了一个数字 N,然后拿出了一张草稿纸进行运算:
你先将 N 平方然后加 1,得到 N0 ,即 N0=(N×N)+1
接着将 N0 模了一个正整数 a,得到 N1,即 N1=N0moda
然后你将 N1 加了一个非负整数 b,得到 N2 ,即 N2=N1+b
然后你将 N2 模了一个正整数 c,得到 N3 ,即 N3=N2modc
最后你将 N3 抄回了笔记本,过了几天,你发现草稿纸找不到了并且忘记了运算的中间过程。你希望根据笔记本上的 N 和 N3 还原出中间的运算过程。
你记得你写的数字不会很大,大约不会超过 P,(1≤a,c≤P,0≤b≤P)。你希望知道符合条件的三元组 (a,b,c) 个数,也想知道具体的方案,但符合条件的三元组个数可能很多,如果超过 105 个,输出方案的时候只需要输出字典序最小的 105 个三元组即可。
输入格式
一行三个整数 N,N3,P。
输出格式
第一行输出不同的三元组个数 Q,
接下来 min(Q,105) 行按字典序输出对应的三元组(a 小的先输出,若 a 相同则 b 小的先输出,若 a 和 b 均相同则 c 小的先输出),每行三个数字以空格隔开。若符合条件的三元组个数超过 105 ,你只需要输出字典序最小的 105 个三元组。
样例数据
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
数据范围
0≤N3,N≤P,1≤P≤105
