#include <bits/stdc++.h>
using namespace std;
int n;
struct node {
  int x, w;
};
node p[204857];
inline bool cmp(node a, node b) { return a.x < b.x; }
set<int> dp;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &p[i].x, &p[i].w);
  sort(p, p + n, cmp);
  for (int i = 0; i < n; i++) {
    int delta = p[i].x - p[i].w;
    auto pos = dp.lower_bound(delta);
    if (pos == dp.end()) {
      dp.insert(p[i].x + p[i].w);
      continue;
    }
    auto target = pos;
    if (*pos == delta) target++;
    if (target == dp.end()) dp.insert(p[i].x + p[i].w);
    if (*target > p[i].x + p[i].w) {
      dp.erase(target);
      dp.insert(p[i].x + p[i].w);
    }
  }
  printf("%d\n", (int)dp.size());
  return 0;
}
