明弦音
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}😭🎤😭🎸😭🎸😭🥁😸🎸舞台的灯光在第十集尾声渐渐柔和,千早爱音轻轻牵起长崎素世的手,把她拉向舞台中央;乐奈在一旁温柔含笑,其他成员在观众席上悄然落泪。爱音的目光仿佛低声道出了一条约束,把素世的位置与她的节拍微微锁定;乐奈的微笑像是一次静默的赋值,为整个片刻提供了一个参照。其余成员的呼吸与回应则像未定的自由度,既彼此牵连又保有各自的余地。
\hspace{15pt}具体来说,加藤翔子会给定一个长度为 n 的整数序列 a_1,a_2,\dots,a_n,初始时没有任何约束。你需要处理 q 个操作,操作有三类:
\hspace{23pt}\bullet\,类型一:给定整数 u,v,k,加入约束 a_u - a_v = k,该约束自加入后永久生效;
\hspace{23pt}\bullet\,类型二:给定整数 u,k,设置 a_u = k(绝对赋值),该约束自加入后永久生效;
\hspace{23pt}\bullet\,类型三:给定整数 u,v,查询在目前所有已加入且未因矛盾而被忽略的约束下,a_u - a_v 的值是否可唯一确定;若能确定,输出该整数值,否则输出 \texttt{UNKNOWN}
\hspace{15pt}特别地,对于类型一和类型二,若新加入的约束或赋值与已有约束(以及推导出的约束)矛盾,则输出 \texttt{CONTRADICTION},并忽略此次操作(不生效);否则输出 \texttt{OK} 并使其生效。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 500\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 n,q\left(1\leq n,q\leq 5\times 10^{5}\right),表示序列长度、操作次数。
\hspace{15pt}此后 q 行,每行先输入一个整数 o \left(1\leq o\leq 3\right),表示操作类型,随后在同一行:
\hspace{23pt}\bullet\,o=1,输入三个整数 u,v,k,表示类型一;
\hspace{23pt}\bullet\,o=2,输入两个整数 u,k,表示类型二;
\hspace{23pt}\bullet\,o=3,输入两个整数 u,v,表示类型三。
\hspace{15pt}其中,1\leq u,v\leq n-10^{12}\leq k\leq 10^{12}。保证至少存在一次类型三。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和、q 之和均不超过 5\times 10^{5}

输出描述:

\hspace{15pt}对于每一组测试数据,一共 q 行,请参考下方的格式输出。
\hspace{23pt}\bullet\,若操作类型为类型一或类型二,输出 \texttt{OK}\texttt{CONTRADICTION},表示操作生效与否。
\hspace{23pt}\bullet\,若操作类型为类型三,输出 \texttt{UNKNOWN} 或一个整数,表示查询结果。
示例1

输入

复制
1
3 5
1 1 2 5
1 2 3 7
3 1 3
1 3 1 -12
3 2 1

输出

复制
OK
OK
12
OK
-5

说明

\hspace{15pt}在这个样例中:
\hspace{23pt}\bullet\,第一次操作:约束 a_1-a_2=5,无矛盾;
\hspace{23pt}\bullet\,第二次操作:约束 a_2-a_3=7,无矛盾;
\hspace{23pt}\bullet\,第三次操作:查询 a_1-a_3,由已有约束 a_1-a_2=5a_2-a_3=7,得 a_1-a_3=(a_1-a_2)+(a_2-a_3)=5+7=12,唯一确定;
\hspace{23pt}\bullet\,第四次操作:约束 a_3-a_1=-12,该约束等价于 a_1-a_3=12,无矛盾;
\hspace{23pt}\bullet\,第五次操作:查询 a_2-a_1,已知 a_1-a_2=5,故 a_2-a_1=-5,唯一确定。
示例2

输入

复制
1
2 4
2 1 10
1 1 2 3
2 2 8
3 2 1

输出

复制
OK
OK
CONTRADICTION
-3

说明

\hspace{15pt}在这个样例中:
\hspace{23pt}\bullet\,第一次操作:设 a_1=10,无矛盾;
\hspace{23pt}\bullet\,第二次操作:约束 a_1-a_2=3,与 a_1=10 一致(推出 a_2=7),无矛盾;
\hspace{23pt}\bullet\,第三次操作:设 a_2=8,但已有 a_2=7(从前一步推出),因此矛盾,此操作被忽略;
\hspace{23pt}\bullet\,第四次操作:查询 a_2-a_1,已知 a_1-a_2=3,故 a_2-a_1=-3,唯一确定。
示例3

输入

复制
1
4 6
1 1 2 5
3 2 3
2 4 100
3 1 4
1 3 2 -7
3 1 3

输出

复制
OK
UNKNOWN
OK
UNKNOWN
OK
12

备注:

😭🎤😭🎸😭🎸😭🥁😸🎸