repeat runs copy(rr[ ]until eor end copyrunbegin runs set(rsrc)for : to - do [ : [ : [ :files new("")files set( [ ] [ ] end(*distribute initial runs*level : : [ - : [ - : repeat selectcopyrun until eof or ( - )while ~ eof do select(* [jfirst last item written on [ ]*if [jfirst < first then copyrunif eof then inc( [ ]else copyrun end else copyrun end endfor : to - do [ :iruns set( [ ] [ ]endt[ - : - repeat (*slitiz [ [ - [ - ]* : [ - ] [ - : [ [ - ]:files new("")files set( [ [ - ]] [ [ - ]] )repeat (*merge one run* : for : to - do if [ then dec( [ ]else ta[ : [ ]inc(kend endif then inc( [ - ]else (*merge one real run from [ [ - to [ - ]*repeat mx : min : [ta[ ]firsti : while do : [ta[ ]firstif min then min :xmx : endinc(iendruns copy( [ta[mx]] [ [ - ]])if [ta[mx]eor then ta[mx:ta[ - ]dec(