https://cococoding.com/understanding-the-canonical-form-of-a-linear-programming-problem/