编程题
### 问题描述
作为探险小队的一员,你们成功进入了一个藏有宝藏的洞穴。但在前往宝藏的路上,你们遇到了一条阻挡去路的大河。这条河里住着一只居住了千年的乌龟,它愿意帮助你们过河,但在过河的过程中,乌龟会不断地提问。如果你们不能及时回答正确,乌龟将会把你们丢入河中。
在出发前,乌龟会给你们一个长度为 $n$ 的数组 $a$ 。在过河的途中,乌龟总共会提出 $q$ 个问题。对于每个问题,它会给出一个整数 $k$ ,并询问从数组 $a$ 中任意选 $k$ 个数,使得它们的最大公约数尽量大,这个最大的公约数是多少?需要注意一点,一个数最大公约数我们视为它本身。
作为队内最聪明的人,你必须想出一个策略来回答乌龟的问题,成功帮助小队安全过河。
### 输入格式
第一行输入两个整数 $n$ 和 $q$ ,表示数组 $a$ 的长度和询问的次数。
第二行输入 $n$ 个整数表示数组 $a$,以空格隔开。
接下来 $q$ 行,每行一个整数 $k$ 。
数据保证 $2 \leq n \leq 10^5,1 \leq a_i \leq 10^5,1 \leq q \leq10^5,1 \leq k \leq n$。
### 输出格式
输出 $q$ 行,第 $i$ 行表示第 $i$ 次询问的答案。
### 样例输入
```
5 3
1 2 3 4 6
2
3
5
```
### 样例输出
```
3
2
1
```
### 说明
对于样例的第一个询问,$\gcd(3,6)=3$,对于第二个询问 $\gcd(2,4,6)=2$,对于第三个询问 $\gcd(1,2,3,4,6)=1$。