#include <stdio.h>
#define max(a,b) (a)>(b)? (a):(b);

main(){
    int N,W;
    int v[100],w[100];
    int dp[101][15000]={{0,},};
    int i,j;

    scanf("%d %d",&N,&W);
    for(i=0;i<N;i++)
        scanf("%d %d",&v[i],&w[i]);

    for(i=1;i<=N;i++){
        for(j=0;j<=W-w[i-1];j++)
            dp[i][j+w[i-1]]=max(dp[i-1][j+w[i-1]],dp[i-1][j]+v[i-1])
    }

    int maxv=-1;
    for(i=0;i<W+1;i++){
        maxv=max(maxv,dp[N][i]);
    }

    printf("%d\n",maxv);

    return 0;
}