Source: https://conf.itp.phys.ethz.ch/esi-school/Lecture_notes/intro_with_solutions.pdf