#include <bits/stdc++.h>

const int N = 410;
const int moder = 998244353;

int a[N], b[N];
int dp[N][N][2];
int fac[N], inv[N], invf[N];
int prob[N];

void add(int &a, int b, int c){a = (a + 1ll * b * c) % moder;}

int powermod(int a, int exp){
    int ret = 1;
    for ( ; exp > 0; exp >>= 1){
        if (exp & 1){
            ret = 1ll * ret * a % moder;
        }
        a = 1ll * a * a % moder;
    }
    return ret;
}

int main(){
    fac[0] = invf[0] = 1;
    for (int i = 1; i < N; ++ i){
        fac[i] = 1ll * i * fac[i - 1] % moder;
        inv[i] = i == 1 ? 1 : moder - 1ll * (moder / i) * inv[moder % i] % moder;
        invf[i] = 1ll * invf[i - 1] * inv[i] % moder;
    }
    int n;
    scanf("%d", &n);
    int sum = 0;
    for (int i = 0; i < n; ++ i){
        scanf("%d%d", &a[i], &b[i]);
        sum += a[i];
    }
    for (int i = 0; i < n; ++ i){
        prob[i] = 1ll * a[i] * inv[sum] % moder;
    }
    dp[0][0][0] = 1;
    for (int i = 0; i < n; ++ i){
        for (int j = N - 1; j >= 0; -- j){
            for (int k = N - 1; k >= 0; -- k){
                if (k + a[i] >= N){
                    continue;
                }
                for (int u = 0; u < 2; ++ u){
                    int now = dp[j][k][u], coe = prob[i];
                    for (int v = 0; v < b[i] && j + v < N; ++ v){
                        add(dp[j + v][k + a[i]][u ^ 1], now, invf[v]);
                        now = 1ll * now * coe % moder;
                    }
                }
            }
        }
    }
    int ans = 0;
    for (int i = 0; i < N; ++ i){
        for (int j = 1; j <= sum; ++ j){
            for (int k = 0; k < 2; ++ k){
                int p = 1ll * j * inv[sum] % moder;
                int x = i;
                int y = powermod(p, moder - 2);
                ans = (ans + (k == 0 ? -1ll : 1ll) * fac[x] * powermod(y, x + 1) % moder * dp[i][j][k]) % moder;
            }
        }
    }
    ans += ans < 0 ? moder : 0;
    printf("%d\n", ans);
    return 0;
}
