#pragma GCC optimize ("O3") #pragma GCC target ("avx") #pragma GCC optimize ("Ofast") #include #include #include #include #include #include using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) #define FOR(i, m, n) for (int i = (m); i < (n); ++i) inline int gc()noexcept { return getchar_unlocked(); } inline int input()noexcept { int v = 0; char c = gc(); for (; isdigit(c); c = gc()) { v *= 10; v += c - '0'; } return v; } inline int input_time()noexcept { return input() * 1440 + input() * 60 + input(); } int main() { int n = input(), m = input(); vector> range(m); rep(i, m) { range[i].second = input_time(); range[i].first = input_time(); } sort(range.begin(), range.end()); multiset s; s.insert(range.front().first); int ans = 1; FOR(i, 1, m) { if (*s.begin() < range[i].second) { s.erase(prev(s.lower_bound(range[i].second))); s.insert(range[i].first); ans++; } else if (*s.begin() >= range[i].second && s.size() < n) { s.insert(range[i].first); ans++; } } printf("%d\n", ans); }