#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
#define ll long long
const int maxn=1073741824;
const ll inf=9223372036854775800;
ll a[10000001];
ll p[10000001];
ll sol(ll l,ll r){
bool flag=0;
ll ans=1;
for(ll i=l;i<=r;i++){
ans*=a[i];
if(abs(ans)>maxn){
flag=1;
break;
}
}
if(!flag)return ans;
else return inf;
}
int main(){
ll n,q;
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;++i)scanf("%lld",&a[i]);
if(a[1]<0)p[1]=1;
for(int i=2;i<=n;++i){
int y=0;
if(a[i]<0)y++;
p[i]=p[i-1]+y;
}
while(q--){
int opt;
ll ans;
scanf("%d",&opt);
if(opt==1){
ll k,x;
scanf("%lld%lld",&k,&x);
a[k]=x;
if(a[1]<0)p[1]=1;
for(int i=2;i<=n;++i){
int y=0;
if(a[i]<0)y++;
p[i]=p[i-1]+y;
}
}
else {
ll l,r;
scanf("%lld%lld",&l,&r);
if(r-l>=62){
printf("Too large\n");
continue;
}
ll f=p[r]-p[l-1];
if(f%2==0){
if(sol(l,r)==inf){
printf("Too large\n");
}
else
printf("%lld\n",ans);
}
else{
ll p1,p2;
for(int i=l;i<=r;i++)
if(a[i]<0){
p1=i;
break;
}
for(int i=r;i>=l;i--)
if(a[i]<0){
p2=i;
break;
}
ll op=sol(l,p2);
if(op==inf){
printf("Too large\n");
}
else {
ll opt=sol(p1+1,r);
if(opt==inf){
printf("Too large\n");
}
else {
printf("%lld\n",max(op,opt));
}
}
}
}
}
return 0;
}