package com.jiml.test;
import java.io.*;
import java.util.*;
class Node{
int l;
int r;
int index;
public Node(int l,int r,int index){
this.l = l;
this.r = r;
this.index = index;
}
@Override
public String toString() {
return "Node{" +
"l=" + l +
", r=" + r +
", index=" + index +
'}';
}
}
public class Main {
public static void main(String[] args) throws IOException {
PriorityQueue<Node> queue = new PriorityQueue<>(new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
return o1.l-o2.l;
}
});
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] str = reader.readLine().trim().split(" ");
int t = Integer.parseInt(str[0]);
for(int k=0;k<t;k++){
str = reader.readLine().trim().split(" ");
int n = Integer.parseInt(str[0]);
for(int l=0;l<n;l++){
str = reader.readLine().trim().split(" ");
queue.add(new Node(Integer.parseInt(str[0]),Integer.parseInt(str[1]),l));
}
int[] ans = new int[n];
int flag = 1;
int time= 0;
while(!queue.isEmpty()){
Node node = queue.poll();
if(flag==1){
flag ++;
time = node.l;
ans[node.index] = time;
time++;
}else{
if(node.l<=time&&time<=node.r){
ans[node.index] = time;
time++;
}else{
if(time<node.l){
time = node.l;
ans[node.index] = time;
time++;
}else{
ans[node.index] = 0;
}
}
}
}
for(int i=0;i<n;i++){
System.out.print(ans[i]+" ");
}
}
}
}