AT_bogosortcontest_div1_h Please Insert Coin

Description

縦 $ H $ マス、横 $ W $ マスのグリッドがあります。上から $ i $ 行目、左から $ j $ 列目のマスを $ (i, j) $ とします。 各マス $ (i,j) $ には、そのマスにブロックが配置される時刻を表す整数 $ A_{i,j} $ が書かれています。 時刻は $ 1 $ から $ K = \max(A_{i,j}) $ まで進みます。配列 $ A $ は以下の性質を満たします。 - $ 1 \leq k \leq K $ を満たす任意の整数 $ k $ について、 $ A_{i,j} = k $ となるマスが少なくとも $ 1 $ つ存在する。 - 同じ値 $ k $ を持つマスの集合は、上下左右に連結している。 - ブロックは各列で下から順に積まれる。すなわち、任意の $ 1 \leq i \leq H-1 $ と $ 1 \leq j \leq W $ に対して $ A_{i+1, j} \leq A_{i, j} $ が成り立つ。 ある時刻において、列 $ j $ に積み上がっているブロックの個数を $ h_j $ とします。初期状態ではすべての列で $ h_j = 0 $ です。 soryuusi 君は初期状態において列 $ s $ にいます。 時刻 $ k = 1, 2, \dots, K $ に対して、順に以下のようにゲームが進行します。 1. **soryuusi 君の移動**:soryuusi 君はグリッド内の左右に隣接する列へ $ 1 $ 列ずつ、任意の回数だけ移動することができる(移動せず現在の列に留まることも可能である)。 列 $ x $ から隣接する列 $ y $ へ $ 1 $ 列移動するごとに、その時点でのブロックの高さを用いて $ |h_x - h_y| + 1 $ のスタミナを消費する。 2. **ブロックの配置**: $ A_{i,j} = k $ となるすべてのマスにブロックが配置され、該当する列の $ h_j $ が配置されたブロックの個数分だけそれぞれ増加する。 このとき、soryuusi 君が現在いる列に $ 1 $ つでも新たにブロックが配置された場合、soryuusi 君は押し潰されてゲームオーバーとなる。 時刻 $ K $ のブロックの配置が終了するまで soryuusi 君がゲームオーバーにならずに生き残ることができるか判定し、可能な場合は消費するスタミナの合計の最小値を求めてください。生き残ることが不可能な場合は `-1` を出力してください。 $ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $ 各テストケースは以下の形式で与えられる。 > $ H $ $ W $ $ s $ $ A_{1,1} $ $ A_{1,2} $ $ \dots $ $ A_{1,W} $ $ A_{2,1} $ $ A_{2,2} $ $ \dots $ $ A_{2,W} $ $ \vdots $ $ A_{H,1} $ $ A_{H,2} $ $ \dots $ $ A_{H,W} $

Output Format

答えを合計 $ T $ 行で出力せよ。 $ t $ 行目には、 $ t $ 番目のテストケースについて、消費するスタミナの最小値を出力せよ。ただし、生き残ることが不可能な場合は `-1` を出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ つ目のテストケースについて、soryuusi 君は以下のように行動することで、消費スタミナ $ 10 $ を達成できます。 - $ 4 $ 列目に移動する。 $ (|0 - 0| + 1) + (|0 - 0| + 1) + (|0 - 0| + 1) = 3 $ のスタミナを消費する。 - 時刻 $ 1 $ のブロックが配置される。 - $ 2 $ 列目に移動する。 $ (|0 - 1| + 1) + (|1 - 2| + 1) = 4 $ のスタミナを消費する。 - 時刻 $ 2 $ のブロックが配置される。 - $ 4 $ 列目に移動する。 $ (|2 - 2| + 1) + (|2 - 3| + 1) = 3 $ のスタミナを消費する。 - 時刻 $ 3 $ のブロックが配置される。 消費スタミナ $ 9 $ 以下で生き残ることは不可能なので、消費スタミナの最小値は $ 10 $ です。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_bogosortcontest_div1_h/610e8447d29e746709f9460c9019f7e81a5bb1b53e2fcd7bed5a89ab541a819b.png) $ 2 $ つ目のテストケースについて、soryuusi 君はどのように行動しても、時刻 $ 2 $ のブロックの配置を回避することはできません。したがって、このテストケースに対する出力は `-1` となります。 ### Constraints - $ 1 \leq T \leq 10^5 $ - $ 1 \leq H, W $ - $ H \times W \leq 5 \times 10^5 $ - $ 1 \leq s \leq W $ - $ 1 \leq A_{i,j} \leq H \times W \ (1 \leq i \leq H, 1 \leq j \leq W) $ - $ 1 \leq k \leq K $ を満たす任意の整数 $ k $ について、 $ A_{i,j} = k $ となるマス $ (i,j) $ が少なくとも $ 1 $ つ存在する - $ A_{i,j} = k $ となるマス $ (i,j) $ の集合は、上下左右に連結している - $ A_{i+1, j} \leq A_{i, j} \ (1 \leq i \leq H-1, 1 \leq j \leq W) $ - すべてのテストケースについての $ H \times W $ の総和は $ 5 \times 10^5 $ 以下 - 入力される数値はすべて整数