#include #include #include #include using namespace std; int N,L; int X[2<<17],Y[2<<17]; vector >solve(int K) { assert(1<=K&&K<=L); vector > >T(K+1); const int W=L/K; for(int i=0;i >ret; ret.reserve(N); for(int i=0;i<=K;i++) { if(i%2==0) { sort(T[i].begin(),T[i].end(),[](const pair&l,const pair&r){ return l.second&l,const pair&r){ return l.second>r.second; }); } for(pairp:T[i])ret.push_back(p); } assert(ret.size()==N); long long sum=0; for(int i=0;i1000LL*L)ret.clear(); return ret; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T;cin>>T; for(;T--;) { cin>>N>>L; for(int i=0;i>X[i]>>Y[i]; int K=min(500,L); vector >ans=solve(K); while(ans.empty())ans=solve(--K); cout<