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 Ruby (2.7.1) (judge verdict: Accepted)

N, M = gets.split.map(&:to_i)
MOD = 10**9 + 7

@fct, @inv, @finv = [1, 1], [1, 1], [1, 1]
(2 .. M + N).each do |i|
  @fct[i] = @fct[i - 1]*i % MOD
  @inv[i] = MOD - @inv[MOD % i]*(MOD/i) % MOD
  @finv[i] = @finv[i - 1] * @inv[i] % MOD
end
p = ->(n, k){@fct[n]*@finv[n - k]}
puts (0 .. N).inject(0){|s, k| (s + p[N, k]*@finv[k] * (k.even? ? 1 : -1) * p[M, k] * p[M - k, N - k]**2) % MOD}