#define _USE_MATH_DEFINES #include using namespace std; //template #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(a);i>(b);i--) #define ALL(v) (v).begin(),(v).end() typedef long long int ll; const int inf = 0x3fffffff; const ll INF = 0x3fffffffffffffff; template inline bool chmax(T& a,T b){ if(a inline bool chmin(T& a,T b){ if(a>b){a=b;return 1;}return 0; } //template end typedef pair P; int dp[5010][5010][2]={}; //idx,sum,isfree int main(){ int n,k; scanf("%d%d",&n,&k); vector

p(n); rep(i,0,n)scanf("%d%d",&p[i].first,&p[i].second); sort(ALL(p)); rep(i,0,n){ rep(l,0,k+1)dp[i+1][l][0]=dp[i][l][0],dp[i+1][l][1]=dp[i][l][1]; rrep(l,k,-1){ chmax(dp[i+1][l][0],dp[i][l][1]+p[i].second); chmax(dp[i+1][min(5005,l+p[i].first)][1],dp[i][l][0]+p[i].second); } } int ans=0; rep(i,0,k+1)chmax(ans,dp[n][i][1]); printf("%d\n",ans); return 0; }