#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
using namespace std;
const int INF = 0x3f3f3f3f;
struct node
{
int start;
int end;
}mud[10005];
bool cmp(node a,node b)
{
return a.start < b.start;
}
int main()
{
int N, L;
while (cin >> N >> L)
{
for (int i = 1; i <= N; i++)
{
cin >> mud[i].start >> mud[i].end;
}
sort(mud + 1, mud + N+1, cmp);
int Count = 0;
int route = mud[1].start;
for (int i = 1; i <= N; i++)
{
if (route>mud[i].end)
{
continue;
}
else if (route > mud[i].start)
{
while (route < mud[i].end)
{
Count++;
route += L;
}
}
else
{
route = mud[i].start;
while (route < mud[i].end)
{
Count++;
route += L;
}
}
}
cout << Count << endl;
}
return 0;
}