Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / test.bpl
Size: Mime:
€]q(cpygments.token
_TokenType
qXCommentqX	Multilineq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXPreprocq†q…qq}q(hh	]q…qRqh
hubhhXMultiq†q…qq}q(hh	]q …q!Rq"h
hubhhXHashbangq#†q$…q%q&}q'(hh	]q(…q)Rq*h
hubhhXSingleq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhX
SingleLineq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhXDocq;†q<…q=q>}q?(hh	]q@…qARqBh
hubhhX	DirectiveqC†qD…qEqF}qG(hh	]qH…qIRqJh
hubhhhX
SinglelineqK†qL…qMqN}qO(hh	]qP…qQRqRh
hubhhXPreprocFileqS†qT…qUqV}qW(hh	]qX…qYRqZh
hubhhXSpecialq[†q\…q]q^}q_(hh	]q`…qaRqbh
hube…qcRqdh
h)…qeqf}qg(hh	]qh(hXEscapeqi…qj…qkql}qm(hh	]qn…qoRqph
hfubhXOperatorqq…qr…qsqt}qu(hh	]qv(hhqXDBSqw†qx…qyqz}q{(hh	]q|…q}Rq~h
htubhhqXWordq†q€…qq‚}qƒ(hh	]q„…q…Rq†h
htube…q‡Rqˆh
hfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh	]qŽ(hh‰XTagq†q…q‘q’}q“(hh	]q”…q•Rq–h
hŒubhh‰XEntityq—†q˜…q™qš}q›(hh	]qœhh‰h—hw‡q…qžqŸ}q (hh	]q¡…q¢Rq£h
hšuba…q¤Rq¥h
hŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh	]q«…q¬Rq­h
hŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh	]q³…q´Rqµh
hŒubhh‰XClassq¶†q·…q¸q¹}qº(hh	]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh	]qqÁRqÂh
h¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh	]qȅqÉRqÊh
h¹ube…qËRqÌh
hŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh	]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh	]q؅qÙRqÚh
hÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh	]q߅qàRqáh
hÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh	]qç…qèRqéh
hÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh	]qï…qðRqñh
hÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh	]q÷…qøRqùh
hÐube…qúRqûh
hŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh	]rhh‰hüh͇r…rr}r(hh	]r…rRrh
hÿuba…r	Rr
h
hŒhÍjubhh‰X	Namespacer†r…r
r}r(hh	]r…rRrh
hŒubhh‰XPropertyr†r…rr}r(hh	]r…rRrh
hŒubhh‰XSymbolr†r…rr}r(hh	]r …r!Rr"h
hŒubhh‰XClassesr#†r$…r%r&}r'(hh	]r(…r)Rr*h
hŒubhh‰XPseudor+†r,…r-r.}r/(hh	]r0…r1Rr2h
hŒubhh‰XLabelr3†r4…r5r6}r7(hh	]r8…r9Rr:h
hŒubhh‰hq†r;…r<r=}r>(hh	]r?…r@RrAh
hŒubhh‰XBuiltinrB†rC…rDrE}rF(hh	]rG(hh‰jBj+‡rH…rIrJ}rK(hh	]rL…rMRrNh
jEubhh‰jBXTyperO‡rP…rQrR}rS(hh	]rT…rURrVh
jEube…rWRrXh
hŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh	]r^…r_Rr`h
hŒubhh‰XOtherra†rb…rcrd}re(hh	]rfhh‰jaXMemberrg‡rh…rirj}rk(hh	]rl…rmRrnh
jduba…roRrph
hŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh	]rvhh‰jqhâ‡rw…rxry}rz(hh	]r{…r|Rr}h
jtuba…r~Rrh
hŒhâjyubhh‰jO†r€…rr‚}rƒ(hh	]r„…r…Rr†h
hŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh	]rŒ…rRrŽh
hŒube…rRrh
hfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh	]r–(hj‘ja†r—…r˜r™}rš(hh	]r›…rœRrh
j”ubhj‘XCharrž†rŸ…r r¡}r¢(hh	]r£…r¤Rr¥h
j”ubhj‘XDater¦†r§…r¨r©}rª(hh	]r«…r¬Rr­h
j”ubhj‘XScalarr®†r¯…r°r±}r²(hh	]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh	]r¹…rºRr»h
j±uba…r¼Rr½h
j”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh	]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh	]rÉ…rÊRrËh
jÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
jÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh	]rØ…rÙRrÚh
jÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh	]rß…ràRráh
jÁubhj‘j¾h+‡râ…rãrä}rå(hh	]ræ…rçRrèh
jÁubhj‘j¾ja‡ré…rêrë}rì(hh	]rí…rîRrïh
jÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh	]rõ…röRr÷h
jÁubhj‘j¾hi‡rø…rùrú}rû(hh	]rü…rýRrþh
jÁubhj‘j¾XRegexrÿ‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾XMomentr‡r…r	r
}r(hh	]r…r
Rrh
jÁubhj‘j¾XBooleanr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Characterr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh	]r$…r%Rr&h
jÁubhj‘j¾h;‡r'…r(r)}r*(hh	]r+…r,Rr-h
jÁubhj‘j¾h‰‡r.…r/r0}r1(hh	]r2…r3Rr4h
jÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh	]r:…r;Rr<h
jÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh	]rB…rCRrDh
jÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh	]rJ…rKRrLh
jÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh	]rR…rSRrTh
jÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh	]rZ…r[Rr\h
jÁube…r]Rr^h
j”j5j8jðjójžjÖjj"h;j)jEjHhijúj=j@jÄjÇjajëjÿjh+jäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh	]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh	]rj…rkRrlh
jbubhj‘j_XDecrm‡rn…rorp}rq(hh	]rr…rsRrth
jbubhj‘j_XRadixru‡rv…rwrx}ry(hh	]rz…r{Rr|h
jbubhj‘j_XOctr}‡r~…rr€}r(hh	]r‚…rƒRr„h
jbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jbubhj‘j_hü‡r…rށr}r(hh	]r‘…r’Rr“h
jbubhj‘j_XHexr”‡r•…r–r—}r˜(hh	]r™…ršRr›h
jbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh	]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh	]r§…r¨Rr©h
jŸuba…rªRr«h
jbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh	]r±…r²Rr³h
jbube…r´Rrµh
j”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·h
hfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh	]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh	]rË…rÌRrÍh
j»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh	]rÓ…rÔRrÕh
j»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh	]rÛ…rÜRrÝh
j»ubhj¸XPromptrÞ†rß…ràrá}râ(hh	]rã…räRråh
j»ubhj¸XDeletedræ†rç…rèré}rê(hh	]rë…rìRríh
j»ubhj¸XInsertedrî†rï…rðrñ}rò(hh	]ró…rôRrõh
j»ubhj¸XHeadingrö†r÷…rørù}rú(hh	]rû…rüRrýh
j»ubhj¸XStrongrþ†rÿ…rr}r(hh	]r…rRrh
j»ubhj¸XEmphr†r…rr	}r
(hh	]r…rRr
h
j»ube…rRrh
hfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh	]r…rRrh
hfubhXKeywordr…r…rr}r(hh	]r(hjh†r…rr}r (hh	]r!…r"Rr#h
jubhjj†r$…r%r&}r'(hh	]r(…r)Rr*h
jubhjjO†r+…r,r-}r.(hh	]r/…r0Rr1h
jubhjXPreProcr2†r3…r4r5}r6(hh	]r7…r8Rr9h
jubhjXControlr:†r;…r<r=}r>(hh	]r?…r@RrAh
jubhjj‡†rB…rCrD}rE(hh	]rF…rGRrHh
jubhjj†rI…rJrK}rL(hh	]rM…rNRrOh
jubhjj+†rP…rQrR}rS(hh	]rT…rURrVh
jubhjXDeclarationrW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jubhjXReservedr_†r`…rarb}rc(hh	]rd…reRrfh
jube…rgRrhh
hfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh	]rm…rnRroh
hfubhXTextrp…rq…rrrs}rt(hh	]ru(hjpXRootrv†rw…rxry}rz(hh	]r{…r|Rr}h
jsubhjpj†r~…rr€}r(hh	]r‚…rƒRr„h
jsubhjpXRagr…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jsubhjpX
Whitespacer†rŽ…rr}r‘(hh	]r’…r“Rr”h
jsubhjpXBeerr•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jsubhjpXPunctuationr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jsube…r¥Rr¦h
hfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh	]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
hfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubh#h&hhhhhShVh+h.h[h^hChFh3h6h;h>hhhKhNububX/*r¹†rºhX
 r»†r¼hX*r½†r¾hX Test Boogie rendering
r¿†rÀhX*/rÁ†rÂjX
rÆrÄjjÆrÅjbXconstrƆrÇjX rȆrÉhŒXNrʆrËj©X:r̆rÍjjȆrÎj-XintrφrÐj©X;rцrÒjjÆrÓjXaxiomrÔ†rÕjjȆrÖjŸX0r׆rØjjȆrÙhtX<=rÚ†rÛjjȆrÜhŒjʆrÝj©jцrÞjjÆrßjjÆràjX	procedurerá†râjjȆrãhŒXfoorä†råj©X(ræ†rçj©X)rè†réjjȆrêj©X{rë†rìjjÆríjX    rî†rïjXbreakrð†rñj©jцròjjÆrój©X}rô†rõjjÆröh.XI// array to sort as global array, because partition & quicksort have to 
r÷†røjXvarrù†rújjȆrûhŒXarü†rýj©j̆rþjjȆrÿhtX[r†rj-Xintr†rhtX]r†rjjȆrj-Xintr†rj©jцr	jjÆr
jXvarr†rjjȆr
hŒXoriginalr†rj©j̆rjjȆrhtj†rj-Xintr†rhtj†rjjȆrj-Xintr†rj©jцrjjÆrjXvarr†rjjȆrhŒXpermr†rj©j̆r jjȆr!htj†r"j-Xintr#†r$htj†r%jjȆr&j-Xintr'†r(j©jцr)jjÆr*jjÆr+h.X"// Is array a of length N sorted?
r,†r-jXfunctionr.†r/jjȆr0hŒX	is_sortedr1†r2j©jæ†r3hŒjü†r4j©j̆r5jjȆr6htj†r7j-Xintr8†r9htj†r:jjȆr;j-Xintr<†r=j©X,r>†r?jjȆr@hŒXlrA†rBj©j̆rCjjȆrDj-XintrE†rFj©j>†rGjjȆrHhŒXrrI†rJj©j̆rKjjȆrLj-XintrM†rNj©jè†rOj©j̆rPjjȆrQj-XboolrR†rSjjÆrTj©jë†rUjjÆrVjX    rW†rXj©jæ†rYjXforallrZ†r[jjȆr\hŒXjr]†r^j©j>†r_jjȆr`hŒXkra†rbj©j̆rcjjȆrdj-Xintre†rfjjȆrgj©j̆rhj©j̆rijjȆrjhŒjA†rkjjȆrlhtX<=rm†rnjjȆrohŒj]†rpjjȆrqhtX&&rr†rsjjȆrthŒj]†rujjȆrvhtX<rw†rxjjȆryhŒja†rzjjȆr{htX&&r|†r}jjȆr~hŒja†rjjȆr€htX<=r†r‚jjȆrƒhŒjI†r„jjȆr…htX==>r††r‡jjȆrˆhŒjü†r‰htj†rŠhŒj]†r‹htj†rŒjjȆrhtX<=rކrjjȆrhŒjü†r‘htj†r’hŒja†r“htj†r”j©jè†r•jjÆr–j©jô†r—jjÆr˜jjÆr™h.X// is range a[l:r] unchanged?
rš†r›jXfunctionrœ†rjjȆržhŒXis_unchangedrŸ†r j©jæ†r¡hŒjü†r¢j©j̆r£jjȆr¤htj†r¥j-Xintr¦†r§htj†r¨jjȆr©j-Xintrª†r«j©j>†r¬jjȆr­hŒXbr®†r¯j©j̆r°jjȆr±htj†r²j-Xintr³†r´htj†rµjjȆr¶j-Xintr·†r¸j©j>†r¹jjȆrºhŒjA†r»j©j̆r¼jjȆr½j-Xintr¾†r¿j©j>†rÀjjȆrÁhŒjI†rÂj©j̆rÃjjȆrÄj-XintrņrÆj©jè†rÇj©j̆rÈjjȆrÉj-XboolrʆrËjjȆrÌj©jë†rÍjjÆrÎjX    rφrÐj©jæ†rÑjXforallrÒ†rÓjjȆrÔhŒXirÕ†rÖj©j̆r×jjȆrØj-XintrÙ†rÚjjȆrÛj©j̆rÜj©j̆rÝjjȆrÞhŒjA†rßjjȆràhtX<=rá†râjjȆrãhŒjÕ†räjjȆråhtX&&ræ†rçjjȆrèhŒjÕ†réjjȆrêhtX<=rë†rìjjȆríhŒjI†rîjjȆrïhtX==>rð†rñjjȆròhŒjü†róhtj†rôhŒjÕ†rõhtj†röjjȆr÷htX=rø†rùhtjø†rújjȆrûhŒj®†rühtj†rýhŒjÕ†rþhtj†rÿj©jè†rjX 
r†rj©jô†rjjÆrjjÆrjXfunctionr†rjjȆrhŒXis_permutationr	†r
j©jæ†rhŒjü†rj©j̆r
jjȆrhtj†rj-Xintr†rhtj†rjjȆrj-Xintr†rj©j>†rjjȆrhŒXoriginalr†rj©j̆rjjȆrhtj†rj-Xintr†rhtj†rjjȆr j-Xintr!†r"j©j>†r#jjȆr$hŒXpermr%†r&j©j̆r'jjȆr(htj†r)j-Xintr*†r+htj†r,jjȆr-j-Xintr.†r/j©j>†r0jjȆr1hŒjʆr2j©j̆r3jjȆr4j-Xintr5†r6j©jè†r7j©j̆r8jjȆr9j-Xboolr:†r;jjÆr<j©jë†r=jjÆr>jX    r?†r@j©jæ†rAjXforallrB†rCjjȆrDhŒja†rEj©j̆rFjjȆrGj-XintrH†rIjjȆrJj©j̆rKj©j̆rLjjȆrMjŸj׆rNjjȆrOhtX<=rP†rQjjȆrRhŒja†rSjjȆrThtX&&rU†rVjjȆrWhŒja†rXjjȆrYhtjw†rZjjȆr[hŒjʆr\jjȆr]htX==>r^†r_jjȆr`jŸj׆rajjȆrbhtX<=rc†rdjjȆrehŒXpermrf†rghtj†rhhŒja†rihtj†rjjjȆrkhtX&&rl†rmjjȆrnhŒXpermro†rphtj†rqhŒja†rrhtj†rsjjȆrthtjw†rujjȆrvhŒjʆrwj©jè†rxjjȆryhtX&&rz†r{jjÆr|jX    r}†r~j©jæ†rjXforallr€†rjjȆr‚hŒja†rƒj©j>†r„jjȆr…hŒj]†r†j©j̆r‡jjȆrˆj-Xintr‰†rŠjjȆr‹j©j̆rŒj©j̆rjjȆrŽjŸj׆rjjȆrhtX<=r‘†r’jjȆr“hŒja†r”jjȆr•htX&&r–†r—jjȆr˜hŒja†r™jjȆršhtjw†r›jjȆrœhŒj]†rjjȆržhtX&&rŸ†r jjȆr¡hŒj]†r¢jjȆr£htjw†r¤jjȆr¥hŒjʆr¦jjȆr§htX==>r¨†r©jjȆrªhŒXpermr«†r¬htj†r­hŒja†r®htj†r¯jjȆr°htX!=r±†r²jjȆr³hŒXpermr´†rµhtj†r¶hŒj]†r·htj†r¸j©jè†r¹jjȆrºhtX&&r»†r¼jjÆr½jX    r¾†r¿j©jæ†rÀjXforallrÁ†rÂjjȆrÃhŒja†rÄj©j̆rÅjjȆrÆj-XintrdžrÈjjȆrÉj©j̆rÊj©j̆rËjjȆrÌjŸj׆rÍjjȆrÎhtX<=rφrÐjjȆrÑhŒja†rÒjjȆrÓhtX&&rÔ†rÕjjȆrÖhŒja†r×jjȆrØhtjw†rÙjjȆrÚhŒjʆrÛjjȆrÜhtX==>r݆rÞjjȆrßhŒjü†ràhtj†ráhŒja†râhtj†rãjjȆrähtjø†råhtjø†ræjjȆrçhŒXoriginalrè†réhtj†rêhŒXpermrë†rìhtj†ríhŒja†rîhtj†rïhtj†rðj©jè†rñjjÆròj©jô†rójjÆrôjjÆrõjXfunctionrö†r÷jjȆrøhŒXcountrù†rúj©jæ†rûhŒjü†rüj©j̆rýjjȆrþhtj†rÿj-Xintr†rhtj†rjjȆrj-Xintr†rj©j>†rjjȆrhŒXxr†r	j©j̆r
jjȆrj-Xintr†r
j©j>†rjjȆrhŒjʆrj©j̆rjjȆrj-Xintr†rj©jè†rjjȆrhŒXreturnsr†rjjȆrj©jæ†rj-Xintr†rj©jè†rjjÆrj©jë†rjjȆr jXifr!†r"jjȆr#hŒjʆr$jjȆr%htjø†r&htjø†r'jjȆr(jŸj׆r)jjȆr*jXthenr+†r,jjȆr-jŸj׆r.jjȆr/jXelser0†r1jjȆr2jXifr3†r4jjȆr5hŒjü†r6htj†r7hŒjʆr8htX-r9†r:jŸX1r;†r<htj†r=jjȆr>htjø†r?htjø†r@jjȆrAhŒj†rBjjȆrCjXthenrD†rEjjȆrFhŒXcountrG†rHj©jæ†rIhŒjü†rJj©j>†rKjjȆrLhŒj†rMj©j>†rNjjȆrOhŒjʆrPjjȆrQhtj9†rRjjȆrSjŸj;†rTj©jè†rUjjȆrVhtX+rW†rXjjȆrYjŸj;†rZjjȆr[jXelser\†r]jjȆr^hŒXcountr_†r`j©jæ†rahŒjü†rbj©j>†rcjjȆrdhŒj†rej©j>†rfjjȆrghŒjʆrhhtj9†rijŸj;†rjj©jè†rkjjȆrlj©jô†rmjjÆrnjjÆrojjÆrphX/*rq†rrhX;
function count(a: [int] int, x: int, N: int) returns (int)
{ if N == 0 then 0 else if a[N-1] == x then count(a, x, N - 1) + 1 else count(a, x, N-1) }

function is_permutation(a: [int] int, b: [int] int, l: int, r: int): bool {
  (forall i: int :: l <= i && i <= r ==> count(a, a[i], r+1) == count(b, a[i], r+1))
}
rs†rthX*/ru†rvjjÆrwjjÆrxjX	procedurery†rzjjȆr{hŒX	partitionr|†r}j©jæ†r~hŒjA†rj©j̆r€jjȆrj-Xintr‚†rƒj©j>†r„jjȆr…hŒjI†r†j©j̆r‡jjȆrˆj-Xintr‰†rŠj©j>†r‹jjȆrŒhŒjʆrj©j̆rŽjjȆrj-Xintr†r‘j©jè†r’jjȆr“hŒXreturnsr”†r•jjȆr–j©jæ†r—hŒXpr˜†r™j©j̆ršjjȆr›j-Xintrœ†rj©jè†ržjjÆrŸjX    r †r¡jXmodifiesr¢†r£jjȆr¤hŒjü†r¥j©j>†r¦jjȆr§hŒXpermr¨†r©j©jцrªjjÆr«jX    r¬†r­jXrequiresr®†r¯jjȆr°hŒjʆr±jjȆr²htX>r³†r´jjȆrµjŸj׆r¶j©jцr·jjÆr¸jX    r¹†rºjXrequiresr»†r¼jjȆr½hŒjA†r¾jjȆr¿htX>=rÀ†rÁjjȆrÂjŸj׆rÃjjȆrÄhtX&&rņrÆjjȆrÇhŒjA†rÈjjȆrÉhtjw†rÊjjȆrËhŒjI†rÌjjȆrÍhtX&&rΆrÏjjȆrÐhŒjI†rÑjjȆrÒhtjw†rÓjjȆrÔhŒjʆrÕj©jцrÖjjÆr×jX    r؆rÙjXrequiresrÚ†rÛjjȆrÜj©jæ†rÝj©jæ†rÞhŒjI†rßhtjW†ràjŸj;†ráj©jè†râjjȆrãhtjw†räjjȆråhŒjʆræj©jè†rçjjȆrèhtX==>ré†rêjjȆrëj©jæ†rìjXforallrí†rîjjȆrïhŒja†rðj©j̆rñjjȆròj-Xintró†rôjjȆrõj©j̆röj©j̆r÷jjȆrøj©jæ†rùhŒja†rújjȆrûhtX>=rü†rýjjȆrþhŒjA†rÿjjȆrhtX&&r†rjjȆrhŒja†rjjȆrhtX<=r†rjjȆrhŒjI†r	j©jè†r
jjȆrhtX==>r†r
jjȆrhŒjü†rhtj†rhŒja†rhtj†rjjȆrhtX<=r†rjjȆrhŒjü†rhtj†rhŒjI†rhtjW†rjŸj;†rhtj†rj©jè†rj©jцrjjÆrjX    r †r!jXrequiresr"†r#jjȆr$j©jæ†r%j©jæ†r&hŒjA†r'htj9†r(jŸj;†r)j©jè†r*jjȆr+htX>=r,†r-jjȆr.jŸj׆r/j©jè†r0jjȆr1htX==>r2†r3jjȆr4j©jæ†r5jXforallr6†r7jjȆr8hŒja†r9j©j̆r:jjȆr;j-Xintr<†r=jjȆr>j©j̆r?j©j̆r@jjȆrAj©jæ†rBhŒja†rCjjȆrDhtX>=rE†rFjjȆrGhŒjA†rHjjȆrIhtX&&rJ†rKjjȆrLhŒja†rMjjȆrNhtX<=rO†rPjjȆrQhŒjI†rRj©jè†rSjjȆrThtX==>rU†rVjjȆrWhŒjü†rXhtj†rYhŒja†rZhtj†r[jjȆr\htj³†r]jjȆr^hŒjü†r_htj†r`hŒjA†rahtj9†rbjŸj;†rchtj†rdj©jè†rej©jцrfjjÆrgjjÆrhjX    ri†rjhX/*rk†rlhX3 a is a permutation of the original array original rm†rnhX*/ro†rpjjÆrqjX    rr†rsjXrequiresrt†rujjȆrvhŒXis_permutationrw†rxj©jæ†ryhŒjü†rzj©j>†r{jjȆr|hŒXoriginalr}†r~j©j>†rjjȆr€hŒXpermr†r‚j©j>†rƒjjȆr„hŒjʆr…j©jè†r†j©jцr‡jjÆrˆjjÆr‰jX    rІr‹jXensuresrŒ†rjjȆrŽj©jæ†rjXforallr†r‘jjȆr’hŒja†r“j©j̆r”jjȆr•j-Xintr–†r—jjȆr˜j©j̆r™j©j̆ršjjȆr›j©jæ†rœhŒja†rjjȆržhtX>=rŸ†r jjȆr¡hŒjA†r¢jjȆr£htX&&r¤†r¥jX  r¦†r§hŒja†r¨jjȆr©htX<=rª†r«jjȆr¬hŒj˜†r­jjȆr®j©jè†r¯jjȆr°htX==>r±†r²jjȆr³hŒjü†r´htj†rµhŒja†r¶htj†r·jjȆr¸htX<=r¹†rºjjȆr»hŒjü†r¼htj†r½hŒj˜†r¾htj†r¿j©jè†rÀj©jцrÁjjÆrÂjX    rÆrÄjXensuresrņrÆjjȆrÇj©jæ†rÈjXforallrɆrÊjjȆrËhŒja†rÌj©j̆rÍjjȆrÎj-XintrφrÐjjȆrÑj©j̆rÒj©j̆rÓjjȆrÔj©jæ†rÕhŒja†rÖjjȆr×htj³†rØjjȆrÙhŒj˜†rÚjjȆrÛhtX&&r܆rÝjX  rÞ†rßhŒja†ràjjȆráhtX<=râ†rãjjȆrähŒjI†råjjȆræj©jè†rçjjȆrèhtX==>ré†rêjjȆrëhŒjü†rìhtj†ríhŒja†rîhtj†rïjjȆrðhtj³†rñjjȆròhŒjü†róhtj†rôhŒj˜†rõhtj†röj©jè†r÷j©jцrøjjÆrùjX    rú†rûjXensuresrü†rýjjȆrþhŒj˜†rÿjjȆrhtX>=r†rjjȆrhŒjA†rjjȆrhtX&&r†rjjȆrhŒj˜†r	jjȆr
htX<=r†rjjȆr
hŒjI†rj©jцrjjÆrjX    r†rjXensuresr†rjjȆrhŒXis_unchangedr†rj©jæ†rhŒjü†rj©j>†rjjȆrhŒXoldr†rj©jæ†rhŒjü†rj©jè†r j©j>†r!jjȆr"jŸj׆r#j©j>†r$jjȆr%hŒjA†r&htj9†r'jŸj;†r(j©jè†r)j©jцr*jjÆr+jX    r,†r-jXensuresr.†r/jjȆr0hŒXis_unchangedr1†r2j©jæ†r3hŒjü†r4j©j>†r5jjȆr6hŒXoldr7†r8j©jæ†r9hŒjü†r:j©jè†r;j©j>†r<jjȆr=hŒjI†r>htjW†r?jŸj;†r@j©j>†rAjjȆrBhŒjʆrCj©jè†rDj©jцrEjjÆrFjX    rG†rHjXensuresrI†rJjjȆrKj©jæ†rLj©jæ†rMhŒjI†rNhtjW†rOjŸj;†rPj©jè†rQjjȆrRhtjw†rSjjȆrThŒjʆrUj©jè†rVjjȆrWhtX==>rX†rYjjȆrZj©jæ†r[jXforallr\†r]jjȆr^hŒja†r_j©j̆r`jjȆraj-Xintrb†rcjjȆrdj©j̆rej©j̆rfjjȆrgj©jæ†rhhŒja†rijjȆrjhtX>=rk†rljjȆrmhŒjA†rnjjȆrohtX&&rp†rqjjȆrrhŒja†rsjjȆrthtX<=ru†rvjjȆrwhŒjI†rxj©jè†ryjjȆrzhtX==>r{†r|jjȆr}hŒjü†r~htj†rhŒja†r€htj†rjjȆr‚htX<=rƒ†r„jjȆr…hŒjü†r†htj†r‡hŒjI†rˆhtjW†r‰jŸj;†rŠhtj†r‹j©jè†rŒe(j©jцrjjÆrŽjX    r†rjXensuresr‘†r’jjȆr“j©jæ†r”j©jæ†r•hŒjA†r–htj9†r—jŸj;†r˜j©jè†r™jjȆršhtX>=r›†rœjjȆrjŸj׆ržj©jè†rŸjjȆr htX==>r¡†r¢jjȆr£j©jæ†r¤jXforallr¥†r¦jjȆr§hŒja†r¨j©j̆r©jjȆrªj-Xintr«†r¬jjȆr­j©j̆r®j©j̆r¯jjȆr°j©jæ†r±hŒja†r²jjȆr³htX>=r´†rµjjȆr¶hŒjA†r·jjȆr¸htX&&r¹†rºjjȆr»hŒja†r¼jjȆr½htX<=r¾†r¿jjȆrÀhŒjI†rÁj©jè†rÂjjȆrÃhtX==>rĆrÅjjȆrÆhŒjü†rÇhtj†rÈhŒja†rÉhtj†rÊjjȆrËhtj³†rÌjjȆrÍhŒjü†rÎhtj†rÏhŒjA†rÐhtj9†rÑjŸj;†rÒhtj†rÓj©jè†rÔj©jцrÕjjÆrÖjjÆr×jX    r؆rÙhX/*rÚ†rÛhX3 a is a permutation of the original array original r܆rÝhX*/rÞ†rßjjÆràjX    rá†râjXensuresrã†räjjȆråhŒXis_permutationræ†rçj©jæ†rèhŒjü†réj©j>†rêjjȆrëhŒXoriginalrì†ríj©j>†rîjjȆrïhŒXpermrð†rñj©j>†ròjjȆróhŒjʆrôj©jè†rõj©jцröjjÆr÷j©jë†røjjÆrùjX    rú†rûjXvarrü†rýjjȆrþhŒjÕ†rÿj©j̆r	jjȆr	j-Xintr	†r	j©jцr	jjÆr	jX    r	†r	jXvarr	†r		jjȆr
	hŒXsvr	†r	j©j̆r
	jjȆr	j-Xintr	†r	j©jцr	jjÆr	jX    r	†r	jXvarr	†r	jjȆr	hŒXpivotr	†r	j©j̆r	jjȆr	j-Xintr	†r	j©jцr	jjÆr	jX    r 	†r!	jXvarr"	†r#	jjȆr$	hŒXtmpr%	†r&	j©j̆r'	jjȆr(	j-Xintr)	†r*	j©jцr+	jjÆr,	jjÆr-	jX    r.	†r/	hŒjÕ†r0	jjȆr1	htX:=r2	†r3	jjȆr4	hŒjA†r5	j©jцr6	jjÆr7	jX    r8	†r9	hŒXsvr:	†r;	jjȆr<	htX:=r=	†r>	jjȆr?	hŒjA†r@	j©jцrA	jjÆrB	jX    rC	†rD	hŒXpivotrE	†rF	jjȆrG	htX:=rH	†rI	jjȆrJ	hŒjü†rK	htj†rL	hŒjI†rM	htj†rN	j©jцrO	jjÆrP	jjÆrQ	jX    rR	†rS	jXwhilerT	†rU	jjȆrV	j©jæ†rW	hŒjÕ†rX	jjȆrY	htjw†rZ	jjȆr[	hŒjI†r\	j©jè†r]	jjÆr^	jX        r_	†r`	jX	invariantra	†rb	jjȆrc	hŒjÕ†rd	jjȆre	htX<=rf	†rg	jjȆrh	hŒjI†ri	jjȆrj	htX&&rk	†rl	jjȆrm	hŒjÕ†rn	jjȆro	htX>=rp	†rq	jjȆrr	hŒjA†rs	j©jцrt	jjÆru	jX        rv	†rw	jX	invariantrx	†ry	jjȆrz	hŒXsvr{	†r|	jjȆr}	htX<=r~	†r	jjȆr€	hŒjÕ†r	jjȆr‚	htX&&rƒ	†r„	jjȆr…	hŒXsvr†	†r‡	jjȆrˆ	htX>=r‰	†rŠ	jjȆr‹	hŒjA†rŒ	j©jцr	jjÆrŽ	jX        r	†r	jX	invariantr‘	†r’	jjȆr“	hŒXpivotr”	†r•	jjȆr–	htjø†r—	htjø†r˜	jjȆr™	hŒjü†rš	htj†r›	hŒjI†rœ	htj†r	j©jцrž	jjÆrŸ	jX        r 	†r¡	jX	invariantr¢	†r£	jjȆr¤	j©jæ†r¥	jXforallr¦	†r§	jjȆr¨	hŒja†r©	j©j̆rª	jjȆr«	j-Xintr¬	†r­	jjȆr®	j©j̆r¯	j©j̆r°	jjȆr±	j©jæ†r²	hŒja†r³	jjȆr´	htX>=rµ	†r¶	jjȆr·	hŒjA†r¸	jjȆr¹	htX&&rº	†r»	jX  r¼	†r½	hŒja†r¾	jjȆr¿	htjw†rÀ	jjȆrÁ	hŒXsvrÂ	†rÃ	j©jè†rÄ	jjȆrÅ	htX==>rÆ	†rÇ	jjȆrÈ	hŒjü†rÉ	htj†rÊ	hŒja†rË	htj†rÌ	jjȆrÍ	htX<=rÎ	†rÏ	jjȆrÐ	hŒXoldrÑ	†rÒ	j©jæ†rÓ	hŒjü†rÔ	htj†rÕ	hŒjI†rÖ	htj†r×	j©jè†rØ	j©jè†rÙ	j©jцrÚ	jjÆrÛ	jX        rÜ	†rÝ	jX	invariantrÞ	†rß	jjȆrà	j©jæ†rá	jXforallrâ	†rã	jjȆrä	hŒja†rå	j©j̆ræ	jjȆrç	j-Xintrè	†ré	jjȆrê	j©j̆rë	j©j̆rì	jjȆrí	j©jæ†rî	hŒja†rï	jjȆrð	htX>=rñ	†rò	jjȆró	hŒXsvrô	†rõ	jjȆrö	htX&&r÷	†rø	jX  rù	†rú	hŒja†rû	jjȆrü	htjw†rý	jjȆrþ	hŒjÕ†rÿ	j©jè†r
jjȆr
htX==>r
†r
jjȆr
hŒjü†r
htj†r
hŒja†r
htj†r
jjȆr	
htj³†r

jjȆr
hŒXoldr
†r
j©jæ†r
hŒjü†r
htj†r
hŒjI†r
htj†r
j©jè†r
j©jè†r
j©jцr
jjÆr
jjÆr
jX        r
†r
hX/*r
†r
hX3 a is a permutation of the original array original r
†r
hX*/r
†r
jjÆr 
jX        r!
†r"
jX	invariantr#
†r$
jjȆr%
hŒXis_permutationr&
†r'
j©jæ†r(
hŒjü†r)
j©j>†r*
jjȆr+
hŒXoriginalr,
†r-
j©j>†r.
jjȆr/
hŒXpermr0
†r1
j©j>†r2
jjȆr3
hŒjʆr4
j©jè†r5
j©jцr6
jjÆr7
jjÆr8
jX        r9
†r:
jX	invariantr;
†r<
jjȆr=
hŒXis_unchangedr>
†r?
j©jæ†r@
hŒjü†rA
j©j>†rB
jjȆrC
hŒXoldrD
†rE
j©jæ†rF
hŒjü†rG
j©jè†rH
j©j>†rI
jjȆrJ
jŸj׆rK
j©j>†rL
jjȆrM
hŒjA†rN
htj9†rO
jŸj;†rP
j©jè†rQ
j©jцrR
jjÆrS
jX        rT
†rU
jX	invariantrV
†rW
jjȆrX
hŒXis_unchangedrY
†rZ
j©jæ†r[
hŒjü†r\
j©j>†r]
jjȆr^
hŒXoldr_
†r`
j©jæ†ra
hŒjü†rb
j©jè†rc
j©j>†rd
jjȆre
hŒjI†rf
htjW†rg
jŸj;†rh
j©j>†ri
jjȆrj
hŒjʆrk
j©jè†rl
j©jцrm
jjÆrn
jX        ro
†rp
jX	invariantrq
†rr
jjȆrs
j©jæ†rt
j©jæ†ru
hŒjI†rv
htjW†rw
jŸj;†rx
j©jè†ry
jjȆrz
htjw†r{
jjȆr|
hŒjʆr}
j©jè†r~
jjȆr
htX==>r€
†r
jjȆr‚
j©jæ†rƒ
jXforallr„
†r…
jjȆr†
hŒja†r‡
j©j̆rˆ
jjȆr‰
j-XintrŠ
†r‹
jjȆrŒ
j©j̆r
j©j̆rŽ
jjȆr
j©jæ†r
hŒja†r‘
jjȆr’
htX>=r“
†r”
jjȆr•
hŒjA†r–
jjȆr—
htX&&r˜
†r™
jjȆrš
hŒja†r›
jjȆrœ
htX<=r
†rž
jjȆrŸ
hŒjI†r 
j©jè†r¡
jjȆr¢
htX==>r£
†r¤
jjȆr¥
hŒjü†r¦
htj†r§
hŒja†r¨
htj†r©
jjȆrª
htX<=r«
†r¬
jjȆr­
hŒjü†r®
htj†r¯
hŒjI†r°
htjW†r±
jŸj;†r²
htj†r³
j©jè†r´
j©jцrµ
jjÆr¶
jX        r·
†r¸
jX	invariantr¹
†rº
jjȆr»
j©jæ†r¼
j©jæ†r½
hŒjA†r¾
htj9†r¿
jŸj;†rÀ
j©jè†rÁ
jjȆrÂ
htX>=rÃ
†rÄ
jjȆrÅ
jŸj׆rÆ
j©jè†rÇ
jjȆrÈ
htX==>rÉ
†rÊ
jjȆrË
j©jæ†rÌ
jXforallrÍ
†rÎ
jjȆrÏ
hŒja†rÐ
j©j̆rÑ
jjȆrÒ
j-XintrÓ
†rÔ
jjȆrÕ
j©j̆rÖ
j©j̆r×
jjȆrØ
j©jæ†rÙ
hŒja†rÚ
jjȆrÛ
htX>=rÜ
†rÝ
jjȆrÞ
hŒjA†rß
jjȆrà
htX&&rá
†râ
jjȆrã
hŒja†rä
jjȆrå
htX<=ræ
†rç
jjȆrè
hŒjI†ré
j©jè†rê
jjȆrë
htX==>rì
†rí
jjȆrî
hŒjü†rï
htj†rð
hŒja†rñ
htj†rò
jjȆró
htj³†rô
jjȆrõ
hŒjü†rö
htj†r÷
hŒjA†rø
htj9†rù
jŸj;†rú
htj†rû
j©jè†rü
j©jцrý
jjÆrþ
jX    rÿ
†rj©jë†rjjÆrjX        r†rjXifr†rjjȆrj©jæ†rjjȆr	hŒjü†r
htj†rhŒjÕ†rhtj†r
jjȆrhtX<=r†rjjȆrhŒXpivotr†rj©jè†rjjȆrj©jë†rjjÆrjX            r†rhŒXtmpr†rjjȆrhtX:=r†rjjȆrhŒjü†r htj†r!hŒjÕ†r"htj†r#j©jцr$jjȆr%hŒjü†r&htj†r'hŒjÕ†r(htj†r)jjȆr*htX:=r+†r,jjȆr-hŒjü†r.htj†r/hŒXsvr0†r1htj†r2j©jцr3jjȆr4hŒjü†r5htj†r6hŒXsvr7†r8htj†r9jjȆr:htX:=r;†r<jjȆr=hŒXtmpr>†r?j©jцr@jjÆrAjX            rB†rChŒXtmprD†rEjjȆrFhtX:=rG†rHjjȆrIhŒXpermrJ†rKhtj†rLhŒjÕ†rMhtj†rNj©jцrOjX  rP†rQhŒXpermrR†rShtj†rThŒjÕ†rUhtj†rVjjȆrWhtX:=rX†rYjjȆrZhŒXpermr[†r\htj†r]hŒXsvr^†r_htj†r`j©jцrajX  rb†rchŒXpermrd†rehtj†rfhŒXsvrg†rhhtj†rijjȆrjhtX:=rk†rljjȆrmhŒXtmprn†roj©jцrpjjÆrqjX            rr†rshŒXsvrt†rujjȆrvhtX:=rw†rxjjȆryhŒXsvrz†r{jjȆr|htjW†r}jŸj;†r~j©jцrjjÆr€jX        r†r‚j©jô†rƒjjÆr„jX        r…†r†hŒjÕ†r‡jjȆrˆhtX:=r‰†rŠjjȆr‹hŒjÕ†rŒjjȆrhtjW†rŽjjȆrjŸj;†rj©jцr‘jjÆr’jX    r“†r”j©jô†r•jjÆr–jjÆr—jX    r˜†r™h.X//swap
rš†r›jX    rœ†rhŒXtmprž†rŸjjȆr htX:=r¡†r¢jjȆr£hŒjü†r¤htj†r¥hŒjÕ†r¦htj†r§j©jцr¨jjȆr©hŒjü†rªhtj†r«hŒjÕ†r¬htj†r­jjȆr®htX:=r¯†r°jjȆr±hŒjü†r²htj†r³hŒXsvr´†rµhtj†r¶j©jцr·jjȆr¸hŒjü†r¹htj†rºhŒXsvr»†r¼htj†r½jjȆr¾htX:=r¿†rÀjjȆrÁhŒXtmpr†rÃj©jцrÄjjÆrÅjX    rƆrÇhŒXtmprȆrÉjjȆrÊhtX:=rˆrÌjjȆrÍhŒXpermrΆrÏhtj†rÐhŒjÕ†rÑhtj†rÒj©jцrÓjX  rÔ†rÕhŒXpermrÖ†r×htj†rØhŒjÕ†rÙhtj†rÚjjȆrÛhtX:=r܆rÝjjȆrÞhŒXpermr߆ràhtj†ráhŒXsvrâ†rãhtj†räj©jцråjX  ræ†rçhŒXpermrè†réhtj†rêhŒXsvrë†rìhtj†ríjjȆrîhtX:=rï†rðjjȆrñhŒXtmprò†rój©jцrôjjÆrõjjÆröjX    r÷†røhŒj˜†rùjjȆrúhtX:=rû†rüjjȆrýhŒXsvrþ†rÿj©jцrjjÆrj©jô†rjjÆrjjÆrjjÆrjX	procedurer†rjjȆrhŒX	quicksortr	†r
j©jæ†rhŒjA†rj©j̆r
jjȆrj-Xintr†rj©j>†rjjȆrhŒjI†rj©j̆rjjȆrj-Xintr†rj©j>†rjjȆrhŒjʆrj©j̆rjjȆrj-Xintr†rj©jè†rjjÆr jX    r!†r"jXmodifiesr#†r$jjȆr%hŒjü†r&j©j>†r'jjȆr(hŒXpermr)†r*j©jцr+jjÆr,jjÆr-jX    r.†r/jXrequiresr0†r1jjȆr2hŒjʆr3jjȆr4htj³†r5jjȆr6jŸj׆r7j©jцr8jjÆr9jX    r:†r;jXrequiresr<†r=jjȆr>hŒjA†r?jjȆr@htX>=rA†rBjjȆrCjŸj׆rDjjȆrEhtX&&rF†rGjjȆrHhŒjA†rIjjȆrJhtjw†rKjjȆrLhŒjI†rMjjȆrNhtX&&rO†rPjjȆrQhŒjI†rRjjȆrShtjw†rTjjȆrUhŒjʆrVj©jцrWjjÆrXjX    rY†rZjXrequiresr[†r\jjȆr]j©jæ†r^j©jæ†r_hŒjI†r`htjW†rajŸj;†rbj©jè†rcjjȆrdhtjw†rejjȆrfhŒjʆrgj©jè†rhjjȆrihtX==>rj†rkjjȆrlj©jæ†rmjXforallrn†rojjȆrphŒja†rqj©j̆rrjjȆrsj-Xintrt†rujjȆrvj©j̆rwj©j̆rxjjȆryj©jæ†rzhŒja†r{jjȆr|htX>=r}†r~jjȆrhŒjA†r€jjȆrhtX&&r‚†rƒjjȆr„hŒja†r…jjȆr†htX<=r‡†rˆjjȆr‰hŒjI†rŠj©jè†r‹jjȆrŒhtX==>r†rŽjjȆrhŒjü†rhtj†r‘hŒja†r’htj†r“jjȆr”htX<=r•†r–jjȆr—hŒjü†r˜htj†r™hŒjI†ršhtjW†r›jŸj;†rœhtj†rj©jè†ržj©jцrŸjjÆr jX    r¡†r¢jXrequiresr£†r¤jjȆr¥j©jæ†r¦j©jæ†r§hŒjA†r¨htj9†r©jŸj;†rªj©jè†r«jjȆr¬htX>=r­†r®jjȆr¯jŸj׆r°j©jè†r±jjȆr²htX==>r³†r´jjȆrµj©jæ†r¶jXforallr·†r¸jjȆr¹hŒja†rºj©j̆r»jjȆr¼j-Xintr½†r¾jjȆr¿j©j̆rÀj©j̆rÁjjȆrÂj©jæ†rÃhŒja†rÄjjȆrÅhtX>=rÆ†rÇjjȆrÈhŒjA†rÉjjȆrÊhtX&&rË†rÌjjȆrÍhŒja†rÎjjȆrÏhtX<=rÐ†rÑjjȆrÒhŒjI†rÓj©jè†rÔjjȆrÕhtX==>rÖ†r×jjȆrØhŒjü†rÙhtj†rÚhŒja†rÛhtj†rÜjjȆrÝhtj³†rÞjjȆrßhŒjü†ràhtj†ráhŒjA†râhtj9†rãjŸj;†rähtj†råj©jè†ræj©jцrçjjÆrèjjÆréjX    rê†rëhX/*rì†ríhX3 a is a permutation of the original array original rî†rïhX*/rð†rñjjÆròjX    ró†rôjXrequiresrõ†röjjȆr÷hŒXis_permutationrø†rùj©jæ†rúhŒjü†rûj©j>†rüjjȆrýhŒXoriginalrþ†rÿj©j>†r
jjȆr
hŒXpermr
†r
j©j>†r
jjȆr
hŒjʆr
j©jè†r
j©jцr
jjÆr	
jjÆr

jX    r
†r
jXensuresr

†r
jjȆr
j©jæ†r
j©jæ†r
hŒjI†r
htjW†r
jŸj;†r
j©jè†r
jjȆr
htjw†r
jjȆr
hŒjʆr
j©jè†r
jjȆr
htX==>r
†r
jjȆr
j©jæ†r
jXforallr 
†r!
jjȆr"
hŒja†r#
j©j̆r$
jjȆr%
j-Xintr&
†r'
jjȆr(
j©j̆r)
j©j̆r*
jjȆr+
j©jæ†r,
hŒja†r-
jjȆr.
htX>=r/
†r0
jjȆr1
hŒjA†r2
jjȆr3
htX&&r4
†r5
jjȆr6
hŒja†r7
jjȆr8
htX<=r9
†r:
jjȆr;
hŒjI†r<
j©jè†r=
jjȆr>
htX==>r?
†r@
jjȆrA
hŒjü†rB
htj†rC
hŒja†rD
htj†rE
jjȆrF
htX<=rG
†rH
jjȆrI
hŒjü†rJ
htj†rK
hŒjI†rL
htjW†rM
jŸj;†rN
htj†rO
j©jè†rP
j©jцrQ
jjÆrR
jX    rS
†rT
jXensuresrU
†rV
jjȆrW
j©jæ†rX
j©jæ†rY
hŒjA†rZ
htj9†r[
jŸj;†r\
j©jè†r]
jjȆr^
htX>=r_
†r`
e(jjȆra
jŸj׆rb
j©jè†rc
jjȆrd
htX==>re
†rf
jjȆrg
j©jæ†rh
jXforallri
†rj
jjȆrk
hŒja†rl
j©j̆rm
jjȆrn
j-Xintro
†rp
jjȆrq
j©j̆rr
j©j̆rs
jjȆrt
j©jæ†ru
hŒja†rv
jjȆrw
htX>=rx
†ry
jjȆrz
hŒjA†r{
jjȆr|
htX&&r}
†r~
jjȆr
hŒja†r€
jjȆr
htX<=r‚
†rƒ
jjȆr„
hŒjI†r…
j©jè†r†
jjȆr‡
htX==>rˆ
†r‰
jjȆrŠ
hŒjü†r‹
htj†rŒ
hŒja†r
htj†rŽ
jjȆr
htj³†r
jjȆr‘
hŒjü†r’
htj†r“
hŒjA†r”
htj9†r•
jŸj;†r–
htj†r—
j©jè†r˜
j©jцr™
jjÆrš
jjÆr›
jX    rœ
†r
jXensuresrž
†rŸ
jjȆr 
hŒXis_unchangedr¡
†r¢
j©jæ†r£
hŒjü†r¤
j©j>†r¥
jjȆr¦
hŒXoldr§
†r¨
j©jæ†r©
hŒjü†rª
j©jè†r«
j©j>†r¬
jjȆr­
jŸj׆r®
j©j>†r¯
jjȆr°
hŒjA†r±
htj9†r²
jŸj;†r³
j©jè†r´
j©jцrµ
jjÆr¶
jX    r·
†r¸
jXensuresr¹
†rº
jjȆr»
hŒXis_unchangedr¼
†r½
j©jæ†r¾
hŒjü†r¿
j©j>†rÀ
jjȆrÁ
hŒXoldrÂ
†rÃ
j©jæ†rÄ
hŒjü†rÅ
j©jè†rÆ
j©j>†rÇ
jjȆrÈ
hŒjI†rÉ
htjW†rÊ
jŸj;†rË
j©j>†rÌ
jjȆrÍ
hŒjʆrÎ
j©jè†rÏ
j©jцrÐ
jjÆrÑ
jX    rÒ
†rÓ
jXensuresrÔ
†rÕ
jjȆrÖ
hŒX	is_sortedr×
†rØ
j©jæ†rÙ
hŒjü†rÚ
j©j>†rÛ
jjȆrÜ
hŒjA†rÝ
j©j>†rÞ
jjȆrß
hŒjI†rà
j©jè†rá
j©jцrâ
jjÆrã
jjÆrä
jX    rå
†ræ
hX/*rç
†rè
hX3 a is a permutation of the original array original ré
†rê
hX*/rë
†rì
jjÆrí
jX    rî
†rï
jXensuresrð
†rñ
jjȆrò
hŒXis_permutationró
†rô
j©jæ†rõ
hŒjü†rö
j©j>†r÷
jjȆrø
hŒXoriginalrù
†rú
j©j>†rû
jjȆrü
hŒXpermrý
†rþ
j©j>†rÿ
jjȆrhŒjʆrj©jè†rj©jцrjjÆrj©jë†rjjÆrjX    r†rjXvarr	†r
jjȆrhŒj˜†rj©j̆r
jjȆrj-Xintr†rj©jцrjjÆrjjÆrjX    r†rjXcallr†rjjȆrhŒj˜†rjjȆrhtX:=r†rjjȆrhŒX	partitionr†rj©jæ†r hŒjA†r!j©j>†r"jjȆr#hŒjI†r$j©j>†r%jjȆr&hŒjʆr'j©jè†r(j©jцr)jjÆr*jjÆr+jX    r,†r-jXifr.†r/jjȆr0j©jæ†r1j©jæ†r2hŒj˜†r3htj9†r4jŸj;†r5j©jè†r6jjȆr7htj³†r8jjȆr9hŒjA†r:j©jè†r;jjȆr<j©jë†r=jjÆr>jX        r?†r@jXcallrA†rBjjȆrChŒX	quicksortrD†rEj©jæ†rFhŒjA†rGj©j>†rHjjȆrIhŒj˜†rJhtj9†rKjŸj;†rLj©j>†rMjjȆrNhŒjʆrOj©jè†rPj©jцrQjjÆrRjX    rS†rTj©jô†rUjjÆrVjjÆrWjX    rX†rYjXifrZ†r[jjȆr\j©jæ†r]j©jæ†r^hŒj˜†r_htjW†r`jŸj;†raj©jè†rbjjȆrchtjw†rdjjȆrehŒjI†rfj©jè†rgjjȆrhj©jë†rijjÆrjjX        rk†rljXcallrm†rnjjȆrohŒX	quicksortrp†rqj©jæ†rrhŒj˜†rshtjW†rtjŸj;†ruj©j>†rvjjȆrwhŒjI†rxj©j>†ryjjȆrzhŒjʆr{j©jè†r|j©jцr}jjÆr~jX    r†r€j©jô†rjjÆr‚j©jô†rƒjjÆr„e.