An introduction to combinatorics and graph theory