在幼儿园里,最耗时的活动之一就是用安全剪刀从纸上剪下各种形状。让我们来看一个简化版的任务:你从一张无限大的纸开始,上面画有 $N$ 个互不相交的轴对齐矩形,剪裁方式为无限长的直线。剪裁不得“切坏”任何矩形:它不能穿过任何矩形的内部(允许剪裁线恰好沿着矩形的边或穿过矩形的顶点)。当你剪开一张纸时,纸会分成两块,你可以继续独立地剪裁这两块纸(在一块纸上的后续剪裁不会影响其他纸片)。
你的目标是进行一系列剪裁,使得每个矩形最终都位于其独立的纸片上(因为在那之后,将每个矩形精确地剪下来就很容易了)。
确定以这种方式将矩形分离所需的最小剪裁次数(不一定是轴对齐的)。如果任务无法完成,则输出 impossible。
输入格式
第一行包含一个整数 $N$ ($1 \le N \le 100$),表示矩形的数量。
接下来的 $N$ 行,每行描述一个矩形。每行包含四个空格分隔的整数 $x_1, y_1, x_2$ 和 $y_2$ ($|x_1|, |y_1|, |x_2|, |y_2| \le 10^9, x_1 < x_2, y_1 < y_2$),其中 $(x_1, y_1)$ 是矩形的左下角坐标,$(x_2, y_2)$ 是矩形的右上角坐标。
保证矩形互不相交:任意两个矩形在任何点(包括边或顶点)上都没有交集。
输出格式
输出将所有矩形分离所需的最小剪裁次数。(不需要包含将矩形分离后,为了修剪矩形周围多余空白纸张而进行的额外剪裁。)如果任务无法完成,则输出 impossible。
说明
样例输入 1 中分离矩形的一种可能剪裁序列的前两次剪裁如下图所示。第一次剪裁用红色标出,第二次用蓝色标出。注意,蓝色剪裁在红色剪裁之前是无效的,因为它会切坏右侧的矩形。
样例
输入 1
6 -1 1 0 4 1 0 3 1 2 2 3 3 4 0 5 3 2 4 5 5 6 3 7 5
输出 1
5
输入 2
4 0 -1 1 2 2 -1 5 0 -10 3 3 4 4 1 5 13
输出 2
impossible