선인장 그래프의 자기동형사상

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

문제

선인장은 모든 간선이 단순 사이클에 최대 한 개만 속하는 연결 무향 그래프다. 사이클을 몇 개 허용한 트리라고 보면 된다. NEERC는 예전부터 선인장을 다루는 문제를 여러 번 냈다. 선인장이 처음 등장한 2005년 문제의 제목은 그냥 Cactus였고, 2007년은 Cactus Reloaded, 2010년은 Cactus Revolution이었다.

이런 문제의 테스트 데이터를 만들 때 출제진은 한 가지 난관을 만난다. 틀린 풀이 중 일부는 입력에 적힌 정점 번호에 따라 결과가 달라진다. 그래서 중요한 테스트는 같은 그래프를 정점 번호만 바꿔 여러 번 넣는다. 그런데 어떤 그래프는 규칙적이라서 번호를 바꿔도 그래프가 그대로다. 어떤 그래프에 테스트를 몇 개나 만들지 객관적으로 정하려면, 그 그래프가 얼마나 규칙적인지 알려 주는 값이 필요하다.

그 값이 자기동형사상의 개수다. 정점 집합 VV와 간선 집합 EE로 이루어진 무향 그래프 (V,E)(V, E)가 있고, 각 간선은 서로 다른 두 정점의 집합 {v1,v2}\{v_1, v_2\}이다(v1,v2Vv_1, v_2 \in V). 그래프 자기동형사상은 VV에서 VV로 가는 전단사 함수 mm 가운데, 간선으로 이어진 모든 정점 쌍 v1v_1, v2v_2에 대해({v1,v2}E\{v_1, v_2\} \in E) {m(v1),m(v2)}E\{m(v_1), m(v_2)\} \in E가 성립하는 함수다.

모든 그래프에는 항등함수라는 자기동형사상이 적어도 하나 있고, 정점이 nn개인 그래프의 자기동형사상은 최대 n!n!개다. 이 개수가 매우 커질 수 있으므로 답은 소인수분해 i=1kpiqi\prod_{i=1}^{k} p_i^{q_i} 꼴로 나타낸다. pip_i는 오름차순으로 나열한 소수이고(pi2p_i \ge 2, pi<pi+1p_i < p_{i+1}), qiq_i는 그에 대응하는 지수다(qi>0q_i > 0).

입력

첫째 줄에 정수 nnmm이 주어진다(1n500001 \le n \le 50\,000, 0m500000 \le m \le 50\,000). nn은 그래프의 정점 수이고, 정점에는 11번부터 nn번까지 번호가 붙어 있다. 그래프의 간선은 서로 같은 간선을 공유하지 않는 경로 mm개로 주어지며, mm은 그 경로의 개수다.

이어지는 mm개 줄에는 경로가 하나씩 주어진다. 각 줄은 정수 kik_i로 시작하고(2ki10002 \le k_i \le 1000), 그 뒤에 11 이상 nn 이하의 정수 kik_i개가 이어진다. 이 kik_i개의 정수가 경로를 지나는 정점을 순서대로 나타낸다. 경로에서 인접한 두 정점은 서로 다르다. 한 경로가 같은 정점을 여러 번 지날 수 있지만, 입력 전체에서 모든 간선은 정확히 한 번씩 등장한다. 두 정점을 잇는 간선은 최대 한 개다.

입력으로 주어지는 그래프는 선인장이다.

출력

첫째 줄에 그래프 자기동형사상 개수를 소인수분해했을 때 나오는 소인수의 개수 kk를 출력한다. 자기동형사상이 한 개뿐이면 00을 출력한다. 이어지는 kk개 줄에는 소수 pip_i와 그 지수 qiq_i를 공백으로 구분해 출력한다. 소수는 오름차순으로 출력한다.

힌트

첫 번째 예제의 그래프는 자기동형사상이 4=224 = 2^2개다.

두 번째 예제는 정점 두 개를 간선 하나로 이은 그래프이고, 자기동형사상이 2=212 = 2^1개다.

세 번째 예제는 가운데 정점 하나에 정점 1414개가 각각 이어진 별 그래프이고, 자기동형사상이 14!=87178291200=211×35×52×72×111×13114! = 87\,178\,291\,200 = 2^{11} \times 3^5 \times 5^2 \times 7^2 \times 11^1 \times 13^1개다.