#include <bits/stdc++.h>
using namespace std;
long long int v[100001],s[400001];
ifstream fin("arbint.in");
ofstream fout("arbint.out");
void mt(int i, int p, int q)
{
if(p==q)
{
s[i]=v[p];
}else
{
int mij=(p+q)/2;
mt(i*2,p,mij);
mt(i*2+1,mij+1,q);
s[i]=max(s[i*2],s[i*2+1]);
}
}
void mt2(int i, int p, int q, int x, int y)
{
if(p==q&&p==x)
{
s[i]=y;
}else
{
int mij=(p+q)/2;
if(x<=mij)
{
mt2(i*2,p,mij,x,y);
}else
{
mt2(i*2+1,mij+1,q,x,y);
}
s[i]=max(s[i*2],s[i*2+1]);
}
}
long long int Max(int i, int p, int q, int x, int y)
{
if(x<=p&&q<=y)
{
return s[i];
}else
{
long long int a=0,b=0;
int mij=(p+q)/2;
if(x<=mij)
{
a=Max(i*2,p,mij,x,y);
}
if(mij<y)
{
b=Max(i*2+1,mij+1,q,x,y);
}
return max(a,b);
}
}
int main()
{
int n,m,t,a,b,i;
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
mt(1,1,n);
for(i=1;i<=m;i++)
{
fin>>t;
if(t==0)
{
fin>>a>>b;
fout<<cmmdc(1,1,n,a,b)<<endl;
}else
{
fin>>a>>b;
mt2(1,1,n,a,b);
}
}
return 0;
}