from math import gcd
n = int(input())
plus = {}
minus = {}
mod = 10**9 + 7
gen = pow(10,19)
zero = 0 # 両方
for i in range(n):
    a,b = map(int,input().split())
    if a == b == 0:
        zero += 1
        continue
    if a < 0:a,b = -a,-b
    g = gcd(a,b)
    a //= g
    b //= g
    key = a*gen + b
    if b > 0:
        if key not in plus.keys():plus[key] = 0
        plus[key] += 1
    else:
        if key not in minus.keys():minus[key] = 0
        minus[key] += 1
ans = pow(2,n-zero,mod)
for k,v in plus.items():
    a = k//gen
    b = k%gen
    opo = b*gen - a
    if opo in minus.keys():
        o = minus[opo]
        ans = ans*pow(2,v*(mod-2)%(mod-1),mod) + ans*pow(2,o*(mod-2)%(mod-1),mod) - ans*pow(2,(v+o)*(mod-2)%(mod-1),mod)
        ans %= mod
print(ans + zero - 1)
