#include using namespace std; const int maxi=1e6+2; const int bl=2; const long long mo=1e9+7; int a[maxi]; long long k; int n; int mm[5001][5001],mi[5001][5001]; int andi[5001][5001],ori[5001][5001]; int rez[maxi]; int main() { cin>>n>>k; for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) for (int j=i;j<=n;j++) if (i==j) { mm[i][j]=a[i]; mi[i][j]=a[i]; ori[i][j]=a[i]; andi[i][j]=a[i]; } else { mm[i][j]=max(mm[i][j-1],a[j]); mi[i][j]=min(mi[i][j-1],a[j]); ori[i][j]=ori[i][j-1]|a[j]; andi[i][j]=andi[i][j-1]&a[j]; } for (int i=1;i<=n;i++) rez[i]=-1; for (int i=1;i<=n;i++){ int posl=0; for (int j=i;j<=n;j++) if (-mm[i][j]+mi[i][j]-andi[i][j]+ori[i][j]>=k) posl=j; for (int j=i;j<=posl;j++) rez[j]=max(rez[j],posl-i+1); } for (int i=1;i<=n;i++) printf("%d\n",rez[i]); printf("\n"); return 0; }