#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define all(c) ((c).begin(),(c).end()) #define rall(c) ((c).rbegin(),(c).rend()) #define ll long long #define fi first #define se second #define inf (999999999) using namespace std; const ll MOD = 1e9 + 7; const double PI = acos(-1.0); //---------------------------------------------------------------------------------------------// int n; int v[101], w[101]; int vv; int dp[101][100001]; int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> v[i] >> w[i]; } cin >> vv; for (int i = 0; i < n; i++) { for (int j = 0; j <= 100000; j++) { if (j + w[i] > 100000)continue; dp[i + 1][j + w[i]] = max(dp[i][j] + v[i], dp[i + 1][j + w[i]]); dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]); } } vector vi; for (int i = 0; i < 100000; i++) { if (dp[n][i] == vv) { vi.push_back(i); } } sort(vi.begin(), vi.end()); if (vi[0] == 0) { cout << 1 << endl; } else { cout << vi[0] << endl; } ((vi[vi.size() - 1] == 99999) ? cout << "inf" << endl : cout << vi[vi.size() - 1] << endl); }