#include #define maxn 100100 #define mod 666013 typedef long long ll; using namespace std; ll F[maxn],var; ll put(ll a, ll p){ if(p == 0) return 1; if(p == 1) return a; ll pt = put(a,p/2); return (pt*pt*(p%2 ? a : 1))%mod; } ll inv(ll x){ return put(x,mod-2); } ll comb(ll n,ll k){ return ((F[n]*inv(F[k])%mod)*inv(F[n-k]))%mod; } ll N,M; int main(){ F[0] = F[1] = 1; for(int i=2;i> N >> M; for(int k=1;k<=M;k++) var=(var+comb(M,k)*F[M-k]*(k%2 ? 1 : -1))%mod; ll rs = F[M] - var; if(rs<0) rs = (rs + (rs/mod+1)*mod)%mod; ll part = 0; for(int k=0;k<=M;k++) part = (part + comb(M,k)*put(M-k,N)*(k%2 ? -1 : 1))%mod; if(part<0) part = (part + (part/mod+1)*mod)%mod; cout << (rs*part)%mod; }