#include<bits/stdc++.h>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define memo(a,v) memset(a,v,sizeof(a))
#define pb push_back
#define all(a) a.begin(),a.end()
#define eps (1e-9)
#define inf (1<<29)
#define i64 long long
#define u64 unsigned i64
#define AIN(a,b,c) assert(a<=b && b<=c)
#define MAXN 100000
#define MAXK 100000

typedef pair<int,int> pii;

int a[MAXN+5],A[MAXN+5],B[MAXN+5];

int gcd1(int a,int b){
    if(b == 0) return a;
    return gcd1(b,a%b);
}
int gcd(int a,int b){
    if(a<b) swap(a,b);
    return gcd1(a,b);
}
int main(){
    int t, n, i, q, L, R;
    i64 sum, cur, cnt=0;
    scanf("%d",&t);
    AIN(2,t,100000);
    while(t--){
        scanf("%d %d",&n,&q);
        AIN(1,n,MAXN);
        AIN(1,q,n);
        cnt+=n;
        A[0] = B[n+1] = 0;
        for(i = 1;i<=n;i++){
            scanf("%d",&a[i]);
            AIN(1,a[i],MAXN);
            A[i] = gcd(A[i-1],a[i]);
        }
        for(i = n;i>0;i--){
            B[i] = gcd(B[i+1],a[i]);
        }
        while(q--){
            scanf("%d %d",&L,&R);
            AIN(1,L,R);
            AIN(L,R,n);
            assert(n - R + L - 1 > 0);
            printf("%d\n",gcd(A[L-1],B[R+1]));
        }
    }
    AIN (1, cnt, 1000000);
	return 0;
}