#include <bits/stdc++.h>

using namespace std;

using int64 = long long;
using vi = vector< int64 >;
const int64 INF = 1LL << 59;

vi operator*(const vi &a, const vi &b)
{
  vi c(a.size(), -INF);
  for(int i = 0; i < a.size(); i++) {
    for(int j = 0; j < b.size(); j++) {
      c[(i + j) % a.size()] = max(c[(i + j) % a.size()], a[i] + b[j]);
    }
  }
  return (c);
}

int main()
{
  int N, M, T, Q;
  scanf("%d %d %d", &N, &M, &T);
  vi V(T, -INF), dp(T, -INF);
  V[0] = dp[0] = 0;
  for(int i = 0; i < N; i++) {
    int64 x;
    scanf("%lld", &x);
    V[x % T] = max(V[x % T], x);
  }
  for(int i = 0; i < 20; i++) {
    if((M >> i) & 1) dp = dp * V;
    V = V * V;
  }
  for(int i = T - 2; i >= 0; i--) {
    dp[i] = max(dp[i], dp[i + 1]);
  }
  scanf("%d", &Q);
  while(Q--) {
    int A, B;
    scanf("%d %d", &A, &B);
    puts(dp[A % T] >= 1LL * B * T ? "yes" : "no");
  }
}