combinatorics introduction to counting & probability