#include<string> #include<deque> #include<queue> #include<vector> #include<algorithm> #include<iostream> #include<set> #include<cmath> #include<tuple> using namespace std; typedef long long int llint; #define mp make_pair #define mt make_tuple #define pub push_back #define puf push_front #define pob pop_back #define pof pop_front #define fir first #define sec second #define res resize #define ins insert #define era erase const llint mod=1000000007; const llint big=1e9+1e8; const llint red=0xE869120; const llint pro=1002001; int main(void){ int n,v,w,i,j,k,mina=-1,maxa=-1; vector<int>ans,ansa; ans.res(100001); cin>>n; for(i=0;i<n;i++){ cin>>v>>w; for(j=100000-w;j>=0;j--){ ans[j+w]=max(ans[j+w],ans[j]+v); } }cin>>v; for(i=1;i<=100000;i++){ if(ans[i]==v){cout<<i<<endl;break;} } int ok=1; for(;i<=100000;i++){ if(ans[i]>v){cout<<i-1<<endl;ok=0;break;} } if(ok==1){cout<<"inf"<<endl;} return 0; }