output_description: Print the count modulo (10^9+7).
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
attempt: import sys
  
  read = sys.stdin.buffer.read
  readline = sys.stdin.buffer.readline
  
  in_n = lambda: int(readline())
  in_nn = lambda: map(int, readline().split())
  in_nl = lambda: list(map(int, readline().split()))
  in_na = lambda: map(int, read().split())
  in_s = lambda: readline().rstrip().decode("utf-8")
  
  
  class CombMod:
  
      def __init__(self, N, MOD=10**9 + 7):
  
          N = N + 1
          inv = [0] * N
          fact = [0] * N
          fact_inv = [0] * N
  
          inv[0] = 0
          inv[1] = 1
          for n in range(2, N):
              q, r = divmod(MOD, n)
              inv[n] = inv[r] * (-q) % MOD
  
          fact[0] = 1
          for n in range(1, N):
              fact[n] = n * fact[n - 1] % MOD
  
          fact_inv[0] = 1
          for n in range(1, N):
              fact_inv[n] = fact_inv[n - 1] * inv[n] % MOD
  
          self.fact = fact
          self.fact_inv = fact_inv
          self.inv = inv
  
      def comb(self, n, r, mod=10**9 + 7):
          return self.fact[n] * self.fact_inv[r] % mod * self.fact_inv[n - r] % mod
  
      def perm(self, n, r, mod=10**9 + 7):
          return self.fact[n] * self.fact_inv[n - r] % mod
  
  
  def main():
  
      N, M = in_nn()
      mod = 10**9 + 7
      c = CombMod(M)
  
      ans = c.perm(M, N)
      for k in range(1, N + 1):
          ans -= (-1) ** (k - 1 % 2) * c.comb(N, k) * c.perm(M - k, N - k)
          ans %= mod
  
      ans *= c.perm(M, N)
      ans %= mod
  
      print(ans)
  
  
  if __name__ == "__main__":
      main()
  
problem_description: 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).
samples: [{"input": "2 2", "output": "2\n    \n\nA_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.\n\n* * *"}, {"input": "2 3", "output": "18\n    \n\n* * *"}, {"input": "141421 356237", "output": "881613484"}]