#include <cstdio>
#include <algorithm>
using namespace std;
struct bila{long a; long b;};
int n,m,q,a,b,x[100010][66],i,j,p1,p2,p,mx;
bila v[100010];
bool cmp(bila x, bila y)
{
if (x.a<y.a)
return true;
else
return false;
}
long poz(long t,long l,long r)
{
long m;
m=(l+r)/2;
if (v[m].a==t)
return m;
if (l>=r)
return 0;
if (t<v[m].a)
return poz(t,l,m-1);
else
return poz(t,m+1,r);
}
long poz1(long t, long l, long r)
{
//pentru ala din stanga
long m;
m=(l+r)/2;
if ((v[m].a>=t)&&(v[m-1].a<t))
return m;
if (l>=r)
return 0;
if (v[m].a>t)
return poz1(t,l,m-1);
if (v[m].a<t)
return poz1(t,m+1,r);
}
long poz2(long t, long l, long r)
{
//pentru ala din dreapta
long m;
m=(l+r)/2;
if ((v[m].a<=t)&&(v[m+1].a>t))
return m;
if (l>=r)
return 0;
if (v[m].a>t)
return poz2(t,l,m-1);
if (v[m].a<t)
return poz2(t,m+1,r);
}
int main()
{
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
v[i].a=a;
v[i].b=b;
}
sort(v+1,v+n+1,cmp);
v[n+1].a=1<<31-1;
x[1][v[1].b]=1;
for (i=2;i<=n;i++)
{
for (j=1;j<=64;j++)
x[i][j]=x[i-1][j];
x[i][v[i].b]++;
}
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&q,&a,&b);
if (q==0)
{
p=poz(a,1,n);
v[p].a=v[p].a+b;
}
if (q==1)
if ((a<=v[n].a)&&(b>=v[1].a))
{
p1=poz1(a,1,n);
p2=poz2(b,1,n);
// printf("%d %d ",p1,p2);
mx=0;
for (j=1;j<=64;j++)
if ((x[p2][j]-x[p1-1][j])>mx)
mx=x[p2][j]-x[p1-1][j];
printf("%d\n",mx);
}
else
printf("0\n");
}
}