#include <stdio.h>
#define modul 1020847

int a[2000];

void swap(int *a,int *b)
{ int c=*a;
  *a=*b;
  *b=c;
}

void fill(int n)
{ for (int i=0;i<n;i++) a[i]=i+1;
}

int perm(int n)
{ int i,j;
  i=n-2;
  do
	 { j=n-1;
		while (i<j && a[i]>=a[j]) j--;
		if (i==j) { i--;
						continue;
					 }
		else { swap(&a[i],&a[j]);
				 i++; j=n-1;
				 while (i<j){ swap(&a[i],&a[j]);
								  i++;
								  j--;
								}
				 return 1;
			  }
  } while (i>-1);
  return 0;
}

int groups(int n)
{ int g=1,i,gs=a[0];
  for (i=1;i<n;i++) if (a[i]<gs) { gs=a[i];
												g++;
											 }
  return g;
}

long fact(long n)
{ long i,c=1;
  for (i=2;i<=n;i++) { c*=i; c%=modul;}
  return c;
}

int main(void)
{ int n,p;
  long c=0;
  scanf("%d %d",&n,&p);
  fill(n);
  if (p==1) {printf("%ld\n",fact(n-1));return 0; }
  if (p==n) {printf("1\n"); return 0;}
  if (groups(n)==p) c++;
  while (perm(n)) if (groups(n)==p) { c++; c%=modul;}
  printf("%ld\n",c);
  return 0;
}