#include using namespace std; const int N = 110, M = 100010, INF = 0x3f3f3f3f; int n, a[N], b[N], bsum, dp[M], ans; int main() { scanf("%d", &n); bsum = 0; for (int i = 1; i <= n; ++i) { scanf("%d%d", &a[i], &b[i]); bsum += b[i]; } for (int i = 1; i <= n; ++i) { for (int j = M - 1; j >= a[i]; --j) { dp[j] = max(dp[j], dp[j - a[i]] + b[i]); } } ans = INF; for (int i = 1; i < M; ++i) { ans = min(ans, max(i, bsum - dp[i])); } printf("%d\n", ans); return 0; }