P0024

三角形

小 L 有一个正三角形格子,其中每条格线是连接相邻边对应 nn 等分点得到的线段。这些格线将正三角形分为全等的一些小正三角形。

对于图中的每个格线与格线的交叉点,我们用一个坐标 (x,yx,y) 表示它。其中,从上至下的 xx 坐标依次为 11 至 n+1n+1。x=1x=1 代表最顶端的点,x=n+1x=n+1 则代表底线。对于第 ii 行,格点从左至右的 yy 坐标依次为 11 至 ii。

三角网格图中有若干正三角形,可能为正向放置,也可能为反向放置。对于每种方向的三角形,我们用三个数字 x,y,dx,y,d 表示它。其中 (x,yx,y) 代表其平行于网格底线的边的对角顶点坐标,dd 代表其边长(线段长度)。

例如下图中,蓝色的正三角形为正向放置的正三角形,其 (x,y,dx,y,d) = (4,2,34,2,3)。黄色的正三角形为反向放置的三角形,其 (x,y,dx,y,d) = (6,3,26,3,2)。

现在,对于图中的每个单位小正三角形格子(边长为 11 的正三角形,无论方向),其上都写有一个数字。初始时,所有格子上的数字都是 00。小 L 会进行如下操作:

  • 选择一个正三角形,将其中所有格子上的数字加上 ww。

  • 选择一个正三角形,询问其上所有格子的数字和。

她希望你对每个询问操作求出答案。由于小 L 不喜欢太大的数字,所以你只需要输出答案对 2322^{32} 取模的结果。
Figure

输入格式

输入第一行包含两个整数 n,qn,q。

接下来的 qq 行,每行代表一次操作。

每行的开头有五个数字 opt,type,x,y,dopt,type,x,y,d。optopt 代表本次操作的类型,opt=1opt=1 时为修改操作,opt=2opt=2 时为询问操作。typetype 为此次操作三角形的类型,type=0type=0 时为正向放置的三角形,type=1type=1 时为反向放置的三角形。x,y,dx,y,d 描述了这个三角形。如果 opt=1opt=1,则接下来还有一个数字 ww,表示这次修改操作加上的数字。

保证所有输入的三角形均为面积非 00,且完全包含在大三角形内部的合法三角形。

输出格式

对于每个 opt=2opt=2 的询问,输出一行一个数字,表示区域内总和模 2322^{32} 的结果。

提示

本题共 2525 组数据。

数据点编号n≤n\leqq≤q\leq特殊性质
1∼31 \sim 3500500500500
4∼74 \sim 73000300030003000
8∼138 \sim 1310510^550005000
14∼1514 \sim 1510510^510510^5type=0,x=1,y=1type=0,x=1,y=1
16∼2016 \sim 2010510^510510^5type=0,x+d=n+1type=0,x+d=n+1
21∼2321 \sim 235×1045\times 10^45×1045\times 10^4
24∼2524 \sim 2510510^510510^5

对于所有数据,2≤n≤105,1≤q≤1052\le n \le 10^5,1\le q \le 10^5,opt∈{1,2},type∈{0,1},1≤x≤n+1,1≤y≤x,1≤d≤n,0≤w<232opt \in \{1,2\},type \in \{0,1\}, 1\le x \le n+1,1\le y \le x,1\le d \le n,0\le w < 2^{32},保证所有输入的三角形均为面积非 00,且完全包含在大三角形内部的合法三角形。