Combinatorial Reasoning: An Introduction to the Art of Counting