你认为在无限大的彩色网格的 $(0, 0)$ 处放置你的好友是一个有趣的恶作剧。你的好友会在网格上无限地移动,每次移动一步,总是移动到四个相邻的单元格之一。
网格中有 $N$ 个单元格包含传送门。一旦你的好友踏上一个传送门,他们会立即传送到一个随机的传送门(可能是他们刚刚踏上的那个,也可能是另一个)。如果 $(0, 0)$ 处有一个传送门,你的好友在被放置到网格上时也会被传送到某个位置。
作为恶作剧的一部分,你想欺骗你的好友,让他们完全没有察觉到传送门的存在。你的好友唯一能看到的就是他们当前所在单元格的颜色,因此你应该确保从你好友的角度来看,瓷砖的颜色永远不会改变。特别地,如果你的好友认为他们进入了同一个单元格不止一次(例如通过向左移动然后立即向右移动),他们应该看到与第一次认为进入该单元格时相同的颜色。
注意:当你的好友踏上一个传送门时,他们会同时看到他们踏上的单元格的颜色,以及他们被传送到的单元格的颜色。因此,你需要将所有传送门单元格涂成相同的颜色,以避免传送行为被立即发现。
一个简单的解决方案是将所有单元格涂成相同的颜色。但颜色是很棒的!所以你希望尽可能多地使用颜色。
让我们考虑一个例子,传送门位于单元格 $(1, 1)$、$(1, 3)$ 和 $(3, 2)$,你的好友进行了以下移动序列:上、右、下、左。
在移动序列之后,你的好友认为他们回到了起始单元格 $(0, 0)$,但实际上他们也可能最终位于 $(0, 2)$ 或 $(2, 1)$。他们在一开始就已经看到了单元格 $(0, 0)$ 的颜色,所以如果他们现在看到不同的颜色,他们就会意识到一定存在传送门。我们不希望这种情况发生,所以我们必须为这 3 个单元格选择相同的颜色。
不存在任何移动序列使得你的好友认为他们最终位于 $(0, 0)$,而实际上他们最终位于 $(1, 0)$,因此这些单元格可以安全地涂上不同的颜色。
下面你可以看到上述例子中一种使用 4 种颜色的涂色方案。对于这个例子,不可能使用超过 4 种颜色。
让我们考虑另一个例子,传送门位于单元格 $(0, 0)$、$(0, 1)$、$(1, 0)$、$(0, -1)$ 和 $(-1, 0)$。假设你的好友尝试通过先向右移动一次,然后向上移动 3 次来到达单元格 $(1, 3)$。一种可能性是,如果他们在开始时和每一步之后都被传送,他们最终会到达单元格 $(0, 0)$。如果你的好友现在通过向下移动 3 次和向左移动一次回溯到他们认为的单元格 $(0, 0)$,并且在这样做时没有被传送到当前单元格之外,他们最终会到达 $(-1, -3)$。你的好友会认为他们第二次处于单元格 $(0, 0)$,并期望看到相同的颜色。因此,你需要将 $(-1, -3)$ 和 $(0, 0)$ 涂成相同的颜色。
注意,我们最初选择单元格 $(1, 3)$ 并没有什么特别之处。你可以类似地证明其他单元格必须与 $(0, 0)$ 共享一种颜色。
任务
计算在确保你的好友不会察觉到传送门存在的前提下,你可以使用的最大颜色数量。
输入格式
第一行包含整数 $N$ —— 传送门的数量。
接下来的 $N$ 行,每行包含两个整数。第 $i$ 行包含 $x_i$ 和 $y_i$,表示在单元格 $(x_i, y_i)$ 处有一个传送门。
输出格式
输出一个整数 —— 在不让你的好友察觉到传送门的情况下可以使用的最大颜色数量,如果可以使用无限多种颜色,则输出 $-1$。
样例
样例输入 1
3 1 1 1 3 3 2
样例输出 1
4
样例输入 2
5 0 0 1 0 -1 0 0 1 0 -1
样例输出 2
1
样例输入 3
1 1 -1
样例输出 3
-1
数据范围
- $1 \le N \le 10^5$
- $-10^6 \le x_i, y_i \le 10^6$(对于所有 $1 \le i \le N$)
- 没有两个传送门共享相同的坐标。
子任务
| 子任务编号 | 分值 | 附加约束 |
|---|---|---|
| 1 | 1 | $N \le 2$ |
| 2 | 10 | $N \le 3$ |
| 3 | 10 | 对于所有整数 $x_1, x_2, y_1, y_2$:如果位置 $(x_1, y_1)$ 和 $(x_2, y_2)$ 处有传送门,则位置 $(x_1, y_2)$ 处也有传送门。 |
| 4 | 29 | $N \le 100$ 且 $-100 \le x_i, y_i \le 100$(对于所有 $1 \le i \le N$) |
| 5 | 15 | $N \le 2000$ |
| 6 | 35 | 无附加约束 |