//P9816
#include <cmath>
#include <cstdio>
using namespace std;
const int N = 1000005;
const int M = 30;
int m, a[M], b[M], q, p;
long long f[N][30];
long long power(int A, int B){
long long res = 1;
while (B){
if (B & 1){
res = (res * A) % p;
}
A = (A * A) % p;
B >>= 1;
}
return res;
}
int main(){
scanf("%d%d%d", &m, &q, &p);
for (int i = 1; i <= m; i++){
scanf("%d%d", &a[i], &b[i]);
a[i] %= p;
}
for (int i = 0; i < p; i++){
for (int j = 1; j <= m; j++){
long long now = (a[j] * power(i, b[j])) % p;
f[i][0] = (f[i][0] + now) % p;
}
}
for (int j = 1; j <= 25; j++){
for (int i = 0; i < p; i++){
f[i][j] = f[f[i][j - 1] % p][j - 1] % p;
}
}
while (q--){
long long x, y, ceng = 0;
scanf("%lld%lld", &x, &y);
x %= p;
while (y){
if (y & 1){
x = f[x][ceng];
}
ceng++;
y >>= 1;
}
printf("%lld\n", x);
}
return 0;
}
蒟蒻测了一下,是在36行之前的代码会RE,但是查不出来,回复必关。