#include <stdio.h>
long long fac[1004],f[1004];
long long Q(int base,int x)
{
if (x==0) return 1;
if (x==1) return base;
long long t=Q(base,x/2);t=t*t;
if ((x&1)==1) t=t*base;
return t%10007;
}
int main()
{
fac[1]=1;
for (int i=2;i<=1000;i++)
{
fac[i]=(fac[i-1]*i)%10007;
// printf("[%d]=%d;",i,fac[i]);
}
int n;
scanf("%d",&n);
printf("%d\n",Q(n,n-2)*fac[n-1]%10007);
}
将问题抽象出来后,就是求完全图最小生成树的方法数,n! * n^(n-2)
练习了一下快速幂