#include<stdio.h>
using namespace std;
#define dim 1005
#define dim2 105
int n,m,X[dim],i,j,x,mij,C[dim],ii,a,b,MAX,sc,y,S[65][dim],p;
int caut_bin (int in, int sf)
{
mij=(in+sf)/2;
if(in>sf) return sf;
if(x==X[mij]) return mij;
if(x>X[mij])
return caut_bin(mij+1,sf);
else
return caut_bin(in,mij-1);
}
void quicksort(int inceput,int ultimul)
{int i,j,temp,aux;
i=inceput;
j=ultimul;
temp=X[(i+j)/2];
do
{while(X[i]<temp) i++;
while(X[j]>temp) j--;
if(i<j)
{aux=X[i]; X[i]=X[j]; X[j]=aux; }
if(i<=j)
{j=j-1;
i=i+1;
}
}while(i<=j);
if(inceput<j) quicksort(inceput,j);
if(i<ultimul) quicksort(i,ultimul);
}
int main()
{
FILE *f=fopen("marbles.in","r"), *g=fopen("marbles.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(f,"%d %d",&X[i],&C[i]);
S[C[i]][X[i]]=1;
}
for(i=1;i<=64;i++)
for(j=1;j<=dim2;j++)
S[i][j]+=S[i][j-1];
quicksort(1,n);
for(int t=1;t<=m;t++)
{
fscanf(f,"%d %d %d",&p,&i,&j);
if(p==0)
{x=i;
x=caut_bin(1,n);
X[x]+=j;
x=C[x];
if(j>0)
{
y=i+j;
if(y>dim) y=dim;
for(ii=i;ii<y;ii++)
if(S[x][ii]>0)
S[x][ii]--;
}
else if(j<0)
{
y=i+j;
if(y<9) y=0;
for(ii=i+j;ii<i;ii++)
S[x][ii]++;
}
quicksort(1,n);
}
else if(p==1)
{
MAX=0;
x=i;
a=caut_bin(1,n);
if(X[a]<i)
a++;
x=j;
b=caut_bin(1,n);
for(ii=1;ii<=64;ii++)
{
sc=S[ii][X[b]]-S[ii][X[a]-1];
if(sc>MAX)
MAX=sc;
}
fprintf(g,"%d\n",MAX);
}
}
fclose(f);
fclose(g);
return 0;}