#include <iostream>
#include <cstdio>
#define int long long
using namespace std;
const int N = 405;
const int mod = 998244353;
int n, a[N], b[N], f[N][N][N], Sa, Sb, fac[N], inv[N], A[N][N];
inline int read()
{
	int x = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}
	while(ch >= '0' && ch <= '9') {x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar();}
	return x * f;
}
int ksm(int x, int y)
{
	int res = 1;
	for(; y; y >>= 1, x = x * x % mod)
		if(y & 1) res = res * x % mod;
	return res;
}
signed main()
{
//	freopen(".in", "r", stdin);
//	freopen(".out", "w", stdout);
	n = read();
	for(int i = 1; i <= n; i ++) a[i] = read(), b[i] = read(), Sa += a[i], Sb += b[i];
	f[0][0][0] = -1; fac[0] = 1;
	for(int i = 1; i <= Sb; i ++) fac[i] = fac[i - 1] * i % mod;
	inv[Sb] = ksm(fac[Sb], mod - 2);
	for(int i = Sb - 1; i >= 0; i --) inv[i] = inv[i + 1] * (i + 1) % mod;
	for(int i = 1; i <= n; i ++) for(int j = 0; j <= Sb; j ++) A[i][j] = ((j == 0) ? 1 : (A[i][j - 1] * a[i] % mod));
	for(int i = 1; i <= n; i ++)
		for(int j = 0; j <= Sa; j ++)
			for(int k = 0; k <= Sb; k ++)
			{
				f[i][j][k] = f[i - 1][j][k];
				for(int l = 0; l < b[i]; l ++) if(j >= a[i] && k >= l) f[i][j][k] = (f[i][j][k] - f[i - 1][j - a[i]][k - l] * A[i][l] % mod * inv[l] % mod + mod) % mod;
			}
	int ans = 0;
	for(int i = 0; i <= Sa; i ++) for(int j = 0; j <= Sb; j ++) ans = (ans + f[n][i][j] * Sa % mod * fac[j] % mod * ksm(ksm(i, mod - 2), j + 1) % mod) % mod;
	printf("%lld\n", ans);
	fclose(stdin);
	fclose(stdout);
	return 0;
}
