#S10001. LOWER

LOWER

题目描述

给定一个长度为 NN 的字符串 SS,该字符串由大写和小写英文字母组成。

接下来将对字符串 SS 执行 QQ 次操作。第 ii 次操作(1iQ1 \le i \le Q)由一个三元组 (ti,xi,ci)(t_i, x_i, c_i) 表示,具体规则如下:

  • 如果 ti=1t_i = 1,则将 SS 的第 xix_i 个字符修改为 cic_i
  • 如果 ti=2t_i = 2,则将 SS 中的所有大写字母转换为小写字母(此操作中不使用 xix_icic_i)。
  • 如果 ti=3t_i = 3,则将 SS 中的所有小写字母转换为大写字母(此操作中不使用 xix_icic_i)。

请输出执行完 QQ 次操作后的最终字符串 SS

输入格式

第一行包含一个正整数 NN —— 字符串的长度。

第二行包含一个字符串 SS

第三行包含一个正整数 QQ —— 操作的次数。

接下来 QQ 行,每行包含两个整数 ti,xit_i, x_i 和一个字符 cic_i —— 依次表示每次操作的参数。中间用空格隔开。

输出格式

输出一行,表示执行完所有操作后的最终字符串 SS

样例输入 1

7
AtCoder
5
1 4 i
3 0 a
1 5 b
2 0 a
1 4 Y

样例输出 1

atcYber

样例输入 2

35
TheQuickBrownFoxJumpsOverTheLazyDog
10
2 0 a
1 19 G
1 13 m
1 2 E
1 21 F
2 0 a
1 27 b
3 0 a
3 0 a
1 15 i

样例输出 2

TEEQUICKBROWMFiXJUGPFOVERTBELAZYDOG

说明

样例解释

在第一个样例中,初始字符串 SSAtCoder

  • 11 次操作将第 44 个字符修改为 iSS 变为 AtCider
  • 22 次操作将所有小写字母转换为大写字母,SS 变为 ATCIDER
  • 33 次操作将第 55 个字符修改为 bSS 变为 ATCIbER
  • 44 次操作将所有大写字母转换为小写字母,SS 变为 atciber
  • 55 次操作将第 44 个字符修改为 YSS 变为 atcYber

操作结束后,最终的字符串为 atcYber,因此输出 atcYber

数据范围

  • 对于所有测试点,保证 1N5×1051 \le N \le 5 \times 10^5
  • 保证 SS 是一个长度为 NN 且仅由大写和小写英文字母组成的字符串。
  • 对于所有测试点,保证 1Q5×1051 \le Q \le 5 \times 10^5
  • 保证 1ti31 \le t_i \le 31iQ1 \le i \le Q)。
  • 如果 ti=1t_i = 1,保证 1xiN1 \le x_i \le N1iQ1 \le i \le Q);cic_i 为大写或小写英文字母。
  • 如果 ti1t_i \neq 1,保证 xi=0x_i = 0ci=’a’c_i = \text{'a'}
  • 保证所有的 N,Q,ti,xiN, Q, t_i, x_i 均为整数。