https://www.ccs.neu.edu/home/lieber/courses/algorithms/cs4800/sp10/lectures/Inclusion-Exclusion%20Principle2.ppt