AT_abc232_e [ABC232E] Rook Path

Description

[problemUrl]: https://atcoder.jp/contests/abc232/tasks/abc232_e 縦 $ H $ 行、横 $ W $ 行の $ H\ \times\ W $ マスからなるグリッドがあります。上から $ i $ 行目、左から $ j $ 列目のマスを $ (i,\ j) $ と表します。 はじめ、マス $ (x_1,\ y_1) $ にルークが置かれており、高橋君は以下の操作を $ K $ 回行います。 - 現在ルークが置かれているマスと行または列が同じマスにルークを移動させる。ただし、現在ルークが置かれているマスとは異なるマスに移動させる必要がある。 $ K $ 回の操作の後、ルークがマス $ (x_2,\ y_2) $ に置かれているようにする方法は何通りありますか?答えは非常に大きくなることがあるので、$ 998244353 $ で割った余りを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ H $ $ W $ $ K $ $ x_1 $ $ y_1 $ $ x_2 $ $ y_2 $

Output Format

$ K $ 回の操作の後、ルークがマス $ (x_2,\ y_2) $ に置かれているようにする方法の総数を $ 998244353 $ で割った余りを出力せよ。

Explanation/Hint

### 制約 - $ 2\ \leq\ H,\ W\ \leq\ 10^9 $ - $ 1\ \leq\ K\ \leq\ 10^6 $ - $ 1\ \leq\ x_1,\ x_2\ \leq\ H $ - $ 1\ \leq\ y_1,\ y_2\ \leq\ W $ ### Sample Explanation 1 以下の $ 2 $ 通りです。 - $ 1 $ 回目の操作でルークをマス $ (1,\ 2) $ からマス $ (1,\ 1) $ へ動かし、$ 2 $ 回目の操作でルークをマス $ (1,\ 1) $ からマス $ (2,\ 1) $ に動かす。 - $ 1 $ 回目の操作でルークをマス $ (1,\ 2) $ からマス $ (2,\ 2) $ へ動かし、$ 2 $ 回目の操作でルークをマス $ (2,\ 2) $ からマス $ (2,\ 1) $ に動かす。 ### Sample Explanation 2 $ 998244353 $ で割った余りを求めなければならないことに注意して下さい。