Cod sursa(job #25050)
#include <stdio.h>
#define MAXN 5128
#define MOD 666013
int N, K, R[MAXN], mod[MAXN];
int I, J, P, res;
void solve(void)
{
int i;
for(mod[0] = 1, i = 1; i <= N; i++)
mod[i] = (i*mod[i-1]) % MOD;
for(i = 1; i <= N; i++)
R[i%K]++;
for(i = 0; i < K; i++)
if(R[i] > P)
P = R[i];
for(i = 0; i < K; i++)
if(R[i] == P)
I++;
else
J++;
res = mod[I];
for(i = 1; i <= I; i++)
res *= mod[P], res %= MOD;
res *= mod[J], res %= MOD;
for(i = 1; i <= J; i++)
res *= mod[P-1], res %= MOD;
}
void read_data(void)
{
scanf("%d %d\n", &N, &K);
}
void write_data(void)
{
printf("%d\n", res);
}
int main(void)
{
freopen("kperm.in", "rt", stdin);
freopen("kperm.out", "wt", stdout);
read_data();
if( ((K-1)*K/2) % K != 0 )
{
printf("0\n");
return 0;
}
solve();
write_data();
return 0;
}