#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1e9;
const int maxn = 200500;
int n, l[maxn], r[maxn];
vector<int> k;
int f[maxn * 5];
vector<int> v[maxn * 5];
void upd(int idx, int val) {
  if (f[idx] < val) {
    f[idx] = val;
  }
}
int main() {
  srand(time(0));
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int x, w;
    cin >> x >> w;
    l[i] = x - w;
    r[i] = x + w;
    k.push_back(l[i]);
    k.push_back(r[i]);
  }
  sort(k.begin(), k.end());
  k.erase(unique(k.begin(), k.end()), k.end());
  for (int i = 1; i <= n; i++) {
    l[i] = lower_bound(k.begin(), k.end(), l[i]) - k.begin();
    r[i] = lower_bound(k.begin(), k.end(), r[i]) - k.begin();
    v[l[i]].push_back(r[i]);
  }
  fill(f, f + maxn * 5, -INF);
  f[0] = 0;
  for (int i = 0; i < (int)k.size(); i++) {
    upd(i + 1, f[i]);
    for (size_t it = 0; it < v[i].size(); it++) {
      int r = v[i][it];
      upd(r, f[i] + 1);
    }
  }
  cout << f[(int)k.size() - 1] << "\n";
  return 0;
}
