let adjust_size (c, p) cstrs =
  let samplers_c = samplers c cstrs in
  let size_p'_u, size_p'_v =
    List.fold_left
      (fun (size_u, size_v) p'' ->
        (max size_u (size p''.u), lcm size_v (size p''.v)))
      (size p.u, size p.v) samplers_c
  in
  let p' =
    repeat_periodic_pattern
      (increase_prefix p (size_p'_u - size p.u))
      (size_p'_v / size p.v)
  in
  (c, p')