CF BUDDY
← Problems·

1613D · MEX Sequences

1900 · dp, math

Problem: Let's call a sequence of integers x1,x2,,xkx_1, x_2, \dots, x_k MEX-correct if for all ii (1ik1 \le i \le k) xiMEX(x1,x2,,xi)1|x_i - \operatorname{MEX}(x_1, x_2, \dots, x_i)| \le 1 holds. Where MEX(x1,,xk)\operatorname{MEX}(x_1, \dots, x_k) is the minimum non-negative integer that doesn't belong to the set x1,,xkx_1, \dots, x_k. For example, MEX(1,0,1,3)=2\operatorname{MEX}(1, 0, 1, 3) = 2 and MEX(2,1,5)=0\operatorname{MEX}(2, 1, 5) = 0.

You are given an array aa consisting of nn non-negative integers. Calculate the number of non-empty MEX-correct subsequences of a given array. The number of subsequences can be very large, so print it modulo 998244353998244353.

Note: a subsequence of an array aa is a sequence [ai1,ai2,,aim][a_{i_1}, a_{i_2}, \dots, a_{i_m}] meeting the constraints 1i1<i2<<imn1 \le i_1 < i_2 < \dots < i_m \le n. If two different ways to choose the sequence of indices [i1,i2,,im][i_1, i_2, \dots, i_m] yield the same subsequence, the resulting subsequence should be counted twice (i. e. two subsequences are different if their sequences of indices [i1,i2,,im][i_1, i_2, \dots, i_m] are not the same).

Input Format: The first line contains a single integer tt (1t1051 \le t \le 10^5) — the number of test cases.

The first line of each test case contains a single integer nn (1n51051 \le n \le 5 \cdot 10^5).

The second line contains nn integers a1,a2,,ana_1, a_2, \dots, a_n (0ain0 \le a_i \le n).

The sum of nn over all test cases doesn't exceed 51055 \cdot 10^5.

Output Format: For each test case, print a single integer — the number of non-empty MEX-correct subsequences of a given array, taken modulo 998244353998244353.

Note: In the first example, the valid subsequences are [0][0], [1][1], [0,1][0,1] and [0,2][0,2].

In the second example, the valid subsequences are [0][0] and [1][1].

In the third example, any non-empty subsequence is valid.

Sample Cases

Case 1

Input

4
3
0 2 1
2
1 0
5
0 0 0 0 0
4
0 1 2 3

Output

4
2
31
7

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback