#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, w;
};
const int MAXN = 200005;
int N, ord[MAXN], dp[MAXN];
point A[MAXN];
bool comp1(point a, point b) { return a.x + a.w < b.x + b.w; }
int main() {
  ios::sync_with_stdio(0);
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> A[i].x >> A[i].w;
    ord[i] = A[i].x + A[i].w;
  }
  sort(A, A + N, comp1);
  sort(ord, ord + N);
  for (int i = 0; i < N; i++) {
    int j = upper_bound(ord, ord + N, A[i].x - A[i].w) - ord - 1;
    dp[i] = (j < 0 ? 1 : dp[j] + 1);
    if (i > 0) dp[i] = max(dp[i], dp[i - 1]);
  }
  cout << dp[N - 1] << '\n';
}
