import math

import fractions

import bisect

import collections

import itertools

import heapq

import string

import sys

import copy

from collections import deque

sys.setrecursionlimit(10**7)

def gcd(a,b):return fractions.gcd(a,b) #最大公約数

def lcm(a,b):return (a*b) // fractions.gcd(a,b) #最小公倍数

def iin(): return int(eval(input())) #整数読み込み

def isn(): return input().split() #文字列読み込み

def imn(): return list(map(int, input().split())) #整数map取得

def iln(): return list(map(int, input().split())) #整数リスト取得

def iln_s(): return sorted(iln()) # 昇順の整数リスト取得

def iln_r(): return sorted(iln(), reverse=True) # 降順の整数リスト取得

def join(l, s=''): return s.join(l) #リストを文字列に変換

def perm(l, n): return itertools.permutations(l, n) # 順列取得

def perm_count(n, r): return math.factorial(n) // math.factorial(n-r) # 順列の総数

def comb(l, n): return itertools.combinations(l, n) # 組み合わせ取得

def comb_count(n, r): return math.factorial(n) // (math.factorial(n-r) * math.factorial(r)) #組み合わせの総数



N = iin()

XL = sorted([iln() for _ in range(N)], key=lambda x:x[0]+x[1])



prev_r = XL[0][0]+XL[0][1]

ans = 1

for i in range(1, N):

    if prev_r <= XL[i][0]-XL[i][1]:

        ans += 1

        prev_r = XL[i][0]+XL[i][1]

print(ans)



import math

import fractions

import bisect

import collections

import itertools

import heapq

import string

import sys

import copy

from collections import deque

sys.setrecursionlimit(10**7)

MOD = 10**9+7

def gcd(a,b):return fractions.gcd(a,b) #最大公約数

def lcm(a,b):return (a*b) // fractions.gcd(a,b) #最小公倍数

def iin(): return int(eval(input())) #整数読み込み

def ifn(): return float(eval(input())) #浮動小数点読み込み

def isn(): return input().split() #文字列読み込み

def imn(): return list(map(int, input().split())) #整数map取得

def fmn(): return list(map(float, input().split())) #浮動小数点map取得

def iln(): return list(map(int, input().split())) #整数リスト取得

def iln_s(): return sorted(iln()) # 昇順の整数リスト取得

def iln_r(): return sorted(iln(), reverse=True) # 降順の整数リスト取得

def fln(): return list(map(float, input().split())) # 浮動小数点リスト取得

def join(l, s=''): return s.join(l) #リストを文字列に変換

def perm(l, n): return itertools.permutations(l, n) # 順列取得

def perm_count(n, r): return math.factorial(n) // math.factorial(n-r) # 順列の総数

def comb(l, n): return itertools.combinations(l, n) # 組み合わせ取得

def comb_count(n, r): return math.factorial(n) // (math.factorial(n-r) * math.factorial(r)) #組み合わせの総数

def two_distance(a, b, c, d): return ((c-a)**2 + (d-b)**2)**.5 # 2点間の距離

def m_add(a,b): return (a+b) % MOD



N = iin()

XL = [iln() for _ in range(N)]



XL = sorted(XL, key=lambda x: x[0]+x[1])



prev = -10**9

ans = 0

for i in range(0, N):

    if prev <= XL[i][0] - XL[i][1]:

        ans += 1

        prev = XL[i][0] + XL[i][1]

print(ans)





import math
import fractions
import bisect
import collections
import itertools
import heapq
import string
import sys
import copy
from collections import deque

sys.setrecursionlimit(10**7)


def gcd(a, b):
    return fractions.gcd(a, b)  # 最大公約数


def lcm(a, b):
    return (a * b) // fractions.gcd(a, b)  # 最小公倍数


def iin():
    return int(eval(input()))  # 整数読み込み


def isn():
    return input().split()  # 文字列読み込み


def imn():
    return list(map(int, input().split()))  # 整数map取得


def iln():
    return list(map(int, input().split()))  # 整数リスト取得


def iln_s():
    return sorted(iln())  # 昇順の整数リスト取得


def iln_r():
    return sorted(iln(), reverse=True)  # 降順の整数リスト取得


def join(l, s=""):
    return s.join(l)  # リストを文字列に変換


def perm(l, n):
    return itertools.permutations(l, n)  # 順列取得


def perm_count(n, r):
    return math.factorial(n) // math.factorial(n - r)  # 順列の総数


def comb(l, n):
    return itertools.combinations(l, n)  # 組み合わせ取得


def comb_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))  # 組み合わせの総数


N = iin()
XL = sorted([iln() for _ in range(N)], key=lambda x: x[0] + x[1])
prev_r = XL[0][0] + XL[0][1]
ans = 1
for i in range(1, N):
    if prev_r <= XL[i][0] - XL[i][1]:
        ans += 1
        prev_r = XL[i][0] + XL[i][1]
print(ans)

import math
import fractions
import bisect
import collections
import itertools
import heapq
import string
import sys
import copy
from collections import deque

sys.setrecursionlimit(10**7)
MOD = 10**9 + 7


def gcd(a, b):
    return fractions.gcd(a, b)  # 最大公約数


def lcm(a, b):
    return (a * b) // fractions.gcd(a, b)  # 最小公倍数


def iin():
    return int(eval(input()))  # 整数読み込み


def ifn():
    return float(eval(input()))  # 浮動小数点読み込み


def isn():
    return input().split()  # 文字列読み込み


def imn():
    return list(map(int, input().split()))  # 整数map取得


def fmn():
    return list(map(float, input().split()))  # 浮動小数点map取得


def iln():
    return list(map(int, input().split()))  # 整数リスト取得


def iln_s():
    return sorted(iln())  # 昇順の整数リスト取得


def iln_r():
    return sorted(iln(), reverse=True)  # 降順の整数リスト取得


def fln():
    return list(map(float, input().split()))  # 浮動小数点リスト取得


def join(l, s=""):
    return s.join(l)  # リストを文字列に変換


def perm(l, n):
    return itertools.permutations(l, n)  # 順列取得


def perm_count(n, r):
    return math.factorial(n) // math.factorial(n - r)  # 順列の総数


def comb(l, n):
    return itertools.combinations(l, n)  # 組み合わせ取得


def comb_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))  # 組み合わせの総数


def two_distance(a, b, c, d):
    return ((c - a) ** 2 + (d - b) ** 2) ** 0.5  # 2点間の距離


def m_add(a, b):
    return (a + b) % MOD


N = iin()
XL = [iln() for _ in range(N)]
XL = sorted(XL, key=lambda x: x[0] + x[1])
prev = -(10**9)
ans = 0
for i in range(0, N):
    if prev <= XL[i][0] - XL[i][1]:
        ans += 1
        prev = XL[i][0] + XL[i][1]
print(ans)

+MOD = 10**9 + 7 +def ifn(): +    return float(eval(input()))  # 浮動小数点読み込み + + + + +def fmn(): +    return list(map(float, input().split()))  # 浮動小数点map取得 + + +def fln(): +    return list(map(float, input().split()))  # 浮動小数点リスト取得 +def two_distance(a, b, c, d): +    return ((c - a) ** 2 + (d - b) ** 2) ** 0.5  # 2点間の距離 + + +def m_add(a, b): +    return (a + b) % MOD + + -XL = sorted([iln() for _ in range(N)], key=lambda x: x[0] + x[1]) -prev_r = XL[0][0] + XL[0][1] -ans = 1 -for i in range(1, N): -    if prev_r <= XL[i][0] - XL[i][1]: +XL = [iln() for _ in range(N)] +XL = sorted(XL, key=lambda x: x[0] + x[1]) +prev = -(10**9) +ans = 0 +for i in range(0, N): +    if prev <= XL[i][0] - XL[i][1]: -        prev_r = XL[i][0] + XL[i][1] +        prev = XL[i][0] + XL[i][1]