#include<bits/stdc++.h>
using namespace std;
struct in{
int l,r;
}s[100100];
int cmp(struct in a,struct in b){
return a.l==b.l?a.r<b.r:a.l<b.l;
}//将所有区间以左边界l为第一基准,右边界为第二基准升序排序
int main(){
long long n,m,ans=0;
scanf("%lld%lld",&n,&m);
for(int i=0;i<n;i++){
scanf("%d%d",&s[i].l,&s[i].r);
}
sort(s,s+n,cmp);
int x=s[0].r;
for(int i=0;i<n;i++){
if(x<s[i].l){//当前最大的右边界小于下一个区间的左边界
ans+=s[i].l-x-1;//所以中间有空区间,答案加上空区间长度
}
x=max(x,s[i].r);
}
ans+=s[0].l+m-x-1;
printf("%lld",ans);
return 0;
}