跳转至

异星工厂:信号网络

预估时间限制:0.5 秒。内存限制:128 MB。

实际时限以标准程序在目标评测环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。

背景故事

工厂用信号网络管理供电设备。为避免电量在阈值附近变化时反复启停,工程师尝试组合不同的二进制信号,并把循环移位、局部取反和读出操作封装成可复用设备。你需要模拟其中的信号寄存器。

形式化问题描述

维护一个初始为零的 \(128\) 位无符号二进制数 \(A\) .从最低位到最高位编号为 \(0,1,\ldots,127\) ,第 \(i\) 位的权值为 \(2^i\) .

操作 含义
1 x 将整个寄存器循环右移 \(x\) 位。负数表示循环左移其绝对值。
2 输出当前最低 \(16\) 位表示的非负整数,以大写十六进制表示。
3 l r 将编号在闭区间 \([l,r]\) 中的每一位取反。

循环移位不会丢失移出端点的位,它们会从另一端补入。令 \(k\) 为 \(x\) 对 \(128\) 取非负余数,则新第 \(i\) 位等于旧第 \((i+k)\bmod128\) 位。\(k=0\) 时不变。

八位寄存器循环右移三位,最低三位补到最高三位

图示用 \(8\) 位寄存器演示循环右移 \(3\) 位:00011101 变为 10100011 .本题实际始终使用 \(128\) 位。

输入格式

第一行一个整数 \(N\) ,表示操作数。接下来 \(N\) 行,每行按上表给出一个操作。

输出格式

对每个 2 操作输出一行十六进制数,使用数字 0 到 9 和大写字母 A 到 F ,不带 0x 前缀,不输出多余的前导零。数值为零时输出 0 .其余操作不输出内容。

样例

样例 1

输入

12
2
3 0 3
2
1 1
2
1 -1
2
3 0 0
2
1 128
2
2

输出

0
F
7
F
E
E
E

样例 2

输入

8
3 0 127
2
3 63 64
1 64
2
1 0
3 0 15
2

输出

FFFF
FFFE
1

样例 3

输入

0

输出


样例解释

样例 1 先将最低四位设为一,得到 F ;右移一位后最低十六位为 7 ,同时一位移到了最高位。反向旋转恢复原状态。样例 2 覆盖第 \(63\) 位与第 \(64\) 位之间的边界。样例 3 没有操作。

数据范围与保证

对 100% 的数据:\(0\le N\le2\times10^6\) ,\(|x|\le10^9\) ,\(0\le l\le r\le127\) .

分值比例 额外条件
100% 无额外条件