무작위 순열
시간 제한10초메모리 제한2048 MB
무작위 순열의 양 끝 원소를 하나씩 제거하며 만들 수 있는 서로 다른 최솟값 수열의 개수를 998244353으로 나눈 나머지로 구합니다.
문제
부터 까지의 정수 개로 이루어진 순열 가 주어진다. 다음 연산을 번 수행하여 로부터 수열 를 만든다.
- 의 최솟값을 의 끝에 추가한다.
- 의 양 끝 중 왼쪽 또는 오른쪽 원소 하나를 제거한다.
주어지는 순열 는 무작위로 생성된 순열이다. 위 방법으로 만들 수 있는 서로 다른 수열 의 개수를 구하라. 개수가 매우 클 수 있으므로 으로 나눈 나머지를 구한다. 두 수열은 값이 다른 위치가 하나라도 있으면 서로 다른 수열이다.
크기가 인 순열은 부터 까지의 서로 다른 정수 개로 이루어진 수열이다.
입력
첫 줄에 테스트 케이스의 수 ()가 주어진다. 그 뒤로 테스트 케이스가 이어진다.
각 테스트 케이스의 첫 줄에는 순열의 크기 ()이 주어진다. 다음 줄에는 순열 의 원소 개가 주어진다. 순열은 의사 난수 생성기로 만들어진다.
모든 테스트 케이스의 을 합하면 을 넘지 않는다.
출력
각 테스트 케이스마다 답을 으로 나눈 나머지를 한 줄에 출력한다.