from fractions import Fraction
from collections import defaultdict

N = int(input())
AB = [tuple(map(int, input().split())) for _ in range(N)]
MOD = 10**9 + 7

d = defaultdict(int)
cnt_0 = 0
for a,b in AB:
    if a == b == 0:
        cnt_0 += 1
    else:
        d[Fraction(a,b)] += 1


ans = 1
ks = list(d.keys())
for k in ks:
    if d[k] == 0:
        continue

    # 傾きkから一つ以上選んで -1/k の方からは選ばない + 傾き -1/k から一つ以上選んで k の方からは選ばない + どちらからも選ばない
    ans *= (((pow(2, d[k], MOD) - 1) + (pow(2, d[Fraction(-1, k)], MOD) - 1) + 1)% MOD)
    ans %= MOD
    d[k] = 0
    d[Fraction(-1, k)] = 0


print((ans + cnt_0 - 1) % MOD)