#include<bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
const int MaxA=1e9;
struct NODE{
int t, p;
NODE(int t=0,int p=0):t(t),p(p){}
} node[2*MaxN];
bool comp(NODE lhs,NODE rhs){
return lhs.t<rhs.t;
}
int ans[MaxN+1]={};
int main(){
int N, A, B;
cin>>N;
for(int n=0; n<N; n+=1){
cin>>A>>B;
node[ n ]=NODE( A, 1);
node[N+n]=NODE(A+B,-1);
}
sort(node,node+2*N,comp);
int now=0;
for(int preT, n=0; n<2*N; ){
ans[now]+= node[n].t-preT;
for(preT=node[n].t; n<2*N && preT==node[n].t; n+=1)
now+=node[n].p;
}
// output
for(int n=1; n<=N; n+=1)
cout<<ans[n]<<" ";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTWF4Tj0yZTU7CmNvbnN0IGludCBNYXhBPTFlOTsKIApzdHJ1Y3QgTk9ERXsKCWludCB0LCBwOwoJTk9ERShpbnQgdD0wLGludCBwPTApOnQodCkscChwKXt9Cn0gbm9kZVsyKk1heE5dOwogCmJvb2wgY29tcChOT0RFIGxocyxOT0RFIHJocyl7CglyZXR1cm4gbGhzLnQ8cmhzLnQ7Cn0KIAppbnQgYW5zW01heE4rMV09e307CmludCBtYWluKCl7CglpbnQgTiwgQSwgQjsKIAoJY2luPj5OOwoJZm9yKGludCBuPTA7IG48Tjsgbis9MSl7CgkJY2luPj5BPj5COwoJCW5vZGVbIG4gXT1OT0RFKCAgQSwgMSk7CgkJbm9kZVtOK25dPU5PREUoQStCLC0xKTsKCX0KCXNvcnQobm9kZSxub2RlKzIqTixjb21wKTsKCWludCBub3c9MDsKCWZvcihpbnQgcHJlVCwgbj0wOyBuPDIqTjsgKXsKCQlhbnNbbm93XSs9IG5vZGVbbl0udC1wcmVUOwoJCWZvcihwcmVUPW5vZGVbbl0udDsgbjwyKk4gJiYgcHJlVD09bm9kZVtuXS50OyBuKz0xKQoJCQlub3crPW5vZGVbbl0ucDsKCX0KCS8vIG91dHB1dAoJZm9yKGludCBuPTE7IG48PU47IG4rPTEpCgkJY291dDw8YW5zW25dPDwiICI7Cn0=