legalmoves function