#include<bits/stdc++.h>
#define lld long long int
#define MAX 400005
using namespace std;
lld tree[MAX];
lld lazy[MAX]={0};
lld a[100005];
void init(int i,int start,int end)
{
if(start==end)
{
tree[i] = a[start];
return;
}
int mid = (start+end)/2;
init(2*i,start,mid);
init(2*i+1,mid+1,end);
tree[i] = min(tree[2*i],tree[2*i+1]);
}
lld X(int i,int start,int end,lld x)
{
if(lazy[i]!=0)
{
tree[i] = tree[i]+lazy[i];
if(start>end)
{
lazy[2*i]+=lazy[i];
lazy[2*i+1]+=lazy[i];
}
lazy[i]=0;
}
if(tree[i]>=x)
{
return end-start+1;
}
if(start==end)
{
return (tree[i]>=x)?1:0;
}
int mid = (start+end)/2;
return X(2*i,start,mid,x) + X(2*i+1,mid+1,end,x);
}
void Y(int i,int start,int end,lld y)
{
if(lazy[i]!=0)
{
tree[i] = tree[i]+lazy[i];
if(start>end)
{
lazy[2*i]+=lazy[i];
lazy[2*i+1]+=lazy[i];
}
lazy[i]=0;
}
if(tree[i]>=y)
{
tree[i] = tree[i]-1;
if(start>end)
{
lazy[2*i]-=1;
lazy[2*i+1]-=1;
}
return;
}
if(start==end)
return;
int mid = (start+end)/2;
Y(2*i,start,mid,y);
Y(2*i+1,mid+1,end,y);
}
void add(int i,int start,int end,int index)
{
if(lazy[i]!=0)
{
tree[i] = tree[i]+lazy[i];
if(start>end)
{
lazy[2*i]+=lazy[i];
lazy[2*i+1]+=lazy[i];
}
lazy[i]=0;
}
if(start>index||end<index)
return;
if(start==end&&start==index)
{
tree[i] = tree[i]+1;
return;
}
if(start<=index&&index<=end)
{
if(tree[i]==a[index])
tree[i]=tree[i]+1;
}
int mid = (start+end)/2;
add(2*i,start,mid,index);
add(2*i+1,mid+1,end,index);
}
int main()
{
lld n,q,m;
scanf("%lld",&n);
scanf("%lld",&q);
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
init(1,0,n-1);
memset(lazy,0,sizeof(lazy));
int type;
while(q--)
{
scanf("%d",&type);
scanf("%lld",&m);
switch(type)
{
case 1:
m--;
add(1,0,n-1,m);
break;
case 2:
printf("%lld\n",X(1,0,n-1,m));
break;
case 3:
Y(1,0,n-1,m);
break;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbGQgbG9uZyBsb25nIGludAojZGVmaW5lIE1BWCA0MDAwMDUKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxsZCB0cmVlW01BWF07CmxsZCBsYXp5W01BWF09ezB9OwoKbGxkIGFbMTAwMDA1XTsKCnZvaWQgaW5pdChpbnQgaSxpbnQgc3RhcnQsaW50IGVuZCkKewogICAgaWYoc3RhcnQ9PWVuZCkKICAgIHsKICAgICAgICB0cmVlW2ldID0gYVtzdGFydF07CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChzdGFydCtlbmQpLzI7CiAgICBpbml0KDIqaSxzdGFydCxtaWQpOwogICAgaW5pdCgyKmkrMSxtaWQrMSxlbmQpOwogICAgdHJlZVtpXSA9IG1pbih0cmVlWzIqaV0sdHJlZVsyKmkrMV0pOwp9CgpsbGQgWChpbnQgaSxpbnQgc3RhcnQsaW50IGVuZCxsbGQgeCkKewogICAgaWYobGF6eVtpXSE9MCkKICAgIHsKICAgICAgICB0cmVlW2ldID0gdHJlZVtpXStsYXp5W2ldOwoKICAgICAgICBpZihzdGFydD5lbmQpCiAgICAgICAgewogICAgICAgICAgICBsYXp5WzIqaV0rPWxhenlbaV07CiAgICAgICAgICAgIGxhenlbMippKzFdKz1sYXp5W2ldOwogICAgICAgIH0KCiAgICAgICAgbGF6eVtpXT0wOwogICAgfQogICAgaWYodHJlZVtpXT49eCkKICAgIHsKICAgICAgICByZXR1cm4gZW5kLXN0YXJ0KzE7CiAgICB9CgogICAgaWYoc3RhcnQ9PWVuZCkKICAgIHsKICAgICAgICByZXR1cm4gKHRyZWVbaV0+PXgpPzE6MDsKICAgIH0KCiAgICBpbnQgbWlkID0gKHN0YXJ0K2VuZCkvMjsKCiAgICByZXR1cm4gWCgyKmksc3RhcnQsbWlkLHgpICsgWCgyKmkrMSxtaWQrMSxlbmQseCk7Cn0KCnZvaWQgWShpbnQgaSxpbnQgc3RhcnQsaW50IGVuZCxsbGQgeSkKewogICAgaWYobGF6eVtpXSE9MCkKICAgIHsKICAgICAgICB0cmVlW2ldID0gdHJlZVtpXStsYXp5W2ldOwogICAgICAgIGlmKHN0YXJ0PmVuZCkKICAgICAgICB7CiAgICAgICAgICAgIGxhenlbMippXSs9bGF6eVtpXTsKICAgICAgICAgICAgbGF6eVsyKmkrMV0rPWxhenlbaV07CiAgICAgICAgfQogICAgICAgIGxhenlbaV09MDsKICAgIH0KICAgIGlmKHRyZWVbaV0+PXkpCiAgICB7CiAgICAgICAgdHJlZVtpXSA9IHRyZWVbaV0tMTsKICAgICAgICBpZihzdGFydD5lbmQpCiAgICAgICAgewogICAgICAgICAgICBsYXp5WzIqaV0tPTE7CiAgICAgICAgICAgIGxhenlbMippKzFdLT0xOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYoc3RhcnQ9PWVuZCkKICAgIHJldHVybjsKCiAgICBpbnQgbWlkID0gKHN0YXJ0K2VuZCkvMjsKCiAgICBZKDIqaSxzdGFydCxtaWQseSk7CiAgICBZKDIqaSsxLG1pZCsxLGVuZCx5KTsKfQoKdm9pZCBhZGQoaW50IGksaW50IHN0YXJ0LGludCBlbmQsaW50IGluZGV4KQp7CiAgICBpZihsYXp5W2ldIT0wKQogICAgewogICAgICAgIHRyZWVbaV0gPSB0cmVlW2ldK2xhenlbaV07CiAgICAgICAgaWYoc3RhcnQ+ZW5kKQogICAgICAgIHsKICAgICAgICAgICAgbGF6eVsyKmldKz1sYXp5W2ldOwogICAgICAgICAgICBsYXp5WzIqaSsxXSs9bGF6eVtpXTsKICAgICAgICB9CiAgICAgICAgbGF6eVtpXT0wOwogICAgfQogICAgaWYoc3RhcnQ+aW5kZXh8fGVuZDxpbmRleCkKICAgIHJldHVybjsKCiAgICBpZihzdGFydD09ZW5kJiZzdGFydD09aW5kZXgpCiAgICB7CiAgICAgICAgdHJlZVtpXSA9IHRyZWVbaV0rMTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYoc3RhcnQ8PWluZGV4JiZpbmRleDw9ZW5kKQogICAgewogICAgICAgIGlmKHRyZWVbaV09PWFbaW5kZXhdKQogICAgICAgIHRyZWVbaV09dHJlZVtpXSsxOwogICAgfQoKICAgIGludCBtaWQgPSAoc3RhcnQrZW5kKS8yOwogICAgYWRkKDIqaSxzdGFydCxtaWQsaW5kZXgpOwogICAgYWRkKDIqaSsxLG1pZCsxLGVuZCxpbmRleCk7Cn0KCmludCBtYWluKCkKewoKICAgIGxsZCBuLHEsbTsKICAgIHNjYW5mKCIlbGxkIiwmbik7CiAgICBzY2FuZigiJWxsZCIsJnEpOwoKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICBzY2FuZigiJWxsZCIsJmFbaV0pOwoKCiAgICBpbml0KDEsMCxuLTEpOwogICAgbWVtc2V0KGxhenksMCxzaXplb2YobGF6eSkpOwoKICAgIGludCB0eXBlOwoKICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgICBzY2FuZigiJWQiLCZ0eXBlKTsKICAgICAgICBzY2FuZigiJWxsZCIsJm0pOwogICAgICAgIHN3aXRjaCh0eXBlKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICBtLS07CiAgICAgICAgICAgICAgICAgIGFkZCgxLDAsbi0xLG0pOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlbGxkXG4iLFgoMSwwLG4tMSxtKSk7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgWSgxLDAsbi0xLG0pOwogICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K