import heapq

N, K = map(int, input().split())

A = list(map(int, input().split()))



knot = []

for i in range(N - 1):

    heapq.heappush(knot, (-A[i]-A[i+1], i))



ans = []

seen = [False]*N

while knot:

    L, i = heapq.heappop(knot)

    L = -L



    if seen[i]:

        continue

    if L < K:

        break



    seen[i] = True

    ans.append(i + 1)



    if i + 1 < N - 1:

        heapq.heappush(knot, (-L - A[i + 1], i + 1))

    if i - 1 >= 0:

        heapq.heappush(knot, (-L - A[i - 1], i - 1))



if len(ans) != N - 1:

    print("Impossible")

else:

    print("Possible")

    print(*ans[::-1], sep="\n")



def know(N, K, A):

    isOK = False

    for i in range(1, N):

        if A[i] + A[i - 1] >= K:

            isOK = True

            first = i



    if not isOK:

        return ["Impossible"]



    ans = [first]

    for i in range(first + 1, N):

        ans.append(i)

    for i in range(first - 1, 0, -1):

        ans.append(i)

    return ["Possible"] + ans[::-1]





if __name__ == "__main__":

    N, K = map(int, input().split())

    A = list(map(int, input().split()))

    ans = know(N, K, A)

    print(*ans, sep="\n")

import heapq

N, K = map(int, input().split())
A = list(map(int, input().split()))
knot = []
for i in range(N - 1):
    heapq.heappush(knot, (-A[i] - A[i + 1], i))
ans = []
seen = [False] * N
while knot:
    L, i = heapq.heappop(knot)
    L = -L
    if seen[i]:
        continue
    if L < K:
        break
    seen[i] = True
    ans.append(i + 1)
    if i + 1 < N - 1:
        heapq.heappush(knot, (-L - A[i + 1], i + 1))
    if i - 1 >= 0:
        heapq.heappush(knot, (-L - A[i - 1], i - 1))
if len(ans) != N - 1:
    print("Impossible")
else:
    print("Possible")
    print(*ans[::-1], sep="\n")

def know(N, K, A):
    isOK = False
    for i in range(1, N):
        if A[i] + A[i - 1] >= K:
            isOK = True
            first = i
    if not isOK:
        return ["Impossible"]
    ans = [first]
    for i in range(first + 1, N):
        ans.append(i)
    for i in range(first - 1, 0, -1):
        ans.append(i)
    return ["Possible"] + ans[::-1]


if __name__ == "__main__":
    N, K = map(int, input().split())
    A = list(map(int, input().split()))
    ans = know(N, K, A)
    print(*ans, sep="\n")

-import heapq +def know(N, K, A): +    isOK = False +    for i in range(1, N): +        if A[i] + A[i - 1] >= K: +            isOK = True +            first = i +    if not isOK: +        return ["Impossible"] +    ans = [first] +    for i in range(first + 1, N): +        ans.append(i) +    for i in range(first - 1, 0, -1): +        ans.append(i) +    return ["Possible"] + ans[::-1] -N, K = map(int, input().split()) -A = list(map(int, input().split())) -knot = [] -for i in range(N - 1): -    heapq.heappush(knot, (-A[i] - A[i + 1], i)) -ans = [] -seen = [False] * N -while knot: -    L, i = heapq.heappop(knot) -    L = -L -    if seen[i]: -        continue -    if L < K: -        break -    seen[i] = True -    ans.append(i + 1) -    if i + 1 < N - 1: -        heapq.heappush(knot, (-L - A[i + 1], i + 1)) -    if i - 1 >= 0: -        heapq.heappush(knot, (-L - A[i - 1], i - 1)) -if len(ans) != N - 1: -    print("Impossible") -else: -    print("Possible") -    print(*ans[::-1], sep="\n") + +if __name__ == "__main__": +    N, K = map(int, input().split()) +    A = list(map(int, input().split())) +    ans = know(N, K, A) +    print(*ans, sep="\n")