#include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,n) for(int i=0;i<(n);++i) #define REPS(i,s,t) for(int i=(s);i<(t);++i) #define INF 2000000007 #define MOD 998244353 #define MAX 100005 typedef unsigned int uint; typedef unsigned long long int ull; typedef long long int ll; int dp[MAX]; int main(){ int n;cin>>n; vector a(n),b(n); REP(i,n)cin>>a[i]>>b[i]; memset(dp,-1,MAX); dp[0]=0; REP(i,n){ for(int j=MAX-1;j>=a[i];--j){ if(dp[j-a[i]]==-1)continue; dp[j] = max(dp[j-a[i]]+b[i],dp[j]); } } int sumb = 0; REP(i,n)sumb+=b[i]; int ans = INF; REP(i,MAX){ ans = min(ans,max(i,sumb - dp[i])); } //REP(i,MAX)if(dp[i]>0)cout << i <<" " << dp[i] << endl; cout << ans << endl; return 0; }