def frog(arr,k):
for i in range(len(arr)):
if abs(arr[i]-arr[i-1])<=k:
table[i]=table[i-1]
else:
table[i]=table[i-1]+1
"""every reachable point will have same number, dictionary maps element unsorted
list to sorted list with element as key and value as index of element in sorted list """
n,k,p=map(int,input().split())
lst=[int(x) for x in input().split()]
track={}
lstsorted=sorted(lst)
for i,z in enumerate(lstsorted):
track[z]=i
table=[0]*(n+1)
table[-1]=1
for i in range(p):
a,b=map(int,input().split())
i=lst[a]
frog(lstsorted,k)
# print(table)
x,y=track[lst[a-1]],track[lst[b-1]]
print("Yes" if table[x]==table[y] else "No")
ZGVmIGZyb2coYXJyLGspOgoKCWZvciBpIGluIHJhbmdlKGxlbihhcnIpKToKIAoJCWlmIGFicyhhcnJbaV0tYXJyW2ktMV0pPD1rOgoJCQl0YWJsZVtpXT10YWJsZVtpLTFdCgkJZWxzZToKCQkJdGFibGVbaV09dGFibGVbaS0xXSsxCiAKIiIiZXZlcnkgcmVhY2hhYmxlIHBvaW50IHdpbGwgaGF2ZSBzYW1lIG51bWJlciwgZGljdGlvbmFyeSBtYXBzIGVsZW1lbnQgdW5zb3J0ZWQKbGlzdCB0byBzb3J0ZWQgbGlzdCB3aXRoIGVsZW1lbnQgYXMga2V5IGFuZCB2YWx1ZSBhcyBpbmRleCBvZiBlbGVtZW50IGluIHNvcnRlZCBsaXN0ICIiIgogCm4sayxwPW1hcChpbnQsaW5wdXQoKS5zcGxpdCgpKQpsc3Q9W2ludCh4KSBmb3IgeCBpbiBpbnB1dCgpLnNwbGl0KCldCnRyYWNrPXt9CmxzdHNvcnRlZD1zb3J0ZWQobHN0KQpmb3IgaSx6IGluIGVudW1lcmF0ZShsc3Rzb3J0ZWQpOgoJdHJhY2tbel09aQogCnRhYmxlPVswXSoobisxKQp0YWJsZVstMV09MQpmb3IgaSBpbiByYW5nZShwKToKCWEsYj1tYXAoaW50LGlucHV0KCkuc3BsaXQoKSkKCWk9bHN0W2FdCgoJZnJvZyhsc3Rzb3J0ZWQsaykKCSMgcHJpbnQodGFibGUpCgoJeCx5PXRyYWNrW2xzdFthLTFdXSx0cmFja1tsc3RbYi0xXV0KCXByaW50KCJZZXMiIGlmIHRhYmxlW3hdPT10YWJsZVt5XSBlbHNlICJObyIpCgk=