#include <bits/stdc++.h>
using namespace std;
int ft[200];
int tag[200];
int find_ft(int x) {
  if (ft[x] != x) ft[x] = find_ft(ft[x]);
  return ft[x];
}
void unite(int x, int y) {
  x = find_ft(x);
  y = find_ft(y);
  if (x != y) ft[y] = x;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) ft[i] = i;
  for (int i = 1; i <= n; i++) scanf("%d", &tag[i]);
  for (int i = 1; i <= n; i++) {
    int l;
    scanf("%d", &l);
    if (i - l >= 1) unite(i - l, i);
    if (i + l <= n) unite(i + l, i);
  }
  int flag = 0;
  for (int i = 1; i <= n; i++) {
    if (find_ft(i) != find_ft(tag[i])) {
      printf("NO\n");
      flag = 1;
      break;
    }
  }
  if (flag == 0) printf("YES\n");
  return 0;
}
