WIP
xxxxxxxxxx
using namespace std;
using namespace atcoder;
using mint = modint998244353;
mint solve(int n, vector<int> a) {
vector<int> ct(3);
for (int x : a) ct[x - 1]++;
// 初期の中央値が1の場合
if (ct[0] > ct[1] + ct[2]) return 0;
// 初期の中央値が3の場合
if (ct[2] >= ct[0] + ct[1]) return ct[0] + ct[1];
mint ans = ct[0];
int border = ct[2] - ct[1] + 1;
if (border > 0) ans += (mint)ct[1] * border / (ct[0] + 1);
return ans;
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
cout << solve(n, a).val() << endl;
}
初期の案では整数列 を順列にして、入力を のみとする予定でしたが、自分の力では解けませんでした。