#P17048. [SGU227] The art to the broad masses!

[SGU227] The art to the broad masses!

题目描述

抽象派画家 Madzinsky-Kalevich 在一张矩形画纸上画了 NN 段圆弧。为了给作品起一个更吸引人的名字,他希望知道这些圆弧一共有多少个不同的交点。

每段圆弧由三个整点描述:

  • 前两个点是圆弧的两个端点;
  • 第三个点是位于这段圆弧上的一个中间点。

这三个点唯一确定了所在圆以及端点之间应选择的那一段圆弧。

所有圆弧所在圆的半径均不超过 10310^3

你的任务是求所有圆弧之间的不同交点。

如果存在两段圆弧在一段非零长度的圆弧上重合,那么交点有无穷多个。

输入格式

第一行包含一个整数 NN

1N501\le N\le50

接下来 NN 行,每行包含六个整数:

x1 y1 x2 y2 x3 y3x_1\ y_1\ x_2\ y_2\ x_3\ y_3

表示一段圆弧,其中:

  • (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 是两个端点;
  • (x3,y3)(x_3,y_3) 是位于该圆弧上的中间点。

所有坐标的绝对值均不超过 10001000

输出格式

如果交点有无穷多个,只输出一行:

Infinity

否则,设不同交点数量为 MM

  • 第一行输出整数 MM
  • 接下来 MM 行,每行输出一个交点的坐标 x y
  • 交点首先按 xx 坐标升序排列;若 xx 相同,则按 yy 坐标升序排列;
  • 坐标保留到小数点后 33 位。

保证在交点数量有限时,任意两个不同交点之间的距离不少于 0.0050.005

样例 1

样例输入

3
7 4 7 -4 3 0
2 2 6 2 4 0
0 4 0 -4 4 0

样例输出

4
3.009 0.263
3.500 -1.936
3.500 1.936
4.000 0.000