问题描述
Takahashi君每年都会将整数序列作为他的生日礼物发送给Aoki君。但是在今年,他打算给Aoki君发送二维平面上的点序列。
首先,他创建了三个点序列:(a0,a1,...,aN−1),(b0,b1,...,bN−1)和(c0,c1,...,cN−1),并创建了一个点d0。然后按照以下方式依次创建点d1,d2,...,dN:
- 对于每个i=0,1,...,N−1,di+1被定义为两条直线的交点:通过ai和bi的直线以及通过ci和di的直线。
可能会出现某些i无法定义点di+1的情况。例如,当两条直线重合时,有无限多个交点。
Takahashi君想知道最小的i,使得无法定义di+1。具体而言,如果满足以下任一条件,则无法定义di+1。
- ci=di
- 由ai,bi,ci和di所确定的两条直线相同或平行。
保证对于所有的i,都有ai=bi。
请注意,在以下各节中,点p的x和y坐标分别表示为p.x和p.y。
约束条件
- 1≤N≤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.y∣≤1000
- ai=bi
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入给出:
N
d0.x d0.y
a0.x a0.y b0.x b0.y c0.x c0.y
a1.x a1.y b1.x b1.y c1.x c1.y
:
aN−1.x aN−1.y bN−1.x bN−1.y cN−1.x cN−1.y
输出
输出最小的i,使得无法定义di+1。如果所有点都被定义,则输出N。
示例输入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