蒟蒻已蒙
#include<iostream>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<vector>
#include<bits/stdc++.h>
using namespace std;
int n,m,s[302],l[302],r[302],f[302][302],la[302];
int dp(int x,int y){
if(f[x][y]>=0) return f[x][y];
if(x==0) return 0;
f[x][y]=dp(r[x],y);
for(int i=1;i<=y;i++)
f[x][y]=max(f[x][y],dp(l[x],i)+dp(r[x],y-1-i)+s[x]);
return f[x][y];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int k;
scanf("%d%d",&k,&s[i]);
if(la[k]==0) l[k]=i;
else r[la[k]]=i;
la[k]=i;
}
memset(f,-1,sizeof(f));
printf("%d",dp(l[0],m));
return 0;
}