#GG002. 刷装备

刷装备

Description

身为一个ACMer,自己手动刷装备无疑是可耻的,于是你打算自己写一个“辅助”来自动刷怪.

观察地图上的怪物分布后,你在地图上设置了N个刷怪点,这些刷怪点的怪物掉你需要的装备和素材,在此基础上,如果A点和B点之间存在一条不需要你训练狗屎CV和强化学习的移动路径,就在A和B之间连一条边。接下来你要按规则计算一条合理的刷怪路线:

任意选择一个刷怪点作为起点,每次可以选择一条与当前路径点相连的边移动到没有去过的的刷怪点,或者沿着第一次访问该路径点的路退回上一个刷怪点(不可以随便乱走,不然可能会拉到你不想刷的一大波怪导致翻车断循环)。

你必须访问所有的刷怪点才能结束一次循环。并且仅当回到起点的时候,你可以结束脚本循环(都Auto了,当然要刷完)。

为了方便Debug(Debug很重要!)当你每达到一个新的刷怪点,需要记录下它的编号,最终你会获得一个长度为n的序列,你需要让这个序列的字典序最小。

对于两个长度均为 n 的序列 AB,当且仅当存在一个正整数 x,满足以下条件时,我们说序列 A 的字典序小于 B

  • 对于任意正整数 1i<x,序列 A 的第 i 个元素 Ai 和序列 B 的第 i 个元素 Bi 相同。
  • 序列 A 的第 x 个元素的值小于序列 B 的第 x 个元素的值。

Format

Input

输入文件共 m+1 行。第一行包含两个整数 n,m 中间用一个空格分隔。 接下来 m 行,每行包含两个整数 u,v,表示编号为 uv 的刷怪点之间有一条可以移动的路径,两个整数之间用一个空格分隔

1n5×10^3

m=n1 或 m=n。并保证 1≤u,v≤n。

Output

输出文件包含一行,n 个整数,表示字典序最小的序列。相邻两个整数之间用一个空格分隔。

Samples

6 5
1 3
2 3
2 5
3 4
4 6
1 3 2 5 4 6
6 6
1 3
2 3
2 5
3 4
4 5
4 6
1 3 2 4 5 6

1 3 2 5 4 6

Limitation

1s, 1024KiB for each test case.