#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define f first
#define s second
#define pb push_back
#define ep emplace
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin())
#define mem(f,x) memset(f , x , sizeof(f))
#define sz(x) (ll)(x).size()
#define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b))
#define mxx *max_element
#define mnn *min_element
#define cntbit(x) __builtin_popcountll(x)
#define len(x) (int)(x.length())
const int N = 5e5 + 10;
int x[N], y[N];
int lcs(vector <int> v) {
vector <int> cc;
for (auto x : v) {
if (sz(cc) == 0 || cc.back() < -x) {
cc.pb(-x);
} else {
int p = lower_bound(all(cc), -x) - cc.begin();
cc[p] = -x;
}
}
return sz(cc);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> x[i] >> y[i];
vector <pair <int, int>> save;
for (int i = 1; i <= n; i++) {
save.pb({x[i] - y[i], x[i] + y[i]});
}
sort(all(save));
vector <int> lst;
for (auto x : save) {
lst.pb(x.s);
}
cout << lcs(lst) << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKI2RlZmluZSAgICAgICAgICAgZiAgICAgZmlyc3QKI2RlZmluZSAgICAgICAgICAgcyAgICAgc2Vjb25kCiNkZWZpbmUgICAgICAgICAgIHBiICAgIHB1c2hfYmFjawojZGVmaW5lICAgICAgICAgICBlcCAgICBlbXBsYWNlCiNkZWZpbmUgICAgICAgICAgIGViICAgIGVtcGxhY2VfYmFjawojZGVmaW5lICAgICAgICAgICBsYiAgICBsb3dlcl9ib3VuZAojZGVmaW5lICAgICAgICAgICB1YiAgICB1cHBlcl9ib3VuZAojZGVmaW5lICAgICAgIGFsbCh4KSAgICB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSAgICAgIHJhbGwoeCkgICAgeC5yYmVnaW4oKSwgeC5yZW5kKCkKI2RlZmluZSAgIHVuaXF1ZXYodikgICAgc29ydChhbGwodikpLCAodikucmVzaXplKHVuaXF1ZShhbGwodikpIC0gKHYpLmJlZ2luKCkpCiNkZWZpbmUgICAgIG1lbShmLHgpICAgIG1lbXNldChmICwgeCAsIHNpemVvZihmKSkKI2RlZmluZSAgICAgICAgc3ooeCkgICAgKGxsKSh4KS5zaXplKCkKI2RlZmluZSAgX19sY20oYSwgYikgICAgKDFsbCAqICgoYSkgLyBfX2djZCgoYSksIChiKSkpICogKGIpKQojZGVmaW5lICAgICAgICAgIG14eCAgICAqbWF4X2VsZW1lbnQKI2RlZmluZSAgICAgICAgICBtbm4gICAgKm1pbl9lbGVtZW50CiNkZWZpbmUgICAgY250Yml0KHgpICAgIF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpCiNkZWZpbmUgICAgICAgbGVuKHgpICAgIChpbnQpKHgubGVuZ3RoKCkpCgpjb25zdCBpbnQgTiA9IDVlNSArIDEwOwppbnQgeFtOXSwgeVtOXTsKCmludCBsY3ModmVjdG9yIDxpbnQ+IHYpIHsKICAgIHZlY3RvciA8aW50PiBjYzsKICAgIGZvciAoYXV0byB4IDogdikgewogICAgICAgIGlmIChzeihjYykgPT0gMCB8fCBjYy5iYWNrKCkgPCAteCkgewogICAgICAgICAgICBjYy5wYigteCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW50IHAgPSBsb3dlcl9ib3VuZChhbGwoY2MpLCAteCkgLSBjYy5iZWdpbigpOwogICAgICAgICAgICBjY1twXSA9IC14OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gc3ooY2MpOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgY2luID4+IHhbaV0gPj4geVtpXTsKCgogICAgdmVjdG9yIDxwYWlyIDxpbnQsIGludD4+IHNhdmU7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgc2F2ZS5wYih7eFtpXSAtIHlbaV0sIHhbaV0gKyB5W2ldfSk7CiAgICB9CgogICAgc29ydChhbGwoc2F2ZSkpOwoKICAgIHZlY3RvciA8aW50PiBsc3Q7CiAgICBmb3IgKGF1dG8geCA6IHNhdmUpIHsKICAgICAgICBsc3QucGIoeC5zKTsKICAgIH0KCiAgICBjb3V0IDw8IGxjcyhsc3QpIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQo=