#include<bits/stdc++.h>
using namespace std;
int n,q;
int a[1014514];
int mo;
long long k,p,l,r;
__int128 s=1,d=1;
bool flag;
int large=pow(2,30);int cnt;
inline void print(__int128 x);
inline void c1();
inline void c2();
inline void print(__int128 x){
if(x<0)putchar('-'),x=-x;
if(x>9)print(x/10);
putchar(x%10+'0');
}
inline void c1(){
for(int i=l;i<=r;i++){
if(a[i]>0){
s*=a[i];
if(s>d){
d=s;
}
}
if(a[i]<0){
s=1;
continue;
}
if(d>large){
cout<<"Too large"<<endl;
}
}
print(d);
cout<<endl;
return;
}算奇数个负数
inline void c2(){
if(r-l>30){cout<<"Too large"<<endl;return;}
for(int i=l;i<=r;i++){
s*=a[i];
}
if(s<=large){
print(s);
cout<<endl;
}else{
cout<<"Too large"<<endl;
}
}
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=q;i++){
cin>>mo;
if(mo==1){
cin>>p>>k;
a[p]=k;
}
if(mo==2){
s=1;
d=1;
bool er=true;
cin>>l>>r;
for(int i=l;i<=r;i++)if(a[i]<0)cnt++;
if(cnt%2==1)er=false;
if(er)c2();
else c1();
cnt=0;
}
}
return 0;
}