#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
#define mk make_pair
#define pb push_back
#define eps 1e-12
#define MAXN 200009
using namespace std;
vector<int> v[MAXN];
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int n,m;
	cin>>n>>m;
	int any=0;
	for(int i=1;i<=n;i++)
	{
		int l,r;
		cin>>l>>r;
		if(l+1>r-1)
		{
			any++;
		}
		else
		{
			v[l+1].pb(r-1);
		}
	}
	multiset<int> s_right;
	int how_many_right_want[m+1];
	memset(how_many_right_want,0,sizeof(how_many_right_want));
	int empty_left=0,empty_right=0;
	for(int i=1;i<=m;i++)
	{
		for(int j=0;j<v[i].size();j++)
		{
			s_right.insert(v[i][j]);
		}
		int k=v[i].size();
		if(empty_left>=k)
		{
			empty_left-=k;
		}
		else
		{
			int req=k-empty_left;
			while(req--)
			{
				int x=(*s_right.begin());
				how_many_right_want[x]++;
				s_right.erase(s_right.begin());
			}
			empty_left=0;
		}
		empty_left++;
	}
	int p=empty_left;
	int ans=0;
	for(int i=m;i>=1;i--)
	{
		int k=how_many_right_want[i];
		if(empty_right>=k)
		{
			empty_right-=k;
		}
		else
		{
			ans=ans+(k-empty_right);
			empty_right=0;
		}
		if(i>m-empty_left)
		{
			empty_right++;
		}
	}
	if(any>empty_right)
	{
		ans=ans+(any-empty_right);
	}
	cout<<ans<<"\n";
}