#include<bits/stdc++.h>
using namespace std;
const int N=1E5+7;
struct stu{
    int w,v;
    bool friend operator <(const stu &x ,const stu &y) {
        return x.w<y.w;
    }
}arr[N];
int dp[N];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>arr[i].w>>arr[i].v;
    sort(arr+1,arr+1+n);
    for(int i=1;i<=n;i++) {
        for(int j=m+arr[i].w-1;j>=arr[i].w;j--){
            dp[j]=max(dp[j],dp[j-arr[i].w]+arr[i].v);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++) ans=max(dp[m+arr[i].w-1],ans);
    cout<<ans<<endl;
    return 0;
}
