char e[7][6]; Mint f(ll p,ll a0,ll a1,ll a2,ll a3,ll a4,ll a5 :Memoize){ if(a0+a1+a2+a3+a4+a5==0)return 1; Mint z; if(a0&&e[p][0])z+=f(0,a0-1,a1,a2,a3,a4,a5); if(a1&&e[p][1])z+=f(1,a0,a1-1,a2,a3,a4,a5); if(a2&&e[p][2])z+=f(2,a0,a1,a2-1,a3,a4,a5); if(a3&&e[p][3])z+=f(3,a0,a1,a2,a3-1,a4,a5); if(a4&&e[p][4])z+=f(4,a0,a1,a2,a3,a4-1,a5); if(a5&&e[p][5])z+=f(5,a0,a1,a2,a3,a4,a5-1); return z; } { ll@n,@m,@k; rep(m){ ll@u--,@v--; e[u][v]=e[v][u]=1; } rep(i,n){ e[6][i]=1; } wt(f(6,n<1?0:k,n<2?0:k,n<3?0:k,n<4?0:k,n<5?0:k,n<6?0:k)); }