output_description: Print the count modulo (10^9+7).
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
attempt: n, m = map(int, input().split())
  mod = pow(10, 9) + 7
  x = 0
  y = m - n + 1
  u, v = n, 1
  c, p = 1, 1
  for i in range(n, 0, -1):
      if i % 2 == 1:
          x += (c * p) % mod
      else:
          x -= (c * p) % mod
      x %= mod
      p *= y
      p %= mod
      y += 1
      c = (c * u * pow(v, mod - 2, mod)) % mod
      u -= 1
      v += 1
  p = 1
  for i in range(n):
      p *= m - i
      p %= mod
  ans = (pow(p, 2, mod) - (p * x)) % mod
  print(ans)
  
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"}]