There is a building with n rooms, numbered 1 to n.

We can move from any room to any other room in the building.

Let us call the following event a move: a person in some room i goes to another room j~ (i \neq j).

Initially, there was one person in each room in the building.

After that, we know that there were exactly k moves happened up to now.

We are interested in the number of people in each of the n rooms now. How many combinations of numbers of people in the n rooms are possible?

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

Constraints

* All values in input are integers.
* 3 \leq n \leq 2 \times 10^5
* 2 \leq k \leq 10^9

Input

Input is given from Standard Input in the following format:


n k


Output

Print the number of possible combinations of numbers of people in the n rooms now, modulo (10^9 + 7).

Examples

Input

3 2


Output

10


Input

200000 1000000000


Output

607923868


Input

15 6


Output

22583772
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		int nmax = 200000;
		int[] fact = new int[nmax + 1];
		fact[0] = 1;
		for (int i = 1; i <= nmax; i++) {
			fact[i] = (int) ((long) fact[i - 1] * i % PRIME);
		}

		Scanner scanner = new Scanner(System.in);

		int n = scanner.nextInt();
		int k = scanner.nextInt();

		int imax = k < n - 1 ? k : n - 1;

		int sum = 0;

		for (int i = 0; i <= imax; i++) {
			long comb = (long) fact[n] * fact[n - 1] % PRIME;
			comb = comb * inverse(fact[i]) % PRIME;
			comb = comb * inverse(fact[i]) % PRIME;
			comb = comb * inverse(fact[n - i]) % PRIME;
			comb = comb * inverse(fact[n - 1 - i]) % PRIME;

			sum = (sum + (int) comb) % PRIME;
		}

		while (sum < 0)
			sum += PRIME;

		System.out.println(sum);
	}

	static int fact(int n) {
		if (n == 1)
			return 1;
		return (int) ((long) n * fact(n - 1) % PRIME);
	}

	static int comb(int n, int k) {
		long numer = 1, denom = 1;
		int l = n - k < k ? n - k : k;

		for (int i = 0; i < l; i++) {
			numer = (numer * (n - i) % PRIME) * (n - i - 1) % PRIME;
			denom = (denom * (i + 1) % PRIME) * (i + 1) % PRIME;
		}

		//		long comb = (long) fact(n) * inverse(fact(k)) % PRIME;
		//		comb = comb * inverse(fact(n - k)) % PRIME;
		return (int) (numer * inverse((int) denom) % PRIME);

	}

	static int inverse(int denom) {
		if (denom == 0)
			return 0;

		int a = PRIME;
		int b = denom;
		int x = 0;
		int y = 1;
		int temp;

		while (a % b != 0) {
			x -= a / b * y;
			temp = x;
			x = y;
			y = temp;
			temp = a % b;
			a = b;
			b = temp;
		}

		//		while (y < 0)
		//			y += PRIME;

		return y;
	}

	static final int PRIME = 1000000007;

}
