#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; }