import sys

input=sys.stdin.readline

N,M=map(int,input().split())

m=int((M+2)**.5)
isu=[0]*(M+2)
isudata=[0]*((M+1)//m+1)
RMQdata=[0]*((M+1)//m+1)

def update(l,r,x):
    id=l
    while id<=r:
        L=id
        q=id//m
        R=min(m*(q+1)-1,r)
        if R-L+1==m:
            isudata[q]+=x
            RMQdata[q]+=x
        else:
            for i in range(L,R+1):
                isu[i]+=x
            res=2**31
            for i in range(m*q,min(M+2,m*(q+1))):
                test=isu[i]+isudata[q]
                res=min(res,test)
            RMQdata[q]=res
        id=R+1

def query(l,r):
    id=l
    res=2**31
    while id<=r:
        L=id
        q=id//m
        R=min(m*(q+1)-1,r)
        if R-L+1==m:
            res=min(res,RMQdata[q])
        else:
            for i in range(L,R+1):
                test=isu[i]+isudata[q]
                res=min(res,test)
        id=R+1

    return res

for i in range(1,M+1):
    update(0,i,1)

add=M-N
hito=[]
for i in range(N):
    L,R=map(int,input().split())
    hito.append((L,R))
hito.sort()

for l,r in hito:
    update(0,r,-1)
    t=query(l+1,M+1)+l
    add=min(t,add)

print(max(-add,0))