Source: https://orca.cf.ac.uk/130184/1/perfect.pdf