#include<bits/stdc++.h>
using namespace std;
void ck(int&a,int b){a=max(a,b);}
#define f(i,x,y) for(int i=x;i<=y;++i)
#define g(i,x,y) for(int i=x;i>=y;--i)
#define MAXN 500
int n,m,l[MAXN],r[MAXN],lsh[MAXN],Ans[MAXN];
int s[MAXN][MAXN],a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN];
map<int,int> mp;
main(){
cin.tie(0)->sync_with_stdio(0);
cin>>n;
f(i,1,n) cin>>l[i]>>r[i],lsh[++m]=l[i],lsh[++m]=(r[i]+=l[i]);
sort(lsh+1,lsh-~m),m=unique(lsh+1,lsh-~m)-(lsh+1);
f(i,1,m) mp[lsh[i]]=i;
f(i,1,n) {
l[i]=mp[l[i]],r[i]=mp[r[i]];
f(j,1,l[i]) f(k,r[i],m) ++s[j][k];
}
f(i,1,m) f(j,1,n) a[i][j]=b[i][j]=0xc0c0c0c0;
f(i,1,m) f(k,1,i) f(j,0,s[1][i]) {
if(j>=s[k][i]) ck(a[i][j],a[k][j-s[k][i]]);
ck(a[i][j],a[k][j]+s[k][i]);
}
g(i,m,1) f(k,i,m) f(j,0,s[i][m]) {
if(j>=s[i][k]) ck(b[i][j],b[k][j-s[i][k]]);
ck(b[i][j],s[i][k]+b[k][j]);
}
int ans=0;
f(j,1,n) ck(ans,min(j,a[m][j]));
cout<<ans<<endl;
f(i,1,m) f(j,i,m) f(x,1,n) f(y,1,n)
ck(c[i][j],min(x+s[i][j]+y,a[i][x]+b[j][y]));
f(i,1,n) {
f(x,1,l[i]) f(y,r[i],m) ck(Ans[i],c[x][y]);
cout<<Ans[i]<<endl;
}
}