#include <bits/stdc++.h>
int n;
int p[1050], x[1050];
int a[1050], b[1050];
bool dp() {
  for (int i = n; i; i--) {
    if (a[i] > x[i]) return false;
    if (b[i] <= x[i])
      a[p[i]] += a[i], b[p[i]] += x[i];
    else
      a[p[i]] += x[i], b[p[i]] += b[i];
  }
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; i++) scanf("%d", p + i);
  for (int i = 1; i <= n; i++) scanf("%d", x + i);
  if (dp())
    puts("POSSIBLE");
  else
    puts("IMPOSSIBLE");
  return 0;
}
