#include <bits/stdc++.h>
using namespace std;
struct nigga {
  long long end;
  long long x;
  long long w;
};
bool cmp(nigga a, nigga b) { return a.end < b.end; }
int main() {
  long long n;
  cin >> n;
  nigga buf;
  long long a, b;
  vector<nigga> x;
  for (long long i = 0; i < n; i++) {
    cin >> a >> b;
    buf.x = a;
    buf.w = b;
    buf.end = a + b;
    x.push_back(buf);
  }
  sort(x.begin(), x.end(), cmp);
  long long ans = 1;
  vector<long long> max1;
  max1.push_back(1);
  for (long long i = 1; i < n; i++) {
    long long v = x[i].x - x[i].w;
    long long l = 0, r = i - 1;
    while (r - l > 1) {
      long long mid = (r + l) / 2;
      if (x[mid].end > v)
        r = mid;
      else
        l = mid;
    }
    long long gg = r;
    if (x[r].end > v) gg = l;
    if ((l == 0) && (x[l].end > v)) gg = -1;
    if (gg != -1) {
      long long z = max1[gg] + 1;
      ans = max(ans, z);
      max1.push_back(max(z, max1[max1.size() - 1]));
    } else {
      max1.push_back(max(1ll, max1[max1.size() - 1]));
    }
  }
  cout << ans << endl;
  return 0;
}
