#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=