#include<bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
cin.ignore(); // important to consume the newline after k
vector<string> arr(n);
vector<int> t(1440, 0); // minutes in a day
// Read each line properly
for (int i = 0; i < n; i++) {
getline(cin, arr[i]);
while (arr[i].empty()) getline(cin, arr[i]); // skip empty lines
}
// Parse and mark time intervals
for (string s : arr) {
istringstream ss(s);
string name, activity, start, end;
ss >> name >> activity >> start >> end;
if (start.size() < 5 || end.size() < 5) continue; // skip bad lines
int lhh = stoi(start.substr(0, 2));
int lmm = stoi(start.substr(3, 2));
int rhh = stoi(end.substr(0, 2));
int rmm = stoi(end.substr(3, 2));
int L = 60 * lhh + lmm;
int R = 60 * rhh + rmm;
t[L]++;
if (R != 1439) t[R + 1]--;
}
// Build prefix sum
for (int i = 1; i < 1440; i++) {
t[i] += t[i - 1];
}
// Find k-length zero interval
int length = 0, time = -1;
for (int i = 0; i < 1440; i++) {
if (t[i] == 0) {
length++;
if (length == k) {
time = i - k + 1;
break;
}
} else {
length = 0;
}
}
if (time == -1)
cout << "No free slot" << endl;
else
cout << setw(2) << setfill('0') << time / 60 << ":"
<< setw(2) << setfill('0') << time % 60 << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgaW50IG4sIGs7CiAgICBjaW4gPj4gbiA+PiBrOwogICAgY2luLmlnbm9yZSgpOyAgLy8gaW1wb3J0YW50IHRvIGNvbnN1bWUgdGhlIG5ld2xpbmUgYWZ0ZXIgawoKICAgIHZlY3RvcjxzdHJpbmc+IGFycihuKTsKICAgIHZlY3RvcjxpbnQ+IHQoMTQ0MCwgMCk7ICAvLyBtaW51dGVzIGluIGEgZGF5CgogICAgLy8gUmVhZCBlYWNoIGxpbmUgcHJvcGVybHkKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZ2V0bGluZShjaW4sIGFycltpXSk7CiAgICAgICAgd2hpbGUgKGFycltpXS5lbXB0eSgpKSBnZXRsaW5lKGNpbiwgYXJyW2ldKTsgLy8gc2tpcCBlbXB0eSBsaW5lcwogICAgfQoKICAgIC8vIFBhcnNlIGFuZCBtYXJrIHRpbWUgaW50ZXJ2YWxzCiAgICBmb3IgKHN0cmluZyBzIDogYXJyKSB7CiAgICAgICAgaXN0cmluZ3N0cmVhbSBzcyhzKTsKICAgICAgICBzdHJpbmcgbmFtZSwgYWN0aXZpdHksIHN0YXJ0LCBlbmQ7CiAgICAgICAgc3MgPj4gbmFtZSA+PiBhY3Rpdml0eSA+PiBzdGFydCA+PiBlbmQ7CgogICAgICAgIGlmIChzdGFydC5zaXplKCkgPCA1IHx8IGVuZC5zaXplKCkgPCA1KSBjb250aW51ZTsgLy8gc2tpcCBiYWQgbGluZXMKCiAgICAgICAgaW50IGxoaCA9IHN0b2koc3RhcnQuc3Vic3RyKDAsIDIpKTsKICAgICAgICBpbnQgbG1tID0gc3RvaShzdGFydC5zdWJzdHIoMywgMikpOwogICAgICAgIGludCByaGggPSBzdG9pKGVuZC5zdWJzdHIoMCwgMikpOwogICAgICAgIGludCBybW0gPSBzdG9pKGVuZC5zdWJzdHIoMywgMikpOwogICAgICAgIGludCBMID0gNjAgKiBsaGggKyBsbW07CiAgICAgICAgaW50IFIgPSA2MCAqIHJoaCArIHJtbTsKCiAgICAgICAgdFtMXSsrOwogICAgICAgIGlmIChSICE9IDE0MzkpIHRbUiArIDFdLS07CiAgICB9CgogICAgLy8gQnVpbGQgcHJlZml4IHN1bQogICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxNDQwOyBpKyspIHsKICAgICAgICB0W2ldICs9IHRbaSAtIDFdOwogICAgfQoKICAgIC8vIEZpbmQgay1sZW5ndGggemVybyBpbnRlcnZhbAogICAgaW50IGxlbmd0aCA9IDAsIHRpbWUgPSAtMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTQ0MDsgaSsrKSB7CiAgICAgICAgaWYgKHRbaV0gPT0gMCkgewogICAgICAgICAgICBsZW5ndGgrKzsKICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSBrKSB7CiAgICAgICAgICAgICAgICB0aW1lID0gaSAtIGsgKyAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsZW5ndGggPSAwOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAodGltZSA9PSAtMSkKICAgICAgICBjb3V0IDw8ICJObyBmcmVlIHNsb3QiIDw8IGVuZGw7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCBzZXR3KDIpIDw8IHNldGZpbGwoJzAnKSA8PCB0aW1lIC8gNjAgPDwgIjoiCiAgICAgICAgICAgICA8PCBzZXR3KDIpIDw8IHNldGZpbGwoJzAnKSA8PCB0aW1lICUgNjAgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=