#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define ull unsigned long long
#define ll long long
#define TIME chrono::steady_clock::now().time_since_epoch().count()
using namespace std;
using namespace __gnu_pbds;
int n,a[111],b[111],fac[111],ifac[111],A;
ull Hv[111];
mt19937_64 rnd(801);
const int p=998244353;
inline int qpow(int bs,int ex){int ans=1;while(ex){if(ex&1)ans=1ll*ans*bs%p;ex>>=1;bs=1ll*bs*bs%p;}return ans;}
int cnt[111],sa[111],pa[111];ll CNT;
gp_hash_table<ull,int> mp[55];
int dfs(int i,ull H,int S,int sum)
{
++CNT;
if(!i)return S==1;
if(S==1)return 1ll*fac[n-1]*ifac[n-i-1]%p;
auto it=mp[i].find(H);
if(it!=mp[i].end())return it->second;
int cc=n-i-cnt[0];
if(cc>pa[i]||sa[i]<sum)return 0;
int ans=0;
for(int X=S;X;X&=X-1)
{
int u=__lg(X&-X),c=cnt[u];
for(int j=0;j<=min(u,b[i]);++j)
{
--cnt[u];
int vj=max(0,j-a[i]);
++cnt[vj];
++cnt[u-j];
ull nH=H-Hv[u]+Hv[vj]+Hv[u-j];
int nS=S&~(1<<u|1<<vj|1<<u-j);
nS|=!!cnt[u]<<u|!!cnt[vj]<<vj|!!cnt[u-j]<<u-j;
ans=(ans+1ll*c*dfs(i-1,nH,nS,sum+vj-j))%p;
++cnt[u];--cnt[vj];--cnt[u-j];
}
for(int j=1;j<=min(u,b[i]);++j)
{
--cnt[u];
int vj=max(0,j-a[i]);
++cnt[vj];
++cnt[u-j+1];
ull nH=H-Hv[u]+Hv[vj]+Hv[u-j+1];
int nS=S&~(1<<u|1<<vj|1<<u-j+1);
nS|=!!cnt[u]<<u|!!cnt[vj]<<vj|!!cnt[u-j+1]<<u-j+1;
ans=(ans-1ll*c*dfs(i-1,nH,nS,sum+vj-j+1))%p;
++cnt[u];--cnt[vj];--cnt[u-j+1];
}
}
// printf("i:%d S:%d cnt:",i,S);for(int j=0;j<=b[n];++j)printf("%d ",cnt[j]);putchar(10);
// printf("ans:%d\n",ans);
return mp[i][H]=ans;
}
int ans[111];
int main()
{
scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d%d",a+i,b+i);
for(int i=0;i<=100;++i)Hv[i]=rnd();
fac[0]=1;for(int i=1;i<=100;++i)fac[i]=1ll*fac[i-1]*i%p;ifac[100]=qpow(fac[100],p-2);for(int i=99;~i;--i)ifac[i]=1ll*ifac[i+1]*(i+1)%p;
for(int i=0;i<=a[n];++i)ans[i]=fac[n-1];
for(int i=1;i<=n;++i)sa[i]=sa[i-1]+a[i],pa[i]=pa[i-1]+!!a[i];
for(int i=a[n]+1;i<=b[n];++i)
{
++cnt[i-a[n]];
ans[i]=dfs(n-1,Hv[i-a[n]],1<<i-a[n],i-a[n]);
--cnt[i-a[n]];
}
for(int i=0;i<b[n];++i)ans[i]=(ans[i]-ans[i+1])%p;
for(int i=0;i<=b[n];++i)ans[i]=1ll*ans[i]*ifac[n-1]%p;
for(int i=0;i<=b[n];++i)printf("%d ",(ans[i]%p+p)%p);putchar(10);
}