import sys
import math
from collections import defaultdict
MOD = 1000000007
LIMIT = 10**9
def prime():
primes = [2]
for i in range(3, int(math.sqrt(LIMIT)) + 1, 2):
is_prime = True
for p in primes:
if p * p > i:
break
if i % p == 0:
is_prime = False
break
if is_prime:
primes.append(i)
return primes
def main():
input = sys.stdin.read
data = input().split()
index = 0
t = int(data[index])
index += 1
primes = prime()
results = []
for _ in range(t):
n = int(data[index])
x = int(data[index + 1])
index += 2
mp = defaultdict(int)
# Factor x
for p in primes:
if x < p:
break
while x % p == 0:
mp[p] += 1
x //= p
if x > 1:
mp[x] += 1
compress = {}
num = 1
for key in mp:
compress[key] = num
num += 1
dp = [[0] * (num + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
a = int(data[index])
index += 1
for key in mp:
cur = compress[key]
while a % key == 0:
dp[i][cur] += 1
a //= key
for pp in range(1, num):
dp[i][pp] += dp[i - 1][pp]
total = [0] * (num + 1)
for key in mp:
cur = compress[key]
total[cur] = mp[key]
q = int(data[index])
index += 1
for _ in range(q):
l = int(data[index]) - 1
r = int(data[index + 1])
index += 2
possible = True
for pp in range(1, num):
if dp[r][pp] - dp[l][pp] < total[pp]:
possible = False
break
results.append("Yes" if possible else "No")
print("\n".join(results))
if __name__ == "__main__":
main()