#include<bits/stdc++.h>
#define cs const
#define pb push_back
using namespace std;
cs int Mod = 1e9 + 7;
int add(int a, int b){ return a + b >= Mod ? a + b - Mod : a + b; }
int dec(int a, int b){ return a - b < 0 ? a - b + Mod : a - b; }
int mul(int a, int b){ return 1ll * a * b % Mod; }
void Add(int &a, int b){ a = add(a,b); }
void Mul(int &a, int b){ a = mul(a,b); }
void Dec(int &a, int b){ a = dec(a,b); }
cs int N = 1e7 + 50;
int n, A, fc[N], ifc[N], iv[N];
int C(int n, int m){ return mul(fc[n],mul(ifc[n-m],ifc[m])); }
void fc_init(int n){
	fc[0]=fc[1]=ifc[0]=ifc[1]=iv[1]=1;
	for(int i=2;i<=n;i++)fc[i]=mul(fc[i-1],i);
	for(int i=2;i<=n;i++)iv[i]=mul(Mod-Mod/i,iv[Mod%i]);
	for(int i=2;i<=n;i++)ifc[i]=mul(ifc[i-1],iv[i]);
}
int calc(int a, int b, int c){ return mul(fc[a+b+c],mul(a,iv[a+b])); }
int main(){
	scanf("%d%d",&n,&A);
	fc_init(n); int ans=0;
	for(int i=1;i<=A;i++)
	for(int j=1,coe;j<=i;j++){
		coe=C(i,j);if((i-j)&1)coe=dec(0,coe);
		Mul(coe,calc(j,n-A,max(0,A-i-1)));
		Add(ans,coe);
	} cout<<ans; return 0;
}