import random import sys B=random.randrange(10,13) print(B,file=sys.stderr) R=range J=lambda:map(int,input().split()) N,Q,K=J() A=list(J()) while N%B: A+=[0] N+=1 N//=B def Add(i,t,F): i+=1 while i<=N:F[i],i=F[i]+t,i+(i&-i) def InitialSum(r,F): a=0 i=min(r+1,N) while i:a,i=a+F[i],i-(i&-i) return a def IntervalSum(l,r,F): return InitialSum(r,F)-InitialSum(l-1,F) bit=[[0]*(N+1)for i in R(B)] for i in R(B): for j in R(N):Add(j,A[j*B+i],bit[i]) for q in R(Q): l,r=J() k=K l,t,p,M=l-1,0,1,pow(k,B)-1 for i in R(B): x,y=l//B,(r-1)//B if l>x*B+i:x+=1 if y*B+i>r-1:y-=1 t,p=t+(0if x>y else IntervalSum(x,y,bit[i])*p),p*k print("YNeos"[t%M==0::2])