#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void minimize(T& a, const T& b) {
if (b < a) a = b;
}
const int N = 1e2 + 5;
const int MX = 1e5 + 5;
int n, W;
int w[N], v[N];
ll dp[N][MX]; // dp[i][j] = Tổng khối lượng nhỏ nhất khi xét đến món vật thứ i và tổng giá trị hiện tại là j
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> W;
for (int i = 1; i <= n; i++) {
cin >> w[i] >> v[i];
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j < MX; j++) dp[i][j] = LINF;
}
dp[0][0] = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < MX; j++) {
if (dp[i][j] == LINF) continue;
// không chọn món vật thứ i + 1
minimize(dp[i + 1][j], dp[i][j]);
// chọn món vật thứ i + 1
minimize(dp[i + 1][j + v[i + 1]], dp[i][j] + w[i + 1]);
}
}
ll max_sum_v = 0;
for (int j = 0; j < MX; j++) {
if (dp[n][j] <= W) max_sum_v = j;
}
cout << max_sum_v << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIGEgPSBiOyAKfQoKY29uc3QgaW50IE4gPSAxZTIgKyA1OyAKY29uc3QgaW50IE1YID0gMWU1ICsgNTsgCgppbnQgbiwgVzsgCmludCB3W05dLCB2W05dOyAgCgpsbCBkcFtOXVtNWF07IC8vIGRwW2ldW2pdID0gVOG7lW5nIGto4buRaSBsxrDhu6NuZyBuaOG7jyBuaOG6pXQga2hpIHjDqXQgxJHhur9uIG3Ds24gduG6rXQgdGjhu6kgaSB2w6AgdOG7lW5nIGdpw6EgdHLhu4sgaGnhu4duIHThuqFpIGzDoCBqCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBXOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiB3W2ldID4+IHZbaV07IAoJfQoKCWZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewoJCWZvciAoaW50IGogPSAwOyBqIDwgTVg7IGorKykgZHBbaV1bal0gPSBMSU5GOyAKCX0KCglkcFswXVswXSA9IDA7ICAKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBNWDsgaisrKSB7CgkJCWlmIChkcFtpXVtqXSA9PSBMSU5GKSBjb250aW51ZTsgICAgICAgICAgICAgICAgIAoJCQkvLyBraMO0bmcgY2jhu41uIG3Ds24gduG6rXQgdGjhu6kgaSArIDEKCQkJbWluaW1pemUoZHBbaSArIDFdW2pdLCBkcFtpXVtqXSk7IAoKCQkJLy8gY2jhu41uIG3Ds24gduG6rXQgdGjhu6kgaSArIDEgCgkJCW1pbmltaXplKGRwW2kgKyAxXVtqICsgdltpICsgMV1dLCBkcFtpXVtqXSArIHdbaSArIDFdKTsgCgkJfQoJfQoKCWxsIG1heF9zdW1fdiA9IDA7ICAgCglmb3IgKGludCBqID0gMDsgaiA8IE1YOyBqKyspIHsKCQlpZiAoZHBbbl1bal0gPD0gVykgbWF4X3N1bV92ID0gajsgCgl9CgoJY291dCA8PCBtYXhfc3VtX3YgPDwgJ1xuJzsgCn0=