#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<iostream>

using namespace std;

#define x first
#define y second
#define MOD 666013
#define NMAX 100005

int n,m;
int fact[NMAX];

int rid_log(int val, int put){
    if(!put)
        return 1;
    int val2 = rid_log(val, put / 2);
    if(put&1)
        return (long long) val2 * val2 % MOD * val % MOD;
    return (long long)val2 * val2 % MOD;
}

int comb(int n, int k){
    return (long long)fact[n] * rid_log(fact[k], MOD - 2) % MOD * rid_log(fact[n - k], MOD - 2) % MOD;
}

int main (){

    scanf("%d%d",&n,&m);
    if(n < m){
        printf("0\n");
        return 0;
    }
    fact[0] = 1;
    for(int i = 1; i <= max(n,m); i++)
        fact[i] = (long long)fact[i - 1] * i % MOD;
    
    int answer = 0, sign;
    for(int i = m; i >= 1; i--){
        int val = rid_log(i, n);
        if((i&1) == (n&1))
            sign = 1;
        else
            sign = -1;
        answer += (long long)sign * val * comb(m,i) % MOD;
        if(answer < 0)
            answer += MOD;
    }
    answer = (long long)answer * fact[m - 1] % MOD;
    printf("%d\n", answer);
    return 0;
}