// Starcraft 2 enjoyer //
#include <bits/stdc++.h>
// #pragma GCC target("avx2")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
using namespace std;
#define LSOne(X) ((X) & -(X))
const int N = 1e6 + 5;
const int M = 1e6;
const int K = 19;
const int LG = 7;
const int INF = 1e9 + 5;
const int C = 26;
const int B = 1000;
const int MOD = 1e9 + 7;
int n;
long long a, b, g, range, ans, last, v;
vector<pair<long long, long long>> rng, thing;
inline void solve()
{
cin >> n >> a >> b;
for (int x = 0; x < n; x++)
{
long long l, r;
cin >> l >> r;
ans = r - l + 1;
rng.push_back({l, r});
}
g = __gcd(b + 1, a);
g = a / g;
if (2e18 / g < b)
{
cout << ans << "\n";
return;
}
ans = 0;
last = 0;
v = g * b;
// cout << v << "\n";
for (int x = 0; x < n; x++)
{
auto [l, r] = rng[x];
if (r - l + 1 > v)
{
cout << v << "\n";
return;
}
else
{
l %= v;
r %= v;
if (l <= r)
{
thing.push_back({l, r});
}
else
{
thing.push_back({l, v - 1});
thing.push_back({0, r});
}
}
}
sort(thing.begin(), thing.end());
last = -1;
for (auto &[l, r] : thing)
{
ans += r - max(last + 1, l) + 1;
last = r;
}
cout << ans << "\n";
}
signed main()
{
// freopen("CP.INP", "r", stdin);
// freopen("CP.OUT", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
// cin >> t;
for (int x = 1; x <= t; x++)
{
solve();
}
return 0;
}