#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using lll = __int128_t;
ll n, a, b, ans;
lll x, md;
vector<pair<lll, lll>> v;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> a >> b;
x = a/__gcd(a, b+1);
md = x * (lll)b;
md %= (lll)(1e19);
while (n--) {
cin >> a >> b;
if (b - a + 1 >= md) v.push_back({0, md-1});
else {
a %= md;
b %= md;
if (a <= b) v.push_back({a, b});
else v.push_back({a, md-1}), v.push_back({0, b});
}
}
sort(v.begin(), v.end());
lll last = -1;
for (auto [l, r]: v) {
l = max(l, last+1);
if (r >= l) ans += r-l+1;
last = max(r, last);
}
cout << ans << '\n';
// for (int a = 1; a <= 4; a++) for (int b = 1; b <= 4; b++) {
// cout << a << ' ' << b << "\n";
// map<pair<int, int>, int> mp;
// for (int i = 0; i < a*b; i++) {
// if (mp.count({(i+(i/b))%a, i%b})) cout << mp[{(i+(i/b))%a, i%b}] << ' ' << i << ' ';
// mp[{(i+(i/b))%a, i%b}] = i;
// // cout << (i+(i/b))%a << ' ' << i%b << '\n';
// }
// cout << "\n\n";
// }
}