//改了好几次的算法 ,终于过了
#include<bits/stdc++.h>
using namespace std;
long long sum[105],num[105];
int n, m, l, r,ans=1,temp=1;
int main(){
cin >> n >> m;
for (int i = 1; i <= n;++i){//数据的读入
cin >> sum[i];
num[i] = sum[i]; //保存副本
}
for (int k = 0; k < m;++k){
int t;
cin >> t;
if(t==1){
cin >> l >> r;
for (int p = l; p <= r;++p){
sum[p] = sum[p] * 251 % 996 * 404 * 123;
num[p] = sum[p];
}
}
else if(t==2){
cin >> l >> r;
sort(num + l, num +r+1);//排序
temp = ans=1;//初始化
for (int i = l; i <= r;++i){
if(num[i]==num[i+1]){
temp++;
continue;
}
else{
if(temp>ans){
//最大值更新
ans = temp;
}
temp = 1;//初始化
}
}
cout << ans << endl;
for (int a = l; a <= r;++a){//与sort相对应,清楚排序带来的影响。
num[a] = sum[a];//重新恢复备份数组
}
}
}
return 0;
}