#include<bits/stdc++.h>

using namespace std;

#define ll  long long
#define ld  double

#define sz(x)   (int)x.size()
#define all(x)  x.begin(),x.end()

#define pb  emplace_back
#define X   first
#define Y   second

const int   N   = 2e5 + 5;

typedef pair<int,int>   ii;

vector<int> vec[N];

int tr[N << 1];
int lz[N << 1];

int main()  {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n;  cin >> n;
    int m;  cin >> m;   m += 1;

    auto app = [&](int i,int v) {
        tr[i] += v;
        lz[i] += v;
    };
    auto upd = [&](int l,int r,int v)   {
        int L = l += m - 1;
        int R = r += m - 1; ++r;

        for(; l < r ; l >>= 1, r >>= 1) {
            if (l & 1)  app(l++,v);
            if (r & 1)  app(--r,v);
        }
        for(; L > 1 ; L >>= 1)  tr[L >> 1] = max(tr[L],tr[L ^ 1]) + lz[L >> 1];
        for(; R > 1 ; R >>= 1)  tr[R >> 1] = max(tr[R],tr[R ^ 1]) + lz[R >> 1];
    };

    for(int i = 0 ; i < n ; ++i)    {
        int l;  cin >> l;
        int r;  cin >> r;

        vec[l].pb(r);
    }
    int ans = max(0,n - m + 1);

    for(int i = 1 ; i <= m ; ++i)   upd(i,i,i - m);
    for(int i = 0 ; i <  m ; ++i)   {
        for(int r : vec[i])
            upd(1,r,1);
        
        if (ans < tr[1] - i)
            ans = tr[1] - i;
    }
    cout << ans << endl;
}