#include using namespace std; typedef long long int lli; #define MAX 100100 #define MOD 666013 // returns a^x mod p lli exponent_(lli a, lli x, lli p) { lli ans = 1; while (x > 0) { if (x % 2 == 1) ans = (ans * a) % p; x /= 2; a = (a * a) % p; } return ans; } lli modular_inverse_(lli a, lli b, lli p) { return ((a % p) * (exponent_(b, p - 2, p) % p)) % p; } lli fact[MAX]; void calculate_factorial() { fact[0] = 1; for (int i = 1; i < MAX; i++) fact[i] = (fact[i - 1] * i) % MOD; } // (n choose r) mod p lli combinatorics_(lli n, lli r, lli p) { return (modular_inverse_(fact[n], (fact[r] * fact[n - r]) % p, p)) % p; } lli stirling(lli n, lli k) { lli ans = 0; for (int j = 0; j <= k; j++) { lli val = (exponent_(j, n, MOD) * combinatorics_(k, j, MOD)) % MOD; if ((k - j) % 2 == 0) ans = (ans + val) % MOD; else ans = (ans - val) % MOD; } // ans = modular_inverse_(ans, fact[k], MOD); return (ans + MOD) % MOD; } int main() { calculate_factorial(); lli N, M; cin >> N >> M; if (N < M) { cout << "0\n"; } lli soldiers = stirling(N, M); lli math = M - 1; for (int i = M - 2; i >= 1; i--) { math = (math * i) % MOD; } cout << (((soldiers * math) % MOD) + MOD) % MOD << "\n"; return 0; }