import sys sys.setrecursionlimit(10**6) int1 = lambda x: int(x)-1 p2D = lambda x: print(*x, sep="\n") def II(): return int(sys.stdin.buffer.readline()) def LI(): return list(map(int, sys.stdin.buffer.readline().split())) def LI1(): return list(map(int1, sys.stdin.buffer.readline().split())) def LLI(rows_number): return [LI() for _ in range(rows_number)] def LLI1(rows_number): return [LI1() for _ in range(rows_number)] def BI(): return sys.stdin.buffer.readline().rstrip() def SI(): return sys.stdin.buffer.readline().rstrip().decode() # dij = [(0, 1), (-1, 0), (0, -1), (1, 0)] dij = [(0, 1), (-1, 0), (0, -1), (1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)] inf = 10**16 # md = 998244353 md = 10**9+7 from functools import lru_cache kn=62 n, l, r = LI() aa = LI() # for a in aa: print(bin(a)[2:].zfill(12)) bb = [-1]*kn def chk(k, l, r): stack=[(k,l,r)] while stack: k,l,r=stack.pop() m = -1 pb = aa[l] >> k & 1 for i, a in enumerate(aa[l+1:r], l+1): b = a >> k & 1 if b != pb: if m == -1: m = i else: return False pb = b if m == -1: if k:stack.append((k-1,l,r)) else: if bb[k] == -1: bb[k] = 1-pb elif bb[k] != 1-pb: return False if k: stack.append((k-1, l, m)) stack.append((k-1, m, r)) return True if chk(kn-1, 0, n) == False: print(0) exit() # kケタ見終わって、その桁以降が以下でもよい(1)か、未満でなければいけない(0)か # @lru_cache(None) # def solve(k, f): # if k == kn: return f # res = 0 # if f: # if lim[k]: # if bb[k] != 1: res += solve(k+1, 1) # if bb[k] != 0: res += solve(k+1, 1) # else: # if bb[k] != 1: res += solve(k+1, 1) # if bb[k] != 0: res += solve(k+1, 0) # else: # if lim[k]: # if bb[k] != 1: res += solve(k+1, 1) # if bb[k] != 0: res += solve(k+1, 0) # else: # if bb[k] != 1: res += solve(k+1, 0) # if bb[k] != 0: res += solve(k+1, 0) # return res def solve(r): if r==-1:return 0 cc=[r>>k&1 for k in range(kn)] dp=[[0]*2 for _ in range(kn+1)] dp[0][0]=1 for i,(b,c) in enumerate(zip(bb[::-1],cc[::-1])): for f in range(2): pre=dp[i][f] if pre==0:continue if f: if b!=1:dp[i+1][1]+=pre if b!=0:dp[i+1][1]+=pre else: if b!=1: if c:dp[i+1][1]+=pre else:dp[i+1][0]+=pre if b!=0 and c:dp[i+1][0]+=pre # p2D(dp) return sum(dp[-1]) ans=solve(r)-solve(l-1) print(ans)