#include #include #include #include #include #include #include #include #include using namespace std; long long d[100010]; #define MOD 666013 long long pow_mod(long long x, long long p) { if (!p || !x) return 1; long long pr = 1LL; while (p != 1) { if (p & 1) pr = (pr*x) % MOD, p--; else x = (x*x) % MOD, p = p / 2; } return (pr * x) % MOD; } int main() { int N, M; cin >> N >> M; if (N < M) cout << 0; else { d[1] = 0; d[2] = 1; for (long long i = 3; i <= N; ++i) { d[i] = ((i - 1)*((d[i - 1] + d[i - 2]) % 666013)) % 666013; } long long x = 1; long long res = (pow_mod(M, N) - ((M)*pow_mod(M - 1, N))%MOD) % MOD; cout << (res*d[M] + 6) % MOD; } return 0; }