#include <iostream>
#include <vector>
#include <algorithm>

#define rep(i,n) for(int i=0; i<(n); i++)

using namespace std;

int main(){
	int N;
	while(cin >> N, N){
		int sum = 0, mx=0, ans=0;
		vector<pair<int,int> > v;

		rep(i,N){
			int r, w;
			cin >> r >> w;
			v.emplace_back(r, w);
			sum += r;
			ans += r + w;
		}

		sort( v.begin(), v.end() );
		mx = v.back().first;
		v.pop_back();

		int dp[2005]={};
		dp[0] = true;
		for(auto t: v) for(int j=1000; j>=0; j--) dp[j+t.second] |= dp[j];

		int tmp = max(0, 2*mx - sum);
		for(int i=0; !dp[tmp-i]; i++) ans++;

		cout << ans << endl;
	}
	return 0;
}