program marbles;
var f,g:text;
v:array[1..70]of longint;
a,b:array[0..100010]of longint;
x,k,y,z,n,m,i,p1,j,mo,p2,max,aux:longint;
function part(p,r:longint):longint;
var x,i,j,aux:longint;
begin
x:=a[p];
i:=p-1;
j:=r+1;
while true do
begin
repeat dec(j);
until a[j]<=x;
repeat inc(i);
until a[i]>=x;
if (i<j)then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
aux:=b[i];
b[i]:=b[j];
b[j]:=aux;
end else
begin
part:=j;
break;
end;
end;
end;
procedure quick(p,r:longint);
var q,i:longint;
begin
if (p<r)then
begin
q:=part(p,r);
quick(p,q);
quick(q+1,r);
end;
end;
function bin1(p1:longint;p2:longint;p:longint):longint;
var k,ok:longint;
begin
ok:=0;
while (p1<=p2)do
begin
k:=(p1+p2)div 2;
if (a[k]>p)then p2:=k-1 else
if (a[k]<p)then p1:=k+1 else
if (a[k]=p)then
begin
bin1:=k;
ok:=1;
break;
end;
end;
if (ok=0)then
if (a[k]>p)then dec(k);
bin1:=k;
end;
function bin2(p1:longint;p2:longint;p:longint):longint;
var k,ok:longint;
begin
ok:=0;
while (p1<=p2)do
begin
k:=(p1+p2)div 2;
if (a[k]>p)then p2:=k-1 else
if (a[k]<p)then p1:=k+1 else
if (a[k]=p)then
begin
bin2:=k;
ok:=1;
break;
end;
end;
if (ok=0)then
if (a[k]<p)then inc(k);
bin2:=k;
end;
begin
assign(f,'marbles.in');
assign(g,'marbles.out');
reset(f);
rewrite(g);
read(f,n,m);
for i:=1 to n do read(f,a[i],b[i]);
quick(1,n);
for i:=1 to m do
begin
read(f,x,y,z);
if (x=0)then
begin
p1:=bin1(1,n,y);
if (a[p1]=y)then a[p1]:=y+z;
if (a[p1]=a[p1+1])then
begin
for j:=p1+2 to n do
begin
a[j-1]:=a[j];
b[j-1]:=b[j];
end;
dec(n);
end else
if (a[p1]=a[p1-1])then
begin
for j:=p1 to n do
begin
a[j-1]:=a[j];
b[j-1]:=b[j];
end;
dec(n);
end;
end else
begin
if (y>z)then
begin
aux:=y;
y:=z;
z:=aux;
end;
p1:=bin2(1,n,y);
p2:=bin1(p1+1,n,z);
for j:=1 to 70 do v[j]:=0;
max:=0;
for j:=p1 to p2 do
begin
inc(v[b[j]]);
if (b[j]>max)then max:=b[j];
end;
mo:=0;
for j:=1 to max do
if (v[j]>mo)then mo:=v[j];
if (a[p1]>z)then writeln(g,0) else
if (a[p2]<y)then writeln(g,0)else
writeln(G,mo);
end;
end;
close(f);
close(g);
end.