#include <bits/stdc++.h>
using namespace std;
struct Robot {
  long long L;
  long long R;
  bool Del;
  Robot() {
    L = 0;
    R = 0;
    Del = false;
  }
};
bool Comp(Robot &l, Robot &r) {
  if (l.L < r.L) {
    return true;
  } else if (l.L == r.L) {
    if (l.R < r.R) {
      return true;
    }
  }
  return false;
}
int Deal(Robot &r1, Robot &r2) {
  if (r1.Del == false) {
    if (r1.L < r2.L && r1.R > r2.R) {
      r1.Del = true;
      return 1;
    }
    if (r1.L < r2.L && r1.R > r2.L) {
      r2.Del = true;
      return 2;
    }
  }
  return 0;
}
int main(int argc, char *argv[]) {
  int N, i;
  cin >> N;
  vector<Robot> robot(N);
  for (i = 0; i < N; i++) {
    long long X, L;
    cin >> X >> L;
    robot[i].L = X - L;
    robot[i].R = X + L;
  }
  sort(robot.begin(), robot.end(), Comp);
  vector<Robot>::iterator vit;
  i = 0;
  for (i = 0; i < N - 1; i++) {
    Deal(robot[i], robot[i + 1]);
  }
  int ans = 0;
  for (i = 0; i < N; i++) {
    if (robot[i].Del == false) {
      ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
