#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 7,M = 1073741824;
int n,q;
long long a[N];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<1) + (x<<3) + (ch - 48);ch=getchar();}
return x*f;
}
signed main() {
n = read();
q = read();
for(int i = 1;i <= n;i++){
a[i] = read();
}
a[0] = 1;
while(q--){
bool p = true;
int s = read(), x = read(), y = read();
if(s == 1){
a[x] = y;
}
else if(s == 2){
if(y - x + 1 > 61){
printf("Too large\n");
continue;
}
int l = 0,r = 0,sum = 0;
int ans1 = 1,ans2 = 1,ans3 = 1,ans4 = 1;
for(int i = x;i<=y;i++){
if(a[i] < 0 && l == 0){l = i;}
if(a[i] < 0)sum ++,r = i;
if(ans3 >= M || ans3 <= -M) p = false;
ans3*= a[i];
}
if(r == 0)
r = l;
if(sum % 2 == 1){
for(int i = x;i< r;i++)
ans1 *= a[i];
for(int i = l + 1;i<= y;i++)
ans2 *= a[i];
ans4 = max(ans1,ans2);
}
if(sum == 0 || sum%2 == 0){
if(ans3 == 0 || p == false) printf("Too large\n");
else if(ans3 <= M && ans3 >= -M)printf("%lld\n",ans3);
else printf("Too large\n");}
else{
if(ans4 == 0)
printf("Too large\n");
else if(ans4 <= M && ans4 >= -M)
printf("%lld\n",ans4);
else
printf("Too large\n");}
}
}
return 0;
}