from sys import stdin input = stdin.readline from collections import defaultdict shikii = 2000 def encode(a, b): return a<<20|b N, M = map(int, input().split()) P = list(map(int, input().split())) AB = [list(map(int, input().split())) for _ in range(M)] Q = int(input()) query = [list(map(int, input().split())) for _ in range(Q)] # from random import randrange # N = 20000 # M = 200000 # P = [randrange(1, N+1) for _ in range(N)] # AB = [] # S = set() # while len(AB) < M: # A, B = randrange(1, N+1), randrange(1, N+1) # if A > B: A, B = B, A # if A == B: continue # if (A, B) in S: continue # AB.append((A, B)) # S.add((A, B)) # Q = 200000 # query = [] # S = set() # while len(query) < Q: # X, Y = randrange(1, N+1), randrange(1, N+1) # if X == Y: continue # if (X, Y) in S: continue # query.append((X, Y)) # S.add((X, Y)) P = [p-1 for p in P] G = [[] for _ in range(N)] for A, B in AB: A, B = A-1, B-1 G[A].append(B) G[B].append(A) big = [False]*N for i in range(N): big[i] = shikii <= len(G[i]) GB = [[] for _ in range(N)] for n in range(N): for v in G[n]: if big[v]: GB[n].append(v) D = defaultdict(int) for n in range(N): if not big[n]: continue for v in G[n]: D[encode(n, P[v])] += 1 for X, Y in query: X, Y = X-1, Y-1 Y = P[Y] if P[X] == Y: print("No") continue pre = P[X] if big[X]: if 1 <= D[encode(X, Y)]: P[X] = Y else: for v in G[X]: if P[v] == Y: P[X] = Y break if P[X] == Y: print("Yes") for v in GB[X]: D[encode(v, pre)] -= 1 D[encode(v, Y)] += 1 else: print("No")