#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define SZ(x) ((int)x.size())
#define ALL(x) (x).begin(),(x).end()
#define lowbit(x) x&-x
#define pb push_back
#define ls (id<<1)
#define rs (id<<1|1)
#define Rint register int
typedef long long ll;
typedef pair<int,int> pii;
typedef double db;
const int MAXN=4e5+10,MAXM=4e6+10;
const int INF=INT_MAX,SINF=0x3f3f3f3f;
const ll llINF=LLONG_MAX;
const int MOD=1e9+7,mod=998244353;
const int inv2=5e8+4;

int n,m;
struct Node
{
    int l,r;
    bool operator < (const Node &rhs)const
    {
        return l^rhs.l?l<rhs.l:r>rhs.r;
    }
}e[MAXN];

int ans=0;
priority_queue<int,vector<int>,greater<int> >pq;
vector<int> v;

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d%d",&e[i].l,&e[i].r);
    int l=1,r=m;
    sort(e+1,e+n+1);
    for(int i=1;i<=n;i++)
    {
        pq.push(e[i].r);
        if(l<=r&&l<=e[i].l)l++;
        else v.push_back(pq.top()),pq.pop();
    }
    sort(ALL(v),greater<int>());
    for(auto j:v)if(l<=r&&r>=j)r--;
                    else ans++;
    cout<<ans;
    return 0;
}
