0 determine legal   

do
 recurse 1
 recurse 2
 recurse 3
 takebest 3
 takebest 2
 takebest 1  
loop

takebest 0
