#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define BET(a,b,c) ((a)<=(b)&&(b)<(c)) #define FOR(i,n) for(int i=0,i##_end=(int(n));i VI; typedef vector VVI; struct data{ int V,T; }; bool dp[10011]; int main() { int N; cin>>N; vector dat(N); FOR(i,N) scanf("%d%d",&dat[i].V,&dat[i].T); sort(ALL(dat),[](const data&d1, const data&d2){ int take1 = (d1.V) <= d2.T; int take2 = (d2.V) <= d1.T; if(take1 == take2){ return d1.T < d2.T; }else if(take1){ return true; }else return false; }); memset(dp , 0 , sizeof(dp)); dp[0] = true; for(const auto& d : dat){ for(int i=d.T-1;i>=0;i--){ dp[i+d.V] |= dp[i] ; } } int ans = 0; for(int i=10000;i>=0;i--){ if(dp[i]){ ans=i; break; } } cout<