For this Question: An array Arr is considered Good if its size is more than 1 and the cost of turning the array into palindrome is <b>less than</b> floor((size of Arr)/2). Here, the cost of changing an element of the array into another element is 1. So, the cost of turning the array [1, 2, 3, 2] into [1, 2, 2, 1] is 2.

For example: An array of size 5 is good if the cost of turning it into palindrome is strictly <b>less than 2</b>.

Given N and M you have to find number of arrays of size N consisting of integers values from 1 to M such that none of its subarray is Good.

As the answer can be huge find the answer modulo 1000000007.The first and the only line of input contains two integers N and M.

Constraints:
1 <= N <= 100000
1 <= M <= 1000000000Print the answer modulo 1000000007.Sample Input 1
2 3

Sample Output 1
6

Explanation: the arrays are:
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]

Sample Input 2
3 5

Sample Output 2
60, I have written this Solution Code: import java.io.*;
import java.util.*;



class Main {
	public static void main (String[] args)throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String line[] = br.readLine().split(" ");

		int n= Integer.parseInt(line[0]);
		int m =Integer.parseInt(line[1]);

		int r = m-n;

		long answer = 1;
		long mod = 1000000007;

		for(int i=m;i>r;i--){
			answer = (answer* i)%mod;

		}
		System.out.println(answer);
	}
}, In this Programming Language: Java, Now tell me if this Code is compilable or not?