#include <iostream>
#define MOD 666013

using namespace std;

int deranj(int n)
{
    int dm2 = 0, dm1 = 1, d;
    if(n == 1) return 0;
    else if(n == 2) return 1;
    for(int i = 3; i <= n; i++)
    {
        d = (1LL * (i - 1) * (dm1 + dm2)) % MOD;
        dm2 = dm1;
        dm1 = d;
    }
    return d;
}

void euc(int a, int b, int& x, int& y)
{
    if(!b)
    {
        x = 1;
        y = 0;
        return;
    }
    int x0, y0;
    euc(b, a % b, x0, y0);
    x = y0;
    y = x0 - (a / b) * y0;
}

int inversMod(int a)
{
    int x, y;
    euc(a, MOD, x, y);
    if(x < 0) x += MOD;
    return x;
}

int mpow(int a, int p)
{
    int b = 1;
    while(p)
    {
        if(p & 1) b = (1LL * b * a) % MOD;
        p >>= 1;
        a = (1LL * a * a) % MOD;
    }
    return b;
}

int stirling(int n, int m)
{
    int c = 1;
    int rez = 0;
    for(int i = 0; i < m; i++)
    {
        if(i & 1) rez -= (1LL * c * mpow(m - i, n)) % MOD;
        else rez += (1LL * c * mpow(m - i, n)) % MOD;
        c = (1LL * c * (m - i)) % MOD;
        c = (1LL * c * inversMod(i + 1)) % MOD;
        if(rez < 0) rez += MOD;
    }
    return rez;
}

int main()
{
    int n, m;
    cin>>n>>m;
    int rez = (1LL * stirling(n, m) * deranj(m)) % MOD;
    cout<<rez;
}