6789: 向量选取

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:21 解决:4

题目描述

向量垂直:若向量$x_{i}(a_{i},b_{i})$与向量$x_{j}(a_{j},b_{j})$垂直,则$x_{i} \cdot x_{j} = 0$ 
特别地,在此题零向量与任何向量都垂直
现给定$N$个向量$x_{i}$的坐标表示$(a_{i},b_{i})$,选取其中若干个组成一个集合,要求集合中不存在任意两两互相垂直的向量,且集合内至少包含一个向量
询问一共有多少种不同的集合,答案对$1000000007$取模

输入

输入共$N+1$行
第一行包含一个正整数$N$,表示共有$N$个向量
接下来$N$行,每行包含两个整数$a_{i}\ b_{i}$,空格间隔,表示向量$x_{i}$的坐标表示为$(a_{i},b_{i})$
$ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
$ -10^{18}\ \leq\ a_i,\ b_i\ \leq\ 10^{18} $

输出

输出一个正整数表示答案对$1000000007$取模的结果

样例输入 复制

3
1 2
-1 1
2 -1

样例输出 复制

5

提示

样例解释:
五种集合如下:
  1. $X_1$
  2. $X_1,X_2$
  3. $X_2$
  4. $X_2,X_3$
  5. $X_3$