Solutions by Steve Bresson.