#include<bits/stdc++.h>
using namespace std;
#define long long int
const int N=1e5+10;
struct stu{
int l,r,place;
}a[N],b[N],c[N];
bool cmp1(stu a,stu b)
{
if(a.l!=b.l)
return a.l>b.l;
return a.r>b.r;
}
bool cmp2(stu a,stu b)
{
if(a.l!=b.l)
return a.l<b.l;
return a.r<b.r;
}
int main(){
int T;
cin >> T;
while(T--)
{
int n,f,x,y,temp=0,j1=1,j2=1,maxx=0,ans=0,maxx2=0;
cin >> n >> f;
temp=f;
for(int i=1;i<=n;i++)
{
cin >> c[i].l >> c[i].r ;
c[i].place=i;
ans += (y - x);
maxx = max(maxx,x);
}
sort(c+1,c+1+n,cmp2);
for(itn i=1;i<=n;i++)
{
if(c[i].l<=f)
{
f = ;
}
else break;
}
// cout << ans << endl;
sort(b+1,b+j1,cmp2);
sort(a+1,a+j2,cmp1);
bool fun = false;
if(f<maxx2)
f = maxx2,fun = true;
if(maxx > f)
{
for(int i=1;i<j1;i++)
{
ans += (b[i].l-f);
cout << b[i].l <<' ' <<f << endl;
f = b[i].r;
if(f>=maxx)
break;
}
}
cout << ans << endl;
if(fun)
{
for(int i=1;i<j2;i++)
cout << a[i].place <<' ';
for(int i=1;i<j1;i++)
cout << b[i].place <<' ';
cout << endl;
}
else
{
for(int i=1;i<j1;i++)
cout << b[i].place <<' ';
for(int i=1;i<j2;i++)
cout << a[i].place <<' ';
cout << endl;
}
}