mod=10**9+7
n=int(input())
d={}
x0=0
y0=0
z=0
from math import gcd 
for i in range(n):
    x,y=map(int,input().split())
    if x==y==0:z+=1
    else:
        f=gcd(x,y)
        x//=f;y//=f
        if x<0:x*=-1;y*=-1
        if (x,y)in d:d[(x,y)]+=1
        else:d[(x,y)]=1
ans=1
if x0 and y0:ans=(pow(2,x0,mod)+pow(2,y0,mod)-1)%mod
elif x0 or y0:ans=pow(2,x0+y0,mod)

for (a,s) in d:
    if d[(a,s)]==0:continue
    ng=0
    if (s,-a)in d:ng+=d[(s,-a)];d[(s,-a)]=0
    if (-s,a)in d:ng+=d[(-s,a)];d[(-s,a)]=0
    ans*=(pow(2,d[(a,s)],mod)+(pow(2,ng,mod)-1 if ng else 0))%mod
    ans%=mod
print((ans+z-1)%mod)