($n,$k)=glob<>; $r=1; for(sort{$a<=>$b}glob<>){ ++$dbg_i; $a=$_|0; if($b&~$a){ die; print 0; exit; } for(1..c($a)- c($b)){ $r=($r*$_)%(1e9+7); } $b=$a; } die if $dbg_i!=$k; die if <>; die if $b>=1<<$n; { 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 }