import Data.List m!(a,b)|a>=0,b>=0,a[0..length m]<*>[0..length(m!!0)] m%p=[(p,m!p)|all((m!p<).(m!))$f p] f(x,y)=zip[x+1,x,x,x-1][y,y+1,y-1,y] x m g p|p`elem`g=[]|let=p:filter((/=9).(m!))(f p) m#g|v<-nub$(=<<)(\v->x m(g\\[v])v)g=last$m#v:[g|v==g] b i=product.take 3.reverse.sort.map(length.(i#).pure.fst)$z i main=interact$show.((,).b<*>sum.map((+1).snd).z).map(map$read.pure).lines