#include <bits/stdc++.h>
using namespace std;
int n,m,tk,s[305],cnt[305],f[305][305][305],fa[305];
vector <int> a[305];
void dfs (int x)
{
int sum=1;
for (int i=0;i<a[x].size ();i++)
{
sum++;
dfs (a[x][i]);
for (int j=1;j<=m;j++)
{
for (int k=0;k<j;k++)
{
f[x][sum][j]=max (f[x][sum-1][j-k]+f[a[x][i]][cnt[a[x][i]]][k],f[x][sum][j]);
}
}
}
}
int main()
{
cin>>n>>m;
m++;
for (int i=1;i<=n;i++)
{
cin>>tk>>s[i];
if (!tk)
{
continue;
}
a[tk].push_back (i);
cnt[tk]++;
fa[i]=tk;
}
for (int i=1;i<=n;i++)
{
if (!fa[i])
{
a[0].push_back (i);
cnt[0]++;
}
}
for (int i=0;i<=n;i++)
{
for (int j=0;j<=m;j++)
{
f[i][1][j]=s[i];
}
}
dfs (0);
cout<<f[0][n][m]<<endl;
return 0;
}