# dpかと思ったが順列組合せだろう # dpには制約数字が大きすぎるし # 入力例1で考える # 最後の狼が誰かでY通り、残る人間が誰かでxCz通り、 # それまでに選ばれるのが(Y-1)+(X-Z)人でその全並びなのでファクトリアル X, Y, Z, W = map(int, input().split()) N = max(X, Y, X+Y) mod = 998244353 # nCrメモ化パッケージ factorial = [1] #0分 inverse = [1] #0分 for i in range(1, N+1): factorial.append(factorial[-1]*i%mod) inverse.append(pow(factorial[-1], mod-2, mod)) def nCr_fast(N, R, MOD): if N < R or R < 0: return 0 elif R == 0 or R == N: return 1 return factorial[N]*inverse[R]*inverse[N-R]%MOD if W == 0: ans = 1 ans *= Y ans *= nCr_fast(X, Z, mod) ans *= factorial[(Y-1)+(X-Z)] ans %= mod print(ans) elif Z == 0: ans = 1 ans *= X ans *= nCr_fast(Y, W, mod) ans *= factorial[(X-1)+(Y-W)] ans %= mod print(ans) #print(factorial[:5])