#include<bits/stdc++.h>
#define M 300005
using namespace std;
long long m,n,k,a[M],ans[M],ans_num;
queue<long long>q;
int main(){
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
if(a[i]<(-1*k)||a[i]>k)
continue;
q.push(a[i]);
}
for(int i=1;i<=m;i++)
{
int op;
scanf("%d",&op);
if(op==3)
{
ans[++ans_num]=q.size();
}
else
{
long long opx;
scanf("%lld",&opx);
if(op==2)
opx*=-1;
long long nq=q.front();
q.pop();
nq+=opx;
if(nq>=(-1*k)&&nq<=k)
q.push(nq);
}
}
for(int i=1;i<=ans_num;i++)
printf("%lld\n",ans[i]);
return 0;
}