#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; }