#include<iostream.h>
int n,p,used[2000];
unsigned long int m;

void f(int n1,int p1,int k);

int main()
{
	unsigned long int r;
	cin>>n>>p;
	if(n==p)
	{
		cout<<1;
		return 0;
	}
	f(n,p,-1);
	r=m%1020847;
	cout<<r;
	return 0;
}

void f(int n1,int p1,int k)
{
	 int i;
	 if(n1==p1)
	 {
		 for(i=0;i<n;i++)
			 if(!used[i]&&i<k)
				 return;
		 m++;
		 return;
	 }
	 if(p1==0)
	 {
		 for(i=0;i<n;i++)
			 if(!used[i]&&i>k)
				 return;
		 m++;
		 return;
	 }
	 for(i=0;i<n;i++)
	 {
		 if(!used[i]&&i<k)
		 {
			 used[i]=1;
			 f(n1-1,p1,i);
			 used[i]=0;
		 }
		 if(!used[i]&&i>k)
		 {
			 used[i]=1;
			 f(n1-1,p1-1,i);
			 used[i]=0;
		 }
	 }
}