#include <bits/stdc++.h>
using namespace std;

#define int long long
const int MOD=1e9+7;
int pw(int n,int k){
  assert(k>=0);
  int res=1;
  while(k){
    if(k&1)(res*=n)%=MOD;
    (n*=n)%=MOD;
    k>>=1;
  }
  return res;
}
typedef pair<int,int> P;

signed main(){
  int n;cin>>n;
  map<P,int> m;
  int f=0;
  for(int i=0;i<n;i++){
    int a,b;cin>>a>>b;
    if(a==0&&b==0){f++;continue;}
    int g=__gcd(a,b);
    a/=g;b/=g;
    if(a<0||(!a&&b<0))a*=-1,b*=-1;
    m[P(a,b)]++;
  }
  int ans=1;
  for(auto p:m){
    int a=p.first.first,b=p.first.second;
    int c=-b,d=a;
    if(c<0)c*=-1,d*=-1;
    if(m.count(P(c,d))){
      if(b>0)(ans*=pw(2,m[P(a,b)])+pw(2,m[P(c,d)])-1)%=MOD;
    }
    else (ans*=pw(2,m[P(a,b)]))%=MOD;
  }
  cout<<ans+f-1<<endl;
}
