#include<iostream>#include<istream>#include<sstream>#include<vector>#include<stack>#include<list>#include<map>#include<set>#include<deque>#include<queue>#include<cstring>#include<unordered_map>#include<unordered_set>#include<algorithm>#include<numeric>#include<chrono>#include<ctime>#include<cmath>#include<cctype>#include<string>#include<cstdio>#include<iomanip>#include<thread>#include<mutex>#include<condition_variable>#include<functional>#include<iterator>usingnamespace std;constint maxn =505;int n, p;structNode{int s, d;booloperator<(const Node& input){return d < input.d;}}node[maxn];inttest(int x){int t =0, a =0, b =0, k =0;for(int i =0; i <= p;++i){if(i == x)continue;
t += node[i].s;
k =max(0, t - node[i].d);
b =max(b, k);if(b > a)swap(a, b);}
t += node[x].s;
k =max(0, t - node[x].d);
b =max(b, k);return a + b;}intmain(){int t;
cin >> t;while(t--){
cin >> n;for(int i =0; i < n; i++){
cin >> node[i].s >> node[i].d;}sort(node, node + n);int a =0, b =0, t =0, v;for(int i =0; i < n; i++){
t += node[i].s;
v =max(0, t - node[i].d);if(v > b){
b = v;
p = i;}if(b > a)swap(a, b);}int ans = a + b;for(int i =0; i < p;++i)
ans =min(ans,test(i));
cout << ans << endl;}return0;}