import sys

n=int(input())
mod=10**9+7
pow2=[1]
for i in range(n+10):
    pow2.append(pow2[-1]*2%mod)

P=[] #[比較する数,正負の場合分け]
Q=[]
zero=0
for i in range(n):
    a,b=map(int,input().split())
    if a*b==0:
        zero+=1
    elif a*b>0:
        P.append([a/b,0])
    else:
        P.append([-b/a,1])
P.sort()
print(P)
if not P:
    print(zero)
    sys.exit()

now=P[0][0]
cnt0=0
cnt1=0
d=n
ans=1
for p in P:
    if now!=p[0]:
        if cnt0*cnt1>0:
            d-=cnt0+cnt1
            ans=ans*(pow2[cnt0]+pow2[cnt1]-1)%mod
            #print(cnt0,cnt1,d,ans)
        cnt0=0
        cnt1=0
    now=p[0]
    if p[1]==0:
        cnt0+=1
    else:
        cnt1+=1
if cnt0*cnt1>0:
    d-=cnt0+cnt1
    ans=ans*(pow2[cnt0]+pow2[cnt1]-1)%mod

if zero>1:
    d-=zero
    ans=ans*(zero+1)%mod
ans=ans*pow2[d]%mod
print(ans-1)