Это сложная версия задачи. Единственные различия между простой и сложной версией задачи заключаются в ограничениях на $$$t$$$ и $$$n$$$.
Рассмотрим ряд из $$$m$$$ башен; высота $$$i$$$-й башни в ряду равна $$$h_i$$$.
Если вы смотрите на этот ряд башен слева, вы видите все башни, которые строго выше всех башен перед ними. Аналогично, если вы смотрите на этот ряд башен справа, вы видите все башни, которые строго выше всех башен после них. Например, если высоты башен равны $$$[3, 5, 5, 7, 4, 6, 7, 2, 4]$$$, то:
Обозначим $$$L(h)$$$ как множество высот, которые вы видите слева, и $$$R(h)$$$ как множество высот, которые вы видите справа, когда последовательность высот равна $$$h$$$. В приведенном выше примере $$$L(h) = \{3, 5, 7\}$$$, а $$$R(h) = \{4, 7\}$$$.
Вам дана последовательность $$$a_1, a_2, \dots, a_n$$$. Ваша задача — вычислить количество подпоследовательностей $$$a$$$, таких что $$$L(a) = L(a')$$$ и $$$R(a) = R(a')$$$, где $$$a'$$$ — это рассматриваемая вами подпоследовательность. Две подпоследовательности различны, если индексы выбранных элементов различны.
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных.
Каждый набор входных данных состоит из двух строк:
Дополнительное ограничение на входные данные: сумма $$$n$$$ по всем наборам входных данных не превышает $$$3 \cdot 10^5$$$.
Для каждого набора входных данных выведите одно целое число — количество подпоследовательностей $$$a'$$$ данной последовательности $$$a$$$, таких что $$$L(a) = L(a')$$$ и $$$R(a) = R(a')$$$. Поскольку это число может быть огромным, выведите его по модулю $$$998244353$$$.
554 2 4 8 351 2 3 2 161 2 3 3 2 193 5 5 7 4 6 7 2 4110
513511
В первом примере $$$L(a) = \{4, 8\}$$$, $$$R(a) = \{3, 8\}$$$. Подпоследовательности, включенные в ответ, это:
Во втором примере единственной допустимой подпоследовательностью является сама данная последовательность.