#include<bits/stdc++.h>
using namespace std;
int n,m,father,s[405],f[405][405];
vector <int> e[405];
void dfs(int u){
for(int j=0;j<=m;j++){
f[u][j]=s[u];
}
for(int v=0;v<e[u].size();v++){
dfs(e[u][v]);
for(int j=m;j>=1;j--){
for(int k=1;k<j;k++){
f[u][j]=max(f[u][j],f[u][j-k]+f[e[u][v]][k]);
}
}
}
}
int main(){
cin>>n>>m;
m++;
for(int i=1;i<=n;i++){
cin>>father>>s[i];
e[father].push_back(i);
}
dfs(0);
cout<<f[0][m];
return 0;
}