#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b v(62,-1); int a[200001][62]; bool match=true; bool fill(int l,int r,int d){ if(d<0) return true; int ch=0; for(int i=l;i=2) return false; if(ch==1){ int res=a[l][d]; if(v[d]<0) v[d]=res; else{ if(res!=v[d]) match=false; } } int mid; for(mid=l;mid<=r and a[l][d]==a[mid][d];mid++){} bool ret=true; if(!fill(l,mid-1,d-1)){ ret=false; } if(mid<=r){ if(!fill(mid,r,d-1)){ ret=false; } } return ret; } ll ketaDP(ll mn){ if(mn<=0) return 0; ll m[62]={}; rep(i,62)m[i]=((mn>>i)&1); ll dp[63][2][2]={}; dp[62][0][0]=1; for(int i=61;i>=0;i--){ if(v[i]<0){ //ギリギリ for(int k=0;k<=m[i];k++){ dp[i][(k=v[i]) dp[i][m[i]>v[i]][v[i]]+=dp[i+1][0][0]+dp[i+1][0][1]; } } // cout<=0;i--){ // cout<=0;i--){ // cout<>n>>lw>>hi; rep(i,n){ ll t;cin>>t; rep(j,62){ a[i][j]=(t>>j)&1; } } if(!fill(0,n-1,61) or !match){ cout<<0<