#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<deque>
#include<map>
#include<queue>
#define maxn 200010
using namespace std;
typedef long long ll;
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch-'0'<0||ch-'0'>9){if(ch=='-') f=-1;ch=getchar();}
    while(ch-'0'>=0&&ch-'0'<=9){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
struct P{
    int l,r;
}a[maxn];
bool cmp(P x,P y)
{
    return x.l<y.l;
}
int n,m;
int s[maxn],top;
priority_queue<int,vector<int>,greater<int> >q;
int ans;
int main()
{
    n=read();m=read();
    for(int i=1;i<=n;i++)  a[i].l=read(),a[i].r=read();
    sort(a+1,a+n+1,cmp);
    int cnt=0;
    for(int i=1;i<=n;i++)
    {
        q.push(a[i].r);
        if(q.size()>a[i].l||q.size()>m)
        {
            s[++top]=q.top();
            q.pop();
        }
        else cnt++;
    }
    sort(s+1,s+top+1);
    int now=0;
    for(int i=top;i>=1;i--)
    {
        if(now+1>m-cnt||now+1>m-s[i]+1)  ans++;
        else now++;
    }
    cout<<ans<<endl;
    return 0;
}