题号:NC212002
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
牛牛给你了

个数

,同时他对于
非空集合 
,定义
)
表示其是否合法,其中
)
的值关乎于两个常数

和

。
形式化的说,集合

合法当且仅当存在一组系数

使得:
此时
%3D1)
,否则
现给定
个数

,进行

组查询,每次给定

,求
)
,其中

表示全集。由于结果可能很大,答案需要对

取模。
输入描述:
第一行两个正整数依次表示 n, T
接下来一行 n 个正整数,第 i 个正整数表示
接下来 T 行,每行三个正整数,依次表示 x, k, P
输出描述:
输出共 T 行,每行一个正整数,表示
)
对

取模的结果。
示例1
说明
对于第一组查询 k=1,等价于求有多少个非空集合合法,不难注意到总共有 7 个集合,其中当集合为

时非法,其余情况均合法。
对于第二组查询,

,不难注意到:
而
)
为他们的和,即

示例2
输入
复制
7 5
3 5 2 12 1 6 7
1 1 6
10 1 2
3 2 10
7 3 6
7 4 3
备注:
保证
,保证
的最大质因子
。