## https://yukicoder.me/problems/no/546 def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b def solve(V, N, C): dp = [0] * (2 ** N) for bit in range(1, 2 ** N): array = [] for i in range(N): if (1 << i) & bit > 0: array.append(C[i]) lcm = array[0] for j in range(1, len(array)): x = array[j] gcd = calc_gcd(lcm, x) lcm = x * (lcm //gcd) if V < lcm: lcm = -1 break if lcm != -1: dp[bit] = V // lcm for j in range(N): for bit in reversed(range(2 ** N)): if (1 << j) & bit == 0: dp[bit] -= dp[(bit) | (1 << j)] answer = 0 for i in range(N): answer += dp[(1 << i)] return answer def main(): N, L, H = map(int, input().split()) C = list(map(int, input().split())) ans_h = solve(H, N, C) ans_l = solve(L - 1, N, C) print(ans_h - ans_l) if __name__ == "__main__": main()