Source: https://transp-or.epfl.ch/optimization/slides/10-integer.pdf