来点gcd
题号:NC229589
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个有 个元素的多重集 ,有 个询问,对于每个询问,给出一个整数 ,问是否能选择 的一个非空子集,满足这个子集的 等于,当集合只有一个数时,设这个集合的 就等于这个数,的值为的最大公约数

输入描述:

多组数据,先读入一个 T 代表组数
对于每组数据 :
第一行两个正整数 n , m 分别代表集合包含的元素个数和询问个数
第二行 n 个正整数 ai ,代表集合内的具体元素 ( 1 ≤ ai ≤ n )
接下来 m 行每行一个正整数 x 代表当前询问的数 ( 1 ≤ x ≤ n )
保证 T 组数据中 n,m 的总和不超过 1e6

输出描述:

输出 m 行,每行输出 “YES”  或者  “NO” ( 不包含引号 )
示例1

输入

复制
2
7 3
2 2 6 6 2 1 5
3
2
6
7 3
6 3 1 4 6 4 3
7
5
2

输出

复制
NO
YES
YES
NO
NO
YES

说明

第一组样例
第一个询问 找不到这样的子集
第二个询问 取子集 { 2 }
第三个询问 取子集 { 6 }
第二组样例
第一个询问 找不到这样的子集
第二个询问 找不到这样的子集
第三个询问 取子集 { 4,6 }