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
#include <bits/stdc++.h>
using namespace std;

typedef long long int64;
const int MAX = 2e5 + 5;
const int MOD = 1e9 + 7;
int n, k;
int64 f[MAX], inv[MAX];

int64 exp(int64 a, int64 n) {
	int64 ans = 1;
	while(n > 0) {
		if(n % 2LL == 1LL)
			ans = ans * a % MOD;
			
		a = a * a % MOD;
		n /= 2LL;
	}
	
	return ans;
}

int64 comb(int n, int k) {
	int64 ans = f[n] * inv[k] % MOD;
	ans = ans * inv[n - k] % MOD;
	return ans;
}

int main() {
	scanf("%d%d", &n, &k);

	f[0] = inv[0] = 1;
	for(int i = 1; i <= n; i++) {
		f[i] = f[i - 1] * i % MOD;
		inv[i] = exp(f[i], MOD - 2);
	}

	int64 ans = 0;
	for(int x = 0; x <= min(k, n - 1); x++) {
		int64 v = comb(n, x) * comb(n - 1, n - x - 1) % MOD;
		ans = (ans + v) % MOD;
	}

	printf("%lld\n", ans);
	return 0;
}