#include <bits/stdc++.h>
using namespace std;
const long long PR = 1000000009;
long long root, n, br[1000009], tsum[1000009], tot;
vector<int> llist[1000009];
vector<int> vis(1000009, 0), partoans(1000009, -1);
int findsum(int vertx) {
  vis[vertx] = 1;
  long long ans = br[vertx], cnt = 0, a, b;
  for (int i = 0; i < llist[vertx].size(); i++) {
    int nxt = llist[vertx][i];
    if (!vis[nxt]) {
      findsum(nxt);
      ans += tsum[nxt];
      if (partoans[nxt] != -1) {
        partoans[vertx] = partoans[nxt];
        if (!cnt) {
          a = partoans[nxt];
          cnt++;
        } else {
          b = partoans[nxt];
          cout << a + 1 << ' ' << b + 1 << '\n';
          exit(0);
        }
      }
    }
  }
  tsum[vertx] = ans;
  if (ans == 2 * tot / 3 && vertx != root && partoans[vertx] != -1) {
    cout << vertx + 1 << ' ' << partoans[vertx] + 1 << '\n';
    exit(0);
  }
  if (ans == tot / 3) {
    partoans[vertx] = vertx;
  }
}
int main() {
  ios::sync_with_stdio(false);
  tot = 0;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int a, b;
    cin >> a;
    a--;
    cin >> br[i];
    tot += br[i];
    if (a >= 0) {
      llist[a].push_back(i);
      llist[i].push_back(a);
    } else
      root = i;
  }
  if (tot % 3) {
    cout << -1 << '\n';
    return 0;
  }
  findsum(root);
  cout << -1 << '\n';
  return 0;
};
