“……骗我一次,算你可耻;骗我两次,算我愚蠢。骗了我——你就不能再骗我了。” —— W.
在本题中,我们将观察一个正 $N$ 边形,其 $N$ 条边中的每一条都染成了三种颜色之一,且其顶点按顺时针方向依次编号为 $1$ 到 $N$。多边形的三角剖分是指将其面积分割为一组互不重叠的三角形,这些三角形的边要么是多边形的边,要么是其内部的对角线。当然,在本题中,用于多边形三角剖分的每条对角线也染成了三种颜色之一。
如果一个三角剖分的 $N - 2$ 个三角形中,每个三角形的三条边颜色都互不相同,则称该三角剖分是“爱国的”(patriotic)。
你的任务是判断给定的多边形及其对角线是否构成了一个合法的三角剖分,以及该三角剖分是否是“爱国的”。
输入格式
第一行包含一个整数,表示该测试点所属的子任务编号(参见评分部分中的表格)。如果你的算法不需要这个信息,只需读取并忽略它即可。
第二行包含一个整数 $N$,其含义如题目描述所示。
第三行包含一个长度为 $N$ 的数字字符串,表示多边形各边的颜色。更具体地,第 $1$ 个数字表示边 $(1, 2)$ 的颜色,第 $2$ 个数字表示边 $(2, 3)$ 的颜色,依此类推,第 $N$ 个数字表示边 $(N, 1)$ 的颜色。颜色总是用数字 1、2 和 3 表示。
接下来的 $N - 3$ 行,每行包含一条对角线的描述,格式为 X Y C,其中 $X$ 和 $Y$ 是多边形的顶点,$C$ 是该对角线的颜色($1 \le X, Y \le N$,$1 \le C \le 3$)。每行描述的都是一条合法的对角线,即顶点 $X$ 和 $Y$ 既不重合也不相邻。
输出格式
如果输入的多边形没有被正确地三角剖分,你应该输出 neispravna triangulacija。
如果输入的多边形被正确地三角剖分,但该三角剖分不是“爱国的”,你应该输出 neispravno bojenje。
如果输入的多边形被正确地三角剖分,且该三角剖分是“爱国的”,你应该输出 tocno。
子任务
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 12 | $4 \le N \le 300$ |
| 2 | 17 | $4 \le N \le 2000$ |
| 3 | 23 | $4 \le N \le 2 \cdot 10^5$,且输出要么是 neispravna triangulacija 要么是 tocno |
| 4 | 23 | $4 \le N \le 2 \cdot 10^5$,且输出要么是 neispravno bojenje 要么是 tocno |
| 5 | 35 | $4 \le N \le 2 \cdot 10^5$ |
与第一轮的题目 Trobojnica 不同,如果你的程序在某个子任务的每个测试点中都正确输出了第一行,你将获得该子任务 100% 的分数。
样例
输入样例 1
1 5 12113 1 3 3 2 5 2
输出样例 1
neispravna triangulacija
输入样例 2
1 4 1212 1 3 2
输出样例 2
neispravno bojenje
输入样例 3
1 7 1223121 1 3 3 3 5 1 5 7 3 7 3 2
输出样例 3
tocno
说明
样例解释图示: