#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<string.h>
#include<queue>
#include<set>
#define LL long long
using namespace std;
inline int read( )
{
  int sum=0;char c=getchar( );bool f=0;
  while(c<'0'||c>'9') {if(c=='-') f=1;c=getchar( );}
  while(c>='0'&&c<='9') {sum=sum*10+c-'0';c=getchar( );}
  if(f) return -sum;
  return sum;
}
const int N=200005;
int n,m,k,S[N];
priority_queue< int,vector<int>,greater<int> >q;
struct ex{int x,y;}d[N];
inline bool operator < (const ex &a,const ex &b) {return a.x<b.x;}
int main( )
{
  int i,j,t=0;
  n=read( );m=read( );
  for(i=1;i<=n;i++) d[i].x=read( ),d[i].y=read( );
  sort(d+1,d+n+1);
  for(i=1;i<=n&&!d[i].x;i++) S[++k]=d[i].y;
  for(j=1;j<=m;j++)
    {
      while(i<=n&&d[i].x==j) q.push(d[i].y),t++,i++;
      while(t>j) S[++k]=q.top( ),q.pop( ),t--;
    }
  sort(S+1,S+k+1);
  for(j=t+1,i=1;i<=k;i++,j++)
    {
      while(j<=m&&S[i]>j) j++;
      if(j>m) break;
    }
  printf("%d",k-i+1);
  return 0;
}
