D. Коллекционные карточки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

На ленте в фиксированном порядке расположены $$$n$$$ коллекционных карточек. На $$$i$$$-й карточке указан номер её типа $$$a_i$$$.

Ленту можно разрезать между некоторыми соседними карточками, получив несколько непустых наборов. Порядок карточек менять нельзя, поэтому каждый набор состоит из некоторого непрерывного фрагмента ленты.

Для набора карточек определим его $$$\operatorname{MEX}$$$ как минимальный неотрицательный номер типа, который не встречается среди карточек этого набора. Например, $$$\operatorname{MEX}([0, 3, 2, 2, 0]) = 1$$$, а $$$\operatorname{MEX}([1, 2, 6]) = 0$$$.

Набор называется $$$\texttt{допустимым}$$$, если его $$$\operatorname{MEX}$$$ находится в диапазоне от $$$L$$$ до $$$R$$$ включительно.

Найдите количество способов разрезать ленту так, чтобы все получившиеся наборы были $$$\texttt{допустимыми}$$$. Так как ответ может быть большим, выведите его по модулю $$$998244353$$$.

Входные данные

В первой строке входных данных содержатся три целых числа $$$n$$$, $$$L$$$ и $$$R$$$ $$$(1 \le n \le 5 \cdot 10^5,\ 0 \le L \le R \le n)$$$ — количество карточек и границы допустимых значений $$$\operatorname{MEX}$$$.

Во второй строке содержатся $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ $$$(0 \le a_i \le n)$$$ — номера типов карточек на ленте.

Выходные данные

В единственной строке выведите одно число — количество способов разрезать ленту по модулю $$$998244353$$$.

Примеры
Входные данные
5 1 3
0 3 1 2 0
Выходные данные
2
Входные данные
6 0 2
0 1 0 2 3 0
Выходные данные
24