import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import java.util.*

fun main(args: Array<String>) {
    val sc = FastScanner(System.`in`)

    val n = sc.nextInt()

    val robots = Array(n) { Robot(sc.nextInt(), sc.nextInt()) }.sortedBy { it.x - it.l }

    println(solve(robots, 0))
}

val solved = Array((1e5 + 1).toInt()) { -1 }
fun solve(robots: List<Robot>, x: Int): Int {
    if (solved[x] != -1) return solved[x]
    if (x == robots.size) return 0

    val notPick = solve(robots, x + 1)
    val R = robots[x].x + robots[x].l

    var a = x
    var b = robots.size
    while (b - a > 1) {
        val c = (b + a) / 2
        if (robots[c].x - robots[c].l >= R) b = c
        else a = c
    }

    val pick = 1 + solve(robots, b)

    val ans = if (pick > notPick) pick else notPick
    solved[x] = ans
    return ans
}

data class Robot(val x: Int, val l: Int)

class FastScanner(s: InputStream) {
    private var st = StringTokenizer("")
    private val br = BufferedReader(InputStreamReader(s))

    fun next(): String {
        while (!st.hasMoreTokens()) st = StringTokenizer(br.readLine())

        return st.nextToken()
    }

    fun nextInt() = next().toInt()
    fun nextLong() = next().toLong()
    fun nextLine() = br.readLine()
    fun nextDouble() = next().toDouble()
    fun ready() = br.ready()
}
