#include<bits/stdc++.h>
using namespace std;
int n,m,t;
long long knap[10001];
int treea[10001];
int val[10001];
long long maximum=0;
int main()
{
	int ass,i,j;
	
//	scanf("%d",&t);
//	for(ass=0;ass<t;ass++)
//	{
		memset(knap,0,sizeof knap);
		scanf("%d %d",&n,&m);
		for(i=0;i<n;i++)
		{
			scanf("%d %d",&treea[i],&val[i]);
		}
		
		for(i=0;i<n;i++)
		{
			for(j=m;j>=0;j--)
			{
				if(knap[j]!=0 ||(j==0))
				{
					knap[j+treea[i]] =knap[j] + val[i];
				}
			}
		}
		for(i=m;i>=0;i--)
		{
			if(knap[i]>maximum)
			{
				maximum = knap[i];
//				printf("%lld\n",knap[i]);
			}
		}
		
				printf("%lld\n",maximum);
//	}
	
	
	
	
}