#include<bits/stdc++.h>
#define fo(i,a,b)for(int i=a,_e=b;i<=_e;++i)
#define fd(i,a,b)for(int i=b,_e=a;i>=_e;--i)
#define put putchar
#define ll long long
#define add(x,y)(x=((y)+x)%mo)
using namespace std;
const int N=405,mo=998244353;
int n,a[N],b[N],na,nb,s;
int iv[N],vb[N],jc[N],ny[N];
int ans,f[2][N][N][2],o;
int ksm(int x,int y){
	int t=1;
	for(;y;y>>=1,x=(ll)x*x%mo)if(y&1)t=(ll)t*x%mo;
	return t;
}
int main(){
	cin>>n;
	fo(i,1,n)cin>>a[i]>>b[i],s+=a[i];
	jc[0]=1;
	fo(i,1,400)jc[i]=(ll)jc[i-1]*i%mo;
	ny[400]=ksm(jc[400],mo-2);
	fd(i,0,399)ny[i]=(ll)ny[i+1]*(i+1)%mo;
	iv[1]=1;
	fo(i,2,400)iv[i]=mo-(ll)iv[mo%i]*(mo/i)%mo;
	f[0][0][0][0]=1;
	fo(i,1,n){
		o^=1;
		fo(j,0,na)fo(k,0,nb)fo(l,0,1)f[o][j][k][l]=0;
		int v,A=(ll)a[i]*iv[s]%mo,AA=(ll)ny[b[i]-1]*ksm(A,b[i])%mo;
		vb[0]=-1;
		fo(j,1,b[i]-1)vb[j]=(ll)vb[j-1]*iv[j]%mo*A%mo;
		fo(j,0,na)fo(k,0,nb)fo(l,0,1)if(v=f[!o][j][k][l]){
			add(f[o][j+a[i]][k][l],v);
			fo(p,0,b[i]-1)add(f[o][j][k+p][l],(ll)v*vb[p]);
			if(!l)
				add(f[o][j][k+b[i]-1][1],(ll)v*AA);
		}
		na+=a[i];nb+=b[i];
	}
	int v;
	fo(j,0,na){
		int p=(ll)j*iv[s]%mo;
		fo(k,0,nb)if(v=f[o][j][k][1]){
			add(ans,(ll)v*jc[k+1]%mo*ksm(1-p,mo-1-k-2));
		}
	}
	cout<<(ans+mo)%mo;
}
