#include <bits/stdc++.h>
using namespace std;
const int N = int(3e5);
int n;
int x[N], w[N];
long long a[N], b[N];
int l, r, mid;
int ans, t, d[N], ml[N];
pair<int, int> p[N], q[N];
map<int, int> Mp;
bool cmp(pair<int, int> b, pair<int, int> a) {
  return (a.first - a.second > b.first - b.second ||
          (a.first - a.second == b.first - b.second && a.first > b.first));
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x[i], &w[i]);
    p[i] = make_pair(x[i], w[i]);
    q[i] = make_pair(x[i] + w[i], x[i]);
  }
  sort(p + 1, p + n + 1, cmp);
  for (int i = 1; i <= n; i++) {
    Mp[p[i].first - p[i].second] = i;
  }
  sort(q + 1, q + n + 1);
  int M = 2 * q[1].second - q[1].first;
  ml[1] = 1;
  for (int i = 2; i <= n; i++) {
    ml[i] = ml[i - 1];
    if (M < 2 * q[i].second - q[i].first) {
      M = 2 * q[i].second - q[i].first;
      ml[i] = Mp[M];
    }
  }
  for (int i = 1; i <= n; i++) {
    l = 0, r = n;
    while (r - l > 1) {
      mid = (r + l) / 2;
      if (q[mid].first > p[i].first - p[i].second) {
        r = mid;
      } else
        l = mid;
    }
    d[i] = d[ml[l]] + 1;
    ans = max(ans, d[i]);
  }
  cout << ans;
  return 0;
}
