#include <iostream>
#include <math.h>
#define size 10000
#define mod 1000000007
using namespace std;
int power(int a,int b){
int res=1;
while(b>0){
if(b&1)
res=(res*a)%mod;
b=b>>2;
a=(a*a)%mod;
}
return res;
}
int main() {
// your code goes here
//generate smallest prime factor from 1 - m ;
int spf[1+size]={0};
spf[0]=spf[1]=1;
for(int i=2;i<=size;i++)
spf[i]=i;
for(int i=4;i<=size;i=i+2)
spf[i]=2;
for(int i=3;i*i<size;i++){
if(spf[i]==i)
{
for(int j=i*i;j<size;j+=i){
if(spf[j]==j){
spf[j]=i;
}
}
}
}
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int fact[m+1]={0};
for(int i=0;i<n;i++){
int num=a[i];
//factorise this number
int temp[m+1]={0};
while(num!=1){
if((temp[spf[num]]+1)>fact[spf[num]]){
fact[spf[num]]=temp[spf[num]]+1;}
temp[spf[num]]++;
num=num/spf[num];
}
}
int index=1,ans=1;
for(int i=2;i<=m;i++){
//prime factorise X=i
int c=0,lcm_x=1;
int x=i;
while(x>1){
c=0;
int p=spf[x];
while(x%p==0){
c++;
x=x/spf[x];
}
if((c-fact[p])>0)
lcm_x*=pow(p,c-fact[p]);
}
//cout<<"with "<<i<<" --> "<<lcm_x<<endl;
if(lcm_x>ans)
{
index=i;
ans=lcm_x;
}
}
cout<<index<<"\n";
// for(int i=0;i<=m;i++)
// {
// //if(fact[i]!=0)
// cout<<i<<" --> "<<fact[i]<<endl;
// }
// cout<<"terminating"<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgojZGVmaW5lIHNpemUgMTAwMDAKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHBvd2VyKGludCBhLGludCBiKXsKCWludCByZXM9MTsKCXdoaWxlKGI+MCl7CglpZihiJjEpCglyZXM9KHJlcyphKSVtb2Q7CgliPWI+PjI7CglhPShhKmEpJW1vZDsKCX0KCXJldHVybiByZXM7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJLy9nZW5lcmF0ZSBzbWFsbGVzdCBwcmltZSBmYWN0b3IgZnJvbSAxIC0gbSA7CgkJCWludCBzcGZbMStzaXplXT17MH07CgkJCXNwZlswXT1zcGZbMV09MTsKCQkJZm9yKGludCBpPTI7aTw9c2l6ZTtpKyspCgkJCXNwZltpXT1pOwoJCQlmb3IoaW50IGk9NDtpPD1zaXplO2k9aSsyKQoJCQlzcGZbaV09MjsKCQkJZm9yKGludCBpPTM7aSppPHNpemU7aSsrKXsKCQkJaWYoc3BmW2ldPT1pKQoJCQl7CgkJCQlmb3IoaW50IGo9aSppO2o8c2l6ZTtqKz1pKXsKCQkJCQlpZihzcGZbal09PWopewoJCQkJCQlzcGZbal09aTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJfQoJaW50IHQ7CgljaW4+PnQ7Cgl3aGlsZSh0LS0pewoJCWludCBuLG07CgkJY2luPj5uPj5tOwoJCWludCBhW25dOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJY2luPj5hW2ldOwoJCWludCBmYWN0W20rMV09ezB9OwoJCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCQlpbnQgbnVtPWFbaV07CgkJCS8vZmFjdG9yaXNlIHRoaXMgbnVtYmVyCgkJCWludCB0ZW1wW20rMV09ezB9OwoJCQl3aGlsZShudW0hPTEpewoJCQkJaWYoKHRlbXBbc3BmW251bV1dKzEpPmZhY3Rbc3BmW251bV1dKXsKCQkJCWZhY3Rbc3BmW251bV1dPXRlbXBbc3BmW251bV1dKzE7fQoJCQkJdGVtcFtzcGZbbnVtXV0rKzsKCQkJCW51bT1udW0vc3BmW251bV07CgkJCX0KCQl9CgkJaW50IGluZGV4PTEsYW5zPTE7CgkJZm9yKGludCBpPTI7aTw9bTtpKyspewoJCQkvL3ByaW1lIGZhY3RvcmlzZSBYPWkKCQkJaW50IGM9MCxsY21feD0xOwoJCQlpbnQgeD1pOwoJCQl3aGlsZSh4PjEpewoJCQkJIGM9MDsKCQkJCSBpbnQgcD1zcGZbeF07CgkJCQl3aGlsZSh4JXA9PTApewoJCQkJCWMrKzsKCQkJCQl4PXgvc3BmW3hdOwoJCQkJfQoJCQkJaWYoKGMtZmFjdFtwXSk+MCkKCQkJCWxjbV94Kj1wb3cocCxjLWZhY3RbcF0pOwoJCQl9CgkJCQkJCQkvL2NvdXQ8PCJ3aXRoICI8PGk8PCIgLS0+ICI8PGxjbV94PDxlbmRsOwoKCQkJaWYobGNtX3g+YW5zKQoJCQl7CgkJCQlpbmRleD1pOwoJCQkJYW5zPWxjbV94OwoJCQl9CgkJfQoJCWNvdXQ8PGluZGV4PDwiXG4iOwoJCS8vIGZvcihpbnQgaT0wO2k8PW07aSsrKQoJCS8vIHsKCQkvLyAJLy9pZihmYWN0W2ldIT0wKQoJCS8vIAljb3V0PDxpPDwiIC0tPiAgIjw8ZmFjdFtpXTw8ZW5kbDsKCQkvLyB9CgkJLy8gY291dDw8InRlcm1pbmF0aW5nIjw8ZW5kbDsKCX0KCXJldHVybiAwOwp9