#include <bits/stdc++.h>
const int N = 1005;
int v[N], w[N], dp[N] = {0};
int main() {
  int i, j, V = 0, n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d%d", &w[i], &v[i]);
    V += w[i];
  }
  for (i = 1; i <= V; i++) dp[i] = V;
  for (i = 0; i < n; i++)
    for (j = V; j >= w[i]; j--)
      dp[j] = (dp[j]) < (dp[j - w[i]] + v[i]) ? (dp[j]) : (dp[j - w[i]] + v[i]);
  for (i = V; i >= 0; i--)
    if (V - i >= dp[i]) break;
  printf("%d\n", V - i);
  return 0;
}
