CF1000D Yet Another Problem On a Subsequence
Description
The sequence of integers $ a_1, a_2, \dots, a_k $ is called a good array if $ a_1 = k - 1 $ and $ a_1 > 0 $ . For example, the sequences $ [3, -1, 44, 0], [1, -99] $ are good arrays, and the sequences $ [3, 7, 8], [2, 5, 4, 1], [0] $ — are not.
A sequence of integers is called good if it can be divided into a positive number of good arrays. Each good array should be a subsegment of sequence and each element of the sequence should belong to exactly one array. For example, the sequences $ [2, -3, 0, 1, 4] $ , $ [1, 2, 3, -3, -9, 4] $ are good, and the sequences $ [2, -3, 0, 1] $ , $ [1, 2, 3, -3 -9, 4, 1] $ — are not.
For a given sequence of numbers, count the number of its subsequences that are good sequences, and print the number of such subsequences modulo 998244353.
Input Format
The first line contains the number $ n~(1 \le n \le 10^3) $ — the length of the initial sequence. The following line contains $ n $ integers $ a_1, a_2, \dots, a_n~(-10^9 \le a_i \le 10^9) $ — the sequence itself.
Output Format
In the single line output one integer — the number of subsequences of the original sequence that are good sequences, taken modulo 998244353.
Explanation/Hint
In the first test case, two good subsequences — $ [a_1, a_2, a_3] $ and $ [a_2, a_3] $ .
In the second test case, seven good subsequences — $ [a_1, a_2, a_3, a_4], [a_1, a_2], [a_1, a_3], [a_1, a_4], [a_2, a_3], [a_2, a_4] $ and $ [a_3, a_4] $ .