1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열로 쓰면 다음과 같다.
(1322374851647586)
같은 순열을 방향 그래프로 나타낼 수도 있다. 순열을 배열로 (1π1……iπi……nπn) 처럼 썼다면, 모든 i에 대해 i에서 πi로 가는 간선을 이으면 된다. 이 그래프는 모든 정점에 들어오는 간선과 나가는 간선이 하나씩이므로, 서로 겹치지 않는 사이클 여러 개로 나뉜다. 이런 사이클을 순열 사이클이라고 한다.
순열 (3, 2, 7, 8, 1, 4, 5, 6)의 그래프에는 순열 사이클이 3개 있다. 1 → 3 → 7 → 5 → 1, 2 → 2, 4 → 8 → 6 → 4이다.
N개의 정수로 이루어진 순열이 주어졌을 때, 순열 사이클의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 순열의 크기 N (2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 순열을 이루는 N개의 정수가 공백으로 구분되어 주어진다.
각 테스트 케이스마다 주어진 순열에 있는 순열 사이클의 개수를 한 줄에 하나씩 출력한다.