import std.stdio, std.algorithm, std.conv, std.array, std.string, std.math, std.typecons, std.numeric;

alias R = Tuple!(long, "x", long, "l");

void main()
{
    auto N = readln.chomp.to!int;
    R[] rs;
    foreach (_; 0..N) {
        auto xl = readln.split.to!(long[]);
        rs ~= R(xl[0], xl[1]);
    }
    sort(rs);
    auto DP = new int[][](N, 2);
    foreach (ref dp; DP) dp[] = -1;

    int solve(int i, int p) {
        if (i == N) return 0;
        if (DP[i][p] == -1) {
            if (p && rs[i].x - rs[i-1].x < rs[i].l + rs[i-1].l) {
                DP[i][p] = solve(i+1, 0);
            } else {
                DP[i][p] = max(solve(i+1, 0), solve(i+1, 1) + 1);
            }
        }
        return DP[i][p];
    }

    writeln(solve(0, 0));
}