#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=0, n=0; n<2*N ;){
ans[now]+=node[n].t-preT;
for(preT=node[n].t; n<2*N && preT==node[n].t; n++){
now+=node[n].p;
}
}
for(int n=1;n<=N;n++){
cout<<ans[n]<<" ";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNYXhOPTJlNTsKY29uc3QgaW50IE1heEE9MWU5OwoKc3RydWN0IE5PREV7CglpbnQgdCwgcDsKCU5PREUoaW50IHQ9MCxpbnQgcD0wKTp0KHQpLHAocCl7fQp9IG5vZGVbMipNYXhOXTsKCmJvb2wgY29tcChOT0RFIGxocyxOT0RFIHJocyl7CglyZXR1cm4gbGhzLnQ8cmhzLnQ7Cn0KCmludCBhbnNbTWF4TisxXT17fTsKaW50IG1haW4oKXsKCWludCBOLCBBLCBCOwoJCgljaW4+Pk47Cglmb3IoaW50IG49MDsgbjxOOyBuKz0xKXsKCQljaW4+PkE+PkI7CgkJbm9kZVsgbiBdPU5PREUoICBBLCAxKTsKCQlub2RlW04rbl09Tk9ERShBK0IsLTEpOwoJfQoJc29ydChub2RlLG5vZGUrMipOLGNvbXApOwoJaW50IG5vdz0wOwoJZm9yKGludCBwcmVUPTAsIG49MDsgbjwyKk4gOyl7CgkJYW5zW25vd10rPW5vZGVbbl0udC1wcmVUOwoJCWZvcihwcmVUPW5vZGVbbl0udDsgbjwyKk4gJiYgcHJlVD09bm9kZVtuXS50OyBuKyspewoJCQlub3crPW5vZGVbbl0ucDsKCQl9Cgl9Cglmb3IoaW50IG49MTtuPD1OO24rKyl7CgkJY291dDw8YW5zW25dPDwiICI7Cgl9Cn0=