let subranches_numbers revs rev =
  let len = List.length rev.rev_number in
  let subbranches_rev =
    List.filter
      (fun r ->
        len < List.length r.rev_number &&
        (fst (Ocvs_misc.get_n_first_ele len r.rev_number)) = rev.rev_number
      )
      revs
  in
  let l =
    List.fold_left
      (fun acc -> fun r ->
        let (_, remain) = Ocvs_misc.get_n_first_ele len r.rev_number in
        match remain with
        | n :: _ when not (List.mem n acc)-> n :: acc
        | _ -> acc
      )
      []
      subbranches_rev
  in
  List.map (fun n -> rev.rev_number @ [n]) l