#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define pii pair<int, int>
#define pll pair<ll, ll>
#define vvi vector<vector<int>>
#define vt vector
#define arr array
#define ALL(x) begin(x), end(x)
#define rALL(x) rbegin(x), rend(x)
#define SZ(x) x.size()
#define P(x, y) make_pair(x, y)
const int MOD1=998244353;
const ll MOD2=1e9+7;
const ll LINF=3e18;
const int INF=1e9;
const int N=2e5;
map<int, vector<int>> e;
map<int, int> vis;
vector<int> comp;
void dfs(int x){
vis[x] = 1;
comp.pb(x);
for (auto k : e[x]){
if (vis[k]) continue;
dfs(k);
}
}
void solve(){
int n;
cin >> n;
for (int i = 0; i < n; i++){
int x, r;
cin >> x >> r;
e[x + r].pb(x - r);
e[x - r].pb(x + r);
}
int ans = 0;
for (auto [a, b] : e){
if (vis[a]) continue;
dfs(a);
int edge = 0;
for (auto x : comp) edge += (int)SZ(e[x]);
ans += min(edge >> 1, (int)SZ(comp));
comp.clear();
// the maximum bunnies for a connected component is the number of its nodes, the minimum bunnies is the number of its edges
}
cout << ans << '\n';
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBwbGwgcGFpcjxsbCwgbGw+CiNkZWZpbmUgdnZpIHZlY3Rvcjx2ZWN0b3I8aW50Pj4KI2RlZmluZSB2dCB2ZWN0b3IKI2RlZmluZSBhcnIgYXJyYXkKI2RlZmluZSBBTEwoeCkgYmVnaW4oeCksIGVuZCh4KQojZGVmaW5lIHJBTEwoeCkgcmJlZ2luKHgpLCByZW5kKHgpCiNkZWZpbmUgU1ooeCkgeC5zaXplKCkKI2RlZmluZSBQKHgsIHkpIG1ha2VfcGFpcih4LCB5KQpjb25zdCBpbnQgTU9EMT05OTgyNDQzNTM7CmNvbnN0IGxsIE1PRDI9MWU5Kzc7CmNvbnN0IGxsIExJTkY9M2UxODsKY29uc3QgaW50IElORj0xZTk7Cgpjb25zdCBpbnQgTj0yZTU7Cm1hcDxpbnQsIHZlY3RvcjxpbnQ+PiBlOwptYXA8aW50LCBpbnQ+IHZpczsKdmVjdG9yPGludD4gY29tcDsKCnZvaWQgZGZzKGludCB4KXsKICAgIHZpc1t4XSA9IDE7CiAgICBjb21wLnBiKHgpOwogICAgZm9yIChhdXRvIGsgOiBlW3hdKXsKICAgIAlpZiAodmlzW2tdKSBjb250aW51ZTsKICAgIAlkZnMoayk7CiAgICB9Cn0KCnZvaWQgc29sdmUoKXsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAgICAgaW50IHgsIHI7CiAgICAgICAgY2luID4+IHggPj4gcjsKICAgICAgICBlW3ggKyByXS5wYih4IC0gcik7CiAgICAgICAgZVt4IC0gcl0ucGIoeCArIHIpOwogICAgfQogICAgaW50IGFucyA9IDA7CiAgICBmb3IgKGF1dG8gW2EsIGJdIDogZSl7CiAgICAJaWYgKHZpc1thXSkgY29udGludWU7CiAgICAgICAgZGZzKGEpOwogICAgICAgIAogICAgICAgIGludCBlZGdlID0gMDsKICAgICAgICBmb3IgKGF1dG8geCA6IGNvbXApIGVkZ2UgKz0gKGludClTWihlW3hdKTsKICAgICAgICAKICAgICAgICBhbnMgKz0gbWluKGVkZ2UgPj4gMSwgKGludClTWihjb21wKSk7CiAgICAgICAgY29tcC5jbGVhcigpOwogICAgICAgIAogICAgICAgIC8vIHRoZSBtYXhpbXVtIGJ1bm5pZXMgZm9yIGEgY29ubmVjdGVkIGNvbXBvbmVudCBpcyB0aGUgbnVtYmVyIG9mIGl0cyBub2RlcywgdGhlIG1pbmltdW0gYnVubmllcyBpcyB0aGUgbnVtYmVyIG9mIGl0cyBlZGdlcwogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICAKICAgIHNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0=