($h,$w,$k,$p)=glob<>; @f=map[glob],<>; for$i(0..(1<<$k)-1){ if(unpack("%b*",pack(V,$i))==$p){ my@a; $a[0][1]=1; $a[$f[$_][1]+1][$f[$_][0]+1]= ~$i&1<<$_ for 0..$k-1; for$y(0..$w){ for$x(0..$h){ $a[$y+1][$x+1]= $a[$y+1][$x+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;