Naive 01 answer
Better 02 answer
03
04
Naive 05
06
07
08 with filter