#include using namespace std; int num, item[100][2], v, w; int W = 0, V = 0; int func1(int n) { if(V == v) { return W; } else if(V > v || n == num) return 2147483647; V += item[n][0]; W += item[n][1]; int res1 = func1(n+1); V -= item[n][0]; W -= item[n][1]; int res2 = func1(n+1); return (res1 < res2) ? res1 : res2; } int func2(int n) { if(W > w) return -1; if(n == num) { return V; } V += item[n][0]; W += item[n][1]; int res1 = func2(n+1); V -= item[n][0]; W -= item[n][1]; int res2 = func2(n+1); return (res1 > res2) ? res1 : res2; } int main() { int all = 0; cin >> num; for (int i=0; i> item[i][0] >> item[i][1]; all += item[i][1]; } cin >> v; int mymin = func1(0); w = mymin+1; while(func2(0) == v) { //cout << func2(0) << " " << w << endl; w++; if(w > all) { cout << mymin << endl << "inf" << endl; return 0; } } w--; if(mymin == 0) mymin = 1; cout << mymin << endl << w << endl; return 0; }