#include <cstdio>
#include <algorithm>
using namespace std;
FILE *fin = fopen("marbles.in","r");
FILE *fout = fopen("marbles.out","w");
int n, m, mat[65][100010], i, j, cul, mxcul, poz, tip, x, y, mx, a, b, v[100010], nr, l;
void sortare(int line);
int bin_search(int line, int in, int sf, int val);
int main() {
fscanf(fin, "%d %d", &n, &m);
for(i = 1;i <= n;i++) {
fscanf(fin, "%d %d", &poz, &cul);
mxcul = max(mxcul, cul);
mat[cul][0]++;
mat[cul][mat[cul][0]] = poz;
}
for(i = 1;i <= mxcul;i++) {
sortare(i);
}
for(l = 1;l <= m;l++) {
fscanf(fin, "%d %d %d", &tip, &x, &y);
if(tip == 0) {
for(j = 1;j <= mxcul;j++) {
poz = bin_search(j, 1, mat[j][0], x);
if(mat[j][poz] == x) {
mat[j][poz] += y;
sortare(j);
break;
}
}
}
else {
mx = poz = 0;
for(j = 1;j <= mxcul;j++) {
a = bin_search(j, 1, mat[j][0], x);
b = bin_search(j, 1, mat[j][0], y);
if(mx < b - a + 1) {
mx = b - a + 1;
poz = j;
}
}
fprintf(fout, "%d\n", mx);
}
}
}
void sortare(int line) {
nr = 0;
for(i = 1;i <= mat[line][0];i++) {
v[++nr] = mat[line][i];
}
sort(v + 1, v + 1 + nr);
for(i = 1;i <= mat[line][0];i++) {
mat[line][i] = v[i];
}
}
int bin_search(int line, int in, int sf, int val) {
int mij;
if(sf - in <= 1) return sf;
if(mat[line][1] > val) return 1;
if(mat[line][mat[line][0]] < val) return mat[line][0];
mij = (in + sf) / 2;
if(mat[line][mij] == val) return mij;
if(mat[line][mij] < val) return bin_search(line, mij + 1, sf, val);
return bin_search(line, in, mij - 1, val);
}