#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100010],b[100010],l[100010],r[100010],tag[100010],maxn[100010],sq,x,y,z;
void upt(long long id)
{
long long ma=0;
for(int i=l[id];i<=r[id];i++)
ma=max(ma,a[i]+tag[b[i]]);
maxn[id]=ma;
}
void add(long long x,long long y)
{
if(b[x]==b[y])
{
for(int i=x;i<=y;i++)
a[i]++;
upt(b[x]);
return ;
}
for(int i=x;i<=r[b[x]];i++)
a[i]++;
upt(b[x]);
for(int i=l[b[y]];i<=y;i++)
a[i]++;
upt(b[y]);
for(int i=b[x]+1;i<=b[y]-1;i++)
tag[i]++,maxn[i]++;
}
void query(long long x,long long y)
{
long long ma=0;
if(b[x]==b[y])
{
for(int i=x;i<=y;i++)
ma=max(ma,a[i]+tag[b[i]]);
cout<<ma<<endl;
return ;
}
for(int i=x;i<=r[b[x]];i++)
ma=max(ma,a[i]+tag[b[i]]);
for(int i=l[b[y]];i<=y;i++)
ma=max(ma,a[i]+tag[b[i]]);
for(int i=b[x]+1;i<=b[y]-1;i++)
ma=max(ma,maxn[i]);
cout<<ma<<endl;
}
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define QwQ return 0;
int main()
{
IOS;
cin>>n>>m;
sq=sqrt(n);
for(int i=1;i<=n;i++)
{
l[i]=r[i-1]+1;
r[i]=min(sq*i,n);
for(int j=l[i];j<=r[i];j++)
b[j]=i;
}
while(m--)
{
cin>>x>>y>>z;
if(x==1)
add(y,z);
else
query(y,z);
}
QwQ;
}