#!/usr/bin/env pypy3 def solve_k_zero(n): if n == 0: return [] if n == 1: return [0] l = (n-1).bit_length() m = 1<<(l-1) ans = list(range(m-1, -1, -1)) for i in range(m): if ans[i]+m < n: ans[i] += m ans += solve_k_zero(n-m) x = 0 for i in range(n): x |= i&ans[i] assert x == 0 return ans def solve_n_power_2(n, k): if n == 0: return [] if n == 1: return [0] if k < n//2: first_half = solve_n_power_2(n//2, k) for i in range(len(first_half)): first_half[i] += n//2 second_half = solve_k_zero(n//2) return first_half + second_half else: first_half = solve_n_power_2(n//2, k-n//2) second_half = solve_k_zero(n//2) for i in range(len(second_half)): second_half[i] += n//2 return first_half + second_half def solve(n, k): p = [] l = (n-1).bit_length() if k < 0 or k >= (1<