import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int[] getPrime(int maxRange){
boolean[] primes = new boolean[maxRange+1];
int[] finalPrimes = new int[1229];
primes[0]=primes[1]=true;
for(int i=4;i<=maxRange;i+=2)
primes[i]=true;
for(int i=3;i*i<=maxRange;i+=2){
for(int j=i*i;j<=maxRange;j+=i){
primes[j]=true;
}
}
finalPrimes[0]=2;
int i=0;
for(int x=3; x<=maxRange; x+=2){
if(!primes[x])
finalPrimes[++i]=x;
}
return finalPrimes;
}
public static int binarySearch(int[] a, int x){
int low = 0, high=a.length-1;
while(low<=high){
int mid = low + (high-low)/2;
if(a[mid] == x){
return mid;
}else if(x>a[mid]){
low = mid+1;
}else{
high=mid-1;
}
}
return low-1;
}
public static HashMap
<Integer, Integer
> getFactors
(int[] primes,
int x
){ HashMap
<Integer, Integer
> hmap
= new HashMap
<>(); if(x==1){
return hmap;
}
int index
= binarySearch
(primes,
(int) Math.
sqrt(x
)); while(x>1 && index >=0){
if(x % primes[index] == 0){
int count = 0;
int temp = primes[index]*primes[index];
while(x % temp == 0){
x = x / temp;
count+=2;
}
if(x% primes[index] == 0){
x = x / primes[index];
count+=1;
}
hmap.put(primes[index], count);
// System.out.println(primes[index]+" "+count);
}
index--;
}
if(x!=1){
hmap.put(x, 1);
// System.out.println(x+" "+1);
}
return hmap;
}
{
// your code goes here
int[] primes = getPrime(10000);
int t
= Integer.
parseInt(input.
readLine()); while(t-- > 0){
String[] input1
= input.
readLine().
split(" "); String[] input2
= input.
readLine().
split(" "); int n
= Integer.
parseInt(input1
[0]); int m
= Integer.
parseInt(input1
[1]); int[] a = new int[n];
for(int i=0;i<n;i++){
a
[i
] = Integer.
parseInt(input2
[i
]); }
HashMap
<Integer, Integer
> lcm
= new HashMap
<>(); for(int x : a){
HashMap
<Integer, Integer
> factors
= getFactors
(primes, x
); Iterator i
= factors.
entrySet().
iterator(); while(i.hasNext()){
int key = (int) pair.getKey(); //pair.getValue());
int new_value = (int) pair.getValue();
if(lcm.containsKey(key)){
new_value
= Math.
max(new_value,
(int) lcm.
get(key
)); }
lcm.put(key, new_value);
}
}
int maxFold = 1, minValue=1;
for(int j=2;j<=m;j++){
int tempFold = 1;
HashMap
<Integer, Integer
> tempFactors
= getFactors
(primes, j
); Iterator i
= tempFactors.
entrySet().
iterator(); while(i.hasNext()){
int key = (int) pair.getKey(); //pair.getValue());
if(!lcm.containsKey(key)){
tempFold
*=(int) Math.
pow(key,
(int) pair.
getValue()); }else if(lcm.get(key)< (int) pair.getValue()){
tempFold
*=(int) Math.
pow(key,
((int) pair.
getValue() - lcm.
get(key
))); }
}
if(tempFold>maxFold){
maxFold = tempFold;
minValue = j;
}
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgaW50W10gZ2V0UHJpbWUoaW50IG1heFJhbmdlKXsKCQlib29sZWFuW10gcHJpbWVzID0gbmV3IGJvb2xlYW5bbWF4UmFuZ2UrMV07CgkJaW50W10gZmluYWxQcmltZXMgPSBuZXcgaW50WzEyMjldOwoJCXByaW1lc1swXT1wcmltZXNbMV09dHJ1ZTsKCQlmb3IoaW50IGk9NDtpPD1tYXhSYW5nZTtpKz0yKQoJCQlwcmltZXNbaV09dHJ1ZTsKCQlmb3IoaW50IGk9MztpKmk8PW1heFJhbmdlO2krPTIpewoJCQlmb3IoaW50IGo9aSppO2o8PW1heFJhbmdlO2orPWkpewoJCQkJcHJpbWVzW2pdPXRydWU7CgkJCX0KCQl9CgkJCgkJZmluYWxQcmltZXNbMF09MjsKCQlpbnQgaT0wOwoJCWZvcihpbnQgeD0zOyB4PD1tYXhSYW5nZTsgeCs9Mil7CgkJCWlmKCFwcmltZXNbeF0pCgkJCQlmaW5hbFByaW1lc1srK2ldPXg7CgkJfQoJCXJldHVybiBmaW5hbFByaW1lczsKCX0KCQoJcHVibGljIHN0YXRpYyBpbnQgYmluYXJ5U2VhcmNoKGludFtdIGEsIGludCB4KXsKCQlpbnQgbG93ID0gMCwgaGlnaD1hLmxlbmd0aC0xOwoJCXdoaWxlKGxvdzw9aGlnaCl7CgkJCWludCBtaWQgPSBsb3cgKyAoaGlnaC1sb3cpLzI7CgkJCWlmKGFbbWlkXSA9PSB4KXsKCQkJCXJldHVybiBtaWQ7CgkJCX1lbHNlIGlmKHg+YVttaWRdKXsKCQkJCWxvdyA9IG1pZCsxOwoJCQl9ZWxzZXsKCQkJCWhpZ2g9bWlkLTE7CgkJCX0KCQl9CgkJcmV0dXJuIGxvdy0xOwoJfQoJCglwdWJsaWMgc3RhdGljIEhhc2hNYXA8SW50ZWdlciwgSW50ZWdlcj4gZ2V0RmFjdG9ycyhpbnRbXSBwcmltZXMsIGludCB4KXsKCQlIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IGhtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CgkJaWYoeD09MSl7CgkJCXJldHVybiBobWFwOwkKCQl9CgkJaW50IGluZGV4ID0gYmluYXJ5U2VhcmNoKHByaW1lcywgKGludCkgTWF0aC5zcXJ0KHgpKTsKCQl3aGlsZSh4PjEgJiYgaW5kZXggPj0wKXsKCQkJaWYoeCAlIHByaW1lc1tpbmRleF0gPT0gMCl7CgkJCQlpbnQgY291bnQgPSAwOwoJCQkJaW50IHRlbXAgPSBwcmltZXNbaW5kZXhdKnByaW1lc1tpbmRleF07CgkJCQl3aGlsZSh4ICUgdGVtcCA9PSAwKXsKCQkJCQl4ID0geCAvIHRlbXA7CgkJCQkJY291bnQrPTI7CgkJCQl9CgkJCQlpZih4JSBwcmltZXNbaW5kZXhdID09IDApewoJCQkJCXggPSB4IC8gcHJpbWVzW2luZGV4XTsKCQkJCQljb3VudCs9MTsKCQkJCX0KCQkJCWhtYXAucHV0KHByaW1lc1tpbmRleF0sIGNvdW50KTsKCQkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbihwcmltZXNbaW5kZXhdKyIgIitjb3VudCk7CgkJCX0KCQkJaW5kZXgtLTsKCQl9CgkJaWYoeCE9MSl7CgkJCWhtYXAucHV0KHgsIDEpOwoJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4oeCsiICIrMSk7CgkJfQoJCXJldHVybiBobWFwOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJaW50W10gcHJpbWVzID0gZ2V0UHJpbWUoMTAwMDApOwoJCUJ1ZmZlcmVkUmVhZGVyIGlucHV0ID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgICAgICBpbnQgdCA9IEludGVnZXIucGFyc2VJbnQoaW5wdXQucmVhZExpbmUoKSk7CiAgICAgICAgd2hpbGUodC0tID4gMCl7CgkJCVN0cmluZ1tdIGlucHV0MSA9IGlucHV0LnJlYWRMaW5lKCkuc3BsaXQoIiAiKTsKCQkJU3RyaW5nW10gaW5wdXQyID0gaW5wdXQucmVhZExpbmUoKS5zcGxpdCgiICIpOwoJCQlpbnQgbiA9IEludGVnZXIucGFyc2VJbnQoaW5wdXQxWzBdKTsKCQkJaW50IG0gPSBJbnRlZ2VyLnBhcnNlSW50KGlucHV0MVsxXSk7CgkJCWludFtdIGEgPSBuZXcgaW50W25dOwoJCQlmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkJCWFbaV0gPSBJbnRlZ2VyLnBhcnNlSW50KGlucHV0MltpXSk7CgkJCX0KCQkJSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBsY20gPSBuZXcgSGFzaE1hcDw+KCk7CgkJCWZvcihpbnQgeCA6IGEpewoJCQkJSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBmYWN0b3JzID0gZ2V0RmFjdG9ycyhwcmltZXMsIHgpOwoJCQkJSXRlcmF0b3IgaSA9IGZhY3RvcnMuZW50cnlTZXQoKS5pdGVyYXRvcigpOwoJCQkJd2hpbGUoaS5oYXNOZXh0KCkpewoJCQkJCU1hcC5FbnRyeSBwYWlyID0gKE1hcC5FbnRyeSkgaS5uZXh0KCk7CgkJCQkJaW50IGtleSA9IChpbnQpIHBhaXIuZ2V0S2V5KCk7IC8vcGFpci5nZXRWYWx1ZSgpKTsKCQkJCQlpbnQgbmV3X3ZhbHVlID0gKGludCkgcGFpci5nZXRWYWx1ZSgpOwoJCQkJCWlmKGxjbS5jb250YWluc0tleShrZXkpKXsKCQkJCQkJbmV3X3ZhbHVlID0gTWF0aC5tYXgobmV3X3ZhbHVlLCAoaW50KSBsY20uZ2V0KGtleSkpOwoJCQkJCX0KCQkJCQlsY20ucHV0KGtleSwgbmV3X3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQlpbnQgbWF4Rm9sZCA9IDEsIG1pblZhbHVlPTE7CgkJCWZvcihpbnQgaj0yO2o8PW07aisrKXsKCQkJCWludCB0ZW1wRm9sZCA9IDE7IAoJCQkJSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiB0ZW1wRmFjdG9ycyA9IGdldEZhY3RvcnMocHJpbWVzLCBqKTsKCQkJCUl0ZXJhdG9yIGkgPSB0ZW1wRmFjdG9ycy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CgkJCQl3aGlsZShpLmhhc05leHQoKSl7CgkJCQkJTWFwLkVudHJ5IHBhaXIgPSAoTWFwLkVudHJ5KSBpLm5leHQoKTsKCQkJCQlpbnQga2V5ID0gKGludCkgcGFpci5nZXRLZXkoKTsgLy9wYWlyLmdldFZhbHVlKCkpOwoJCQkJCWlmKCFsY20uY29udGFpbnNLZXkoa2V5KSl7CgkJCQkJCXRlbXBGb2xkKj0oaW50KSBNYXRoLnBvdyhrZXksIChpbnQpIHBhaXIuZ2V0VmFsdWUoKSk7CgkJCQkJfWVsc2UgaWYobGNtLmdldChrZXkpPCAoaW50KSBwYWlyLmdldFZhbHVlKCkpewoJCQkJCQl0ZW1wRm9sZCo9KGludCkgTWF0aC5wb3coa2V5LCAoKGludCkgcGFpci5nZXRWYWx1ZSgpIC0gbGNtLmdldChrZXkpKSk7CgkJCQkJfQoJCQkJfQoJCQkJaWYodGVtcEZvbGQ+bWF4Rm9sZCl7CgkJCQkJbWF4Rm9sZCA9IHRlbXBGb2xkOwoJCQkJCW1pblZhbHVlID0gajsKCQkJCX0KCQkJfQoJCQlTeXN0ZW0ub3V0LnByaW50bG4obWluVmFsdWUpOwogICAgICAgIH0KCX0KfQ==