module A = Array
module C = Char
module I = Int64
module L = List
module Q = Queue

let pf = Printf.printf
let sf = Scanf.scanf
let ssf = Scanf.sscanf

let read_int () = sf "%d " (fun x -> x)
let read_float () = sf "%f " (fun x -> x)
let read_array read n = A.init n (fun _ -> read ())
let err s = raise (Failure s)

let _ =
    let n = read_int () in
    let len = read_int () in
    let a = read_array read_int n in
    let (max_len, pos) = A.init (n - 1) (fun x -> x) |>
                             A.map (fun i -> (a.(i) + a.(i+1), i)) |>
                             A.fold_left max (0, 0) in
    if max_len >= len
    then A.append (A.init pos (fun x -> x+1)) (A.init (n-pos-1) (fun x -> n-x-1)) |>
         (print_endline "Possible";
          A.iter (fun x -> string_of_int x |> print_endline) )
    else print_endline "Impossible"
