#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
int A[100005];
void dfs_sum(vector<vector<lli> >&adj,vector<lli>&sum,vector<lli>&bright,int i,vector<lli>&level)
{
sum[i]=bright[i];
for(int j=0;j<adj[i].size();j++){
level[adj[i][j]]=level[i]+1;
dfs_sum(adj,sum,bright,adj[i][j],level);
sum[i]+=sum[adj[i][j]];
}
}
int main() {
// your code goes here
lli n;
cin >> n;
vector<lli>par(n+1);
vector<vector<lli> >adj(n+1);
vector<lli>sum(n+1);
vector<lli>bright(n+1);
vector<lli>level(n+1);
lli a,b,root;
for(int i=1;i<=n;i++)
{
cin >> a >> b;
par[i]=a;
//adj[i]=a;
adj[a].push_back(i);
bright[i]=b;
if(a==0)
root=i;
}
level[root]=0;
dfs_sum(adj,sum,bright,root,level);
//for(int i=1;i<=n;i++)
//cout << level[i] <<" ";
if(sum[root]%3!=0)
{
cout << -1 << endl;
return 0;
}
vector<lli>viable;
int min_ind,max_lev=-1;
for(int i=1;i<=n;i++)
{
if(sum[i]==sum[root]/3){
viable.push_back(i);
if(level[i]>max_lev){
max_lev=level[i];
min_ind=i;
}
}
}
if(viable.empty()||viable.size()<2)
{
cout << -1 << endl;
}
set<lli>wrong;
int gg=min_ind;
while(gg!=0)
{
wrong.insert(gg);
gg=par[gg];
}
for(int i=0;i<viable.size();i++)
{
if(wrong.find(viable[i])==wrong.end())
{
cout << min_ind << " " << viable[i]<<endl;
return 0;
}
}
cout << -1 << endl;
return 0;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsaTsKaW50IEFbMTAwMDA1XTsKCnZvaWQgZGZzX3N1bSh2ZWN0b3I8dmVjdG9yPGxsaT4gPiZhZGosdmVjdG9yPGxsaT4mc3VtLHZlY3RvcjxsbGk+JmJyaWdodCxpbnQgaSx2ZWN0b3I8bGxpPiZsZXZlbCkKewoJc3VtW2ldPWJyaWdodFtpXTsKCWZvcihpbnQgaj0wO2o8YWRqW2ldLnNpemUoKTtqKyspewoJbGV2ZWxbYWRqW2ldW2pdXT1sZXZlbFtpXSsxOwoJZGZzX3N1bShhZGosc3VtLGJyaWdodCxhZGpbaV1bal0sbGV2ZWwpOwoJc3VtW2ldKz1zdW1bYWRqW2ldW2pdXTsKCX0KfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglsbGkgbjsKCWNpbiA+PiBuOwoJdmVjdG9yPGxsaT5wYXIobisxKTsKCXZlY3Rvcjx2ZWN0b3I8bGxpPiA+YWRqKG4rMSk7Cgl2ZWN0b3I8bGxpPnN1bShuKzEpOwoJdmVjdG9yPGxsaT5icmlnaHQobisxKTsKCXZlY3RvcjxsbGk+bGV2ZWwobisxKTsKCWxsaSBhLGIscm9vdDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJewoJCWNpbiA+PiBhID4+IGI7CgkJcGFyW2ldPWE7CgkJLy9hZGpbaV09YTsKCQlhZGpbYV0ucHVzaF9iYWNrKGkpOwoJCWJyaWdodFtpXT1iOwoJCWlmKGE9PTApCgkJcm9vdD1pOwoJfQoJbGV2ZWxbcm9vdF09MDsKCWRmc19zdW0oYWRqLHN1bSxicmlnaHQscm9vdCxsZXZlbCk7CgkvL2ZvcihpbnQgaT0xO2k8PW47aSsrKQoJLy9jb3V0IDw8IGxldmVsW2ldIDw8IiAiOwoJaWYoc3VtW3Jvb3RdJTMhPTApCgl7CgkJY291dCA8PCAtMSA8PCBlbmRsOwoJCXJldHVybiAwOwoJfQoJdmVjdG9yPGxsaT52aWFibGU7CglpbnQgbWluX2luZCxtYXhfbGV2PS0xOwoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7CgkJaWYoc3VtW2ldPT1zdW1bcm9vdF0vMyl7CgkJdmlhYmxlLnB1c2hfYmFjayhpKTsKCQlpZihsZXZlbFtpXT5tYXhfbGV2KXsKCQkJCW1heF9sZXY9bGV2ZWxbaV07CgkJCQltaW5faW5kPWk7CgkJCX0KCQl9Cgl9CglpZih2aWFibGUuZW1wdHkoKXx8dmlhYmxlLnNpemUoKTwyKQoJewoJCWNvdXQgPDwgLTEgPDwgZW5kbDsKCX0KCXNldDxsbGk+d3Jvbmc7CglpbnQgZ2c9bWluX2luZDsKCXdoaWxlKGdnIT0wKQoJewoJCXdyb25nLmluc2VydChnZyk7CgkJZ2c9cGFyW2dnXTsKCX0KCWZvcihpbnQgaT0wO2k8dmlhYmxlLnNpemUoKTtpKyspCgl7CgkJaWYod3JvbmcuZmluZCh2aWFibGVbaV0pPT13cm9uZy5lbmQoKSkKCQl7CgkJCWNvdXQgPDwgbWluX2luZCA8PCAiICIgPDwgdmlhYmxlW2ldPDxlbmRsOwoJCQlyZXR1cm4gMDsKCQl9Cgl9Cgljb3V0IDw8IC0xIDw8IGVuZGw7CglyZXR1cm4gMDsKCXJldHVybiAwOwp9