#include using namespace std; const int MOD = 666013; int i, n, m, fact[200005], ans = 1, dp[200005]; long long Pow(long long a, int b) { long long ans = 1; while(b) if(b & 1) ans *= a, ans %= MOD, --b; else a *= a, a %= MOD, b /= 2; return ans; } int comb(int n, int k) { if(n < k || n < 0 || k < 0) return 0; int ans = (1LL * fact[n] * Pow(fact[k], MOD - 2)) % MOD; return (1LL * ans * Pow(fact[n - k], MOD - 2)) % MOD; } int main() { ios_base::sync_with_stdio(0); for(i = fact[0] = 1; i <= 2e5 + 1; ++i) fact[i] = (1LL * fact[i - 1] * i) % MOD; cin >> n >> m; if(n < m) return cout << "0\n", 0; dp[1] = 0; dp[2] = 1; dp[3] = 2; for(i = 4; i <= m; ++i) dp[i] = (1LL * (i - 1) * (dp[i - 1] + dp[i - 2])) % MOD; for(ans = i = 0; i <= m; ++i) { int sgn = (i & 1) ? -1 : 1; ans = (ans + 1LL * sgn * comb(m, i) * Pow(m - i, n)) % MOD; } ans = (1LL * ans * dp[m]) % MOD; cout << ans << '\n'; return 0; }