import sys from collections import defaultdict def main(): input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 S = int(input[idx]) idx += 1 P = [] for _ in range(N): P.append(int(input[idx])) idx += 1 split_at = N // 2 a_size = split_at b_size = N - split_at # Precompute all subsets of the first half a_subsets = defaultdict(list) for mask in range(0, 1 << a_size): total = 0 items = [] for i in range(a_size): if mask & (1 << i): total += P[i] items.append(i + 1) # 1-based index a_subsets[total].append(items) solutions = [] # Process all subsets of the second half for mask in range(0, 1 << b_size): total_b = 0 items_b = [] for j in range(b_size): if mask & (1 << j): total_b += P[split_at + j] items_b.append((split_at + j) + 1) # 1-based index remaining = S - total_b if remaining in a_subsets: for a_items in a_subsets[remaining]: combined = a_items + items_b if combined: # ensure at least one item is selected solutions.append(combined) # Sort the solutions lexicographically solutions = sorted(solutions) for sol in solutions: print(' '.join(map(str, sol))) if __name__ == '__main__': main()