def modpow(x, n, m)
    res=1
    while n>0
        res=res*x%m if n.odd?
        x=x*x%m
        n>>=1
    end
    res
end

z=0
h={}
n=gets.to_i
n.times do
    a, b=gets.split.map(&:to_i)
    z+=1 if a==0 and b==0
    (h[ab=Rational(a, b)]||=0; h[ab]+=1) rescue 0
end

MOD=10**9+7
res=1
h.each do |k, v|
    w=h[-1/k]||0 if !k.zero?
    res*=modpow(2, v, MOD)+modpow(2, w, MOD)-1
    res%=MOD
    h[k]=0
    h[-1/k]&&=0 if !k.zero?
end
puts (res+z+MOD-1)%MOD
