# 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))
IyBDcmVkaXRzIHRvIFNlcmdpaSBPbHNoYW5ldHNreWkKIyBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2cvZ29vZ2xlLWNvZGUvYy9uRjYtNU5Fd0xxRSAKCmRlZiBnZXRfYm91bmRhcmllcyhzaXplKToKICAgIHJldHVybiBzaXplIC0gMSwgKHNpemUgKyAyKSAqIChzaXplIC0gMSkgLy8gMgoKZGVmIHN3YXAoYXJyLCBzLCBlKToKICAgIHdoaWxlIHMgPCBlOgogICAgICAgIGFycltzXSwgYXJyW2VdID0gYXJyW2VdLCBhcnJbc10KICAgICAgICBzICs9IDEKICAgICAgICBlIC09IDEKCm51bWJlcl9vZl9jYXNlcyA9IGlucHV0KCkKCmZvciB0ZXN0X2Nhc2VfbnVtYmVyIGluIHJhbmdlKGludChudW1iZXJfb2ZfY2FzZXMpKToKICAgIGlucHV0X3BhcmFtcyA9IGlucHV0KCkuc3BsaXQoIiAiKQogICAgTiA9IGludChpbnB1dF9wYXJhbXNbMF0pCiAgICBDID0gaW50KGlucHV0X3BhcmFtc1sxXSkKCiAgICBtaW5fdmFsdWUsIG1heF92YWx1ZSA9IGdldF9ib3VuZGFyaWVzKE4pCgogICAgaWYgQyA8IG1pbl92YWx1ZSBvciBDID4gbWF4X3ZhbHVlOgogICAgICAgIHByaW50KCJDYXNlICN7fToge30iLmZvcm1hdCh0ZXN0X2Nhc2VfbnVtYmVyICsgMSwgIklNUE9TU0lCTEUiKSkKICAgICAgICBjb250aW51ZQoKICAgIGN1cnJlbnRfQyA9IEMKCiAgICBhcnJheSA9IFstMV0gKiBOCgogICAgc3RhcnRfaW5kZXggPSAwCiAgICBsYXN0X2luZGV4ID0gbGVuKGFycmF5KSAtIDEKCiAgICBjdXJyZW50X24gPSBzdGFydF9pbmRleCArIDEKCiAgICB3aGlsZSBzdGFydF9pbmRleCA8IGxhc3RfaW5kZXg6CiAgICAgICAgbWluX3YsIG1heF92ID0gZ2V0X2JvdW5kYXJpZXMoTiAtIGN1cnJlbnRfbikKCiAgICAgICAgaWYgY3VycmVudF9DIC0gMSA8IG1heF92OgogICAgICAgICAgICBhcnJheVtzdGFydF9pbmRleF0gPSBjdXJyZW50X24KICAgICAgICAgICAgY3VycmVudF9uICs9IDEKICAgICAgICAgICAgc3RhcnRfaW5kZXggKz0gMQogICAgICAgICAgICBjdXJyZW50X0MgLT0gMQogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBzcG9va3lfc3RhcnQgPSBzdGFydF9pbmRleAogICAgICAgIHN0YXJ0ID0gVHJ1ZQoKICAgICAgICB3aGlsZSBjdXJyZW50X24gPD0gTjoKICAgICAgICAgICAgaWYgc3RhcnQ6CiAgICAgICAgICAgICAgICBhcnJheVtzdGFydF9pbmRleF0gPSBjdXJyZW50X24KICAgICAgICAgICAgICAgIHN0YXJ0X2luZGV4ICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFycmF5W2xhc3RfaW5kZXhdID0gY3VycmVudF9uCiAgICAgICAgICAgICAgICBsYXN0X2luZGV4IC09IDEKCiAgICAgICAgICAgIGN1cnJlbnRfbiArPSAxCiAgICAgICAgICAgIHN0YXJ0ID0gbm90IHN0YXJ0CgogICAgICAgIG5leHRfbWluX2luZGV4ID0gY3VycmVudF9DIC0gbWF4X3YKCiAgICAgICAgc3dhcChhcnJheSwgc3Bvb2t5X3N0YXJ0LCBzcG9va3lfc3RhcnQgKyBuZXh0X21pbl9pbmRleCAtIDEpCgogICAgcmVzdWx0ID0gJyAnLmpvaW4oc3RyKGkpIGZvciBpIGluIGFycmF5KQoKICAgIHByaW50KCJDYXNlICN7fToge30iLmZvcm1hdCh0ZXN0X2Nhc2VfbnVtYmVyICsgMSwgcmVzdWx0KSk=