009 - 抽選ボックス
時間制限 2 秒 / メモリ制限 256 MB / 得点 12 / x 0 /
アイヅ祭りの一角で抽選会が行われている。抽選ボックスの中には、何種類かのボールが入っている。それぞれの種類のボールには同じ整数が書いてある。抽選ボックスには一つの整数T が書かれている。
あなたは、2つの整数A、B を宣言した上で、ボックスの中から最大M 個のボールを取り出すことができる。取り出したボールに書かれた整数の和をS とすると、S をT で割った余りがA 以上、かつ、S をTで割った値(小数点以下は切り捨て)がB 以上のとき、素敵な景品をもらうことができる。
ボールの種類の数、各種類のボールに書かれている整数、取り出すことができるボールの最大数、抽選ボックスに書かれている整数、2つの整数A、B からなる宣言が与えられたとき、各宣言に対して景品が得られる可能性があるかを判定するプログラムを作成せよ。ただし、どの種類のボールもM 個以上存在するものとする。ボールを1つも取り出さなくても景品がもらえる場合があることに注意せよ。
Input
入力は以下の形式で与えられる。
N M T a1 a2 : aN Q A1 B1 A2 B2 : AQ BQ
1 行目にボールの種類の数N(1≤N≤105)と、取り出すことができるボールの最大数M(1≤M≤105)と、抽選ボックスに書かれている整数T(1≤T≤1000)が与えられる。続くN 行にi 種類目のボールに書かれた整数ai (1≤ai≤109)が与えられる。続く1 行に宣言の数Q (1≤Q≤105)が与えられる。続くQ 行にi 番目の宣言を表す2つの整数Ai (0 ≤ Ai < T)、Bi (0 ≤ Bi ≤ 109)が与えられる。
Output
各宣言に対して、景品がもらえる可能性がある場合は「yes」、ない場合は「no」と1行に出力する。
Sample Input 1
3 2 7 8 3 6 5 2 2 3 2 4 1 6 1 6 0
Sample Output 1
yes no yes no yes