let rec concatenate_with_no_copy list1 list2 =
  match list1 with
    [] -> list2
  | head::tail ->
      insert_with_no_copy head
        (concatenate_with_no_copy tail list2)