#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const double eps = 1e-8;
const int nm = 200005;
int n, k, m, t;
int res;
struct Node {
  int x, w;
};
Node N[nm];
int dp[nm];
int endOf[nm];
int Max = 1;
bool cmp(Node u, Node v) { return u.x < v.x; }
int main() {
  int i, j, y, z;
  int l, r, mid;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &N[i].x, &N[i].w);
  }
  sort(N + 1, N + n + 1, cmp);
  endOf[0] = 0;
  endOf[1] = 1;
  N[0].x = N[0].x = -MOD;
  dp[1] = 1;
  for (i = 2; i <= n; i++) {
    l = 0;
    r = Max;
    while (l < r - 1) {
      mid = (l + r) >> 1;
      k = endOf[mid];
      if (N[i].x - N[k].x >= N[i].w + N[k].w) {
        l = mid;
      } else
        r = mid - 1;
    }
    k = endOf[r];
    if (N[i].x - N[k].x >= N[i].w + N[k].w)
      dp[i] = r + 1;
    else
      dp[i] = l + 1;
    if (dp[i] > Max || N[i].x + N[i].w < N[endOf[dp[i]]].x + N[endOf[dp[i]]].w)
      endOf[dp[i]] = i;
    if (dp[i] > Max) Max = dp[i];
  }
  cout << Max;
  return 0;
}
