#include <bits/stdc++.h>

#define pb push_back
#define f first
#define s second
#define pii pair<int, int>
#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;
}