#include<unordered_map>
#include<algorithm>
#include<stdlib.h>
#include<iostream>
#include<iomanip>
#include<utility>
#include<random>
#include<vector>
#include<cmath>
#include<array>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pa;
const ll N = 5e5 + 10, INF = 0x7fffffffffffffff, MOD = 998244353;
ll t;
ll n, m, k, a[N], f[N], g[N];
ll qm(ll x, ll y) {
ll res = 1;
while (y) {
if (y & 1) {
res = res * x % MOD;
}
y >>= 1;
x = x * x % MOD;
}
return res;
}
ll C(ll m, ll n) {
if (m > n || m < 0 || n < 0)return 0;
else return f[n] * g[n - m] % MOD * g[m] % MOD;
}
void solve() {
cin >> n >> m >> k;
f[0] = g[0] = 1;
for (ll i = 1; i <= n; i++)cin >> a[i];
for (ll i = 1; i <= n; i++) {
f[i] = f[i - 1] * i % MOD;
g[i] = g[i - 1] * qm(i, MOD - 2) % MOD;
}
ll ans = 1;
for (ll i = 1; i <= n; i++) {
ans = ans * C(a[i], n - k) % MOD * qm(C(a[i], n), MOD - 2) % MOD;
}
cout << ans << '\n';
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}/*
*/
还有就是这概率真难想啊,我都是半蒙半猜,要是没有样例解释我该怎么办啊?