#CF2000D. 左右错误

左右错误

D. 左右错误(Right Left Wrong)
每个测试的时间限制:22
内存限制:256256 兆字节

Vlad 找到了一条有 nn 个格子的条带,格子从左到右编号为 11nn
在第 ii 个格子里,有一个正整数 aia_i 和一个字母 sis_i,其中所有 sis_i 要么是 'L' 要么是 'R'

Vlad 邀请你通过执行任意次(可能为零次)操作,来获得尽可能高的分数。

在一次操作中,你可以选择两个下标 llrr1l<rn1 \le l < r \le n),满足 sl=’L’s_l = \text{'L'}sr=’R’s_r = \text{'R'},然后执行以下步骤:

  • al+al+1++ar1+ara_l + a_{l+1} + \dots + a_{r-1} + a_r 点分数加到当前得分中;
  • 将所有满足 lirl \le i \le rsis_i 替换为 '.',表示这些下标不能再被选择。

例如,考虑下面的条带:

格子 1 2 3 4 5 6
aia_i 3 5 1 4 3 2
sis_i L R L R

你可以先选择 l=1,r=2l = 1, r = 2,加上 3+5=83 + 5 = 8 分。

此时状态变为:

格子 1 2 3 4 5 6
aia_i 3 5 1 4 3 2
sis_i . L R

然后选择 l=3,r=6l = 3, r = 6,加上 1+4+3+2=101 + 4 + 3 + 2 = 10 分。

状态变为:

格子 1 2 3 4 5 6
aia_i 3 5 1 4 3 2
sis_i .

无法再执行操作,最终得分为 8+10=188 + 10 = 18

问: 可以获得的最高分数是多少?


输入格式
第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn2n21052 \le n \le 2 \cdot 10^5)——条带的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1051 \le a_i \le 10^5)——格子上的数字。

第三行包含一个长度为 nn 的字符串 ss,只包含字符 'L''R'

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


输出格式
对于每个测试用例,输出一个整数——可以获得的最高分数。


示例

输入:

4
6
3 5 1 4 3 2
LRLLLR
2
2 8
LR
2
3 9
RL
5
1 2 3 4 5
LRLRR

输出:

18
10
0
22