#include <bits/stdc++.h>
using std::cin;
using std::clog;
using std::cout;
using std::endl;
using std::sort;
const int maxN = 100000;
struct func {
  long long k, b;
};
int N, M;
func f[maxN];
bool cmp(const func& A, const func& B) {
  if (A.k * A.b < 0 && B.k * B.b > 0) return false;
  if (A.k * A.b > 0 && B.k * B.b < 0) return true;
  if (A.b * B.k == B.b * A.k) return false;
  if (A.k * B.k < 0)
    return A.b * B.k < B.b * A.k;
  else
    return A.b * B.k > B.b * A.k;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin >> N;
  M = 0;
  for (int i = 0; i < N; i++) {
    func tmp;
    cin >> tmp.k >> tmp.b;
    if (tmp.k != 0) f[M++] = tmp;
  }
  sort(f, f + M, cmp);
  if (M == 0)
    cout << 0 << endl;
  else {
    int ans = 1;
    for (int i = 1; i < M; i++)
      if (f[i].k * f[i - 1].b != f[i - 1].k * f[i].b) ans++;
    cout << ans << endl;
  }
  std::ios::sync_with_stdio(true);
  return 0;
}
