($h,$w,$k,$p)=glob<>; @f=map[glob],<>; $a[0][1]=1; for$i(0..(1<<$k)-1){ if(unpack("%b*",pack(V,$i))==$p){ for$y(0..$w){ for$x(0..$h){ $a[$y+1][$x+1]= grep(!($i&1<<$_|$f[$_][0]-$x|$f[$_][1]-$y),0..$k-1)?0: $a[$y][$x+1]+$a[$y+1][$x]; } } if($bv<$a[$w+1][$h+1]){ $bv=$a[$w+1][$h+1]; $bi=$i; } } } $,=$/; print$bv%=1e9+7,map$f[$_][2],grep$bi&1<<$_,0..$k-1;