#abc243h. [abc243_h]Builder Takahashi (Enhanced version)

[abc243_h]Builder Takahashi (Enhanced version)

問題文

縦横 HtimesWH \\times W マスのグリッドがあります。上から ii 行目、左から jj 列目のマスを (i,j)(i,j) と表します。
各マスの状態は Ci,jC_{i,j} で表されます。各マスの状態は次の 44 つのいずれかです。

  • S : スタート地点。グリッド上にちょうど 11 つだけ存在する。
  • G : ゴール地点。グリッド上にちょうど 11 つだけ存在する。
  • . : 壁を建ててよいマス。
  • O : 壁を建ててはいけないマス。

青木君はスタート地点を出発してグリッド上を移動してゴール地点へ行こうとしています。青木君は (i,j)(i,j) にいるときにマス (i+1,j),(i,j+1),(i1,j),(i,j1)(i+1,j),(i,j+1),(i-1,j),(i,j-1) のいずれかに移動することができます。ただし、グリッドの外に出るような移動や、壁があるマスへの移動を行うことはできません。

高橋君は、青木君が移動を開始する前に壁を建ててよいマスを 11 マス以上選んで壁を建てることで、青木君がどのように移動してもゴール地点へ行くことができないようにすることにしました。ただし、スタート地点およびゴール地点は選ぶことができません。

高橋君は青木君がゴールできないように壁を建てることができますか?さらに、壁を建てられる場合は

  • 青木君がゴールできないように壁を建てるときの最小枚数 nn 、および
  • 最小枚数を達成する壁の立て方が何通りあるかを 998244353998244353 で割ったあまり rr

22 つも合わせて計算してください。

制約

  • 2leqHleq1002 \\leq H \\leq 100
  • 2leqWleq1002 \\leq W \\leq 100
  • Ci,jC_{i,j}S, G, ., O のいずれかである。
  • S, GCi,jC_{i,j} の中でちょうど 11 回だけ登場する。

入力

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

HH WW C1,1C_{1,1}C1,2C_{1,2}dots\\dotsC1,WC_{1,W} C2,1C_{2,1}C2,2C_{2,2}dots\\dotsC2,WC_{2,W} vdots\\vdots CH,1C_{H,1}CH,2C_{H,2}dots\\dotsCH,WC_{H,W}

出力

青木君がゴールできないように壁を建てられる場合は、文字列 Yes 、および問題文中で定義された整数 nn, rr を以下の形式で出力せよ。

Yes nn rr

そうでない場合は No を出力せよ。


入力例 1

4 3
S..
O..
..O
..G

出力例 1

Yes
3 6

壁を建てるマスを # で表すと、最小枚数を達成する壁の建て方は次の 66 通りとなります。

S#.  S.#  S..  S..  S..  S..
O#.  O#.  O##  O.#  O.#  O.#
#.O  #.O  #.O  ##O  .#O  .#O
..G  ..G  ..G  ..G  #.G  .#G

入力例 2

3 2
.G
.O
.S

出力例 2

No

高橋君がどのように壁を建てても青木君はゴール地点へ行くことができます。


入力例 3

2 2
S.
.G

出力例 3

Yes
2 1

入力例 4

10 10
OOO...OOO.
.....OOO.O
OOO.OO.OOO
OOO..O..S.
....O.O.O.
.OO.O.OOOO
..OOOG.O.O
.O.O..OOOO
.O.O.OO...
...O..O..O

出力例 4

Yes
10 12