//satyaki3794 #include #define ff first #define ss second #define pb push_back #define MOD (1000000007LL) #define LEFT(n) (2*(n)) #define RIGHT(n) (2*(n)+1) using namespace std; typedef long long ll; typedef pair ii; typedef pair iii; ll pwr(ll base, ll p, ll mod=MOD){ ll ans = 1;while(p){if(p&1)ans=(ans*base)%mod;base=(base*base)%mod;p/=2;}return ans; } ll gcd(ll a, ll b){ if(b == 0) return a; return gcd(b, a%b); } const int N = 100005; int n, k, powers[N], nextbit[N][30][2], rmost[N]; ll arr[N], sparse[2][20][N]; ll rmq(int l, int r){ int k = powers[r-l+1]; return max(sparse[0][k][l], sparse[0][k][r-(1<= k){ ans = max(ans, mid); lo = mid+1; } else{ hi = mid-1; } } return ans; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); for(int i=2;i>n>>k; for(int i=1;i<=n;i++){ cin>>arr[i]; powers[i] += powers[i-1]; sparse[0][0][i] = sparse[1][0][i] = arr[i]; } for(int j=1;(1<=1;i--){ for(int j=0;j<30;j++){ nextbit[i][j][0] = nextbit[i+1][j][0]; nextbit[i][j][1] = nextbit[i+1][j][1]; } for(int j=0;j<30;j++){ if((arr[i] >> j) & 1) nextbit[i][j][1] = i; else nextbit[i][j][0] = i; } } // cout<<"nextbit:\n"; // for(int i=1;i<=n;i++){ // cout< pos; map add; set::iterator it; for(int i=1;i<=n;i++){ pos.clear(); add.clear(); pos.insert(i); pos.insert(n+1); add[i] = 0; for(int j=0;j<30;j++){ if(nextbit[i][j][0] == -1 || nextbit[i][j][1] == -1) continue; int p = max(nextbit[i][j][0], nextbit[i][j][1]); add[p] += (1< pq; for(int i=1;i<=n;i++){ pq.push({rmost[i]-i+1, rmost[i]}); while(!pq.empty() && pq.top().ss < i) pq.pop(); if(pq.empty()) cout<<"-1\n"; else cout<