#include <bits/stdc++.h>

using namespace std;

const int Mod = 666013, Nmax = 2e5+5;
typedef long long ll;

ll ans1, ans2, d[Nmax], fact[Nmax], ifact[Nmax];
int n, m, i;

ll power(ll a, int b)
{
    if(!b) return 1;
    if(b&1) return a * power(a*a%Mod, b/2) % Mod;
    return power(a*a%Mod, b/2);
}

ll comb(int n, int k)
{
    if(n<0 || n<k || k<0) return 0;
    return fact[n] * ifact[k] % Mod * ifact[n-k] % Mod;
}

ll compute(int n)
{
    int i;
    d[1] = 0; d[2] = 1;
    for(i=3; i<=n; ++i)
        d[i] = 1LL*(i-1)*(d[i-1] + d[i-2]) % Mod;

    return d[n];
}

ll stirling(int n, int m)
{
    int i;
    ll ans = 0, nr;
    for(i=0; i<=m; ++i)
    {
        nr = comb(m, i) * power(i, n) % Mod;

        if((i-m)%2==0) ans = (ans + nr) % Mod;
        else ans = (ans - nr + Mod) % Mod;
    }

    return ans;
}

int main()
{
    cin >> n >> m;

    if(n<m)
    {
        cout << 0 << '\n';
        return 0;
    }

    fact[0] = ifact[0] = 1;
    for(i=1; i<=n; ++i)
        fact[i] = fact[i-1] * i % Mod;
    ifact[n] = power(fact[n], Mod-2);

    for(i=n-1; i; --i)
        ifact[i] = ifact[i+1] * (i+1) % Mod;

    ans1 = stirling(n, m);
    ans2 = compute(m);

    cout << ans1 * ans2 % Mod << '\n';

    return 0;
}