#include <iostream>
#include <algorithm>
using namespace std;

long long n, m;
long long fact[100100], d[100100], dp[2][100100];

long long comb(long long k, long long n)
{
    return fact[n]%666013/(fact[k]%666013*fact[n-k]%666013)%666013;
}

int main()
{
    int i,j,k, act=0;
    cin>>n>>m;
    d[0]=1;
    fact[0]=fact[1]=1;
    for(i=2; i<=max(n, m); ++i)
    {
        fact[i]=(i%666013*fact[i-1]%666013)%666013;
    }
    for(i=1; i<=m; ++i)
    {
        d[i]=fact[i];
        for(j=1; j<=i; ++j)
            d[i]-=(comb(j, i)%666013*d[i-j]%666013)%666013;
    }
    for(i=1; i<=m; ++i)
        dp[1^act][i]=1;
    for(i=2; i<=m; ++i)
    {
        for(j=i; j<=n; ++j)
        {
            dp[act][j]=0;
            for(k=1; k<=j-i+1; ++k)
                dp[act][j]+=(comb(k, j)%666013*dp[1^act][j-k]%666013)%666013;
        }
        act=1^act;
    }

    cout<<(dp[1^act][n]%666013*d[m]%666013)%666013;
    return 0;
}