#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,i,x,opt[1000010],j,xyy,a[100010][22],tr[1000010],lg[1000010],l[1000010],r[1000010];
vector<int> t[1000010],g[1000010],b[1000010];
int lowbit(int x){return x&-x;}
int qiu(int l,int r){
int len=lg[r-l+1];
return min(a[l][len],a[r-(1<<len)+1][len]);
}
void add(int x,int y){for(;x<=n;x+=lowbit(x))tr[x]+=y;}
int qiuu(int x){
int sum=0;
for(;x;x-=lowbit(x))sum+=tr[x];
return sum;
}
signed main(){
cin>>n>>m;
for(i=1;i<=n;i++)
a[i][0]=m+1;
for(i=1;i<=m;i++){
cin>>opt[i];
if(opt[i]==1){
cin>>x;
a[x][0]=min(a[x][0],i);
}
else
cin>>l[i]>>r[i];
}
for(i=2;i<=1000000;i++)lg[i]=lg[i/2]+1;
for(xyy=1;xyy<=20;xyy++)
for(i=1;i<=n-(1<<xyy)+1;i++)
a[i][xyy]=min(a[i][xyy-1],a[i+(1<<(xyy-1))][xyy-1]);
for(i=1;i<=n;i++){
t[i].push_back(0);
for(j=1;j<=n;j+=i)
t[i].push_back(qiu(j,min(n,j+i-1)));
}
for(i=1;i<=n;i++){
g[i].push_back(0);
add(i,1);
for(j=1;j<=n;j+=i){
g[i].push_back(max(g[i][j/i],t[i][j/i+1]));
b[g[i][j/i+1]].push_back(i);
}
}
for(i=1;i<=m;i++){
if(opt[i]==1){
for(j=0;j<(int)b[i].size();j++)
add(b[i][j],1);
}
else{
cout<<qiuu(r[i])-qiuu(l[i]-1)<<'\n';
}
}
}