Working solver. Takes 2.5 minutes to solve 4x4