P2014
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[302][302];
vector<int>e[302];
void work(int x){
int sz=e[x].size();
for(int i=0;i<sz;i++){
int y=e[x][i];
work(y);
for(int j=m;j>0;j--){
for(int k=0;k<j;k++){
f[x][j]=max(f[x][j],f[x][j-k]+f[y][k]);
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int x;
scanf("%d%d",&x,&f[i][1]);
e[x].push_back(i);
}
work(0);
printf("%d",f[0][m]);
return 0;
}