#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } const long long MAX = 5100000; const long long INF = 1LL << 60; const long long mod = 1000000007LL; //const long long mod = 998244353LL; using namespace std; typedef unsigned long long ull; typedef long long ll; ll gcd(ll x, ll y) { ll r; if (x < y) { swap(x, y); } while (y > 0) { r = x % y; x = y; y = r; } return x; } ll lcm(ll a, ll b) { if (a == 0 && b == 0) return 0; return a / gcd(a, b) * b; } ll lcm_vec(vector& a) { ll res = a[0]; for (ll i = 0; i < a.size(); i++) { res = lcm(res, a[i]); } return res; } ll count(ll S) { ll res = 0; for (ll i = 0; i < 12; i++) if (S >> i & 1) res++; return res; } ll N, H, L; vector c; ll solve(ll x) { ll res = 0; for (ll i = 0; i < N; i++) { for (ll S = 0; S < (1 << N); S++) { if (!(S >> i & 1)) continue; vector v; for (ll j = 0; j < N; j++) if (S >> j & 1) v.push_back(c[j]); ll lc = lcm_vec(v); if (count(S) & 1) res += x / lc; else res -= x / lc; } //cout << res << endl; } return res; } int main() { /* cin.tie(nullptr); ios::sync_with_stdio(false); */ scanf("%lld %lld %lld", &N, &L, &H); c.resize(N); for (ll i = 0; i < N; i++) scanf("%lld", &c[i]); cout << solve(H) - solve(L - 1)<< endl; return 0; }