#include <bits/stdc++.h>
using namespace std;
vector<pair<long long int, long long int> > v[1000005];
long long int a[1000005];
long long int calc_sz(long long int u, long long int par) {
  if (u != 1 && v[u].size() == 1) return 1;
  long long int i, ans = 1;
  for (i = 0; i < v[u].size(); i++) {
    if (v[u][i].first != par) {
      ans += calc_sz(v[u][i].first, u);
    }
  }
  return ans;
}
long long int dfs(long long int u, long long int par, long long int sum) {
  long long int i;
  long long int ans = 0;
  if (sum > a[u]) {
    ans = calc_sz(u, par);
    return ans;
  }
  sum = max(0LL, sum);
  for (i = 0; i < v[u].size(); i++) {
    pair<long long int, long long int> p = v[u][i];
    if (p.first != par) {
      ans += dfs(p.first, u, sum + p.second);
    }
  }
  return ans;
}
int main() {
  long long int i, n;
  cin >> n;
  for (i = 1; i <= n; i++) cin >> a[i];
  for (i = 2; i <= n; i++) {
    int a, b;
    cin >> a >> b;
    v[i].push_back(make_pair(a, b));
    v[a].push_back(make_pair(i, b));
  }
  long long int ans = 0;
  for (i = 0; i < v[1].size(); i++) {
    pair<long long int, long long int> p = v[1][i];
    int v = p.first;
    ans += dfs(v, 1, p.second);
  }
  cout << ans;
  return 0;
}
