AT_pakencamp_2021_day2_m Deque and Inversions
Description
[problemUrl]: https://atcoder.jp/contests/pakencamp-2021-day2/tasks/pakencamp_2021_day2_m
正の整数 $ N $ が与えられます。Natsubi くんは、空の数列 $ Q $ を用意したうえで、$ (1,2,\dots,N) $ を並び替えた数列 $ P=(P_1,\ P_2,\ \dots,\ P_N) $ を自由に選んで、以下の一連の操作を $ N $ 回行います。
1. $ P $ の先頭の要素を $ x $ として、$ Q $ の先頭または末尾に $ x $ を追加する。
2. $ P $ から $ x $ を削除する。
Natsubi くんは、最終的な $ Q $ の転倒数が最小となるように適切に操作を行います。
$ P $ として考えられるものは $ N! $ 通りありますが、それらすべてについて操作後の $ Q $ の転倒数の最小値を求め、その総和を $ 998244353 $ で割ったあまりを出力してください。
転倒数とは?$ (1,2,\dots,N) $ を並び替えた数列 $ P'=(P'_1,\ P'_2,\ \dots,\ P'_N) $ に対する転倒数は、$ 1\ \leq\ i\ なる整数\ i,j $ の組であって、$ P'_i\ >\ P'_j $ を満たすものの個数のことを指します。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $
Output Format
答えを $ 1 $ 行に出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 3\ \times\ 10^5 $
- 入力は全て整数
### Sample Explanation 1
例えば、$ P=(3,2,1,4) $ のとき、適切に操作を行うことで $ Q=(1,2,3,4) $ とすることができ、転倒数は $ 0 $ となります。 他の $ P $ についても同様に計算すると、答えは $ 20 $ であることが分かります。
### Sample Explanation 2
原案: \[NatsubiSogan\](https://atcoder.jp/users/NatsubiSogan)