Problem: There are well-known formulas: <image>, <image>, <image>. Also mathematicians found similar formulas for higher degrees.

Find the value of the sum <image> modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7).

Input

The only line contains two integers n, k (1 ≤ n ≤ 109, 0 ≤ k ≤ 106).

Output

Print the only integer a — the remainder after dividing the value of the sum by the value 109 + 7.

Examples

Input

4 1


Output

10


Input

4 2


Output

30


Input

4 3


Output

100


Input

4 0


Output

4

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 10;
const int mod = 1e9 + 7;
int n, k, a[maxn], f[maxn], g[maxn];
int fast_pow(int a, int b) {
  int ret = 1;
  for (; b; b >>= 1, a = 1ll * a * a % mod)
    if (b & 1) ret = 1ll * ret * a % mod;
  return ret;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= min(k + 2, n); i++)
    a[i] = (a[i - 1] + fast_pow(i, k)) % mod;
  if (n <= k + 2) {
    printf("%d\n", a[n]);
    return 0;
  }
  int now, ans = 0;
  now = f[0] = g[0] = 1;
  for (int i = 1; i <= k + 2; i++) {
    now = 1ll * now * (n - i) % mod;
    f[i] = 1ll * f[i - 1] * i % mod;
    g[i] = 1ll * -g[i - 1] * i % mod;
  }
  for (int i = 1; i <= k + 2; i++)
    ans = (ans + 1ll * a[i] * now % mod * fast_pow(n - i, mod - 2) % mod *
                     fast_pow(1ll * f[i - 1] * g[k + 2 - i] % mod, mod - 2) %
                     mod) %
          mod;
  ans = (ans + mod) % mod;
  printf("%d\n", ans);
  return 0;
}