Algorithmic collusion: A critical review