#include<bits/stdc++.h>
#define pi 3.1415926535897932384626
using namespace std;
      
struct P{
  int x,y,z;
  bool operator < (const P &a )const{
    //if(y!=a.y)
    return y>a.y;
  };
};

int a,b,c,d,i,k,n,m,e,dx[10]={1,0,-1,0,1,1,-1,-1},dy[10]={0,1,0,-1,1,-1,1,-1};
int o[500101];
int l[500111];
int j[201001];

long long x,y,z,mod=998244353;
string r;
//char r[2];

P u[500101];
priority_queue<int,vector<int>,greater<int> > q;
stack<int> s;
//set<int> s;
map<int,int> p;

vector<int> v;


bool as(P a,P b)
{
  if(a.x!=b.x)
  return a.x<b.x;
  return a.y>b.y;
}


int main()
{
  scanf("%d %d",&a,&b);
  for(int t=1;t<=a;t++)
  {
    scanf("%d %d",&n,&m);
    u[t]={n,m};
  }
  sort(u+1,u+a+1,as);
  for(int t=1;t<=a;t++)
  {
    q.push(u[t].y);
    if(q.size()>u[t].x)
    for(;q.size()>u[t].x;q.pop())
      o[q.top()]++;
    else e++;
    //printf("%d\n",q.size());
  }
  for(int t=0;t<=b;t++)
  {
    o[b-t+1]+=o[b-t+2];
    //printf("%d ",o[b-t+1]);
    for(;o[b-t+1]>c; o[b-t+1]--,k++);
    if(b-t+1>e+1) c++;
  }
  printf("%d",k);
}
//11


