#include <bits/stdc++.h>
using namespace std;
int dp[30000];
int num_book;
struct bo {
  int t, w;
} book[10000];
void init(int *a, int b, int len) {
  int i;
  for (i = 1; i <= len; ++i) {
    a[i] = b;
  }
}
int main() {
  int i, j, k, sumt, sumw;
  while (scanf("%d", &num_book) != EOF) {
    sumt = sumw = 0;
    for (i = 1; i <= num_book; ++i) {
      scanf("%d %d", &book[i].t, &book[i].w);
      sumt += book[i].t;
      sumw += book[i].w;
    }
    for (i = 1; i <= sumt; ++i) {
      dp[0] = 0;
      init(dp, -0x3f3f3f3f, sumw);
      for (j = 1; j <= num_book; ++j) {
        for (k = i; k >= book[j].t; --k) {
          dp[k] = max(dp[k], dp[k - book[j].t] + book[j].w);
        }
      }
      if (i >= sumw - dp[i]) break;
    }
    printf("%d\n", i);
  }
  return 0;
}
