public Matrix ToMatrix() { if (Demands.Sum() > Supplies.Sum()) { var difference = Demands.Sum() - Supplies.Sum(); Supplies.Add(difference); } else if (Supplies.Sum() > Demands.Sum()) { var difference = Supplies.Sum() - Demands.Sum(); Demands.Add(difference); } var newMatrix = new Matrix(Supplies.Count, Demands.Count) { Demands = Demands.ToArray(), Supplies = Supplies.ToArray() }; for (int i = 0; i < Rows; i++) { for (int j = 0; j < Columns; j++) { newMatrix[i, j] = new Cell { Value = Array[i][j].Value, State = State.NotAllocated }; } } return(newMatrix); }