def solve(): import sys n = int(sys.stdin.readline()) D = list(map(int, sys.stdin.readline().split())) W = list(map(int, sys.stdin.readline().split())) # Target vector: 1 where the coin needs to be flipped (W[i] == 0) b = [(1 - w) % 2 for w in W] # Create the effect matrix where each column is an operation's effect matrix = [] for i in range(n): effect = [0] * n j = (i + D[i]) % n k = (i - D[i]) % n if j == k: effect[j] ^= 1 else: effect[j] ^= 1 effect[k] ^= 1 matrix.append(effect) # Gaussian elimination over GF(2) to check if solution exists # Build augmented matrix aug = [] for i in range(n): row = [] for j in range(n): row.append(matrix[j][i]) # matrix[j][i] is the effect of operation j on coin i row.append(b[i]) aug.append(row) rank = 0 for col in range(n): pivot = -1 for row in range(rank, n): if aug[row][col] == 1: pivot = row break if pivot == -1: continue aug[rank], aug[pivot] = aug[pivot], aug[rank] for row in range(n): if row != rank and aug[row][col] == 1: for c in range(col, n + 1): aug[row][c] ^= aug[rank][c] rank += 1 for row in range(rank, n): if aug[row][-1] == 1: print("No") return print("Yes") solve()