#!/bin/python3 class maxer: def __init__(self,m,A): self.m = m n=1 while n0: maxi = max(self.data[ind],maxi) ind//=2 return maxi import sys n,k = [int(x) for x in input().split()] A = [int(x) for x in input().split()] MAX = maxer(len(A),A) MIN = miner(len(A),A) OR = orer(len(A),A) AND = ander(len(A),A) longest = fenwick(len(A)) if n < 1000: for l in range(n): a = A[l] b = A[l] c = A[l] d = A[l] best = (0,0,0) if a-b+c-d>=k: best = max(best,(1,l,l+1)) for r in range(l+1,n): #print(l,r) a = a|A[r] b = max(b,A[r]) c = min(c,A[r]) d = d&A[r] #print(OR.qor(l,r+1),MAX.qmax(l,r+1), MIN.qmin(l,r+1), AND.qand(l,r+1)) if a-b+c-d>=k: best = max(best,(r-l+1,l,r)) if best[0]!=0: longest.add(best[1],best[2]+1,best[0]) #print("found",l,r) #for i in range(n): # print(longest.summa(i),end = ' ') #print() for i in range(n): print(longest.summa(i)) sys.exit() for l in range(n): a = l b = n while b-a>1: m = (a+b)//2 if OR.qor(l,m+1)-MAX.qmax(l,m+1)+MIN.qmin(l,m+1)-AND.qand(l,m+1)>=k: a = m else: b = m if a==l: if OR.qor(l,a+1)-MAX.qmax(l,a+1)+MIN.qmin(l,a+1)-AND.qand(l,a+1)>=k: longest.add(l,l+1,1) else: longest.add(l,a+1,a-l+1) a = A[l] b = A[l] c = A[l] d = A[l] best = (0,0,0) if a-b+c-d>=k: best = max(best,(1,l,l+1)) for r in range(l+1,min(l+50,n)): #print(l,r) a = a|A[r] b = max(b,A[r]) c = min(c,A[r]) d = d&A[r] #print(OR.qor(l,r+1),MAX.qmax(l,r+1), MIN.qmin(l,r+1), AND.qand(l,r+1)) if a-b+c-d>=k: best = max(best,(r-l+1,l,r)) if best[0]!=0: longest.add(best[1],best[2]+1,best[0]) #print("found",l,r) #for i in range(n): # print(longest.summa(i),end = ' ') #print() # a = A[l] # b = A[l] # c = A[l] # d = A[l] # best = (0,0,0) # if a-b+c-d>=k: # best = max(best,(1,l,l+1)) # for r in range(l+1,n): # #print(l,r) # a = a|A[r] # b = max(b,A[r]) # c = min(c,A[r]) # d = d&A[r] #print(OR.qor(l,r+1),MAX.qmax(l,r+1), MIN.qmin(l,r+1), AND.qand(l,r+1)) # if a-b+c-d>=k: # best = max(best,(r-l+1,l,r)) # if best[0]!=0: # longest.add(best[1],best[2]+1,best[0]) #print("found",l,r) #for i in range(n): # print(longest.summa(i),end = ' ') #print() for i in range(n): print(longest.summa(i))