#include<bits/stdc++.h>
using namespace std;

const long long MaxN = 1e5 + 5;

long long n, W;          // n: số loại đồ vật, W: sức chứa tối đa của balo
long long w[MaxN];        // w[i]: khối lượng của đồ vật i
long long v[MaxN];        // v[i]: giá trị của đồ vật i
long long dp[MaxN];       // dp[j]: giá trị lớn nhất đạt được với sức chứa j

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> W;

    for(long long i = 1; i <= n; i++)
    {
        cin >> w[i] >> v[i];
    }

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

    cout << dp[W];
}