https://courses.grainger.illinois.edu/cs576/fa2021/rubio-TP-Modulo-Associativity.pdf