#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
int n,ans,x,p[1000005],dp[1000005],sz[1000005],a[1000005];
vector <int> adj[1000005];
bool vis[1000005];
set <pair <int,int> > s;
void dfs(int x){
dp[x]=0;
sz[x]=a[x];
for(auto u:adj[x]){
dfs(u);
dp[x]+=dp[u];
sz[x]+=sz[u];
}
dp[x]=min({dp[x],0LL,sz[x]});
}
signed main(){
cin>>n>>ans;
a[0]=ans;
for(int i=1;i<=n;i++){
int p;
cin>>a[i];
cin>>p;
adj[p].pb(i);
}
dfs(0);
cout<<sz[x]-dp[x]-a[0]<<endl;
}