bzoj#P4772. 显而易见的数论

显而易见的数论

题目描述

Blice 和阿强巴是好朋友。

但萌萌哒 Blice 不擅长数学,所以阿强巴给了她一些奶牛做联系。

阿强巴有 nn 头奶牛,他需要把这些奶牛划分成若干组,每组种至少有一头奶牛,当 n=5n=5 时,方案 1,1,3\text{{1,1,3}}1,3,1\text{{1,3,1}} 是相同的方案,而方案 1,1,3\text{{1,1,3}}2,3\text{{2,3}} 则是不同的方案。

现在阿强巴想直到有多少种不同的划分方案……不不不,这对于 Blice 时在太简单了,所以阿强巴要出的再难一点。

因此阿强巴又定义了一个二元函数 F(x,y)F(x,y),设一个划分方案数列 pp,长度为 mm(下标从 11 开始),那么对于该划分方案来说,它的价值就是 i=1mj=i+1mF(pi,pj)\sum\limits_{i=1}^m\sum\limits_{j=i+1}^mF(p_i,p_j),显然当 m=1m=1 时,这个划分方案的价值为 00

F(x,y)F(x,y) 的具体含义会在后面给出)

现在阿强巴想直到所有不同的划分方案的价值总和……不不不,这对于 Blice 时在太简单了,所以阿强巴要出的再难一点。

因此阿强巴又生成了一个数列 aa,长度为 kk(下标从 00 开始),他重新定义了划分方案的价值,即 $\sum\limits_{i=1}^m\sum\limits_{j=i+1}^ma_{F(p_i,p_j)\bmod k}$,这里的 F(pi,pj)modpF(p_i,p_j)\bmod p 是数列下标。

Blice 终于不会做了,你能帮帮她吗?

由于答案可能很大,你只需要数处模 109+710^9+7 意义下的答案。

输入格式

共有三种 F(x,y)F(x,y) 的定义,用在第一行输入的一个整数 typetype 来表示
type=1type = 1F(x,y)=1F(x,y)=1
type=2type = 2F(x,y)=gcd(x,y)F(x,y)=\gcd(x,y)
type=3type = 3F(x,y)=xy+yx+xxoryF(x,y)=x^y+y^x+x\operatorname{xor}y
第二行是两个整数 n,kn,k,表示奶牛的数量和数列 aa 的长度。
第三行又 kk 个整数,第 ii 个整数表示 ai1a_{i-1}

输出格式

仅一行,表示最终的答案。

1
3 3
0 1 2
4
2
5 4
4 1 5 2
31
3
7 5
12 11 45 6 2
7346

数据规模与约定

对于 100%100\% 的数据,满足 n2×103n\le 2\times 10^3type1,2,3type\in \text{{1,2,3}}k105k\le 10^5ai[0,107]a_i\in[0,10^7] 且为整数。