#include #include #define MOD 666013LL using namespace std; long long fact[100010], inv[100010], dp[100010]; long long put (long long a, long long p) { long long rez = 1LL; for (long long i = 0LL; (1LL << i) <= p; i += 1LL) { if ((1LL << i) & p) rez *= a, rez %= MOD; a *= a; a %= MOD; } return rez; } long long comb (long long n, long long k) { return (fact[n] * inv[k] * inv[n - k]) % MOD; } void modulo (long long &a) { a %= MOD; a += MOD; a %= MOD; } int main () { long long n, m; scanf ("%lld %lld", &n, &m); dp[1] = 0LL; dp[2] = 1LL; for (int i = 3; i <= m; ++i) dp[i] = 1LL * (i - 1) * (dp[i - 2] + dp[i - 1]), dp[i] %= MOD; fact[0] = inv[0] = 1LL; for (int i = 1; i <= m; ++i) { fact[i] = 1LL * i * fact[i - 1]; fact[i] %= MOD; inv[i] = put (fact[i], MOD - 2LL); } long long rez = 0LL; for (int i = 0; i < m; ++i) { long long sol = comb (m, i) * put (m - i, n); sol %= MOD; if (i & 1) sol = -sol; rez += sol; modulo (rez); } printf ("%lld\n", (dp[m] * rez) % MOD); return 0; }