#include <bits/stdc++.h>
using namespace std;
int n, fa[1010], a[1010], f[1010], g[1010][5010];
void insert(int *f, int n, int x, int y) {
  for (int i = n; i >= 0; --i) {
    int t = i >= x ? f[i - x] + y : 1 << 29;
    if (i >= y) t = min(t, f[i - y] + x);
    f[i] = t;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; ++i) scanf("%d", &fa[i]);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  for (int i = n; i >= 1; --i) {
    f[i] = 1 << 29;
    for (int j = 0; j <= a[i]; ++j) f[i] = min(f[i], g[i][j]);
    if (i > 1) insert(g[fa[i]], a[fa[i]], a[i], f[i]);
  }
  puts(f[1] < 1 << 29 ? "POSSIBLE" : "IMPOSSIBLE");
  return 0;
}
