暗号(cypher)

题目描述

Luca\text{Luca} 有一个密码锁,这个密码锁由 nn 个数字轮组成。每个数字轮上都有一个数字 aia_i,数字范围是 0099

Luca\text{Luca} 曾经对每个数字轮进行了一些操作。每次操作有两种类型:

  • U\texttt{U}:将当前数字增加 11。如果当前数字是 99,执行 U\texttt{U} 后会变成 00
  • D\texttt{D}:将当前数字减少 11。如果当前数字是 00,执行 D\texttt{D} 后会变成 99

现在 Luca\text{Luca} 只知道每个数字轮经过所有操作后的 最终数字 ,以及每个数字轮执行过的操作序列。

请你帮助 Luca\text{Luca} 推出每个数字轮 最开始的数字

输入格式

第一行包含一个整数 tt,表示测试用例的数量。

对于每个测试用例:

第一行包含一个整数 nn,表示数字轮的数量。

第二行包含 nn 个整数 aia_i,表示每个数字轮经过所有操作后的最终数字。

接下来有 nn 行,第 ii 行包含一个整数 bib_i 和一个长度为 bib_i 的字符串,表示第 ii 个数字轮执行了 bib_i 次操作。

字符串只包含字符 U\texttt{U}D\texttt{D}

输出格式

对于每个测试用例,输出一行,包含 nn 个整数,表示每个数字轮最开始的数字。

相邻两个整数之间用一个空格隔开。

输入输出样例 #1

输入 #1

3
3
9 3 1
3 DDD
4 UDUU
2 DU
2
0 9
9 DDDDDDDDD
9 UUUUUUUUU
5
0 5 9 8 3
10 UUUUUUUUUU
3 UUD
8 UUDUUDDD
10 UUDUUDUDDU
4 UUUU

输出 #1

2 1 1
9 0
0 4 9 6 9

样例解释 #1

对于第 11 组测试数据:

11 个数字轮最终为 99,操作序列为 DDD\texttt{DDD}。 因为 D\texttt{D} 表示原操作中数字减少 11,所以反推时要将数字增加 11

90129 \to 0 \to 1 \to 2

因此它最开始的数字是 22

22 个数字轮最终为 33,操作序列为 UDUU\texttt{UDUU}。 操作中一共有 33U\texttt{U}11D\texttt{D},所以原来的数字经过操作后整体相当于增加了 22。反推时需要减少 22

313 \to 1

因此它最开始的数字是 11

33 个数字轮最终为 11,操作序列为 DU\texttt{DU}。 一次 D\texttt{D} 和一次 U\texttt{U} 相互抵消,所以最开始的数字仍然是 11

输入输出样例 #2

输入 #2

2
1
0
1 U
4
0 9 5 6
10 UUUUUUUUUU
10 DDDDDDDDDD
5 UUUUU
5 DDDDD

输出 #2

9
0 9 0 1

样例解释 #2

对于第 11 组测试数据:

最终数字为 00,操作为 U\texttt{U}。说明最开始的数字是 99,因为:

9U09 \xrightarrow{U} 0

对于第 22 组测试数据:

  • 11 个数字轮执行了 1010U\texttt{U},数字绕了一整圈,所以初始数字仍为 00
  • 22 个数字轮执行了 1010D\texttt{D},数字绕了一整圈,所以初始数字仍为 99
  • 33 个数字轮最终为 55,执行了 55U\texttt{U},所以初始数字为 00
  • 44 个数字轮最终为 66,执行了 55D\texttt{D},所以初始数字为 11

数据范围与约定

对于所有测试数据,保证:

$$1 \le t \le 100,\quad 1 \le n \le 100,\quad 0 \le a_i \le 9,\quad 1 \le b_i \le 10 $$
测试点 分值 tt nn bib_i 特殊性质
121\sim 2 1010 5\le 5 3\le 3
353\sim 5 1515 20\le 20 10\le 10 A\text{A}
686\sim 8 B\text{B}
9129\sim 12 2020 50\le 50
131613\sim 16 100\le 100
172017\sim 20

特殊性质 A\text{A}:保证所有操作字符均为 U\texttt{U}

特殊性质 B\text{B}:保证所有操作字符均为 D\texttt{D}