human
PYTHON3 solution for "There are n heroes fighting in the arena. Initially, the i-th hero has a_i health points.

The fight in the arena takes place in several rounds. At the beginning of each round, each alive hero deals 1 damage to all other heroes. Hits of all heroes occur simultaneously. Heroes whose health is less than 1 at the end of the round are considered killed.

If exactly 1 hero remains alive after a certain round, then he is declared the winner. Otherwise, there is no winner.

Your task is to calculate the number of ways to choose the initial health points for each hero a_i, where 1 ≤ a_i ≤ x, so that there is no winner of the fight. The number of ways can be very large, so print it modulo 998244353. Two ways are considered different if at least one hero has a different amount of health. For example, [1, 2, 1] and [2, 1, 1] are different.

Input

The only line contains two integers n and x (2 ≤ n ≤ 500.
1 ≤ x ≤ 500).

Output

Print one integer — the number of ways to choose the initial health points for each hero a_i, where 1 ≤ a_i ≤ x, so that there is no winner of the fight, taken modulo 998244353. 

Examples

Input

2 5

Output

5

Input

3 3

Output

15

Input

5 4

Output

1024

Input

13 37

Output

976890680":



Give me a Python program to print one integer — the number of ways to choose the initial health points for each hero a_i, where 1 ≤ a_i ≤ x, so that there is no winner of the fight, taken modulo 998244353?
assistant
#Here is Python program to print one integer — the number of ways to choose the initial health points for each hero a_i, where 1 ≤ a_i ≤ x, so that there is no winner of the fight, taken modulo 998244353.
 def ncr(n, r, p):
    num = den = 1
    for i in range(r):
        num = (num * (n - i)) % p
        den = (den * (i + 1)) % p
    return (num * pow(den,
            p - 2, p)) % p

n, x = map(int, input().split(" "))
modulus = 998244353
negceil = lambda x: 0 if x < 0 else x
dp = [[-1 for _ in range(2000)] for _ in range(2000)]

mx = 505
fac = [1] * mx
for i in range(1, mx):
    fac[i] = fac[i - 1] * i % modulus
ifac = [1] * 505
ifac[-1] = pow(fac[-1], modulus - 2, modulus)
for i in range(mx - 2, 0, -1):
    ifac[i] = (i + 1) * ifac[i + 1] % modulus
def C(a, b):
    return fac[a] * ifac[a - b] % modulus * ifac[b] % modulus

def solve(rem, thresh):
    prev_thresh = thresh - rem + 1
    global dp
    if rem == 1:
        return 0
    if rem == 0:
        return 1
    if prev_thresh >= x:
        return 0

    if dp[rem][thresh] != -1:
        return dp[rem][thresh]

    dp[rem][thresh] = 0

    for p in range(rem + 1):
        combs = C(rem, p)
        assigns = pow( (min(thresh, x) - prev_thresh), p, modulus)
        """
        thresh + (rem - p - 1)
        sum = n + rem
                 ( - 1 - rem - p)
        """
        dp[rem][thresh] += combs * assigns * solve(rem - p, thresh + (rem - p - 1))
        dp[rem][thresh] %= modulus

    dp[rem][thresh] %= modulus
    return dp[rem][thresh]

print(solve(n, n - 1))