#include <bits/stdc++.h> using namespace std; const int Mod = 666013, Nmax = 2e5+5; typedef long long ll; ll ans1, ans2, d[Nmax], fact[Nmax], ifact[Nmax]; int n, m, i; ll power(ll a, int b) { if(!b) return 1; if(b&1) return a * power(a*a%Mod, b/2) % Mod; return power(a*a%Mod, b/2); } ll comb(int n, int k) { if(n<0 || n<k || k<0) return 0; return fact[n] * ifact[k] % Mod * ifact[n-k] % Mod; } ll compute(int n) { int i; d[1] = 0; d[2] = 1; for(i=3; i<=n; ++i) d[i] = 1LL*(i-1)*(d[i-1] + d[i-2]) % Mod; return d[n]; } ll stirling(int n, int m) { int i; ll ans = 0, nr; for(i=0; i<=m; ++i) { nr = comb(m, i) * power(i, n) % Mod; if((i-m)%2==0) ans = (ans + nr) % Mod; else ans = (ans - nr + Mod) % Mod; } return ans; } int main() { cin >> n >> m; if(n<m) { cout << 0 << '\n'; return 0; } fact[0] = ifact[0] = 1; for(i=1; i<=n; ++i) fact[i] = fact[i-1] * i % Mod; ifact[n] = power(fact[n], Mod-2); for(i=n-1; i; --i) ifact[i] = ifact[i+1] * (i+1) % Mod; ans1 = stirling(n, m); ans2 = compute(m); cout << ans1 * ans2 % Mod << '\n'; return 0; }