#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define i128 __int128
#define ALL(x) x.begin(),x.end()
#define popcount(x) __builtin_popcountll(x)
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif
using namespace std;
const int INF=1e18;
const int N=10005;
const int MOD=1e9+7,MOD2=998244353;
int n,k,ans[N];
struct node{
int l,r,id;
}a[N];
inline int calc(int x,int y){//a >= x , a mod y =0
return (x%y==0?x:x+((-x)%y+y)%y);
}
void solve(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
a[i].id=i;
}
sort(a+1,a+n+1,[](node x,node y){return x.r-x.l<y.r-y.l;});
if(a[1].r-a[1].l+1>=k){
cout<<"Yes\n";
for(int i=1;i<=n;i++){
ans[a[i].id]=calc(a[i].l,k);
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
cout<<"\n";
return;
}
unordered_set<int> d;
for(int i=a[1].l;i<=a[1].r;i++){
for(int j=1;j<=sqrt(i);j++){
if(i%j==0){
if(j>=k){
d.insert(j);
}
if((i/j)>=k){
d.insert(i/j);
}
}
}
}
for(int i=2;i<=n;i++){
vector<int> tmp;
for(auto j:d){
if(calc(a[i].l,j)>a[i].r){
tmp.push_back(j);
}
}
for(auto j:tmp){
d.erase(j);
}
}
if(!d.size()){
cout<<"No\n";
return;
}
cout<<"Yes\n";
int x=*d.begin();
for(int i=1;i<=n;i++){
ans[a[i].id]=calc(a[i].l,x);
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
cout<<"\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int testcase,multitest=1;
if(multitest)cin>>testcase;
else testcase=1;
while(testcase--){
solve();
}
return 0;
}
怎样构造使得 d 的大小最大。