#include<bits/stdc++.h>
using namespace std;
class Knapsack{
public:
long long maximumValue(vector<int>& weights, vector<int>& values, int n, int capacity) {
long long total_value = 0;
for(int v : values) total_value += v;
vector<long long> dp(total_value+1, LLONG_MAX);
dp[0] = 0;
for(int i = 0; i < n; ++i) {
for(int v = total_value; v >= values[i]; --v) {
if(dp[v - values[i]] != LLONG_MAX) {
dp[v] = min(
dp[v],
weights[i] + dp[v - values[i]]
);
}
}
}
int res = 0;
for(int v = total_value; v > 0; --v) {
if(dp[v] <= capacity) {
res = v;
break;
}
}
return res;
}
};
int main() {
int n, c;
cin >> n >> c;
vector<int> weights(n), values(n);
for(int i = 0; i < n; ++i) {
cin >> weights[i] >> values[i];
}
Knapsack* obj = new Knapsack();
cout << obj->maximumValue(weights, values, n, c);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKY2xhc3MgS25hcHNhY2t7CiAgcHVibGljOiAKICAgIGxvbmcgbG9uZyBtYXhpbXVtVmFsdWUodmVjdG9yPGludD4mIHdlaWdodHMsIHZlY3RvcjxpbnQ+JiB2YWx1ZXMsIGludCBuLCBpbnQgY2FwYWNpdHkpIHsKCSAgICBsb25nIGxvbmcgdG90YWxfdmFsdWUgPSAwOwoJICAgIGZvcihpbnQgdiA6IHZhbHVlcykgdG90YWxfdmFsdWUgKz0gdjsKCSAgICAKCSAgICB2ZWN0b3I8bG9uZyBsb25nPiBkcCh0b3RhbF92YWx1ZSsxLCBMTE9OR19NQVgpOwoJICAgIGRwWzBdID0gMDsKCSAgICAKCSAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkgICAgCWZvcihpbnQgdiA9IHRvdGFsX3ZhbHVlOyB2ID49IHZhbHVlc1tpXTsgLS12KSB7CgkgICAgCQlpZihkcFt2IC0gdmFsdWVzW2ldXSAhPSBMTE9OR19NQVgpIHsKCQkgICAgICAgICAgICBkcFt2XSA9IG1pbigKCQkgICAgICAgICAgICAgICAgZHBbdl0sCgkJICAgICAgICAgICAgICAgIHdlaWdodHNbaV0gKyBkcFt2IC0gdmFsdWVzW2ldXQoJCSAgICAgICAgICAgICk7CiAgICAgICAgCQl9CgkgICAgCX0KCSAgICB9CgkgICAgCgkgICAgaW50IHJlcyA9IDA7CgkgICAgZm9yKGludCB2ID0gdG90YWxfdmFsdWU7IHYgPiAwOyAtLXYpIHsKCSAgICAJaWYoZHBbdl0gPD0gY2FwYWNpdHkpIHsKCSAgICAJCXJlcyA9IHY7CgkgICAgCQlicmVhazsKCSAgICAJfQoJICAgIH0KICAgIAlyZXR1cm4gcmVzOwogICAgfQp9OwoKCmludCBtYWluKCkgewogIGludCBuLCBjOyAKICBjaW4gPj4gbiA+PiBjOwogIHZlY3RvcjxpbnQ+IHdlaWdodHMobiksIHZhbHVlcyhuKTsKICAKICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICBjaW4gPj4gd2VpZ2h0c1tpXSA+PiB2YWx1ZXNbaV07CiAgfQogIAogIEtuYXBzYWNrKiBvYmogPSBuZXcgS25hcHNhY2soKTsKICBjb3V0IDw8IG9iai0+bWF4aW11bVZhbHVlKHdlaWdodHMsIHZhbHVlcywgbiwgYyk7CiAgcmV0dXJuIDA7Cn0=