给你一个以长度 n 为循环周期的无限长度的正整数序列 a1,a2… 和一个质数 p。不仅如此,还有对这个无限长度的序列的如下两种操作:
†对于两个正整数来说,将这两个数字拼接在一起意味着把这两个数字像字符串一样从左向右连接到一起,从而得到一个新的正整数。举个例子,将 123 和 45 拼接在一起的结果为 12345。
第一行,一个整数 t(1≤t≤104),代表数据组数。
对于每组数据:
第一行,三个整数 n,q,p(1≤n≤3⋅105;1≤q≤3⋅105;109−107≤p≤109+107),分别代表无限序列的循环周期,询问的次数和操作二的模数,保证 p 是一个质数。
第二个,n 个整数 a1,…,an(1≤ai≤109),代表无限循环序列的前 n 个数字。
接下来连续的 q 行,每行现有一个整数 op(1≤op≤2),代表操作的类型。如果 op=1,那么接下来有两个整数 i,j(1≤i,j≤n),代表交换无限循环序列的前 n 个数字中的 ai 和 aj(后面所有周期中的数字也会被交换)。如果 op=2,那么接下来仅有一个数字 x(1≤x≤2⋅109),代表询问将无限循环序列的前 x 个数字拼接在一起后对于 p 取模的结果是多少。
保证对于每组数据,第一个询问的操作类型 op=2。
保证同一测试点内 n 和 q 的和均不会超过 3⋅105。
对于每个操作类型 op=2 的询问,输出一行整数代表答案。
输入样例
2
4 4 998244353
1 2 3 4
2 5
1 2 3
2 2
2 12
6 5 1000000007
1 145 14 19 19 180
2 6
1 1 3
1 5 6
1 2 2
2 916619
输出样例
12341
13
644986728
141911165
47833121