#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int t[200005];
struct ff{
    int l,r;
    bool operator<(const ff &b)const{
        return l!=b.l?l<b.l:r>b.r;
    }
}a[200005];
priority_queue<int,vector<int>,greater<int> >q;
int main(){
    int n,m;
    cin>>n>>m;
    int i;
    for(i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
    sort(a+1,a+n+1);
    int h=1,tt=m;
    for(i=1;i<=n;i++){
        q.push(a[i].r);
        if(h<=tt&&h<=a[i].l) h++;
        else{
            t[++t[0]]=q.top();
            q.pop();
        }
    }
    sort(t+1,t+t[0]+1);
    int ans=0;
    for(i=t[0];i>=1;i--){
        if(h<=tt&&t[i]<=tt)tt--;
        else ans++;
    }
    cout<<ans<<endl;
    return 0;
}
