https://ring.codingforstudent.com/3-proven-ways-to-reduced-row-echelon-form/