Bermutation
시간 제한2초메모리 제한256 MB
순열과 b가 주어졌을 때, 길이 2b인 구간의 두 절반을 서로 바꾸는 연산으로 만들 수 있는 순열들 중 p의 사전순 위치를 구합니다.
문제
순열 는 1부터 까지의 정수로 이루어진다. 다음 연산을 원하는 만큼 적용할 수 있다. 연속한 개의 원소를 골라 두 절반을 서로 바꾼다. 구체적으로 구간을 고르면 순서가 된다.
에 이 연산을 0번 이상 적용해 얻을 수 있는 모든 순열의 집합을 라 하자. 각 연산에서 구간은 다른 연산의 구간과 독립적으로 고를 수 있다. 의 모든 순열을 사전순으로 나열하고 1번부터 번호를 매긴다. 가 이 목록에서 몇 번째인지 구하라. 답은 로 나눈 나머지로 출력한다.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스는 두 줄로 주어진다. 첫 줄에는 두 정수 과 가 주어진다 (, , ). 둘째 줄에는 순열 의 원소 개가 주어진다. 1부터 까지의 각 정수는 정확히 한 번씩 나타난다.
모든 테스트 케이스의 의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 가 사전순으로 나열한 목록에서 몇 번째인지 1부터 세어 출력한다. 값은 로 나눈 나머지이다.