#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, s;
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ới tổng giá trị của các món vật đã chọn là j
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> s;
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 = 1; i <= n; i++) {
for (int j = 0; j < MX; j++) {
// Bỏ qua món vật thứ i
minimize(dp[i][j], dp[i - 1][j]);
// Chọn món vật thứ i
if (j >= v[i]) minimize(dp[i][j], dp[i - 1][j - v[i]] + w[i]);
}
}
int max_sum_v = 0;
for (int j = 0; j < MX; j++) {
if (dp[n][j] <= s) max_sum_v = j;
}
cout << max_sum_v << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIGEgPSBiOyAKfQoKY29uc3QgaW50IE4gPSAxZTIgKyA1OyAKY29uc3QgaW50IE1YID0gMWU1ICsgNTsgCgppbnQgbiwgczsgCmludCB3W05dLCB2W05dOyAgCgpsbCBkcFtOXVtNWF07IC8vIGRwW2ldW2pdID0gVOG7lW5nIGto4buRaSBsxrDhu6NuZyBuaOG7jyBuaOG6pXQga2hpIHjDqXQgxJHhur9uIG3Ds24gduG6rXQgdGjhu6kgaSAKCQkJICAvLyAgICAgICAgICAgIHbhu5tpIHThu5VuZyBnacOhIHRy4buLIGPhu6dhIGPDoWMgbcOzbiB24bqtdCDEkcOjIGNo4buNbiBsw6AgagoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gczsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljaW4gPj4gd1tpXSA+PiB2W2ldOyAKCX0KCglmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IE1YOyBqKyspIGRwW2ldW2pdID0gTElORjsgCgl9CglkcFswXVswXSA9IDA7ICAKCQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBNWDsgaisrKSB7CgkJCS8vIELhu48gcXVhIG3Ds24gduG6rXQgdGjhu6kgaQoJCQltaW5pbWl6ZShkcFtpXVtqXSwgZHBbaSAtIDFdW2pdKTsgCgoJCQkvLyBDaOG7jW4gbcOzbiB24bqtdCB0aOG7qSBpIAoJCQlpZiAoaiA+PSB2W2ldKSBtaW5pbWl6ZShkcFtpXVtqXSwgZHBbaSAtIDFdW2ogLSB2W2ldXSArIHdbaV0pOyAKCQl9Cgl9CgoJaW50IG1heF9zdW1fdiA9IDA7ICAgCglmb3IgKGludCBqID0gMDsgaiA8IE1YOyBqKyspIHsKCQlpZiAoZHBbbl1bal0gPD0gcykgbWF4X3N1bV92ID0gajsgCgl9CgoJY291dCA8PCBtYXhfc3VtX3YgPDwgJ1xuJzsgCn0=