#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5;
int n, m, cnt, t = 2;
vector <int> V[N<<2];

int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        int l, r; cin >> l >> r;
        if (l + 1 == r) {cnt++; continue ;}
        if (l == 0 && r == m + 1) continue ;
        int len = l + m - r + 1;
        if (r == m + 1) V[0].push_back(len);
        else V[r - 1].push_back(r + len - 1);
    }
    priority_queue <int, vector <int>, greater <int>> pq;
    for (int i = 0; i < t * m; i++) {
        for (int j : V[i]) pq.push(j);
        while (!pq.empty() && pq.top() <= i) pq.pop();
        if (!pq.empty()) V[i + m].push_back(pq.top() + m), pq.pop();
    }
    int ans = 0;
    for (int i = t * m; i < t * m + m; i++) ans += V[i].size();
    cout << n - min(ans + cnt, m) << "\n";

    return 0;
}
