#include<bits/stdc++.h>
#define ll long long
#define fr(i,x,y) for(int i=(x);i<=(y);i++)
#define rf(i,x,y) for(int i=(x);i>=(y);i--)
#define frl(i,x,y) for(int i=(x);i<(y);i++)
using namespace std;
const int N=504;
const int p=998244353;
int n,a[N],b[N];
ll f[N][N][N];

void read(int &x){ scanf("%d",&x); }

ll qpow(ll sum,ll n){
	ll ans=1;
	for(;n;n>>=1,sum=sum*sum%p) if (n&1) ans=ans*sum%p;
	return ans;
}

ll mul[N],inv[N];
void init(){
	mul[0]=1;
	frl(i,1,N) mul[i]=mul[i-1]*i%p;
	inv[N-1]=qpow(mul[N-1],p-2);
	rf(i,N-2,0) inv[i]=inv[i+1]*(i+1)%p;
}

void Add(ll &x,ll y){
	x+=y;//x%=p;
	if (x<0) x+=p;
	if (x>=p) x-=p;
}

int main(){
	init();
	read(n);
	fr(i,1,n) read(a[i]),read(b[i]);
	int S=0;
	fr(i,1,n) S+=a[i];
	//S=qpow(S,p-2);
	f[0][0][0]=p-1;
	fr(i,1,n){
		fr(j,0,400) fr(k,0,400) f[i][j][k]=f[i-1][j][k];
		fr(j,0,400)
		 fr(k,0,400)
		  frl(x,0,b[i])
		   if (f[i-1][j][k]) Add(f[i][j+x][k+a[i]],p-f[i-1][j][k]*qpow(a[i],x)%p*inv[x]%p);
	}
	ll ans=0;
	fr(j,0,400)
	 fr(k,1,400)
	  Add(ans,mul[j]*f[n][j][k]%p*qpow(k,p-1-j)%p*qpow(k,p-2)%p*S%p);
	cout<<ans<<endl;
	return 0;
}