#include<iostream.h>

int n, p, br, A[2000], U[2000];

void izhod ()
{
	int i, f=1, min=A[n];
	for (i=n-1; i>=1; i--)
		if (A[i]<=min)
		{
			f++;
			min=A[i];
		}
	if (f==p) br++;
}

void perm (int q)
{
   int i;
	if (q>n) izhod ();
	{
		for (i=1; i<=n; i++)
			if (!U[i])
			{
				U[i]=1;
				A[i]=q;
				perm (q+1);
				U[i]=0;
			}
	}

}

int main ()
{
	cin>>n>>p;
	perm (1);
	cout<<br%1020847<<endl;
}