#include using namespace std; vector costlyIntervals(int n, int k, vector A) { vector > answers(n, vector(n, 0)); vector sol(n, -1); for (int left = 0; left < n; ++left) { answers[left][left] = 0; int or_ = A[left]; int and_ = A[left]; int min_ = A[left]; int max_ = A[left]; for (int right = left + 1; right < n; ++right) { or_ |= A[right]; and_ &= A[right]; min_ = min(min_, A[right]); max_ = max(max_, A[right]); answers[left][right] = or_ - and_ - max_ + min_; } } for (int left = 0; left < n; ++left) { for (int right = n - 1; right >= left; --right) { if (answers[left][right] >= k) { int val = right - left + 1; while (right >= left) { sol[right] = max(sol[right], val); --right; } } } } return sol; } int main() { int n; int k; cin >> n >> k; vector A(n); for(int A_i = 0; A_i < n; A_i++){ cin >> A[A_i]; } vector result = costlyIntervals(n, k, A); for (ssize_t i = 0; i < result.size(); i++) { cout << result[i] << (i != result.size() - 1 ? "\n" : ""); } cout << endl; return 0; }