#pragma GCC optimize ("Ofast") #include using namespace std; inline void rd(int &x){ int k; int m=0; x=0; for(;;){ k = getchar_unlocked(); if(k=='-'){ m=1; break; } if('0'<=k&&k<='9'){ x=k-'0'; break; } } for(;;){ k = getchar_unlocked(); if(k<'0'||k>'9'){ break; } x=x*10+k-'0'; } if(m){ x=-x; } } inline void rd(long long &x){ int k; int m=0; x=0; for(;;){ k = getchar_unlocked(); if(k=='-'){ m=1; break; } if('0'<=k&&k<='9'){ x=k-'0'; break; } } for(;;){ k = getchar_unlocked(); if(k<'0'||k>'9'){ break; } x=x*10+k-'0'; } if(m){ x=-x; } } inline void wt_L(char a){ putchar_unlocked(a); } inline void wt_L(int x){ int s=0; int m=0; char f[10]; if(x<0){ m=1; x=-x; } while(x){ f[s++]=x%10; x/=10; } if(!s){ f[s++]=0; } if(m){ putchar_unlocked('-'); } while(s--){ putchar_unlocked(f[s]+'0'); } } inline void wt_L(unsigned x){ int s=0; char f[10]; while(x){ f[s++]=x%10; x/=10; } if(!s){ f[s++]=0; } while(s--){ putchar_unlocked(f[s]+'0'); } } inline void wt_L(long long x){ int s=0; int m=0; char f[20]; if(x<0){ m=1; x=-x; } while(x){ f[s++]=x%10; x/=10; } if(!s){ f[s++]=0; } if(m){ putchar_unlocked('-'); } while(s--){ putchar_unlocked(f[s]+'0'); } } inline void wt_L(unsigned long long x){ int s=0; char f[21]; while(x){ f[s++]=x%10; x/=10; } if(!s){ f[s++]=0; } while(s--){ putchar_unlocked(f[s]+'0'); } } inline void wt_L(double x){ printf("%.15f",x); } inline void wt_L(const char c[]){ int i=0; for(i=0;c[i]!='\0';i++){ putchar_unlocked(c[i]); } } inline void wt_L(string &x){ int i=0; for(i=0;x[i]!='\0';i++){ putchar_unlocked(x[i]); } } template inline S chmin(S &a, T b){ if(a>b){ a=b; } return a; } template inline S chmax(S &a, T b){ if(a= 0){ return dp[x][y][d]; } if(!((cond[d]) &(1<<(0)))&& (L[d]==0 || x)){ sy = y; if(R[d]==1){ sy = 1; } res += solve(x, sy, d-1); } if(!((cond[d]) &(1<<(1)))&& (R[d]==1 || y)){ sx = x; if(L[d]==0){ sx = 1; } res += solve(sx, y, d-1); } return dp[x][y][d] = res; } int main(){ int i; int k; int mn0; int mx0; int mn1; int mx1; rd(N); rd(LL); rd(RR); { int Lj4PdHRW; for(Lj4PdHRW=(0);Lj4PdHRW<(N);Lj4PdHRW++){ rd(A[Lj4PdHRW]); } } for(i=(0);i<(62);i++){ if(LL&(1LL<?= i; // } else { // mn0 ?= i; // } // } // if(mn0 == int_inf || mn1 == int_inf) doit(k-1, a, b), return; // if(mx0 < mn1){ // cond[k] |= 2; // doit(k-1, a, mx0); // doit(k-1, mn1, b); // } else if(mx1 < mn0){ // cond[k] |= 1; // doit(k-1, a, mx1); // doit(k-1, mn0, b); // } else { // cond[k] |= 3; // } // } // // ll dp[2][2][62]; // ll solve(int x, int y, int d){ // int sx, sy; // ll res = 0; // if(d < 0) return 1; // if(dp[x][y][d] >= 0) return dp[x][y][d]; // if(!BIT_ith(cond[d],0) && (L[d]==0 || x)){ // sy = y; // if(R[d]==1) sy = 1; // res += solve(x, sy, d-1); // } // if(!BIT_ith(cond[d],1) && (R[d]==1 || y)){ // sx = x; // if(L[d]==0) sx = 1; // res += solve(sx, y, d-1); // } // return dp[x][y][d] = res; // } // // { // int k, mn0, mx0, mn1, mx1; // rd(N,LL,RR,A(N)); // rep(i,62) if(LL&(1LL<