수열과 변환
시간 제한2초메모리 제한512 MB
1 이상 m 이하의 값을 갖는 길이 n 수열 중에서, 최솟값을 이용한 변환을 k번 적용한 결과의 최댓값과 최솟값의 차가 주어진 값과 같은 수열의 개수를 센다.
문제
크기가 인 수열 에 변환 연산을 적용한다. 변환 연산은 두 단계로 이루어진다. 먼저 새 수열 을 다음 식으로 만든다.
그다음 수열 를 수열 로 바꾼다. 즉 모든 에 대해 의 값을 로 바꾼다.
길이가 인 수열 에 대해 로 정의한다.
수열 은 어떤 수열에 변환 연산을 번 적용한 결과이고, 의 값과 를 알고 있다. 이때 다음 두 조건을 모두 만족하는 수열 의 개수를 구하는 프로그램을 작성하시오.
- 모든 에 대해 이다.
- 이다. 여기서 는 수열 에 변환 연산을 번 적용한 수열이다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다 ().
각 테스트 케이스는 한 줄로 이루어지며, 네 정수 , , , 가 공백으로 구분되어 주어진다 ().
출력
각 테스트 케이스마다 정답을 로 나눈 나머지를 한 줄에 출력한다.