만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

편지 돌리기

시간 제한2초메모리 제한512 MB

요약
순열 F의 사이클 길이에 대한 최소공배수를 구하고, F의 두 원소를 한 번 교환해서 얻을 수 있는 가장 작은 최소공배수를 구합니다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 구현
정답자
아직 제출이 없습니다

문제

Albert와 친구들은 편지 릴레이 놀이를 즐겨한다. 총 NN명의 어린이가 1번부터 NN번까지 번호를 달고 있고, 각자 편지를 한 장씩 쓴다. 편지지에는 편지를 쓴 아이 자신의 번호를 적는다. 모두 편지를 쓴 뒤, ii번째 아이는 자신이 쓴 편지를 FiF_i번째 아이에게 전달한다. Fi=iF_i = i인 경우에는 자신의 편지를 자신이 갖고 있으면 된다. 공평한 놀이가 되려면 모든 아이가 반드시 한 장씩 받아야 한다. 따라서 배열 FF에는 11부터 NN까지의 정수가 정확히 한 번씩 등장한다. 편지 전달 방법을 나타내는 배열 FF를 "편지 돌리기 배열"이라 부르자. NN명의 아이가 모두 동시에 규칙대로 다음 아이에게 편지를 넘기면 편지를 "한 번" 돌린 것이다. 이를 반복하면 언젠가 각자 처음에 쓴 편지를 받게 된다.

kk번 편지를 돌린 뒤 ii번째 아이가 갖고 있는 편지에 쓰인 번호를 LF(k,i)L_F(k, i)라 하자.

  • k=0k = 0: 편지를 돌리기 전에는 모든 아이가 자신이 쓴 편지를 갖고 있다.
  • k=1k = 1: 한 번 돌린 뒤 1번 아이는 자신의 편지를 2번 아이에게 주었으므로 2번 아이는 1번이 적힌 편지를 갖고 있다. 8번과 9번 아이는 서로 편지를 주고받았고, 10번 아이는 자신의 편지를 그대로 갖고 있다.
  • k=2k = 2: 1번부터 7번 아이는 자신의 편지를 갖고 있지 않지만, 8번, 9번, 10번 아이는 두 번째 돌리기가 끝난 뒤 각자 자신의 편지를 갖고 있다.
  • k=3k = 3: 1번, 2번, 3번, 10번 아이는 각자 자신의 편지를 갖고 있고, 나머지 아이들은 다른 아이가 쓴 편지를 갖고 있다.

Albert와 아이들은 최소 몇 번 돌려야 각자 자신의 편지를 손에 쥐게 되는지 쉽게 구할 수 있었다. 이를 R(F)R(F)라 쓰기로 했다. 수학적으로는 모든 1≤i≤N1 \le i \le N에 대해 LF(k,i)=iL_F(k, i) = i를 만족하는 가장 작은 k>0k > 0이다. 이 값을 FF의 "편지 돌리기 점수"라 하자. 위 예제에서 FF의 편지 돌리기 점수는 12이다.

새로운 문제 만들기를 좋아하는 Albert는 이보다 조금 더 어려운 문제를 생각해 냈다. 먼저 임의의 두 정수 1≤x,y≤N1 \le x, y \le N을 고른다. 그다음 FxF_x와 FyF_y의 값을 맞바꾸면 새로운 편지 돌리기 배열 GF,x,yG_{F, x, y}를 얻을 수 있다. FF의 나머지 원소는 바꾸지 않는다. x=yx = y인 두 정수를 고르면 당연히 GF,x,y=FG_{F, x, y} = F이고, 이것도 허용한다. 이렇게 얻을 수 있는 모든 배열 GF,x,yG_{F, x, y}의 편지 돌리기 점수 중 최솟값을 구해 보고 싶다.

위의 예제에서 x=1x = 1, y=10y = 10을 고르면 GF,x,y=[10,3,1,5,6,7,4,9,8,2]G_{F, x, y} = [10, 3, 1, 5, 6, 7, 4, 9, 8, 2]가 된다. 이때 네 번 돌린 뒤 각 아이가 들고 있는 편지의 번호는 아래 그림과 같고, 이 배열의 편지 돌리기 점수는 4점이다.

이 예제에서 FF 배열의 두 원소 값을 교환하여 얻을 수 있는 편지 돌리기 점수의 최솟값은 4점이다.

입력으로 NN과 FF가 주어졌을 때, FF의 편지 돌리기 점수와 FF의 두 원소 값을 교환하여 얻을 수 있는 편지 돌리기 점수의 최솟값을 구하시오.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 NN이 주어진다. 둘째 줄에는 배열 FF의 원소 NN개가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답인 두 정수를 공백으로 구분하여 한 줄에 출력한다. 첫 번째 정수는 FF의 편지 돌리기 점수이고, 두 번째 정수는 FF의 원소 두 개를 교환하여 새 배열을 만들었을 때 얻을 수 있는 편지 돌리기 점수의 최솟값이다.

제한

  • 1≤T≤101 \le T \le 10
  • 2≤N≤2500002 \le N \le 250000
  • 1≤i≤N1 \le i \le N인 모든 ii에 대하여 1≤Fi≤N1 \le F_i \le N이다.
  • 배열 FF의 원소는 고유하다(중복된 값이 주어지지 않는다).
  • 각 테스트 케이스의 정답인 두 정수 값이 모두 101310^{13} 이하인 입력만 주어진다.

예제1

  1. 예제 1

    입력
    3
    10
    2 3 1 5 6 7 4 9 8 10
    16
    2 3 4 5 6 7 8 1 10 11 12 13 9 15 16 14
    10
    2 3 1 5 6 4 8 7 10 9
    
    예상 출력
    12 4
    120 8
    6 6