갈루아
시간 제한1초메모리 제한512 MB
순열 p가 주어질 때, 모든 i에 대해 p(q(i)) = q(p(i))를 만족하고 역순 쌍의 개수가 짝수인 순열 q의 개수를 10^9+7로 나눈 나머지로 구한다.
문제
에바리스트가 에콜 폴리테크니크 입학시험에 세 번째로 도전한다. 그는 모든 문제를 아주 빠르게 풀었지만, 시험관은 그가 설명을 충분히 하지 않았다며 트집을 잡는다. 시험관은 에바리스트를 떨어뜨리려고 다음과 같은 문제를 낸다. 크기 인 순열 가 주어질 때, 모든 에 대해 ()를 만족하는 크기 인 짝순열 의 개수를 세어라. 이 수는 매우 클 수 있으므로 시험관은 로 나눈 나머지를 알고 싶어 한다.
순열이 짝이라는 것은 역전의 개수가 짝수라는 뜻이다. 순열 의 역전은 이고 인 첨자 쌍 이다.
정답을 전혀 모르는 시험관에게 안타깝게도, 갈루아는 단 1초 만에 이 문제를 풀어냈다. 당신이 시험관을 도와 답을 알려주어야 한다. 그렇지 않으면 어린 에바리스트는 또다시 거절당할 것이다.
입력
입력의 첫째 줄에는 순열의 길이를 나타내는 정수 이 주어진다 ().
둘째 줄에는 순열 가 주어지며, 개의 정수 가 포함된다 (, 인 모든 에 대해 ).
출력
조건 를 만족하는 짝순열 의 개수를 로 나눈 나머지를 출력한다.
힌트
첫 번째 예에서 조건을 만족하는 순열은 (1, 2, 3), (2, 3, 1), (3, 1, 2) 세 개이다. 모두 짝순열이다.
두 번째 예에서 조건을 만족하는 순열은 (1, 2, 3), (2, 1, 3) 두 개이다. 그러나 이 중 짝순열은 첫 번째뿐이다.