How to insert elements at different locations of a given list

How about this

myInsert[list_, valuePosList_] := Fold[Insert[#, Sequence @@ #2] &, 
                                       list, 
                                       SortBy[valuePosList, -Last[#] &]
                                      ]

myInsert[list, {{2, 3}, {3, 7}}]
{a, b, 2, c, d, r, m, 3, n}

Look what I found after spelunking:

GroupTheory`PermutationGroups`Private`FoldInsert[
 {a, b, c, d, r, m, n},
 {2, 3}, {3, 7}
 ]

{a, b, 2, c, d, r, 3, m, n}

Well, it is not entirely correct for it does not revert the order of insertion... =/


insertList[list_, valuePosList_] := ReplacePart[
  list,
  Apply[
   Rule[#2, Sequence[#1, list[[#2]]]] &,
   valuePosList
   , {1}
   ]
  ]

Mathematica graphics