#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5+5;
multiset<int> s1;
vector<int> v1[MAXN];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        int l,r;
        cin>>l>>r;
        if(l==0){
            s1.insert(r);
        }else{
            v1[l].push_back(r);
        }


    }
    for(int i=1;i<=m;i++){
        sort(v1[i].begin(),v1[i].end());
    }
    int ind = 0;
    for(int i=1;i<=m;i++){
        if(v1[i].size()>1){
            for(int j=0;j<v1[i].size()-1;j++){
                s1.insert(v1[i][j]);
            }
        }
        else if(v1[i].size()==0){
            if(s1.size()){
                if(*s1.begin()<=i){
                    s1.erase(s1.begin());
                }else{
                    ind = max(ind,i);
                    while(v1[ind].size()==0 && ind<=m){
                        ind++;
                    }
                    if(v1[ind].size()){
                        v1[ind].pop_back();
                    }
                }
            }else{
                ind = max(ind,i);
                    while(v1[ind].size()==0 && ind<=m){
                        ind++;
                    }
                    if(v1[ind].size()){
                        v1[ind].pop_back();
                    }
            }
        }
    }
    cout<<s1.size()<<endl;
}
