N, L = list(map(int, input().split()))

A = [int(a) for a in input().split()]



CanRemain = []

CutFirst = []

for i in range(N-1):

    if A[i] + A[i+1] >= L: CanRemain.append(i+1)

    else: CutFirst.append(i+1)



if not CanRemain: print("Impossible")

else:

    print("Possible")

    for num in CutFirst:

        if num < CanRemain[-1]: print(num)

        else: break

    for i in reversed(list(range(len(CutFirst)))):

        if CutFirst[i] > CanRemain[-1]: print((CutFirst[i]))

        else: break

    for num in CanRemain: print(num)
import sys



def solve():

    input = sys.stdin.readline

    N, L = list(map(int, input().split()))

    A = [int(a) for a in input().split()]

    for i in range(N - 1):

        if A[i] + A[i+1] >= L:

            print("Possible")

            for k in range(i): print((k + 1))

            for k in reversed(list(range(i + 1, N - 1))): print((k + 1))

            print((i + 1))

            break

    else: print("Impossible")



    return 0



if __name__ == "__main__":

    solve()
N, L = list(map(int, input().split()))
A = [int(a) for a in input().split()]
CanRemain = []
CutFirst = []
for i in range(N - 1):
    if A[i] + A[i + 1] >= L:
        CanRemain.append(i + 1)
    else:
        CutFirst.append(i + 1)
if not CanRemain:
    print("Impossible")
else:
    print("Possible")
    for num in CutFirst:
        if num < CanRemain[-1]:
            print(num)
        else:
            break
    for i in reversed(list(range(len(CutFirst)))):
        if CutFirst[i] > CanRemain[-1]:
            print((CutFirst[i]))
        else:
            break
    for num in CanRemain:
        print(num)

import sys


def solve():
    input = sys.stdin.readline
    N, L = list(map(int, input().split()))
    A = [int(a) for a in input().split()]
    for i in range(N - 1):
        if A[i] + A[i + 1] >= L:
            print("Possible")
            for k in range(i):
                print((k + 1))
            for k in reversed(list(range(i + 1, N - 1))):
                print((k + 1))
            print((i + 1))
            break
    else:
        print("Impossible")
    return 0


if __name__ == "__main__":
    solve()

-N, L = list(map(int, input().split())) -A = [int(a) for a in input().split()] -CanRemain = [] -CutFirst = [] -for i in range(N - 1): -    if A[i] + A[i + 1] >= L: -        CanRemain.append(i + 1) +import sys + + +def solve(): +    input = sys.stdin.readline +    N, L = list(map(int, input().split())) +    A = [int(a) for a in input().split()] +    for i in range(N - 1): +        if A[i] + A[i + 1] >= L: +            print("Possible") +            for k in range(i): +                print((k + 1)) +            for k in reversed(list(range(i + 1, N - 1))): +                print((k + 1)) +            print((i + 1)) +            break -        CutFirst.append(i + 1) -if not CanRemain: -    print("Impossible") -else: -    print("Possible") -    for num in CutFirst: -        if num < CanRemain[-1]: -            print(num) -        else: -            break -    for i in reversed(list(range(len(CutFirst)))): -        if CutFirst[i] > CanRemain[-1]: -            print((CutFirst[i])) -        else: -            break -    for num in CanRemain: -        print(num) +        print("Impossible") +    return 0 + + +if __name__ == "__main__": +    solve()