# Credits to Sergii Olshanetskyi
# https://groups.google.com/g/google-code/c/nF6-5NEwLqE 

def get_boundaries(size):
    return size - 1, (size + 2) * (size - 1) // 2

def swap(arr, s, e):
    while s < e:
        arr[s], arr[e] = arr[e], arr[s]
        s += 1
        e -= 1

number_of_cases = input()

for test_case_number in range(int(number_of_cases)):
    input_params = input().split(" ")
    N = int(input_params[0])
    C = int(input_params[1])

    min_value, max_value = get_boundaries(N)

    if C < min_value or C > max_value:
        print("Case #{}: {}".format(test_case_number + 1, "IMPOSSIBLE"))
        continue

    current_C = C

    array = [-1] * N

    start_index = 0
    last_index = len(array) - 1

    current_n = start_index + 1

    while start_index < last_index:
        min_v, max_v = get_boundaries(N - current_n)

        if current_C - 1 < max_v:
            array[start_index] = current_n
            current_n += 1
            start_index += 1
            current_C -= 1
            continue

        spooky_start = start_index
        start = True

        while current_n <= N:
            if start:
                array[start_index] = current_n
                start_index += 1
            else:
                array[last_index] = current_n
                last_index -= 1

            current_n += 1
            start = not start

        next_min_index = current_C - max_v

        swap(array, spooky_start, spooky_start + next_min_index - 1)

    result = ' '.join(str(i) for i in array)

    print("Case #{}: {}".format(test_case_number + 1, result))