## P ≟ NP

This one is a really beautiful puzzle requiring some background in complexity theory.

### Warm Up

Prove that if P = NP, not only can you determine whether a 3SAT formula has a satisfying assignment in polynomial time, but you can actually find a satisfying assignment in polynomial time.

## The Puzzle

Write an explicit algorithm, such that if P = NP your algorithm solves an NP complete problem (e.g. determines whether a 3SAT formula has a satisfying assignment) in polynomial time. By explicit algorithm I mean that your algorithm must not call a function that you assume to exist if P = NP, but rather an actual complete program that you can run right now!

*Basically by solving this puzzle, you will have at your fingertips the polynomial algorithm for solving all NP complete problems, in case P = NP turns out to be true!*