#CF2048I2. 凯文与谜题(困难版本)

凯文与谜题(困难版本)

I2. 凯文与谜题(困难版本)

单次测试时间限制66内存限制512512 兆字节

这是该问题的困难版本。两个版本的区别在于:在这个版本中,你需要统计合法数组的数量。只有当你解决了该问题的所有版本时,才能进行 hack 操作。

凯文正在参观红色教堂,他在墙上发现了一个谜题。

对于数组 aa,我们定义 c(l,r)c(l,r) 表示子数组 al,al+1,,ara_l,a_{l+1},\dots,a_r不同数字的个数。特别地,如果 l>rl>r,我们定义 c(l,r)=0c(l,r)=0

给定一个长度为 nn、仅由字母 L\text{L}R\text{R} 组成的字符串 ss。如果一个非负整数数组 aa 满足以下条件,我们称其为合法数组: 对于所有 1in1 \le i \le n

  • si=Ls_i = \text{L},则 c(1,i1)=aic(1,i-1) = a_i
  • si=Rs_i = \text{R},则 c(i+1,n)=aic(i+1,n) = a_i

你需要统计合法数组 aa 的数量。由于答案可能很大,你只需要输出答案对 998244353998244353 取模后的结果。


输入格式

每个测试文件包含多组测试数据。 第一行输入一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每组测试数据的格式如下: 第一行输入一个整数 nn2n21052 \le n \le 2 \cdot 10^5),表示字符串 ss 的长度。 第二行输入一个长度为 nn 的字符串 ss,仅包含大写英文字母 L\text{L}R\text{R}

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出格式

对于每组测试数据,输出一个整数,表示合法数组的数量对 998244353998244353 取模的结果。


样例输入

4
3
LLR
3
RRL
4
RRLR
5
LLRLR

样例输出

1
2
0
1

样例说明

所有满足条件的数组都可以在该问题的简单版本中找到。