#include <bits/stdc++.h>
using namespace std;
const int md=666013;
int n,m,i,r;
long long cur,b[100100],f[100100],o[100100],p[100100];
long long pw(long long a, int b) {
  if (b==0) return 1LL;
  if (b&1) return (pw(a,b-1)*a)%md;
  long long x=pw(a,b/2);
  return (x*x)%md;
}
int main() {
  scanf("%d%d",&n,&m);
  if (n<m || m==1) { puts("0"); return 0; }
  for (b[0]=f[0]=o[0]=i=1; i<=n; i++) {
    b[i]=((i-1LL)*(b[i-1]+b[i-2]))%md;
    f[i]=(i*f[i-1])%md;
    o[i]=pw(f[i],md-2);
    p[i]=pw(i,n);
  }
  for (i=1; i<=m; i++) {
    cur=(((f[m]*o[i])%md*o[m-i])%md)*p[i];
    if ((i&1)==(m&1)) r=(r+cur)%md; else r=(r+md-cur%md)%md;
  }
  r=(r*b[m])%md;
  printf("%d\n",r);
  return 0;
}