#include <bits/stdc++.h>
#define MAXN 305
using namespace std;
vector <int> G[MAXN];
int n,m,f[MAXN][MAXN];
inline void dfs(int u)
{
for(int i=1;i<G[u].size();i++)
dfs(G[u][i]);
for(int i=1;i<G[u].size();i++)
for(int j=m,v=G[u][i];j>0;--j)
for(int k=0;k<j;++k)
f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin >> n >> m;
++m;
for(register int i=1;i<=n;i++)
{
int fa;
cin >> fa >> f[i][1];
G[fa].push_back(i);
G[i].push_back(fa);
}
dfs(0);
cout << f[0][m] << endl;
return 0;
}