#include <bits/stdc++.h>
using namespace std;
int parent[111];
int getParent(int i) {
  while (parent[i] != i) {
    parent[i] = parent[parent[i]];
    i = parent[i];
  }
  return i;
}
void unite(int i, int j) {
  int x = getParent(i);
  int y = getParent(j);
  parent[x] = y;
}
int p[111];
int main() {
  ios_base::sync_with_stdio(false);
  int n;
  scanf("%d", &n);
  for (int i = (int)(1); i < ((int)n + 1); i++) {
    scanf("%d", p + i);
    parent[i] = i;
  }
  for (int i = (int)(1); i < ((int)n + 1); i++) {
    int d;
    scanf("%d", &d);
    if (i + d <= n) unite(i, i + d);
    if (i - d >= 1) unite(i, i - d);
  }
  bool flag = true;
  for (int i = (int)(1); i < ((int)n + 1); i++) {
    if (getParent(i) != getParent(p[i])) {
      flag = false;
    }
  }
  if (flag)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
  return 0;
}
