One day *n* cells of some array decided to play the following game. Initially each cell contains a number which is equal to it's ordinal number (starting from 1). Also each cell determined it's favourite number. On it's move *i*-th cell can exchange it's value with the value of some other *j*-th cell, if |*i* - *j*| = *d*<sub class="lower-index">*i*</sub>, where *d*<sub class="lower-index">*i*</sub> is a favourite number of *i*-th cell. Cells make moves in any order, the number of moves is unlimited.

The favourite number of each cell will be given to you. You will also be given a permutation of numbers from 1 to *n*. You are to determine whether the game could move to this state.
The first line contains positive integer *n* (1 ≤ *n* ≤ 100) — the number of cells in the array. The second line contains *n* distinct integers from 1 to *n* — permutation. The last line contains *n* integers from 1 to *n* — favourite numbers of the cells.
import math,sys,bisect,heapq,os
from collections import defaultdict,Counter,deque
from itertools import groupby,accumulate
from functools import lru_cache
#sys.setrecursionlimit(200000000)
int1 = lambda x: int(x) - 1
def input(): return sys.stdin.readline().rstrip('\r\n')
#input = iter(sys.stdin.buffer.read().decode().splitlines()).__next__
aj = lambda: list(map(int, input().split()))
def list3d(a, b, c, d): return [[[d] * c for j in range(b)] for i in range(a)]
#MOD = 1000000000 + 7
def Y(c):  print(["NO","YES"][c])
def y(c):  print(["no","yes"][c])
def Yy(c):  print(["No","Yes"][c])

def solve():
	G = defaultdict(list)

	def addEdge(a,b):
		G[a].append(b)
		G[b].append(a)

	def dfs(node):
		d = deque()
		d.append(node)
		vis[node] = True
		ind = [];t = []
		while d:
			x = d.pop()
			ind.append(x)
			t.append(A[x])
			for i in G.get(x,[]):
				if not vis[i]:
					vis[i] = True
					d.append(i)
		ind.sort(reverse = True)
		t.sort(reverse = True)
		while t:
			Ans[ind.pop()] = t.pop()


	n, =aj()
	vis = [False]*(n+1)

	A = aj()
	B = aj()
	for i in range(n):
		p = B[i]
		if i - p >= 0:
			addEdge(i-p,i)
		if i + p < n:
			addEdge(i,i+p)

	Ans = [-1]*n
	for i in range(n):
		if not vis[i]:
			dfs(i)
	Y(Ans == sorted(Ans))



try:
	#os.system("online_judge.py")
	sys.stdin = open('input.txt', 'r') 
	sys.stdout = open('output.txt', 'w')
except:
	pass

solve()