问题描述
AtCoder 共有 N 个城镇,编号为 1,2,ldots,N。城镇 i 位于 (xi,yi),并且没有两个不同的城镇位于相同的坐标上。
该国有一种传送术。传送术由一对整数 (a,b) 表示,施放传送术 (a,b) 在坐标 (x,y) 处将你传送到 (x+a,y+b)。
Snuke 是一名伟大的魔法师,可以针对他选择的任意整数对 (a,b) 学习传送术 (a,b)。他可以学习的传送术数量也是无限的。
为了能够使用传送术在城镇之间旅行,他决定学习一些传送术,以便对于每对不同的城镇 (i,j) 都可以做到以下事情。
- 从城镇 i 到城镇 j,选择一个已经学会的传送术,并重复使用选择的传送术。
Snuke 至少需要学习多少个传送术才能实现上述目标?
约束条件
- 2leqNleq500
- 0leqxileq109 (1leqileqN)
- 0leqyileq109 (1leqileqN)
- 如果 ineqj,则 (xi,yi)neq(xj,yj)。
输入
从标准输入获取输入数据,格式如下:
N
x1 y1
x2 y2
⋮
xN yN
输出
打印 Snuke 需要学习的传送术的最少数量。
示例输入 1
3
1 2
3 6
7 4
示例输出 1
6
下图显示了城镇的位置(以及四个角的坐标)。

如果 Snuke 学习以下六种传送术,则对于每一对不同的 (i,j)(ineqj),他可以使用其中一种传送术一次,实现他的目标。
- (2,4)
- (−2,−4)
- (4,−2)
- (−4,2)
- (−6,−2)
- (6,2)
还有另一种选择是学习以下六种传送术。在这种情况下,对于每对不同的 (i,j)(ineqj),他可以使用其中一种传送术两次,实现他的目标。
- (1,2)
- (−1,−2)
- (2,−1)
- (−2,1)
- (−3,−1)
- (3,1)
没有少于六种传送术组合可以实现目标,因此我们应该打印 6。
示例输入 2
3
1 2
2 2
4 2
示例输出 2
2
最佳选择是学习以下两种传送术:
- (1,0)
- (−1,0)
示例输入 3
4
0 0
0 1000000000
1000000000 0
1000000000 1000000000
示例输出 3
8