#include <iostream>
#include <cstdio>
#include <vector>
#define _max 1000010
using namespace std;
int t,n,s,k,flag=0,temp[_max],sum[_max],pre[_max],root,num[2];
vector<int>v[_max];
int cal(int x)
{
int i,u=v[x].size();
if(u==0)
{
sum[x]=temp[x];
if(temp[x]==t&&x!=root)
{
num[k++]=x;
return 0;
}
return temp[x];
}
for(i=0;i<u;i++)
{
sum[x]=sum[x]+cal(v[x][i]);
}
sum[x]+=temp[x];
if(sum[x]==t&&x!=root)
{
num[k++]=x;
return 0;
}
return sum[x];
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
int i;
for(i=1;i<=n;i++)
{
int a,b;
cin>>a>>b;
v[a].push_back(i);
s+=b;
pre[i]=a;
temp[i]=b;
if(a==0)
root=i;
}
if(s%3!=0)
{
cout<<-1<<endl;
return 0;
}
t=s/3;
cal(root);
if(num[0]==0||num[1]==0)
cout<<-1<<endl;
else
cout<<num[0]<<" "<<num[1]<<endl;
return 0;
}