atcoder#ABC232E. [ABC232E] Rook Path

[ABC232E] Rook Path

配点 : 500500

問題文

HH 行、横 WW 行の H×WH \times W マスからなるグリッドがあります。上から ii 行目、左から jj 列目のマスを (i,j)(i, j) と表します。

はじめ、マス (x1,y1)(x_1, y_1) にルークが置かれており、高橋君は以下の操作を KK 回行います。

  • 現在ルークが置かれているマスと行または列が同じマスにルークを移動させる。ただし、現在ルークが置かれているマスとは異なるマスに移動させる必要がある。

KK 回の操作の後、ルークがマス (x2,y2)(x_2, y_2) に置かれているようにする方法は何通りありますか?答えは非常に大きくなることがあるので、998244353998244353 で割った余りを求めてください。

制約

  • 2H,W1092 \leq H, W \leq 10^9
  • 1K1061 \leq K \leq 10^6
  • 1x1,x2H1 \leq x_1, x_2 \leq H
  • 1y1,y2W1 \leq y_1, y_2 \leq W

入力

入力は以下の形式で標準入力から与えられる。

HH WW KK

x1x_1 y1y_1 x2x_2 y2y_2

出力

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

2 2 2
1 2 2 1
2

以下の 22 通りです。

  • 11 回目の操作でルークをマス (1,2)(1, 2) からマス (1,1)(1, 1) へ動かし、22 回目の操作でルークをマス (1,1)(1, 1) からマス (2,1)(2, 1) に動かす。
  • 11 回目の操作でルークをマス (1,2)(1, 2) からマス (2,2)(2, 2) へ動かし、22 回目の操作でルークをマス (2,2)(2, 2) からマス (2,1)(2, 1) に動かす。
1000000000 1000000000 1000000
1000000000 1000000000 1000000000 1000000000
24922282

998244353998244353 で割った余りを求めなければならないことに注意して下さい。

3 3 3
1 3 3 3
9