///|
fn main raise {
  let p = @cutstock.problem(
    [@cutstock.demand("first", "cable", 40, 1)],
    [@cutstock.stock("roll", "cable", 100, 12, 1)],
    kerf=1,
    min_remnant=10,
  ).unwrap()
  let plan = @cutstock.solve(p).unwrap().plan().unwrap()
  let q = @cutstock.rollover(p, plan, [
    @cutstock.demand("second", "cable", 20, 2),
  ]).unwrap()
  let s = @cutstock.solve(q).unwrap()
  assert_eq(s.status(), @cutstock.Optimal)
  assert_eq(@cutstock.audit(q, s.plan().unwrap()).unwrap().cost, 0)
  println(@cutstock.text_report(q, s).unwrap())
}