#include #include using namespace std; #define ll long long #define ld long double #define pb push_back #define mp make_pair #define pii pair #define pll pair #define pdd pair #define all(x) (x).begin(), (x).end() #define fi first #define se second const ll mod = 666013; const ll xmax = 100005; ll k, x, n, i, aux, sol, f[xmax], inv[xmax]; ll der[xmax]; ll power(ll a, ll b) { ll r = 1; for (ll i = 1; i <= b; i <<= 1) { if (i & b) { r = (r * a) % mod; } a = (a * a) % mod; } return r; } ll comb(ll n, ll k) { ll r = (f[n] * inv[k]) % mod; r = (r * inv[n - k]) % mod; return r; } int main() { cin.sync_with_stdio(false); int n, x; cin >> n >> x; f[0] = inv[0] = 1; for (i = 1; i <= x; i++) { f[i] = (f[i - 1] * i) % mod; inv[i] = power(f[i], mod - 2); } for (i = 0; i < x; i++) { aux = (comb(x, i) * power(x - i, n)) % mod; if (i & 1) { sol -= aux; if (sol < 0) { sol += mod; } } else { sol += aux; if (sol >= mod) { sol -= mod; } } } der[0] = 1; der[1] = 0; for (int i = 2; i <= x; i++) { der[i] = (1LL * (i - 1) * (der[i - 1] + der[i - 2])) % mod; } sol = (1LL * sol * der[x]) % mod; cout << sol << '\n'; return 0; }