포템킨 순환로

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

포템킨 공작은 시찰단에게 보여 주려고 급히 지은 가짜 마을로 이름이 높다. 공작은 영지 안의 닫힌 경로를 따라 시찰단을 안내하고, 경로가 지나는 마을 터마다 배우 무리가 이동식 마을을 세워 주민 행세를 한다. 시찰단이 자리를 뜨면 배우들은 마을을 해체해 시찰단보다 먼저 다음 터로 달려간다.

경로를 고르는 데는 셈이 필요하다. 시찰단은 예정된 경로를 잠시 벗어나 주변을 둘러보기도 하는데, 이미 지나온 터로 되돌아가면 마을이 서 있던 자리가 텅 비어 있어 속임수가 들통난다. 또 제대로 인상을 남기려면 경로가 적어도 네 곳의 터를 지나야 한다.

영지의 지도, 곧 터 사이를 잇는 양방향 직통 도로 목록이 주어진다. 도로가 엇갈리는 곳은 정교한 고가 구조로 처리해서, 시찰단은 도로의 양 끝 터가 아닌 곳에서 다른 도로로 갈아탈 수 없다.

다음 조건을 모두 만족하는 터의 수열 s1,,sms_1, \dots, s_m을 찾아라.

  • m4m \ge 4이다.
  • 모든 터가 서로 다르다. 즉 iji \ne j이면 sisjs_i \ne s_j이다.
  • i=1,,m1i = 1, \dots, m - 1에 대해 sis_isi+1s_{i+1}을 잇는 직통 도로가 있고, sms_ms1s_1을 잇는 직통 도로도 있다.
  • 수열에 속한 터 사이에 그 밖의 직통 도로는 없다. 즉 ji+1j \ne i + 1이고 (i,j)(1,m)(i, j) \ne (1, m)인 모든 i<ji < j에 대해 sis_isjs_j를 잇는 직통 도로가 없다.

입력

첫째 줄에 터의 수 NN과 직통 도로의 수 RR이 주어진다 (0N10000 \le N \le 1000, 0R1000000 \le R \le 100\,000). 터의 번호는 1번부터 NN번까지다. 이어지는 RR개의 줄에는 서로 다른 두 정수 aia_ibib_i가 주어지며 (1ai,biN1 \le a_i, b_i \le N), 터 aia_i와 터 bib_i를 잇는 직통 도로가 있다는 뜻이다. 두 터를 잇는 도로는 많아야 하나다.

출력

조건을 만족하는 수열이 없으면 no를 출력한다.

조건을 만족하는 수열은 보통 여럿이므로, 아래 규칙이 고르는 하나만 한 줄에 출력한다. 터 번호는 공백 하나로 구분한다.

vv에 대해, 지도에서 vvvv에 도로로 이어진 터를 모두 지우고 남은 것을 GvG_v라 하자. 두 터 aabb가 각각 vv와 도로로 이어져 있고, aabb를 잇는 도로는 없으며, aa에서 bb로 가는 경로 중 내부 터가 모두 GvG_v에 속하는 것이 있으면 aabbvv우회 쌍이라 하자.

  1. 우회 쌍이 있는 가장 작은 터를 vv로 잡는다. 그런 터가 없으면 no를 출력한다.
  2. vv의 우회 쌍을 a<ba < b(a,b)(a, b)로 적고, aa가 가장 작은 쌍을, 그중에서 bb가 가장 작은 쌍을 고른다.
  3. aa, bbGvG_v의 터만 남기고 그 사이의 도로를 모두 살린 지도를 HH라 하자. HH에서 aa부터 bb까지 가는 최단 경로 중 사전순으로 가장 앞서는 것을 고른다. 곧 aa에서 출발해 매번 bb까지 남은 거리가 가장 짧게 유지되는 터 가운데 번호가 가장 작은 터로 이동한다.
  4. vv, aa, 그 경로의 내부 터를 차례대로, 마지막으로 bb를 출력한다.

이렇게 만든 수열은 언제나 네 조건을 만족하고, 규칙이 남기는 답은 하나뿐이다.