$n$개의 정점과 $m$개의 간선을 가진 무방향 그래프가 주어진다. 당신은 다음 연산을 최대 $2 \cdot \max(n, m)$번 수행할 수 있다:
- 서로 다른 세 정점 $a, b, c$를 선택한 뒤, 간선 $(a, b), (b, c), (c, a)$ 각각에 대해 다음을 수행한다:
- 간선이 존재하지 않으면 추가한다. 반대로, 간선이 존재하면 제거한다.
그래프가 다음 중 하나를 만족하면 cool하다고 한다:
- 그래프에 간선이 없다.
- 그래프가 트리이다.
위의 연산을 수행하여 그래프를 cool하게 만들어야 한다. 최대 $2 \cdot \max(n, m)$번의 연산을 사용할 수 있음에 유의하라. 적어도 하나의 해가 항상 존재함이 알려져 있다.
입력
각 테스트 케이스는 여러 개의 테스트 케이스를 포함한다. 입력의 첫 번째 줄에는 테스트 케이스의 수 $t$ ($1 \le t \le 10^4$)가 주어진다. 각 테스트 케이스에 대한 설명이 이어진다.
각 테스트 케이스의 첫 번째 줄에는 두 정수 $n$과 $m$ ($3 \le n \le 10^5$, $0 \le m \le \min\left(\frac{n(n-1)}{2}, 2 \cdot 10^5\right)$)이 주어지며, 이는 각각 정점의 수와 간선의 수를 나타낸다.
그다음 $m$개의 줄이 이어지며, $i$번째 줄에는 $i$번째 간선이 연결하는 두 노드 $u_i$와 $v_i$ ($1 \le u_i, v_i \le n$)가 주어진다.
모든 테스트 케이스에 대해 $n$의 합은 $10^5$를 넘지 않으며, $m$의 합은 $2 \cdot 10^5$를 넘지 않음이 보장된다. 주어진 그래프에는 자기 루프나 다중 간선이 없음이 보장된다.
출력
각 테스트 케이스마다, 첫 번째 줄에 연산의 횟수 $k$ ($0 \le k \le 2 \cdot \max(n, m)$)를 출력한다. 그다음 $k$개의 줄에 걸쳐, $i$번째 줄에 $i$번째 연산에서 선택한 세 정점 $a, b, c$ ($1 \le a, b, c \le n$)를 출력한다. 여러 해가 존재할 경우, 아무거나 출력해도 된다.
예제
입력 1
5 3 0 3 1 1 2 3 2 1 2 2 3 3 3 1 2 2 3 3 1 6 6 1 2 1 6 4 5 3 4 4 6 3 6
출력 1
0 1 1 2 3 0 1 1 2 3 3 1 3 6 2 4 5 3 4 6
참고
첫 번째 테스트 케이스에서, 그래프에는 간선이 없으므로 이미 cool하다. 두 번째 테스트 케이스에서, 유일한 연산을 수행한 후 그래프는 트리가 되므로 cool하다. 세 번째 테스트 케이스에서, 그래프는 이미 트리이므로 cool하다. 네 번째 테스트 케이스에서, 유일한 연산을 수행한 후 그래프에는 간선이 없으므로 cool하다. 다섯 번째 테스트 케이스의 경우:
| 연산 | 연산 전 그래프 | 연산 후 그래프 |
|---|---|---|
| 1 | ![]() |
![]() |
| 2 | ![]() |
![]() |
| 3 | ![]() |
![]() |
첫 번째 연산 후 그래프가 이미 cool해졌으며, 두 번의 추가 연산이 있음에 유의하라. 두 번의 추가 연산 후에도 그래프는 여전히 cool하므로, 이는 유효한 답이다.





