#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int _t; cin>>_t; rep(_,_t){ int N,L; cin>>N>>L; vector> x(N); rep(i,N){ cin>>x[i].first>>x[i].second; } sort(x.begin(),x.end()); vector> ans; int s2; { set> S; int sz = 0; vector>> ls(N); rep(i,N){ int t = x[i].second; auto it = S.upper_bound(make_pair(t,2000000000)); if(S.begin()==it){ S.emplace(t,i); ls[i].push_back(x[i]); } else{ it--; ls[it->second].push_back(x[i]); int tt = it->second; S.erase(it); S.emplace(t,tt); } } vector> t; rep(i,N){ if(ls[i].size()>0){ rep(j,ls[i].size())t.push_back(ls[i][j]); sz++; } } ans = t; s2 = sz; } rep(i,N)x[i].second *= -1; sort(x.rbegin(),x.rend()); rep(i,N)x[i].second *= -1; { set> S; int sz = 0; vector>> ls(N); rep(i,N){ int t = x[i].second; auto it = S.upper_bound(make_pair(t,2000000000)); if(S.begin()==it){ S.emplace(t,i); ls[i].push_back(x[i]); } else{ it--; ls[it->second].push_back(x[i]); int tt = it->second; S.erase(it); S.emplace(t,tt); } } vector> t; rep(i,N){ if(ls[i].size()>0){ rep(j,ls[i].size())t.push_back(ls[i][j]); sz++; } } if(s2>sz)ans = t; } cout<