힙
시간 제한2초메모리 제한256 MB
주어진 d-ary 힙 순열이 크기 n의 모든 d-ary 힙 순열 중 사전순으로 몇 번째인지 10^9+7로 나눈 나머지를 구합니다.
문제
크기가 인 -ary 힙은 배열 이며, , , 을 만족하는 모든 인덱스 쌍 에 대해 가 엄격하게 성립한다. 예를 들어 이고 크기가 인 3진 힙에서는 , , , , , , 이 성립해야 한다. 크기가 인 -ary 힙 중 부터 까지의 수를 원소로 하는 순열인 것을 모두 고른다. 이들을 수열로 보고 사전식 순서로 나열한 뒤 번부터 번호를 매긴다. 주어지는 것은 크기가 인 -ary 힙이면서 순열이기도 한 배열이다. 이 배열이 위 목록에서 몇 번째인지 구하라. 답이 매우 클 수 있으므로 로 나눈 나머지를 구한다.
입력
첫 줄에 테스트 케이스의 개수 가 양의 정수로 주어진다. 각 테스트 케이스는 두 줄로 주어진다. 첫 줄에는 두 정수 과 (, )가 주어진다. 둘째 줄에는 순열을 나타내는 개의 정수가 주어진다. 이 줄에는 부터 까지의 각 정수가 정확히 한 번씩 나타난다. 주어진 순열은 -ary 힙이기도 하다. 모든 테스트 케이스의 을 합하면 을 넘지 않는다.
출력
각 테스트 케이스마다, 주어진 수열이 -ary 힙이면서 순열인 수열들의 사전식 목록에서 몇 번째인지를 부터 세어 출력한다. 답은 로 나눈 나머지로 출력한다.