#ifdef LOCAL #define _GLIBCXX_DEBUG #endif #include #include using namespace atcoder; using namespace std; #define ll long long #define rep(i,n) for(ll i=0;i<(ll)n;i++) #define all(v) v.begin(),v.end() const ll INF = (ll)2e18; /* 素数判定(エラトステネス) 下処理O(NloglogN) 実行O(1) pをtureにしp*p以上のpの倍数をfalseに N以下の自然数がprimeかを表す配列を返す関数 */ vector make_is_prime(int N) { vector prime(N + 1, true); prime[0] = false; prime[1] = false; for (int i = 2; i * i <= N; i++) { if (!prime[i]) continue; for (int j = i * i; j <= N; j += i) { prime[j] = false; } } return prime; } int main(){ cin.tie(0); ios::sync_with_stdio(false); ll N, H; cin >> N >> H; vector A(N), B(N); vector memo((ll)1e6 + 10, 0); rep(i, N){ cin >> A[i] >> B[i]; memo[A[i]]++; memo[B[i]+1]--; } rep(i,(ll)1e6+1){ memo[i + 1] += memo[i]; } ll MAX = 0; rep(i,memo.size()){ MAX = max(MAX, memo[i]); } cout << MAX << endl; }