Adding constraints that encode the additional rules is also a little puzzle, eh?
I'll probably work on it later this evening for fun.