#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; const int INF=1e9; int main() { int n; cin>>n; int a[101], b[101]; for(int i=1; i<=n; i++){ cin>>a[i]>>b[i]; } int dp[101][100001]; for(int i=0; i<=n; i++){ fill(dp[i], dp[i]+100001, INF); } dp[0][0]=0; for(int i=1; i<=n; i++){ for(int j=0; j<=100000-a[i]; j++){ dp[i][j+a[i]]=dp[i-1][j]; } for(int j=0; j<=100000; j++){ dp[i][j]=min(dp[i][j], dp[i-1][j]+b[i]); } } int ans=1e9; for(int i=0; i<=100000; i++){ ans=min(ans, max(dp[n][i], i)); } cout<