题目描述
Alex 是一位电竞选手。
这些天,Alex 正在玩一款战争策略游戏。他的城池可以被看做笛卡尔平面上的一个矩形,它的左下角为 (0,0),右上角为 (n+1,n+1)。
Alex 建造了 n 座防御塔来保卫城池。防御塔 i 位于 (xi,yi),方向为 di。方向不同的防御塔能够保护不同的区域,具体来说:
- 若 di=1,防御塔 i 能保护区域 {(a,b)∣a≥xi,b≥yi};
- 若 di=2,防御塔 i 能保护区域 {(a,b)∣a≤xi,b≥yi};
- 若 di=3,防御塔 i 能保护区域 {(a,b)∣a≤xi,b≤yi};
- 若 di=4,防御塔 i 能保护区域 {(a,b)∣a≥xi,b≤yi}。
如果 Alex 启用了 e 座防御塔,他每小时将会消耗 e 的单位能量。他想要启用尽量少数量的防御塔,使得城池中的任何点 (x,y)(x,y∈R,0≤x,y≤n+1) 都能被保护。你能找到最优策略吗?
输入格式
输入的第一行给出了测试点组数 T,接下来是 T 组测试点。
对于每组测试点,第一行包含一个整数 n,其中 n 是防御塔的数量。
接下来的 n 行,每行包含三个整数 xi,yi 和 di,表示防御塔 i 的位置和方向。
输出格式
对于每组测试点,输出一行包含 "\texttt{Case #x: y}",其中 x 是测试点编号(从 1 开始),以及 y 是最少数量的防御塔。如果不可能保护整座城池,输出 "Impossible"(不包括引号)。
2
3
1 1 1
2 2 2
3 3 3
4
1 1 1
2 2 3
2 1 2
1 2 4
Case #1: Impossible
Case #2: 4
数据范围与提示
对于 10% 的测试数据,满足 n≤20, ∑n≤100。
对于 30% 的测试数据,满足 n≤100, ∑n≤500。
对于 40% 的测试数据,满足 n≤1000, ∑n≤5000。
对于 70% 的测试数据,满足 n≤105, ∑n≤5×105。
对于全部测试数据,满足 $1 \le T \le 10^4,\ 1 \le n \le 10^6,\ \sum n \le 5 \times 10^6,\ 1 \le x_i,y_i \le n,\ 1 \le d_i \le 4$。
由于本题输入量较大,请使用较快的读入方式。