Lecture 16 - NP Completeness II & Reductions