#include<stdio.h>
#define max(a,b)	(a>b?a:b)
int n,m;
int f[100000];
int main()
{
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		int w,v;
		scanf("%d %d",&w,&v);
		for(int j=m;j>=w;j--)
		f[j]=max(f[j],f[j-w]+v);
	}
	printf("%d",f[m]);
	return 0;
}
/**************************************************************
	Problem: 1546
	User: admin
	Language: C
	Result: Accepted
	Time:5 ms
	Memory:1536 kb
****************************************************************/