#YDRG006D. 整型与布尔型的转换

整型与布尔型的转换

题目描述

给定一个正整数 pp,维护一个长度为 nn 的序列 {a}\{a\},支持以下四种操作或询问:

  • 1 l r v,对所有整数 i[l,r]i\in[l,r],令 aiai+va_i\gets a_i+v
  • 2 l r v,对所有整数 i[l,r]i\in[l,r],令 aiaiva_i\gets a_i\cdot v
  • 3 l r,对所有整数 i[l,r]i\in[l,r],令 ai[pai]a_i\gets [p\nmid a_i]
  • 4 x,求 axmodpa_x\bmod p 的值。

其中 [c][c] 是 Iverson Bracket,即若 cc 为真,则 [c]=1[c]=1,否则 [c]=0[c]=0

注:任何数都是 00 的因数,也就是 x0x\mid 0 恒为真。

输入格式

第一行三个正整数 n,p,qn,p,q 表示序列长度、模数和操作或询问的个数。

第二行 nn 个非负整数 a1,a2,,ana_1,a_2,\cdots,a_n 描述序列 {a}\{a\}

qq 行,每行描述一个操作,形如以下四种中的一种:

  • 1 l r v
  • 2 l r v
  • 3 l r
  • 4 x

输出格式

若干行,每行回答一个询问。

样例输入

5 10 4
3 2 8 8 9
1 1 4 2
2 1 4 8
3 1 3
4 2

样例输出

1

测试点约束

本题采用捆绑测试。

数据范围:

  • Subtask 1 (10pts):n,q103n,q\le 10^3
  • Subtask 2 (20pts):没有操作 3。
  • Subtask 3 (30pts):p=2p = 2
  • Subtask 4 (40pts):无特殊限制。

对于全部数据,1n,q2×1051\le n,q\le 2 \times 10^52p1092\le p\le 10^90ai,v<p0\le a_i,v<p