Source: http://smlab.cs.tau.ac.il/ordi/paper/methodsorder-icpc16.pdf