#jag2018summerday2f. [jag2018summer_day2_f]Point Sequences

[jag2018summer_day2_f]Point Sequences

问题描述

Takahashi君每年都会将整数序列作为他的生日礼物发送给Aoki君。但是在今年,他打算给Aoki君发送二维平面上的点序列。

首先,他创建了三个点序列:(a0,a1,...,aN1)(a_0, a_1, ..., a_{N-1})(b0,b1,...,bN1)(b_0, b_1, ..., b_{N-1})(c0,c1,...,cN1)(c_0, c_1, ..., c_{N-1}),并创建了一个点d0d_0。然后按照以下方式依次创建点d1,d2,...,dNd_1, d_2, ..., d_N

  • 对于每个i=0,1,...,N1i = 0, 1, ..., {N-1}di+1d_{i+1}被定义为两条直线的交点:通过aia_ibib_i的直线以及通过cic_idid_i的直线。

可能会出现某些ii无法定义点di+1d_{i+1}的情况。例如,当两条直线重合时,有无限多个交点。

Takahashi君想知道最小的ii,使得无法定义di+1d_{i+1}。具体而言,如果满足以下任一条件,则无法定义di+1d_{i+1}

  • ci=dic_i = d_i
  • aia_ibib_icic_idid_i所确定的两条直线相同或平行。

保证对于所有的ii,都有aibia_i \neq b_i

请注意,在以下各节中,点ppxxyy坐标分别表示为p.xp.xp.yp.y

约束条件

  • 1N100,0001 \leq N \leq 100,000
  • $|a_i.x|, |a_i.y|, |b_i.x|, |b_i.y|, |c_i.x|, |c_i.y| \leq 1,000$
  • d0.x,d0.y1000|d_0.x|, |d_0.y| \leq 1000
  • aibia_i \neq b_i
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN d0.xd_0.x d0.yd_0.y a0.xa_0.x a0.ya_0.y b0.xb_0.x b0.yb_0.y c0.xc_0.x c0.yc_0.y a1.xa_1.x a1.ya_1.y b1.xb_1.x b1.yb_1.y c1.xc_1.x c1.yc_1.y :: aN1.xa_{N-1}.x aN1.ya_{N-1}.y bN1.xb_{N-1}.x bN1.yb_{N-1}.y cN1.xc_{N-1}.x cN1.yc_{N-1}.y

输出

输出最小的ii,使得无法定义di+1d_{i+1}。如果所有点都被定义,则输出NN


示例输入1

6
0 0
10 -10 10 10 10 0
0 10 20 10 10 10
0 -10 0 -100 0 10
0 0 0 -100 0 0
0 0 0 1 0 0
31 14 15 92 65 35

示例输出1

3

示例输入2

11
0 0
299 0 299 1 3 1
1 0 1 1 300 100
299 0 299 1 3 1
1 0 1 1 300 100
299 0 299 1 3 1
1 0 1 1 300 100
299 0 299 1 3 1
1 0 1 1 300 100
299 0 299 1 3 1
1 0 1 1 300 100
0 0 3 1 3 1

示例输出2

10