만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

무작위 순열

시간 제한10초메모리 제한2048 MB

요약
무작위 순열의 양 끝 원소를 하나씩 제거하며 만들 수 있는 서로 다른 최솟값 수열의 개수를 998244353으로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 재귀, 배열
정답자
아직 제출이 없습니다

문제

11부터 nn까지의 정수 nn개로 이루어진 순열 pp가 주어진다. 다음 연산을 nn번 수행하여 pp로부터 수열 aa를 만든다.

  • pp의 최솟값을 aa의 끝에 추가한다.
  • pp의 양 끝 중 왼쪽 또는 오른쪽 원소 하나를 제거한다.

주어지는 순열 pp는 무작위로 생성된 순열이다. 위 방법으로 만들 수 있는 서로 다른 수열 aa의 개수를 구하라. 개수가 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 구한다. 두 수열은 값이 다른 위치가 하나라도 있으면 서로 다른 수열이다.

크기가 nn인 순열은 11부터 nn까지의 서로 다른 정수 nn개로 이루어진 수열이다.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤2⋅1051 \le t \le 2 \cdot 10^5)가 주어진다. 그 뒤로 테스트 케이스가 이어진다.

각 테스트 케이스의 첫 줄에는 순열의 크기 nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)이 주어진다. 다음 줄에는 순열 pp의 원소 nn개가 주어진다. 순열은 의사 난수 생성기로 만들어진다.

모든 테스트 케이스의 nn을 합하면 2⋅1052 \cdot 10^5을 넘지 않는다.

출력

각 테스트 케이스마다 답을 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    5
    4 3 5 1 2
    5
    5 3 1 2 4
    2
    2 1
    3
    1 3 2
    
    예상 출력
    8
    7
    2
    4