-- Given the above definition of solver, what are the solutions for:

constrainedRows :: [(Schema, Int)]
constrainedRows =
   [([ConstrainedTo [7,9], ConstrainedTo [1,3], Unconstrained], 20),  -- 1
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 13),  -- 2
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 20),  -- 3
    (replicate 4 Unconstrained, 25)]
constrainedRows :: [(Schema, Int)]
constrainedRows =
   [([ConstrainedTo [7,9], ConstrainedTo [1,3], Unconstrained], 20),  -- 1
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 13),  -- 2
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 20),  -- 3
    (replicate 4 Unconstrained, 25)]
constrainedRows =
   [([ConstrainedTo [7,9], ConstrainedTo [1,3], Unconstrained], 20),  -- 1
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 13),  -- 2
    ([Unconstrained, ConstrainedTo [8,9], ConstrainedTo [1,3]], 20),  -- 3
    (replicate 4 Unconstrained, 25)]