#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,n) for(int i=0; i=b; --i) #define ALL(c) c.begin(), c.end() typedef long long ll; typedef vector VI; typedef vector VL; typedef vector VVI; typedef pair P; typedef pair PL; int main() { int n; cin >> n; VI v(n), w(n); REP(i,n) cin >> v[i] >> w[i]; int p; cin >> p; int m = 100001; VVI dp(n+1, VI(m)); REP(i,n) REP(j,m){ dp[i+1][j] = max(dp[i+1][j], dp[i][j]); if (j + w[i] < m) dp[i+1][j+w[i]] = max(dp[i+1][j+w[i]], dp[i][j] + v[i]); } FOR(j,1,m){ if (dp[n][j] == p){ cout << j << endl; break; } } if (dp[n][m-1] == p) cout << "inf" << endl; else{ FORR(j,m-1,0){ if (dp[n][j] == p){ cout << j << endl; break; } } } }