#include <bits/stdc++.h>
using namespace std;
const long long Mod = 1000000007;
const int mxN = 2e5 + 5;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long power[mxN];
int main() {
  power[0] = 1;
  for (int i = 1; i < mxN; i++) {
    power[i] = power[i - 1] * 2 % Mod;
  }
  int n;
  cin >> n;
  long long special = 0;
  map<pair<long long, long long>, pair<int, int>> mp;
  for (int i = 0; i < n; i++) {
    long long a, b;
    cin >> a >> b;
    if (a == 0LL && b == 0LL) {
      special++;
      continue;
    }
    if (make_pair(a, b) < make_pair(0ll, 0ll)) a = -a, b = -b;
    long long g = gcd(abs(a), abs(b));
    a = a / g, b = b / g;
    if (b > 0)
      mp[{a, b}].first++;
    else
      mp[{-b, a}].second++;
  }
  long long ans = 1;
  for (auto& p : mp) {
    ans = ans * (power[p.second.first] + power[p.second.second] - 1) % Mod;
  }
  cout << (ans - 1LL + special) % Mod << '\n';
}
