import sys N,M,P = map(int,input().split()) S,GG = map(int,input().split()) G = [[] for _ in range(N+1)] for _ in range(M): u,v = map(int,input().split()) G[u].append(v) G[v].append(u) inf = 10 ** 10 ds = [[inf] * 2 for _ in range(N+1)] dg = [[inf] * 2 for _ in range(N+1)] ds[S][0] = 0 dg[GG][0] = 0 from collections import deque q = deque() q.append((S,0)) while q: now,flag = q.popleft() for v in G[now]: if ds[v][1-flag] == inf: ds[v][1-flag] = ds[now][flag] + 1 q.append((v,1-flag)) q.append((GG,0)) while q: now,flag = q.popleft() for v in G[now]: if dg[v][1-flag] == inf: dg[v][1-flag] = dg[now][flag] + 1 q.append((v,1-flag)) ans = [] if P % 2 == 0: for i in range(1,N+1): if ds[i][0] + dg[i][0] <= P or ds[i][1] + dg[i][1] <= P: ans.append(i) else: for i in range(1,N+1): if ds[i][1] + dg[i][0] <= P or ds[i][0] + dg[i][1] <= P: ans.append(i) if len(ans) == 0: print(-1) else: print(len(ans)) print(*ans,sep="\n")