package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 998244353
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n, k int
fmt.Fscan(in, &n, &k)
m := n - 1
choose := make([][]int64, m+1)
for i := 0; i <= m; i++ {
choose[i] = make([]int64, i+1)
choose[i][0] = 1
choose[i][i] = 1
for j := 1; j < i; j++ {
choose[i][j] = choose[i-1][j-1] + choose[i-1][j]
if choose[i][j] >= MOD {
choose[i][j] -= MOD
}
}
}
maxE := m * (m - 1) / 2
pow := make([]int64, maxE+1)
dp := make([]int64, m+1)
ndp := make([]int64, m+1)
dp[0] = 1
for t := k; t >= 1; t-- {
pow[0] = 1
base := int64(t)
for e := 1; e <= maxE; e++ {
pow[e] = pow[e-1] * base % MOD
}
for i := 0; i <= m; i++ {
ndp[i] = 0
}
for s := 0; s <= m; s++ {
if dp[s] == 0 {
continue
}
rem := m - s
cur := dp[s]
for c := 0; c <= rem; c++ {
e := c*s + c*(c-1)/2
val := cur * choose[rem][c] % MOD
val = val * pow[e] % MOD
ndp[s+c] += val
if ndp[s+c] >= MOD {
ndp[s+c] -= MOD
}
}
}
dp, ndp = ndp, dp
}
fmt.Fprint(out, dp[m])
}