from heapq import * n,s,t,k = map(int,input().split()) s,t = s-1,t-1 X = list(map(int,input().split())) m = int(input()) e = [[] for i in range(n)] for i in range(m): a,b,y = map(int,input().split()) e[a-1].append((b-1,y)) inf = 10**20 dis = [[inf]*k for i in range(n)] par = [[[-1,-1]for _ in range(k) ]for i in range(n)] dis[s][0] = X[s] h = [(X[s],s,0)] while h: d,now,l = heappop(h) if now == t and l == k-1: print("Possible") print(d) ans = [] while now != -1: ans.append(now+1) now,l = par[now][l] print(len(ans)) print(*ans[::-1]) exit() if d != dis[now][l]: continue for nex, y in e[now]: nd = d+y+X[nex] nl = min(l+1,k-1) if dis[nex][nl] > nd: dis[nex][nl] = nd heappush(h,(nd,nex,nl)) par[nex][nl] = [now,l] print("Impossible")