#include<bits/stdc++.h>
using namespace std;
const int MAX=500020;
int tree[MAX];
int A[100005];
void Build_Tree(int node, int st, int end)
{
if(st == end)
{
tree[node] = A[st];
return ;
}
int mid = (st+end)/2;
Build_Tree(node*2, st, mid);
Build_Tree(node*2+1, mid+1, end);
tree[node] = __gcd(tree[2*node], tree[2*node+1]);
return;
}
void update(int node, int st, int end, int idx, int value)
{
if(st == end)
{
tree[node] = value;
A[idx] = value;
return ;
}
int mid = (st+end)/2;
if(idx<=mid)
{
update(2*node, st, mid, idx, value);
}
else
{
update(2*node+1, mid+1, end, idx, value);
}
tree[node] = __gcd(tree[2*node], tree[2*node+1]);
return ;
}
int RangeGcd(int node, int st, int end, int l, int r)
{
if(l <= st && end <= r )
{
return tree[node];
}
if(st>r || end<l)
return 0;
int mid = (st+end)/2;
int ans1 = RangeGcd(2*node, st, mid, l, r);
int ans2 = RangeGcd(2*node+1, mid+1, end, l, r);
return __gcd(ans1, ans2);
}
int main()
{
int n,q,l,r,a;
cin>>n>>q;
for(int i=0;i<MAX;i++)
tree[i]=0;
for(int i=1;i<=n;i++) {
cin>>A[i];
}
Build_Tree(1,1,n);
while(q--)
{
cin>>a>>l>>r;
if(a==0)
{
cout<<RangeGcd(1,1,n,l,r)<<endl;
}
else
{
update(1,1,n,l,r);
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVg9NTAwMDIwOwoKaW50IHRyZWVbTUFYXTsKaW50IEFbMTAwMDA1XTsKCnZvaWQgQnVpbGRfVHJlZShpbnQgbm9kZSwgaW50IHN0LCBpbnQgZW5kKQp7CglpZihzdCA9PSBlbmQpCgl7CgkJdHJlZVtub2RlXSA9IEFbc3RdOwoJCXJldHVybiA7Cgl9CglpbnQgbWlkID0gKHN0K2VuZCkvMjsKCUJ1aWxkX1RyZWUobm9kZSoyLCBzdCwgbWlkKTsKCQoJQnVpbGRfVHJlZShub2RlKjIrMSwgbWlkKzEsIGVuZCk7CgkJCgl0cmVlW25vZGVdID0gX19nY2QodHJlZVsyKm5vZGVdLCB0cmVlWzIqbm9kZSsxXSk7CglyZXR1cm47Cn0KCnZvaWQgdXBkYXRlKGludCBub2RlLCBpbnQgc3QsIGludCBlbmQsIGludCBpZHgsIGludCB2YWx1ZSkKewoJaWYoc3QgPT0gZW5kKQoJeyAgCgkJdHJlZVtub2RlXSA9IHZhbHVlOyAKCQlBW2lkeF0gPSB2YWx1ZTsKCQlyZXR1cm4gOwoJfQoJCglpbnQgbWlkID0gKHN0K2VuZCkvMjsKCWlmKGlkeDw9bWlkKQoJewoJCXVwZGF0ZSgyKm5vZGUsIHN0LCBtaWQsIGlkeCwgdmFsdWUpOwoJfQoJZWxzZQoJewoJCXVwZGF0ZSgyKm5vZGUrMSwgbWlkKzEsIGVuZCwgaWR4LCB2YWx1ZSk7Cgl9CgkKCXRyZWVbbm9kZV0gPSBfX2djZCh0cmVlWzIqbm9kZV0sIHRyZWVbMipub2RlKzFdKTsgCglyZXR1cm4gOwp9CgppbnQgUmFuZ2VHY2QoaW50IG5vZGUsIGludCBzdCwgaW50IGVuZCwgaW50IGwsIGludCByKQp7CglpZihsIDw9IHN0ICYmIGVuZCA8PSByICkKCXsKCQlyZXR1cm4gdHJlZVtub2RlXTsKCX0KCQoJaWYoc3Q+ciB8fCBlbmQ8bCkKCQlyZXR1cm4gMDsKCQoJaW50IG1pZCA9IChzdCtlbmQpLzI7CgkKCWludCBhbnMxID0gUmFuZ2VHY2QoMipub2RlLCBzdCwgbWlkLCBsLCByKTsKCWludCBhbnMyID0gUmFuZ2VHY2QoMipub2RlKzEsIG1pZCsxLCBlbmQsIGwsIHIpOwkKCXJldHVybiBfX2djZChhbnMxLCBhbnMyKTsJCn0KCmludCBtYWluKCkKewoJaW50IG4scSxsLHIsYTsKCWNpbj4+bj4+cTsKCWZvcihpbnQgaT0wO2k8TUFYO2krKykKCQl0cmVlW2ldPTA7Cglmb3IoaW50IGk9MTtpPD1uO2krKykgewoJCWNpbj4+QVtpXTsKCX0KCUJ1aWxkX1RyZWUoMSwxLG4pOwoJd2hpbGUocS0tKQoJewoJCWNpbj4+YT4+bD4+cjsKCQlpZihhPT0wKQoJCXsKCQkJY291dDw8UmFuZ2VHY2QoMSwxLG4sbCxyKTw8ZW5kbDsKCQl9CgkJZWxzZQoJCXsKCQkJdXBkYXRlKDEsMSxuLGwscik7CgkJfQoJfQoJcmV0dXJuIDA7Cn0=