(n, m), passed, visited, stack, res, curr, dist = map(int, input().split()), set(), set(), [-1], [], 1, 3

edges = [[] for _ in range(n + 1)]
for x, y in (map(int, input().split()) for _ in range(m)): edges[x].append(y), edges[y].append(x)

while curr != -1:
    prev = curr
    passed.add(curr)
    while curr in passed and edges[prev]: curr = edges[prev].pop()  # Remove neighbours that we already passed
    if curr in passed: curr = stack.pop()  # If all neighbours have already been passed: move back up
    else: stack.append(prev)  # Else: move down
    dist += 1
    if prev not in visited and (curr in passed or dist >= 3):
        # Visit `prev` if we're moving back up or if we've moved three trails down
        res.append(prev)
        visited.add(prev)
        dist = 0

print(*res)
