/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
bool cmp(pair<int,int> a,pair<int,int> b){
if(a.second == b.second) return a.first<b.first;
return a.second<b.second;
}
struct node {
struct node *left=NULL,*right=NULL;
int cnt=0;
};
void update(node *&root,int start,int end,int ind)
{
if(root->left==NULL) root->left = new node();
if(root->right==NULL) root->right = new node();
if(start==end)
{
root->cnt=1;
return;
}
int mid = (start+end)/2;
if(ind<=mid) update(root->left,start,mid,ind);
else update(root->right,mid+1,end,ind);
root->cnt = root->left->cnt + root->right->cnt;
}
int query(node *&root,int start,int end,int l,int r)
{
if(root==NULL) return 0;
if(l>end || r<start) return 0;
if(l<=start && r>=end) return root->cnt;
int mid = (start+end)/2;
int x = query(root->left,start,mid,l,r);
int y = query(root->right,mid+1,end,l,r);
return x+y;
}
int freee(node *&root,int l,int r)
{
int lo=l,hi=r,mid,x=-1;
while(lo<=hi)
{
int mid =(lo+hi)/2;
int d = mid-l+1;
int sum = query(root,1,1e9,l,mid);
if(sum < d)
{
x = mid;
hi = mid-1;
}else lo=mid+1;
}
return x;
}
void solve()
{
int n; cin >> n;
vector<pair<int,int>> v;
for(int i=0;i<n;i++)
{
int l,r; cin >> l >> r;
v.push_back({l,r});
}
sort(v.begin(),v.end(),cmp);
set<int> ans;
node *root = new node();
for(auto e:v)
{
int r = e.second;
int l = e.first;
int free = freee(root,l,r);
if(free==-1)
{
cout<<"NO"<<endl;
return;
}
ans.insert(free);
update(root,1,1e9,free);
}
cout<<"YES"<<endl;
for(auto e:ans) cout<<e<<' '; cout<<endl;
}
int main()
{
ios::sync_with_stdio(false); cin.tie(nullptr);
int t; cin >> t; while(t--) solve();
}