# test ($n,$k)=glob<>; $r=1; for(sort{$a<=>$b}glob<>){ die if ++$i>$k; $a=$_+0; if($b&~$a){ print 0; exit; } for(1..c($a)- c($b)){ $r=($r*$_)%(1e9+7); } $b=$a; } { for(1..$n- c($b)){ $r=($r*$_)%(1e9+7); } } print $r; sub c { my $v=0; my ($n)=@_; while($n){ $v+=$n&1; $n>>=1; } $v }