#include <cstdio>
using namespace std;
FILE *f=fopen("marbles.in","r");
FILE *g=fopen("marbles.out","w");
int n,m;
int v[100001],a[100001],sol;
int s[65][100001];
void cautbin(int p,int q,int x)
{int mijl=(p+q)>>1;
if (p>q) return;
if (x<=v[mijl]) {sol=mijl;
cautbin(p,mijl-1,x);}
else cautbin(mijl+1,q,x);
}
int main()
{int i,j,l,t,pos,pos1,pos2,k,u,maxim;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) fscanf(f,"%d %d",&v[i],&a[i]);
v[n+1]=1<<30;
for (j=1;j<=n;j++) {for (i=1;i<=64;i++) s[i][j]=s[i][j-1];
s[a[j]][j]++;}
for (t=1;t<=m;t++)
{fscanf(f,"%d %d %d",&l,&k,&u);
if (l==0) {sol=0;
cautbin(1,n,k);
pos=sol;
v[pos]+=u;
}
else {sol=0;
cautbin(1,n+1,k);
pos1=sol;
sol=0;
cautbin(1,n+1,u);
pos2=sol-1;
maxim=-1<<16;
for (i=1;i<=64;i++) if (s[i][pos2]-s[i][pos1-1]>maxim) maxim=s[i][pos2]-s[i][pos1-1];
fprintf(g,"%d\n",maxim);
}
}
return 0;
}