/*
分析:
优先队列的简单应用,就不多说了。
2012-08-01 12:36
*/
分析:
优先队列的简单应用,就不多说了。
2012-08-01 12:36
*/
#include"stdio.h"
#include"queue"
#include"string.h"
using namespace std;
int d[100011];
struct node
{
int dis;
int d;
friend bool operator<(node n1,node n2)
{
if(n1.dis!=n2.dis) return n2.dis<n1.dis;
return n2.d<n1.d;
}
};
int MAX(int a,int b)
{
return a>b?a:b;
}
int main()
{
int T;
node cur,next;
int num;
int i;
int n;
int ans;
scanf("%d",&T);
while(T--)
{
priority_queue<node>q;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&cur.dis,&cur.d);
q.push(cur);
}
num=0;
ans=0;
while(!q.empty())
{
num++;
cur=q.top();
q.pop();
ans=MAX(ans,cur.dis);
if(!(num%2)) continue;
next.dis=cur.dis+cur.d;
next.d=cur.d;
q.push(next);
}
printf("%d\n",ans);
}
return 0;
}