#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7, N = 1e6;
int qpow(int a, int b) {
  int res = 1;
  for (; b; b >>= 1, a = 1ll * a * a % P)
    if (b & 1) res = 1ll * res * a % P;
  return res;
}
int n, k, ans, fac, sum;
int g[N + 5];
int main() {
  scanf("%d%d", &n, &k);
  g[0] = fac = 1, ans = n;
  for (int i = 1; i <= n; i++) {
    sum = (sum + g[i - 1]) % P;
    if (i > k) sum = (sum - g[i - k - 1] + P) % P;
    g[i] = 1ll * sum * qpow(i, P - 2) % P;
    ans = (ans - g[i - 1] + P) % P;
    if (i < n) fac = 1ll * fac * i % P;
  }
  printf("%d\n", 1ll * fac * ans % P);
}
