//code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;
const int maxn=1e5+100;
int w[maxn];
vector<int>v[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n;i++){
int x;
scanf("%d %d",&x,&w[i]);
v[x].push_back(i);
}
w[1]=0;
queue<int>q;
q.push(1);
while(!q.empty()){
int root=q.front();
int len=v[root].size();
if(len)
for(int i=0;i<len;i++){
int p=v[root][i];
q.push(p);
w[p]^=w[root];
}
q.pop();
}
ll ans=0;
int ret;
for(int i=0;i<20;i++){
ret=0;
for(int j=1;j<=n;j++){
if((w[j]>>i)&1)
ret++;
}
ans+=(1LL<<i)*(1LL*(ret)*(1LL*n-ret));
ans%=mod;
}
ans<<=1;
ans%=mod;
printf("%d\n",ans);
return 0;
}
//这么写为什么只能过95%的样例啊,哭了orz