Source: https://www-labs.iro.umontreal.ca/~liubang/files/bliu-www20.pdf