#include <algorithm>
#include <cassert>
#include <sstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
 
using namespace std;
#pragma warning(disable:4996)
 
long long dp[10005];
 
int main() {
    int n, m;
 
    double _m;
    while(1) {
        cin >> n >> _m;
        if(!n) break;
        m = (int)(_m * 100 + 1e-9);
 
        memset(dp, 0, sizeof(dp));
 
        for(int i = 0; i < n; ++ i) {
            int c; double _p; int p;
            cin >> c >> _p;
            p = (int)(_p * 100 + 1e-9);
 
            for(int j = p; j <= m; ++ j) {
                dp[j] = max(dp[j], dp[j - p] + c);
            }
        }
 
        cout << *max_element(dp, dp + m + 1) << endl;
    }
 
    return 0;
}