N,M,K=map(int, input().split()) A=list(map(int, input().split())) import heapq V=[-1]*N a=min(A) D=[[] for i in range(N)] for _ in range(M): x,y=map(int, input().split()) x-=1;y-=1 D[x].append(y);D[y].append(x) E=[] for i in range(N): if A[i]==a: V[i]=1 heapq.heappush(E,(A[i],i)) B=[a] while E: s,idx=heapq.heappop(E) B.append(s) for nex in D[idx]: if V[nex]==-1: V[nex]=1;heapq.heappush(E,(A[nex],nex)) if B[-1]-B[-2]>K: print('No') exit() print('Yes')