#include <iostream>
#include <string.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int h;
int m;
int s;
int p;
}num[20010];
int cmp ( node a, node b)
{
if(a.h != b.h)
return a.h<b.h;
if( a.m != b.m)
return a.m< b.m;
if( a.s != b.s)
return a.s < b.s;
}
int main()
{
int t;
int n,l;
char time[10];
scanf("%d",&t);
int pos[20002];
while(t--)
{
scanf("%d %d",&n, &l);
int count = 0;
int oph = l/360;
int opm = l/60;
int ops = l%60;
for( int i = 0; i<n; i++)
{
scanf("%d:%d:%d",&num[i].h,&num[i].m, &num[i].s);
num[i].p = i;
}
sort( num, num+n, cmp);
pos[count++] = num[0].p+1;
node now = num[0] ;
int temp = num[0].h *3600 + num[0].m*60 + num[0].s + l;
for( int i = 1; i<n; i++)
{
int sum = num[i].h *3600 + num[i].m*60 + num[i].s;
if(sum < temp)
continue;
else
{
pos[count++] = num[i].p+1;
temp = sum+l;
continue;
}
}
cout<<count<<endl;
sort(pos,pos+count);
for( int i = 0; i<count-1; i++)
cout<<pos[i]<<" ";
cout<<pos[count-1]<<endl;
}
return 0;
}
#include <string.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int h;
int m;
int s;
int p;
}num[20010];
int cmp ( node a, node b)
{
if(a.h != b.h)
return a.h<b.h;
if( a.m != b.m)
return a.m< b.m;
if( a.s != b.s)
return a.s < b.s;
}
int main()
{
int t;
int n,l;
char time[10];
scanf("%d",&t);
int pos[20002];
while(t--)
{
scanf("%d %d",&n, &l);
int count = 0;
int oph = l/360;
int opm = l/60;
int ops = l%60;
for( int i = 0; i<n; i++)
{
scanf("%d:%d:%d",&num[i].h,&num[i].m, &num[i].s);
num[i].p = i;
}
sort( num, num+n, cmp);
pos[count++] = num[0].p+1;
node now = num[0] ;
int temp = num[0].h *3600 + num[0].m*60 + num[0].s + l;
for( int i = 1; i<n; i++)
{
int sum = num[i].h *3600 + num[i].m*60 + num[i].s;
if(sum < temp)
continue;
else
{
pos[count++] = num[i].p+1;
temp = sum+l;
continue;
}
}
cout<<count<<endl;
sort(pos,pos+count);
for( int i = 0; i<count-1; i++)
cout<<pos[i]<<" ";
cout<<pos[count-1]<<endl;
}
return 0;
}