Source: http://militzer.berkeley.edu/papers/ice26.pdf