解码
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\text{Alice} 有一个只由 英文大小写字母 组成的字符串,她对这条字符串进行了加密操作:

将字符串中的每个字符,按照替换规则进行替换,同时替换前与替换后字母的大小写保持一致。

  • 替换规则:按照字母表的顺序向右循环移动 k 位, 例如 k = 1 时,a 变为 b, b 变为 c,……, z 变为 a

举例:k=1,原字符串为 Meow 时,加密后的字符串为 Nfpx。

现在 \text{Bob} 得到了 加密后 的字符串以及 k 的大小,请你帮他解密出原字符串。

输入描述:

第一行输入一个整数 t (1 \leq t \leq 10^{3}),表示有 t 组数据。

对于每组数据:

第一行输入两个整数 n,k (1 \leq n \leq 2 \times 10^{5},1 \leq k \leq 25),分别代表字符串的长度和向右移动的位数。

第二行输入一串长度为 n 的 仅有大小写字母 组成的字符串 S

保证所有测试用例中 n 的总和不超过 10^{6} \sum n \le 10^6

输出描述:

输出 t 行,每行输出解密后的字符串。
示例1

输入

复制
2
4 1
Nfpx
5 3
NrlVk

输出

复制
Meow
KoiSh