#include #define modulo 666013 using namespace std; #define mmax 100005 long long rez, nr[mmax], a, im[mmax], nr2[mmax], fact[mmax]; int n, m; long long putere(int put){ if (put==0) return 1; if (put%2==0){ long long q=putere(put/2); return q*q%modulo; }else return (putere(put-1)*a)%modulo; } long long comb(int n, int k){ return ((fact[n]*im[n-k])%modulo*im[k])%modulo; } int main(){ // freopen("a.in","r",stdin); // freopen("a.out","w",stdout); scanf("%d %d",&n,&m); fact[0]=1; for (long long i=1;i<=m;i++){ fact[i]=(fact[i-1]*i)%modulo; nr[i]=(nr[i-1]+nr[i-2])*(i-1)%modulo; if (i==2) nr[i]=1; a=fact[i]; im[i]=putere(modulo-2); } a=fact[0]; im[0]=putere(modulo-2); for (int M=1;M<=m;M++){ a=M; nr2[M]=putere(n); for (int x=1;x<=M;x++){ nr2[M]-=comb(M,x)*nr2[M-x]%modulo; if (nr2[M]<0) nr2[M]+=modulo; } } printf("%lld",(nr[m]*nr2[m])%modulo); return 0; }