import sys

sys.setrecursionlimit(10**7)
n, m = map(int, input().split())
g = [[] for _ in range(n)]
for _ in range(m):
    a, b = map(int, input().split())
    g[a - 1].append(b - 1)
    g[b - 1].append(a - 1)

num_dists = {0: 0}
d = {(0, -1): (0, -1)}

stack = [(0, -1)]
idx = 0

while idx < len(stack):
    (u, p) = stack[idx]
    idx += 1
    # print("idx", idx, "stack len", len(stack))
    for v in g[u]:
        if v == p:
            continue
        if (v, u) not in d:
            if v not in num_dists:
                num_dists[v] = 0
            if num_dists[v] >= 2:
                continue
            num_dists[v] += 1

            # print(len(d))
            # print("parent of ", (v, u), "is", p)
            d[(v, u)] = (d[(u, p)][0] + 1, p)
            # print(f'parent of {(v, u)} is {u}')
            stack.append((v, u))
            if v == 0:
                # print("trace")
                # print(d[(v, u)][0])
                ans = [v + 1, u + 1, p + 1]
                while p != 0:
                    # print(u, p)
                    tmp = d[(u, p)][1]
                    # print("tmp", tmp)
                    u = p
                    p = tmp
                    ans.append(p + 1)
                print(len(ans))
                print(*ans)

                sys.exit(0)
print("impossible")
