$mod=1e9+7; sub nok{ my($n,$k)=@_; $nok{$n,$k}//=$k==0||$k==$n?1:(nok($n-1,$k)+nok($n-1,$k-1))%$mod; } sub pow{ my($n,$e)=@_; $e==0?1:($e&1?$n:1)*pow($n*$n,$e>>1)%$mod; } sub i{<>=~/\d+/g} ($n,$m)=i; @w=(0,i); for(1..$m){ ($i,$j)=i; push@$i,$j; } for$k(1..$n){ @u=();$u[$k]++; @a=[$k,$w[$k]]; while(@a){ ($l,$s)=@{pop@a}; $t=$w[$l]; if($s>=$t){ for$i(1..$t){ $r+=(-1)**($t-$i)*nok($t,$i)*pow($i,$s); $r%=$mod; } } $s=$t if $s>$t; for(@$l){ if(!$u[$_]++){ push@a,[$_,$s]; } } } } print$r;