Arca Carania 山国家公园正在开放旅游。该国家公园有若干个景点,以及连接这些景点对的道路。公园委员会制定了一系列公园内的环形游览路线,游客可以乘坐巴士游览各个景点。每条环形游览路线都从某个景点出发(不同路线的出发点可能不同),访问若干个其他景点且不重复经过任何景点,最后回到出发点。每条环形游览路线至少访问 3 个不同的景点。公园内至少存在一条环形游览路线。
公园委员会决定,对于任何给定的道路,所有巴士都将由同一家公司运营。委员会不希望被指责偏袒任何公司,因此他们希望确保公园内每一条可能的环形游览路线中,分配给每家公司的道路数量都完全相同。他们意识到这可能难以实现。因此,他们想了解有多少家巴士公司可以满足这种道路分配方式。
考虑样例输入 1,如图 K.1 所示。这些景点总共有三条环形游览路线。假设某家公司被分配了道路 1-3。它也必须被分配环形游览路线 1-2-3-4-1 上的某条道路,比如 2-3。但随后它就被分配到了环形游览路线 1-2-3-1 的三条道路中的两条,而没有其他公司能匹配这一点——因此不可能有其他公司。在样例输入 2 中,只有一条环形游览路线,因此只需将该路线的道路平均分配给各家公司即可。
图 K.1:样例输入 1。
输入格式
输入的第一行包含两个整数 $n$ ($1 \le n \le 2\,000$),表示公园内的景点数量,以及 $m$ ($1 \le m \le 2\,000$),表示景点之间的道路数量。接下来有 $m$ 行,每行包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i < b_i \le n$),表示景点 $a_i$ 和 $b_i$ 之间由一条双向道路连接。没有一对景点会被列出两次。
输出格式
输出所有使得能够以所需方式将道路分配给 $k$ 家公司的整数 $k$。这些整数应按升序排列。
样例
样例输入 1
4 5 1 2 2 3 3 4 1 4 1 3
样例输出 1
1
样例输入 2
6 6 1 2 2 3 1 3 1 4 2 5 3 6
样例输出 2
1 3