Problem:
Score : 500 points

Problem Statement

Count the pairs of length-N sequences consisting of integers between 1 and M (inclusive), A_1, A_2, \cdots, A_{N} and B_1, B_2, \cdots, B_{N}, that satisfy all of the following conditions:

A_i \neq B_i, for every i such that 1\leq i\leq N.

A_i \neq A_j and B_i \neq B_j, for every (i, j) such that 1\leq i < j\leq N.

Since the count can be enormous, print it modulo (10^9+7).

Constraints

1\leq N \leq M \leq 5\times10^5

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N M

Output

Print the count modulo (10^9+7).

Sample Input 1

2 2

Sample Output 1

2

A_1=1,A_2=2,B_1=2,B_2=1 and A_1=2,A_2=1,B_1=1,B_2=2 satisfy the conditions.

Sample Input 2

2 3

Sample Output 2

18

Sample Input 3

141421 356237

Sample Output 3

881613484

Solution in PyPy3 (7.3.0) (judge verdict: Runtime Error)

## coding: UTF-8
MOD = 10**9+7
MAX = 5*(10**5)
N, M = map(int,input().split())



laslas = 0
last = 1
mon = [0, 1]

for i in range(2, MAX+10):
    now = (i-1) * (laslas + last)
    now %= MOD
    mon.append(now)
    laslas = last
    last = now


mpn = 1
now = M
for i in range(N):
    mpn *= now
    mpn %= MOD
    now -= 1

if(M>N):
    m_1pn = 1
    now = M-1
    for i in range(N):
        m_1pn *= now
        m_1pn %= MOD
        now -= 1

if(M>N):
    ans = (mon[N-1] * m_1pn)
    ans %= MOD
    ans *= mpn
    ans %= MOD
else:
    ans = mod[N-1]*mpn
    ans %= MOD
print(ans)