洛谷的测试数据仅供民间交流使用,非官方测试数据。官方评测链接:https://www.cspro.org/。
西西艾弗岛上埋藏着一份宝藏,小 C 根据藏宝图找到了宝藏的位置。藏有宝藏的箱子被上了锁,旁边写着一些提示:
- 给定 条指令,编号为 ,其中每条指令都是对一个双端队列的操作,队列中的元素均为 的矩阵;
- 在某些时刻,某一条指令可能会改变;
- 在某些时刻,密码可以由以下方式计算:对于给定的指令区间 ,对初始为空的队列依次执行第 条指令,将得到的队列里的所有矩阵从头到尾相乘,并将乘积矩阵中的所有元素对 取模,得到的矩阵即为密码;特别地,若队列为空,则密码为单位矩阵;如果能分别计算出这些时刻的密码,将能够打开箱子的锁,从而获得宝藏。
经过小 C 的观察,每条指令的形式均为以下三种之一:
- 给定 的矩阵 ,将 插入队列的头部;
- 给定 的矩阵 ,将 插入队列的尾部;
- 若队列非空,删除队列中最晚被插入的矩阵。
小 C 将所有的时刻发生的事件均记录了下来。具体地,共有 个时刻,每个时刻可能会发生两种事件:
- 第 条指令改变,改变后的指令仍为以上三种形式之一;
- 给定指令区间 ,求依次执行第 条指令得到的密码。
由于小 C 并不会这个问题,他向你发起了求助。你需要帮助小 C 求出所有类型为 2 的事件所对应的密码。