这顶多绿吧!
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,Q,M;
int tree[800010];
void update(int l,int r,int rt,int a,int b){
if(l==r){
tree[rt]=b;
return;
}
int mid=(l+r)>>1;
if(a<=mid) update(l,mid,rt<<1,a,b);
else update(mid+1,r,rt<<1|1,a,b);
tree[rt]=tree[rt<<1]*tree[rt<<1|1]%M;
return;
}
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&Q,&M);
int N=4*Q;
for(int i=1;i<=80000;i++) tree[i]=1;
for(int k=1;k<=Q;k++){
int op,m;
scanf("%lld%lld",&op,&m);
if(op==1) update(1,N,1,k,m);
else update(1,N,1,m,1);
printf("%lld\n",tree[1]);
}
}
return 0;
}