#include #define pb push_back #define f first #define s second #define pii pair #define mp make_pair using namespace std; const int MOD = 666013, MAX = 1e5 + 1; int derangements[MAX]; int exp_log(int nr, int exponent) { int sol = 1; for (int i = 0; (1LL << i) <= exponent; i++) { if (exponent & (1LL << i)) { sol = (1LL * sol * nr) % MOD; } nr = (1LL * nr * nr) % MOD; } return sol; } int main() { int n, m; cin >> n >> m; if (n < m) { cout << 0; return 0; } bool minus = true; long long sol = exp_log(m, n); for (int i = m - 1; i > 0; i--, minus = !minus) { int result = exp_log(i, n); result = (1LL * result * m) % MOD; if (minus) { sol = (MOD + sol - result) % MOD; } else { sol = (sol + result) % MOD; } } derangements[2] = 1; for (int i = 3; i <= m; i++) { derangements[i] = (derangements[i - 1] + derangements[i - 2]) % MOD; derangements[i] = (1LL * (i - 1) * derangements[i]) % MOD; } sol = (1LL * sol * derangements[m]) % MOD; cout << sol; return 0; }