Problem4956--口算训练

4956: 口算训练

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

小 Q 非常喜欢数学,但是他的口算能力非常弱。因此他找到了小 T,给了小 T 一个长度为n的正整数序列 a1, a2, ..., an,要求小 T 抛出 m 个问题以训练他的口算能力。
每个问题给出三个正整数 l, r, d,小 Q 需要通过口算快速判断 al × al+1 × ... × ar−1 × ar 是不是 d 的倍数。
小 Q 迅速地回答了出来,但是小 T 并不知道正确答案是什么,请写一个程序帮助小 T 计算这些问题的正确答案。

Input

第一行包含一个正整数 T ( 1 ≤ T ≤ 10 ),表示测试数据的组数。
每组数据第一行包含两个正整数 n, m ( 1 ≤ n , m ≤ 100000 ),分别表示序列长度以及问题个数。
第二行包含 n 个正整数 a1, a2, ..., an ( 1 ≤ ai ≤ 100000),表示序列中的每个数。
接下来 m 行,每行三个正整数 l, r, d ( 1 ≤ l ≤ r ≤ n, 1 ≤ d ≤ 100000 ),表示每个问题。

Output

对于每个问题输出一行,若是倍数,输出 Yes,否则输出 No。

Sample 1 Input

1
5 4
6 4 7 2 5
1 2 24
1 3 18
2 5 17
3 5 35

Sample 1 Output

Yes
No
No
Yes

HINT

【来源】
HDU 6287

Source/Category

提高算法 6.2.二分与三分