rt
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 9, LOGN = 23;
int f[N], fa[N][LOGN], a[29], b[29], m, p, q;
int qpow(int di, int zhi){
int result = 1;
while(zhi > 0){
if(zhi % 2 == 1)
result = result * di % p;
zhi /= 2;
di = di * di % p;
}
return result;
}
signed main(){
scanf("%lld%lld%lld", &m, &q, &p);
for(int i = 1; i <= m; i++)
scanf("%lld%lld", &a[i], &b[i]);
for(int i = 0; i < p; i++){
for(int j = 1; j <= m; j++)
f[i] = (f[i] + a[j] * qpow(i, b[j]) % p) % p;
fa[i][0] = f[i];
}
for(int j = 1, j2 = 2; j2 <= p; j++, j2 <<= 1)
for(int i = 0; i < p; i++)
fa[i][j] = fa[fa[i][j - 1]][j - 1];
for(int i = 1; i <= q; i++){
int x, y;
scanf("%lld%lld", &x, &y);
x %= p;
int t = 0;
while(y){
if(y & 1){
x = fa[x][t];
}
++t;
y >>= 1;
}
printf("%lld\n", x);
}
return 0;
}