Type: Default 3000ms 512MiB

分组2

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

Problem Description

前情提要

在过去的半年中,kuro使用这种分组方法打出了很好的分数,不幸的是,面对一些抽象的谱面(与题目无关,请不要在赛时访问),kuro需要新的分组方法!

具体的说,一共有nn个音符,一共有四种操作。

1 l r1 \space l \space r,kuro认为从ll到rr的所有音符应该属于同一组。

2 l r2 \space l \space r,kuro认为ll和rr应该属于同一组。

3 l r3 \space l \space r,kuro想知道l,rl,r是否属于同一组

4 l r4 \space l \space r,kuro反悔了,认为[l,r][l,r]的所有点都不应该和任何其他点属于同一组(即各自为一组)

两个音符aa,bb当且仅当符合以下三种情况时属于同一组(具体例子请阅读样例和样例解释)

1.a,ba,b在kuro的某一次认定中被认为属于同一组音符

2.a,ca,c因为第一种或此前因该种情况被认为属于同一组音符,b,cb,c也因为第一种或此前因该种情况被认为属于同一组音符

3.第四种操作并不会影响以某个为中继点的点属于同一组,只是将[l,r]范围内的所有点都各自独立

Input Format

每个测试点的第一行为一个整数T(1≤T≤100)T(1 \leq T \leq 100),表示该测试点有TT组测试数据

每组测试数据的第一行包含两个整数 nn 和 qq(1≤n≤1091 \leq n \leq 10^9, 1≤q≤2∗1051 \leq q \leq 2*10^5),分别表示音符的总数和操作数量。

接下来的 qq 行,每行有三个整数,第一个整数op(1≤op≤4)op ( 1 \leq op \leq 4)表示操作种类,接下来的 22 个整数l,r(1≤l≤r≤n)l,r(1 \leq l \leq r \leq n),l,r与题目描述中含义相同

保证每个测试点的所有qq的总和不超过2∗1052*10^5。

Output Format

对于第三个操作,若l,rl,r属于同一组,你需要输出一行,只包含一个整数1,否则,你需要输出一行,只包含一个整数0

对于其他操作,你不需要输出。

Sample

输入 #1

1

5 5

1 1 3

2 3 5

2 1 3

4 2 4

3 1 5

输出 #1

1

样例解释

第一次操作后,分组为[1,2,3],[4],[5]

第二次操作后,分组为[1,2,3,5],[4]

第三次操作后,分组不变

第四次操作后,分组为[1,5],[2],[3],[4]

第五次操作为询问,分组不变

输入 #2

2

1000000000 3

1 1 3

1 4 5

3 3 4

10000000 3

1 1 1

3 2 2

1 1000 10000000

输出 #2

0
1