壳集(200分)
题号:NC218089
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

壳集是定义在二维直角坐标系中的一种点集,它的数学定义如下:

给定一个二维直角坐标系的点集

的壳集的一个子集,定义如下:

给出个二维直角坐标系中的点的坐标,请找出这些点组成的集合的壳集。

输入描述:

第一行为一个正整数,表示给出的点的个数

接下来行,每行给出两个正整数,代表第个点的坐标为

输出描述:

第一行包含一个正整数,代表所求壳集中点的个数

接下来行每行给出两个正整数,代表所求壳集中的点的坐标。输出顺序按照从小到大输出,如果两个点的相同,则对这些点按照从小到大输出。

示例1

输入

复制
10
1 5
1 7
2 2
3 5
5 3
5 6
6 5
7 5
8 2
10 1

输出

复制
5
1 7
5 6
7 5
8 2
10 1

说明

上图中,绿色的点代表这些点的壳集。

备注:

对于的数据,

对于的数据,

对于的数据,