#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
inline int power( int a, int b) {
int x = 1 ;
while ( b) {
if ( b & 1 ) x * = a;
a * = a;
b >>= 1 ;
}
return x;
}
const int M = 1000000007 ;
const int N = 3e5 + 9 ;
const int INF = 2e9 + 1 ;
const int LINF = 2000000000000000001 ;
//_ ***************************** START Below *******************************
vector< string> events;
string formatTime( int time ) {
string hr = time / 60 < 10 ? "0" + to_string( time / 60 ) : to_string( time / 60 ) ;
string min = time% 60 < 10 ? "0" + to_string( time% 60 ) : to_string( time% 60 ) ;
return hr + ":" + min;
}
void consistency( int n, int k) {
int m = 1440 ;
vector< int > dif( m, 0 ) ;
for ( auto & e : events) {
stringstream str( e) ;
string name, action, start, end;
str >> name >> action >> start >> end;
string startHr = start.substr ( 0 , 2 ) ;
string startMin = start.substr ( 3 ) ;
string endHr = end.substr ( 0 , 2 ) ;
string endMin = end.substr ( 3 ) ;
int startTime = stoi( startHr) * 60 + stoi( startMin) ;
int endTime = stoi( endHr) * 60 + stoi( endMin) ;
dif[ startTime] ++ ;
if ( endTime+ 1 < m) dif[ endTime+ 1 ] -- ;
}
for ( int i= 1 ; i< m; i++ ) {
dif[ i] + = dif[ i- 1 ] ;
}
int last = - 1 ;
for ( int i= 0 ; i< m; i++ ) {
if ( dif[ i] == 0 ) {
if ( i- last >= k) {
cout << formatTime( last+ 1 ) << endl;
return ;
}
}
else last = i;
}
cout << - 1 << endl;
}
void solve( ) {
int n, k;
cin >> n >> k;
cin .ignore ( ) ;
events.resize ( n) ;
for ( int i= 0 ; i< n; i++ ) {
string line;
getline( cin , line) ;
events[ i] = line;
}
consistency( n, k) ;
}
int32_t main( ) {
ios_base:: sync_with_stdio ( 0 ) ; cin .tie ( 0 ) ; cout .tie ( 0 ) ;
int t = 1 ;
cin >> t;
cin .ignore ( ) ;
while ( t-- ) {
solve( ) ;
}
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKCgp2ZWN0b3I8c3RyaW5nPiBldmVudHM7CgpzdHJpbmcgZm9ybWF0VGltZShpbnQgdGltZSl7CglzdHJpbmcgaHIgPSB0aW1lLzYwIDwgMTAgPyAiMCIgKyB0b19zdHJpbmcodGltZS82MCkgOiB0b19zdHJpbmcodGltZS82MCk7CiAgICBzdHJpbmcgbWluID0gdGltZSU2MCA8IDEwID8gIjAiICsgIHRvX3N0cmluZyh0aW1lJTYwKSA6IHRvX3N0cmluZyh0aW1lJTYwKTsKICAgIAogICAgcmV0dXJuIGhyICsgIjoiICsgbWluOwp9Cgp2b2lkICBjb25zaXN0ZW5jeShpbnQgbiwgaW50IGspIHsKCWludCBtID0gMTQ0MDsKCgl2ZWN0b3I8aW50PiBkaWYobSwgMCk7CgkKCWZvcihhdXRvJiBlIDogZXZlbnRzKXsKCQlzdHJpbmdzdHJlYW0gc3RyKGUpOwoJCXN0cmluZyBuYW1lLCBhY3Rpb24sIHN0YXJ0LCBlbmQ7CgkJc3RyID4+IG5hbWUgPj4gYWN0aW9uID4+IHN0YXJ0ID4+IGVuZDsKCQkKCQlzdHJpbmcgc3RhcnRIciA9IHN0YXJ0LnN1YnN0cigwLCAyKTsKCQlzdHJpbmcgc3RhcnRNaW4gPSBzdGFydC5zdWJzdHIoMyk7CgkJc3RyaW5nIGVuZEhyID0gZW5kLnN1YnN0cigwLCAyKTsKCQlzdHJpbmcgZW5kTWluID0gZW5kLnN1YnN0cigzKTsKCQkKCQlpbnQgc3RhcnRUaW1lID0gc3RvaShzdGFydEhyKSo2MCArIHN0b2koc3RhcnRNaW4pOwoJCWludCBlbmRUaW1lID0gc3RvaShlbmRIcikqNjAgKyBzdG9pKGVuZE1pbik7CgkJCgkJZGlmW3N0YXJ0VGltZV0rKzsKCQlpZihlbmRUaW1lKzE8bSkgZGlmW2VuZFRpbWUrMV0tLTsKCX0KCQoJZm9yKGludCBpPTE7IGk8bTsgaSsrKXsKCQlkaWZbaV0gKz0gZGlmW2ktMV07Cgl9CgoKCWludCBsYXN0ID0gLTE7Cglmb3IoaW50IGk9MDsgaTxtOyBpKyspewoKCQlpZihkaWZbaV0gPT0gMCApewoJCQlpZihpLWxhc3QgPj0gayl7CgkJCQljb3V0IDw8IGZvcm1hdFRpbWUobGFzdCsxKSA8PCBlbmRsOwoJCQkJcmV0dXJuOwoJCQl9CgkJCQoJCX0KCQllbHNlIGxhc3QgPSBpOwoJfQoKCgljb3V0IDw8IC0xIDw8IGVuZGw7CiAgICAKCn0KCnZvaWQgc29sdmUoKSB7CiAgICAKCWludCBuLCBrOwogICAgY2luID4+IG4gID4+IGs7CiAgICAKICAgIGNpbi5pZ25vcmUoKTsKICAgIGV2ZW50cy5yZXNpemUobik7IAogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKCQlzdHJpbmcgbGluZTsKICAgIAlnZXRsaW5lKGNpbiwgbGluZSk7CiAgICAJCiAgICAJZXZlbnRzW2ldID0gbGluZTsKICAgIH0KICAgIAoJY29uc2lzdGVuY3kobiwgayk7Cn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIAogICAgY2luLmlnbm9yZSgpOyAKICAgIAogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=
stdin
NwozIDYwCkFsZXggc2xlZXAgMDA6MDAgMDg6MDAKU2FtIHNsZWVwIDA3OjAwIDEzOjAwCkFsZXggbHVuY2ggMTI6MzAgMTM6NTkKMyA2MApBbGV4IHNsZWVwIDAwOjAwIDA4OjAwClNhbSBzbGVlcCAwNzowMCAxMzowMApBbGV4IGx1bmNoIDE1OjMwIDE3OjU5CjMgNjAKQWxleCBzbGVlcCAwMTowMSAwODowMApTYW0gc2xlZXAgMDc6MDAgMTM6MDAKQWxleCBsdW5jaCAxNTozMCAxNzo1OQozIDYwCkFsZXggc2xlZXAgMDA6MzAgMDg6MDAKU2FtIHNsZWVwIDA3OjAwIDEzOjAwCkFsZXggbHVuY2ggMTI6MzAgMjM6MzAKMyA2MApBbGV4IHNsZWVwIDAwOjMwIDA4OjAwClNhbSBzbGVlcCAwNzowMCAxMzowMApBbGV4IGx1bmNoIDEyOjMwIDIzOjU5CjEgMQpBbGV4IHNsZWVwIDAwOjAwIDIzOjU4CjEgMQpBbGV4IHNsZWVwIDAwOjAwIDIzOjU5
7
3 60
Alex sleep 00:00 08:00
Sam sleep 07:00 13:00
Alex lunch 12:30 13:59
3 60
Alex sleep 00:00 08:00
Sam sleep 07:00 13:00
Alex lunch 15:30 17:59
3 60
Alex sleep 01:01 08:00
Sam sleep 07:00 13:00
Alex lunch 15:30 17:59
3 60
Alex sleep 00:30 08:00
Sam sleep 07:00 13:00
Alex lunch 12:30 23:30
3 60
Alex sleep 00:30 08:00
Sam sleep 07:00 13:00
Alex lunch 12:30 23:59
1 1
Alex sleep 00:00 23:58
1 1
Alex sleep 00:00 23:59