#include <bits/stdc++.h>
using namespace std;
int n, nt[100002], ft[100002], ed[100002], L, v[100002], h[5002];
int add(int a, int b) {
  nt[++L] = ft[a];
  ft[a] = L;
  ed[L] = b;
}
void dfs(int x) {
  int t = 0;
  for (int i = ft[x]; i; i = nt[i]) {
    dfs(ed[i]);
    if (v[ed[i]] <= v[x]) {
      t = 1;
      break;
    }
  }
  if (ft[x] && !t) {
    puts("IMPOSSIBLE");
    exit(0);
  }
}
int main() {
  cin >> n;
  for (int i = 2, x; i <= n; i++) cin >> x, add(x, i);
  for (int i = 1; i <= n; i++) cin >> v[i];
  dfs(1);
  puts("POSSIBLE");
  return 0;
}
