import sys
import  math
from heapq import *
import fractions
from collections import defaultdict
stdin = sys.stdin
     
ns = lambda: stdin.readline().rstrip()
ni = lambda: int(stdin.readline().rstrip())
nm = lambda: map(int, stdin.readline().split())
nl = lambda: list(map(int, stdin.readline().split()))

mod=10**9+7
zero=0
counter0=defaultdict(int)
counter1=defaultdict(int)
N=int(input())
for i in range(N):
    x,y=nm()
    if(x==0 and y==0):
        zero+=1
        continue
    g=fractions.gcd(x,y)
    x/=g
    y/=g
    if(y<0):
        x=-x
        y=-y
    if(y==0 and x<0):
        x=-x
        y=-y
    rot90=False
    if(x<0):
        rot90=True
    if(rot90):
        tmp = x
        x=y
        y=-tmp
    if(rot90):
        counter0[(x,y)]+=1
    else:
        counter1[(x,y)]+=1
        counter0[(x,y)]+=0

ans=1
for key,cnt0 in counter0.items():
    cnt1=counter1[key]
    now=1
    now+=2**cnt0-1
    now+=2**cnt1-1
    now%=mod
    ans*=now
    ans%mod
        
ans+=zero
ans-=1

print(ans%mod)




