sub t{sprintf('%04b',@_)=~y/01/ w/r& bcgw}sub p{printf"%s%8s$/",t(15-$_),t$_ for@_;print$/}sub r{my($h,$s,%s)=@_;($s^15||p@$h)|r([@$h,$_],$_,$_,1,%s)for grep!$s{$_}&!($s&8&&~$s&$_&7)&!(~$s&8&&$s&~$_&7)&&($z=$s^$_)&8&&(($z&=7)<3|$z==4),15,grep$_%3,1..14}r[0],0,0,1