求 fir,sec 记得 break
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){bool f=0;int x=0;char c=getchar();while(!isdigit(c)) f|=c=='-',c=getchar();while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?~x-1:x;}
inline void write(ll x){if(x<0) putchar('-'),x=-x;static int sta[35];int top=0;do{sta[top++]=x%10,x/=10;}while(x);while(top) putchar(sta[--top]+'0');}
const int N=2e5+5;
int n,q,a[N],op,x,y;
inline int F(int l,int r){
if(l>r) return 1;
ll ans=1;
for(int i=l;i<=r;i++){
ans*=a[i];
if(ans<-(1<<30)) ans=-(1<<30);
if(ans>(1<<30)) return -1;
}return ans;
}
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
while(q--){
scanf("%d%d%d",&op,&x,&y);
if(op&1) a[x]=y;
else{
if(y-x>60) printf("Too large\n");
else{
int f=0;
for(int i=x;i<=y;i++) f+=a[i]<0;
if(f&1){
int fir,sec;
for(int i=x;i<=y;i++) if(a[i]<0){fir=i;break;}
for(int i=y;i>=x;i--) if(a[i]<0){sec=i;break;}
int L=F(x,sec-1),R=F(fir+1,y);
if(L==-1||R==-1) printf("Too large\n");
else printf("%d\n",max(L,R));
}else{
int ans=F(x,y);
if(ans==-1) printf("Too large\n");
else printf("%d\n",ans);
}
}
}
}
return 0;
}