import sys from itertools import permutations from heapq import heappop,heappush from collections import deque import random import bisect input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) def is_prime(n): if n == 1: return False for d in range(2,n): if d * d > n: break if n % d == 0: return False return True def random_prime(L,R): while True: x = random.randint(L,R) if is_prime(x): return x T = 10 RP = [random_prime(10**8,10**9) for _ in range(T)] N,Q,K = mi() A = li() cum = [[0]*(N+1) for t in range(T)] for t in range(T): tmp_pow = 1 mod = RP[t] for i in range(N): cum[t][i+1] = cum[t][i] + A[i] * tmp_pow cum[t][i+1] %= mod tmp_pow = tmp_pow * K % mod for _ in range(Q): l,r = mi() l,r = l-1,r flg = 0 for t in range(T): check = (cum[t][r] - cum[t][l]) % RP[t] if check != 0: flg = 1 print("Yes" if flg else "No")