#!/usr/local/bin/ocamlrun T)* VC D 2" @(()*c|Vc( `h yV5?[o n2$ ]h yV5?[c }V] h `c]c(m] mh `cY 2!"Z( 6 CyV(T[]()* ^()* ^()* ^()* ^(](]()* ^(](](](]G()* ^(](](]()* ^(c!](hC%h!c%C +I(]](h!](h!]J(]%l ^]("g ^](!&!&&^(l ^]("g ^(!&!&&^()*c {U ]n}V5 % $)*c {U ]n}V5 % `(h6 'h6 ')* _](]]()*c _()*c {U ]n}V5% `()*]h `(l6'l6')* _](6^(6^K(6 ^Vc(5 ^Vd(5%V5(5(c {Ug }V5%()*] ] n] h ha ha(g u(c ~V(m()* ^V(()* ^V((6@[6@[+ +6?6? + + + +hlivyVgTg>iv  +p +W +H +) + + ,c]i]j] + + + ++ + + + +t +i+G ,+,+  + + ++++++++r+b +Q +E +9+)? + + +  + + + + + + + + #! +)(* +. +x +o +c3 +T +G79 +6 +,?>@&(*,.02468:<>@BRTVXZ\^`bdhhhlnpuuuu>E59T))* V D 2&()*|V  $eq o  n n2  n2  n n$ )*c TE\ n^ n? T\C^ C_ C~Vc C^"}Uc C_ |Uc()*c "|V._ {V ^2$ o$ _ {V ^ 2$ o$ )* nn  , ^^$)* + + ,O |V hh$ e q oh^ ^  h   h c h $)* "h ^"}V^ _ 2' _()*Y #Z(  CyV D _(T[)* " ^ _ 2&)*f q YzZT hXV 58@[c ^"{V^ _c }V 2&h_( _()*Y"Z(  CyVD (T[)* nn ? {V0c ^ ^"{V Ic ^ C^"{V IC( {Vc ^ ^"{V( {V(@[)* + ,,,+V,Ok qh T\ ^  # ~Ucj T \ ^h ^  _h"" ~Ucd }Vd ^h ^i _h _( )*? Oh T\C ^ " I ~UcC()*?hO T\^ C" I |UcC()* VC D _ 2&(VC D h"^ ,i &:()*c {V( ^ @ 2&,c O &)*Oh yV:(c ^ h " ^ i  T\^ " _  |Uc()*c O T\^ " |Uc()*Oh yV:(c ^ ! ^ i  T\^ ! _  |Uc()*c O T \^ ! |Uc()*c{Uc {UO n}Uc{U On}V58% {V"h T\n ^ n_  ~Uc(c T\n ^ n_  |Uc()*c {Uc {U O n}V58% n T \ _  |Uc()*c {Uc {U O n}V58%c yV:( ^ ^ i T\n^ _  |Uc( VC Dh O}V h ^ &2%:(, %)* V C D On2&()* V-C Dh O T\^ n_  |Uc On2&c()*, h "^ ,h "()*O Oh yV c yV:(ch }VT^ n^ h  T\^ _  |Ucc  T\^  n_  |Uc(Oh yV:(c ^ ^ i  T\^ _  |Uc()*: ^ h  T\^ Q |Uc()*c yV:(c ! ^ i  T\! _  |Uc(+ + +n + + + +! + +q +N + + + + ,+b + +6 ? +Ll  +  !$&(>9!T)*!5"8!c8!!!6#8!c8!!!6$8!c8!!!6%8!c8!!! @@   XV5&8!!2&(i? !T\C! I! C"dUc( W TcTcTcT cT cTcTcT(l yV c8A!?[?[5'8!!5(8%5) h#5* h#5+ i#5, i')* V #e"yV j# #d(c()*C D !li TH\gi T4\nn@!V n n@ "yVnn@  # |Uc |Uc( W d(c(e(5-8!5.?6/8!cl T\cl T\e ^^zVgj T\gj Tu\n n@ @ #V[@ "!508!8!518!8!528!n8!538!n8!548!C n n@ @@@ I |Uc |Utc |UTc |U@cC()* "yV '()*!V!V "Ve "}X(C Dh ~Vg {V c ~Vg {()*e "y()* DC^_()*D C ^^()*C Co8! D Do8! }V((558!cl T\8!568! |Ucc8!cl T;\578!8!cl T\588! ^^! |Uc598! |Uc5:8% W gX8%gO8%g 8%5;?6<?6=?6>?6??6@?6A?jll8!# + +? + + + + + + +  + +  +.   ++ ++ ,+Lh !    "$&(*,.02>9Bc8D!:9Calloc_dummyupdate_dummyarray_get_addrarray_get_floatarray_getarray_set_addrarray_set_floatarray_setarray_unsafe_get_floatarray_unsafe_getarray_unsafe_set_addrarray_unsafe_set_floatarray_unsafe_setmake_vectmake_arraycompareequalnotequallessthanlessequalgreaterthangreaterequaloutput_valueoutput_value_to_stringoutput_value_to_bufferformat_floatfloat_of_stringint_of_floatfloat_of_intneg_floatabs_floatadd_floatsub_floatmul_floatdiv_floatexp_floatfloor_floatfmod_floatfrexp_floatldexp_floatlog_floatlog10_floatmodf_floatsqrt_floatpower_floatsin_floatsinh_floatcos_floatcosh_floattan_floattanh_floatasin_floatacos_floatatan_floatatan2_floatceil_floateq_floatneq_floatle_floatlt_floatge_floatgt_floatgc_statgc_countersgc_getgc_setgc_minorgc_majorgc_full_majorgc_compactionhash_univ_paraminput_valueinput_value_from_stringmarshal_data_sizeint_of_stringformat_intint32_negint32_addint32_subint32_mulint32_divint32_modint32_andint32_orint32_xorint32_shift_leftint32_shift_rightint32_shift_right_unsignedint32_of_intint32_to_intint32_of_floatint32_to_floatint32_formatint32_of_stringint64_negint64_addint64_subint64_mulint64_divint64_modint64_andint64_orint64_xorint64_shift_leftint64_shift_rightint64_shift_right_unsignedint64_of_intint64_to_intint64_of_floatint64_to_floatint64_of_int32int64_to_int32int64_of_nativeintint64_to_nativeintint64_formatint64_of_stringnativeint_negnativeint_addnativeint_subnativeint_mulnativeint_divnativeint_modnativeint_andnativeint_ornativeint_xornativeint_shift_leftnativeint_shift_rightnativeint_shift_right_unsignednativeint_of_intnativeint_to_intnativeint_of_floatnativeint_to_floatnativeint_of_int32nativeint_to_int32nativeint_formatnativeint_of_stringcaml_open_descriptorchannel_descriptorcaml_close_channelcaml_channel_sizecaml_set_binary_modecaml_flush_partialcaml_flushcaml_output_charcaml_output_intcaml_output_partialcaml_outputcaml_seek_outcaml_pos_outcaml_input_charcaml_input_intcaml_inputcaml_seek_incaml_pos_incaml_input_scan_linelex_enginemd5_stringmd5_changet_global_datareify_bytecoderealloc_globalavailable_primitivesget_current_environmentinvoke_traced_functionstatic_allocstatic_freestatic_resizeobj_is_blockobj_tagobj_blockobj_dupobj_truncateparse_engineinstall_signal_handlerml_string_lengthcreate_stringstring_getstring_setstring_equalstring_notequalblit_stringfill_stringis_printablebitvect_testsys_exitsys_opensys_closesys_file_existssys_removesys_renamesys_chdirsys_getcwdsys_getenvsys_get_argvsys_system_commandsys_timesys_random_seedsys_get_configterminfo_setupterminfo_backupterminfo_standoutterminfo_resumeregister_named_valueweak_createweak_setweak_getweak_checkfinal_registerWy3-Out_of_memory)Sys_error'Failure0Invalid_argument+End_of_file0Division_by_zero)Not_found-Match_failure.Stack_overflow.Sys_blocked_io,really_input%input@F@@G@&outputACDF@ACDG@%%.12g"%d%false$true.bool_of_string$true%false+char_of_int/Pervasives.Exit9Pervasives.Assert_failure@(array.ml*Array.blit*Array.fill)Array.sub,Array.Bottom@'From X:'From Y:' To X:' To Y:*Bad move. 'Player )'s turn. @@FF@FF@%HERE!@@FF@%HERE!#: (!,&) -> (!,") $ # +---+---+---+---+---+---+---+ # | # | +---+---+---+---+---+---+---+ 1Game.Illegal_move5Game.Illegal_position1Game.PlayerX_wins1Game.PlayerO_wins(Game.Tie*Game.Error)Game.Exit@@ +D@@%ArrayAa@@$GameAB@AB@*PervasivesA[@@(Std_exitAC@AO-Match_failureAG@BP-Out_of_memoryA@@Q0Invalid_argumentAC@ACDR'FailureAB@S)Not_foundAF@AT)Sys_errorAA@BU+End_of_fileAD@V0Division_by_zeroAE@AW.Stack_overflowAH@X.Sys_blocked_ioAI@ABCEB䄕o4$T(Std_exitАF$unit@@@jA@A#int@@@@@B$char@C&string@D%float@E$bool@@@%false@$true@@@F$unit@@@"()@@@G#exn@@@@@H%array@@J@A@@I$list@@K@A"[]@":: @@L@@@J&format@@O@N@M@C@@K&option@@P@A$None@$Some @@@L)nativeint@LM%int32@NN%int64@PV0Division_by_zeroA@U+End_of_fileA@T)Sys_errorAW@@B@X.Sys_blocked_ioA@S)Not_foundA@R'FailureA @Q0Invalid_argumentA@W.Stack_overflowA@P-Out_of_memoryA@O-Match_failureAu@@@@V@@*PervasivesA@@@@@@1,2 #i#$x$GameSF$unit@@@ǐA@A#int@@@@@B$char@C&string@D%float@E$bool@@@%false@$true@@@M@@"()@@@G#exn@@@@@H%array@@J@A@@I$list@@K@A"[]@":: @@L@@@J&format@@O@N@M@C@@K&option@@P@A$None@$Some @@@L)nativeint@JM%int32@LN%int64@NV0Division_by_zeroA@U+End_of_fileA@T)Sys_errorAU@@B@X.Sys_blocked_ioA@S)Not_foundA@R'FailureA @Q0Invalid_argumentA@W.Stack_overflowA@P-Out_of_memoryA@O-Match_failureAs@@@@V@@*PervasivesAk#loc@@@@@@!@@"@ l%piece@@@!X@!O@%Blank@@@p&whowin@@@'PlayerX@'PlayerO@#Tie@&Nobody@@@u,Illegal_move@@v0Illegal_position@@w,PlayerX_wins@@x,PlayerO_wins@@y#Tie@@z%Error@@{$Exit@@|)new_board@H%array@B@@{@@{@@{{{{|%@}+print_piece@ @@}ŰF$unit@@@}}@~+print_board@ .3/@@ ~ @@~@@~ٰ!@@~~@C(distance@A#int@@@0CI @@ACG@HC7C 7@@/CE@@@CC@DC3C$$@@;C%&C!"C@H+contents_of@U@WH\@@^He@@gHRhA#int@@@fHi @@]Hk@jHaHVXHSTHQ@K,set_contents@@Ko@@K@@Ks3@@K9@@K@KKwF$unit@@@~KxyKtuKpqKn@O(is_empty@頰젰@@O@@@@Oϰc@@g@@@OE$bool@@@OOO@R,is_legal_loc@강m@@RRw@@RRR@RR'@@RR@V-is_move_legal@;>8@@@@@@Vް@@@@@VVⰕ1@@@@@V VV氕f@@VVVV@Z1is_move_legal_for@Ms@@BZFZ!XZI@@N@@MZ@Z%j@@K@@L@JZ=Z)|@@;@@<@:Z-@@3Z./Z*+Z&'Z"#Z @_0list_legal_moves@ŠȠ@@__@@@@___Tu@@_ՠ@@_@@@񠰲@@@@_@@_UV_S@f+opposite_of@강@@ f @@ f  f@g3change_neighbors_to@氕 @@,g-g񰕰 #go@@n@@mgHg@@tg^gNg)@@ygcgSg%g'@(g#gF@@}gggg@p'do_move@+Q@@pp6il@@@@ppppJ@@@@@ppp^B@@̠F@@@ppppT@@ppppp@u*init_board@}@@u@@@@uuuuٰ@@ uu@w*print_turn@@@!w@@#ww@y*check_move@İ)@@+y(y)*y'@{(get_move@@@{{K{EȰ@@@@{{C@@{BDF{A@(gameloop@క@@ @@@@,F@@A+G@@9A@@AB8B@@6D@@AC9C@@:E@@A T@@YX@@ABL@@K@@ACU@@0Z@@ATY@@BV@@XN@@,O@@ABCDE P@@Q@@R@@ABLH@@LS@@A"J@@B8I@@W@@AM@@BCDF@@Z@$ISTC/711/@+@ABC@@G@$Q@A6@%match@B@@A%param@A@@B@@BC$ ^@AC B$ a@AFB$ dA@I@@A@@A $ i|@AP!b@G~@@A@@A@iA@@A@A@$ tvp]@@~AA!y@@@~ ~~@@@B@@AB@C@$ \]@AC@$ (Mu@@~AB!x@@@~~@@.@A D@@@AB/@E@$ 0@@~A E@$ @AE@$ @@~A6+C@$ @@~A=2C@$ @A?4C@$ @@~AXRA@$ t@AZTA@$ @@@~Ab@!i@@@~~@@d@ B@@ABe@C@$ (r@@~A C@$ g@A C@$ M@@~ސA~xA@$ :@@zA@$ F@AְD(from_loc@C#@E&to_loc@C'@F!x@C*D(@G!y@D9@@B@@AA@@C@@D@@ABC@@D@$ ?@A% D@$ 1@A' DA$ +AA+@@AB@@C$ @A1CA$ !AA5@B@@B$ l'@@:B@$ 4)a@@I!b@HU@J!l@HY@@B@@A A@@B@@B@$ <@@(L!p@Kr@M!b@Kv@N!l@Kz@@B@@A A@@C@@AB@@C@$ W̐mBEP!b@}O@Q!t@oO@@B@@A A@@B@A@@A@C@$ n@@ B@$ lp@A^S!l@gR@T!x@eR@U!y@^@@A@@A B@@ C@@AB@@C@$ d@A@@@AB@@B@$ X@@@ @A@@A@$ Hې@@VVBW!b@lV@X(from_loc@`V@Y&to_loc@SV@@C@@AB@@ A@@AB@wA@@AB@@C@@AB@D@$ ,@@VV B(C@$ @@VVA1C@$ @@VVA:(C@$ k@@<*C@$ ,OBʰ[!p@nZ$@\!b@hZ(@](from_loc@[Z,@^&to_loc@NZ0@@C@@AB@@D@@AA@@BC@A@@AB@@B@E@$ @@'D@$  i@A`!b@N_W@a(movelist@c#refI_@@____^`\@@A@@B@@AB@B@@AC@@A@@AB@B@$\) 萰@@_A0b!x@c______t@c!y@l______y@d!i@ @@____@e!j@@@____@@N@AG@@I@@ABO@?C@@2E@@ABCR@J@$Du Ɛ\@@_ېALJ@$(| c@@_אASJ@$ j@@_ϐAZ J@$ hq@@_ːAa'J@$ Cx@@_ȐAh.J@$ (@@_ĐAo5J@$ @@_Av@=@ABC:@D@$p @@F@D@AB?@C@$X @Aq%piece@Np@r%board@Hp@s(from_loc@9p@t&to_loc@*p@@C@@AB@@D@@AA@@BC@D@@A@@ABQC@@B@@AC@D@$L @@pʐC0D@$4 @A2D@$4 ؐ@@ppC;#D@$  @A=%D@$ *@@ppBF.E@$  @@pCM5D@$ d@AO7D@$ R.@@ppDX@D@$ "@@ZBD@$ @@uCv%board@Zu@@A@@A@_A@@A@A@$ r0@@uC A@$h  T7@@uCA@$P :@@A@$4 쐰@@w Ax!p@[w@@A@@A@A@@A@A@$(' ې@@wA A@$. @@A@$0s@A$@z!m@A@@@B@@AB@KB@@YA@@AB@BC$@]@y4A7B@$EW@A9B $HK@A=r@@@A@A$OA@CA$RQ@@BO%board@h@&player@Uk@@@@C@@A!@B@@!@A@@D@@ABC@E@@AD@@A@@AC@@fB@@ABC@D@$o@@A6D@$@A8D@$$A<"D@$@A>$D@$@@AE+D@$@AG-D@$@AH/-@+@AB'@C@$k@A@3@A0@B,@BA$dA@@6@A2@A$|=@@{A|&player@{G@}%board@{H@~&from_x@5@@{{R|P@&from_y@?@@{{]|[@$to_x@@@{{h|f@$to_y@@@{{s|q@@2A@@A.C@@&D@@AB;B@@E@@F@@ABC@/D@@AB@@A@@AEC@@BC@(@@@AF@$p *@@{AVF@$X @AX F@$L @@{{{Da)F@$ @Ac+FA$ AAg/--+@*@ABC'E $ %Ő?|uAr E@$ +@@{nAyE@$ 2@A{EA$ 6AAHFFD@BC?7D$ =a|jA D@$ C^*@@{cAD@$ JH@ADA$ NBAA`^@\@ABWOC$ UA|_A C@$p [B@@{XAC@$` b@ACA$X fAA@w@t@ABogB$L m|TA B@$x s֐Z@@{MAB@$` za@@{JAB@$T @@B@@܄V8CC.$%Array@A@A#int@@@@@B$char@C&string@D%float@E$bool@@@%false@$true@@@F$unit@@@"()@@@G#exn@@@@@H%array@@J@A@@I$list@@K@A"[]@":: @@L@@@J&format@@O@N@M@C@@K&option@@P@A$None@$Some @@@L)nativeint@LM%int32@NN%int64@PV0Division_by_zeroA@U+End_of_fileA@T)Sys_errorAW@@B@X.Sys_blocked_ioA@S)Not_foundA@R'FailureA @Q0Invalid_argumentA@W.Stack_overflowA@P-Out_of_memoryA@O-Match_failureAu@@@@V@@*PervasivesAk&length@ e@@@@@-%array_lengthAA @l#get@@@@@@  l#$/%array_safe_getBA@m#set@('@&@@'/(@@+4 m%@@.123/%array_safe_setCA/@n*unsafe_get@BA@5@@6IB@@: n4=>1%array_unsafe_getBAC@o*unsafe_set@VU@@@@A]V@@Eb o?.@@HKLM1%array_unsafe_setCA\@p$make@oh@@Nt@RpQv@@SWX)make_vectBAp@q&create@|@@Y@]q\@@^bc)make_vectBA@s!l@A#int@@@r{rrrerh@t!f@ @@rr|@srrzr}~rirl@u#res@(@@urrysv@@*A@@A@@EC@B@@B@$+ ꐰS@@KؐBC&append@eCCC@L$init@@KKKnKq@M"al@@@@@KKrKu@N$size@ǰ,@@LwLz ՠ@@@L~@@}Lxy{Lv@R#res@=@@KL@S$fill@𰕰U@@LL)DZ@@LLL@@L@@LL@@dA@@+E@@ABsB@@:D@@AYC@@BC@@E@$ @A E@$ @A@@A  C@@D@$ @@LLB @@AB@@D@$@AC@$@@@!@@AB@@B@$ ?@AT#pos@KL@@%match@C@@A%param@A@@B@@AB@jA@@A@a@@@ACB$h @AU!h@YLL@V!t@cLL@@D@@A%@B"@@E@@ABC E@$   @AW!i@@@LLL@@@AF@@;@AB8C31G@$ Y@A-E1$ $A@@?/@@{{{@!f@e@@' p@+@&   @!a@0@@-@!l@@@ @!r@*@@(@@.A@@AMB@@"C@@D@@ABC@@D@$*=Bk!i@R,!@@ E@@ABC@@F@$@AF@$@A{D@$RB~" @@AB@@C@$d@AC@$X@AC@$H@A C@$< @@@,@,@AB@@B@$%@A$mapi@eF@!a@@c@@bK25@&tolist@@@PJC:E@@FD879;6@@/A@@#B@@AB@@B@$hU@@B@@A@@A@$l@AI!i@)<@#res@#=@@B@@A A@@B@JA@@A@>@@@AB@$~@A B@$p@@ B@$K@Ab'to_list@V=9@@V341@+list_length@a@@ufi5P@m@@lghje@@!l@A@@A@A@@A@AB$|@A6"hd@@~}@"tl@| @@@(@@|@!a@!@@@$fill@T@@;@@"@@,D@@A E@@SB@@ABa@EC@@AC`@E@$l @A[@ @A @BiCf@D@$` s@@Bg@@AuBr@D@$P &i@AlCr$0 )8A@|Au$$ ,@Au!i@=@@ B@@AW@C@@W@A@@AB@\A@@A@Q@@@ACB$ C@A"hd@I@"tl@S@@D@@A#@B"@ @E@@ABC E@$ ]@A E$ `A@@.@A*@B(&B$$ f|@A'of_list@yz{x@!f@0@ٰ;@ܰ @!x@@!a@@@@!r@ #ref4@@@@$A@@AGC@@D@@A4B@@BC@@D@$| q9B`!i@ !@@@@ E@@A@@ABC@@F@$\ W@AF@$< 6@Ar D@$, #@@s" @@AB@@C@$ @Az)fold_left@JpN]RVn@!f@@ @ "      @!a@ o @@  @!x@# @!r@}-@@ #  @@-B@@AEC@@D@@A#A@@BC@@D@$  >7Bb!i@ @@  @@ E@@A@@ABC@@F@$  Q@AF@$  S@At D@$  U@@u" @@AB@@C@$ P ZZ@A*fold_right@ubWn@&Bottom@ @@ '@#cmp@ 5@ +  "              E J .         b p? u e 7@@     a f g c d + .@!a@ gT@@ -  $            G L 0         w l / 2@&maxson@ u @@  X U 4  @@  L K F 8 9 : 5 6 3@+trickledown@  @@      배    鰰  簕 w@@      @'trickle@  @@ %    İ  @@ $     @*bubbledown@ Ұ @@ F K ? 8 ݰ  @ 6@ 5 7 9 4@&bubble@ 鰕 @@ [ P   T @@ _ U V Q R O@)trickleup@  @@      m u f  d @@  c e g b@!l@ 2@@      @!e@@@A@@AQG@@jF@@AB\B@@J@@A!I@@C@@ABE@@D@@IH@@ABCD@pA@@A@J@$ , G@AJ@$  2@A@@A@BCD @I@$  #@AI@$   @@ B!i@ X@@    @!e@\@;5@ L@@AJ@@BC4@4@A32CD.@L@$   l@@  B#M@$  @A%L@$  @A'L@$ h @A(RL@@AJBGFCDB@K@$ H '@A>I@$  ) Q@@ ܐC԰!i@r  @hb@ J@@Aa@`@AB_^CDZ@K@$  ?@A K@$  An@AXI@$  CX@Auo@j@AihCDd@H@$  IM@A{un@m@ABCj@G@$  O@A@@~@AB}Cp@F@$ p U@A@@A Cu@E@$ T Z^@A@@~@ABC{@D@$ < `@A @@AB@C@$  e'@@@@@AB@B@$  j@A !l@] 7@!i@U ;@#i31@           v q Z ? <@!x@ @@    } O M@@=A@@A9C@@EB@@D@@ABC@CA@@AC@@@B@@AB@D@$  {@ASD@$  k@AUD@$  Z@AWD@$  JB[E@$ p @A]D@$ ` @A_D@$ L @AaD@$ @  Be#E@$  @Ag%D@$  @Ai'D@$  Bm+E@$  @Ao-D@$  l@Aq/D@$  U@Ar1/@.@AB+@C@$ p <@@v@5@3@AB0@B@$ D F@A!l@e S@!i@a W@!i@b ]@@#exn@C@@A EA@@B@@ &@D@@ABC@A@@AB@@B@E@$  4y ZB)@@@AB @F@$ "@@.B@$ =@A!i@ h@!e@q i@&father@ j@@A@@A C@@B@@AB@cB@@A@@AB@@@@AC@$ 9@A!C@$ ;@A#C@$ =@A%C@$l ?@A'C@$` AB+D@$@ E@A-C@$  G@A/C@$  I@A1@@Q@D@@AB!@ @ r@E@@ABC"E@$ U@A=+C@$ Wi@@>@,@*@AB)%B@$ \@A!l@ :@!i@ ;@!j@ <@@A@@A C@@B@@AB@A@@AjB@@B@@@@AC@$ }@A!CA$ AB%@@@AB B$| @@+B@$@ @A/!l@9 @!i@7 @!e@8 @!i@ @@ / ) '@@A@@@D@@ABFB@@%C@@ @E@@ABC@DA@@AB@@C@@AB@k@@@AF@$  XC7@@A@@AB G@$ v@@=C@$ C@An!l@ @!i@ @!e@ @!j@ @@A@@AB@@ D@@AC@@BC@B@@AtA@@C@@AB@@@@AD@$ @A+D@$ @A-D@$ 7B1E@$h @A3DA$dAB7 @@ABC$T@@=C@$ b)@@ D$sort@  PE@@ / 0 1 , - *@&cutoff@ @@ 3 2@#cmp@ 찕@    x [ ` # &        }   @@ G |   ~  5 8@!a@ .@@ , )       (    9 <@%merge@  U@@   ` >  ^@@ _ B g@@    F  y@@   e J  @@ d N (-@@     R 8 @@  V@@  W X S T O P K L G H C D ? @ =@'isortto@ I @@ -  RW@@ z ] b L  b @@  r j a <  s @@   9@@          @&sortto@  @@         @@      @@           x@@       @!l@*@@      @"l1@:@@ -     @"l2@L@@ . *     @!t@  @@4A@@AjB@@BD@@DF@@A5G@@'H@@ABC@@E@@I@@ABCD@ 5A@@AB@@B@I@$L @@ DI@$<@A I@$@A"@@ACD@H@$@A($@"@"@ABCD@G@$@A/+@)@A%BC @F@$`@AF@$P@AF@$D@A86@7@A/BC*@E@$(_@A><4@BC/@D@$-@AŰCA@9@AB4@C@$@@ɰ@G@G@AB9@B@$@Aذ'src1ofs@d A@'src1len@\ E@$src2@X I@'src2ofs@O M@'src2len@G Q@#dst@C U@&dstofs@8 Y@%src1r@     ^ Z@%src2r@r   c [@$loop@ p n   l j@@       h u@@  g i k m o q f@@YB@@AUA@@8J@@ABqF@@xG@@WH@@ABCqE@@jC@@ApD@@OI@@ABD@ C@@A A@@CB@@AB@J@$|w@A@@ABCD @I@$`~@@#!@@@ABC@@@ABD@G@$@A"i1@` r@"s1@a s@"i2@b t@"s2@_ u@!d@` v@"i2@  @@A@@&E@@ABFC@@'D@@AB@@BC@WC@@ IA@@ABB@@E@@ACF@@D@@AG@@BD@@@@AF@$w@AEF@$Z@AG!F@$?@AH#C E@$)@ALE@$`@AO"i1@  @@1@ F2@AB/.C*F@$(@AF@$@A F@$v@AbE@$`@AdE@$GBh F@$;@@j"E@$d:@A&srcofs@ @#dst@ @&dstofs@ @#len@ @!i@@@ ; , "@!e@@!j@{' @@  q n e V O 0 .@@8C@@A4B@@"G@@AB-E@@#H@@A6A@@GD@@ABC@B@@A@@AB@H@$THBVI@$L @AXH@$N@AZH@$P@A\H@$R@A]@BC@G@$Ws@Aa#!@ @ABC@F@$t]U@@f)'@! BC@D@$$bU DW&srcofs@J @#dst@B @&dstofs@C @#len@; @"l1@@     @"l2@G  @@(C@@A$B@@BE@@F@@A$A@@5D@@ABC@;B@@zA@@ABD@@C@@AC@@@@AF@$-TDIF@$@AKF@$@AL@@ABCE@$@AQ$"@BCD@$t@AVD@$`@@XD@$H@A :$accu@ )k@@ B@@A @C@@ @A@@AB@@ ;@@@ACB$p @A!h@ 3qn@!t@ =ro@@@ D@@ABC@D$TA@ f@'@A#@B@!B@Y[BO@$ 8*Pervasives+out_channel@@@]YNJE7)A@A#int@@@@@B$char@C&string@D%float@E$bool@@@%false@$true@@@F$unit@@@"()@@@G#exn@@@@@H%array@@J@A@@I$list@@K@A"[]@":: @@L@@@J&format@@O@N@M@C@@K&option@@P@A$None@$Some @@@L)nativeint@LM%int32@NN%int64@PV0Division_by_zeroA@U+End_of_fileA@T)Sys_errorAW@@B@X.Sys_blocked_ioA@S)Not_foundA@R'FailureA @Q0Invalid_argumentA@W.Stack_overflowA@P-Out_of_memoryA@O-Match_failureAu@@@@V@a%raise@ f@@X@[\&%raiseAA @b(failwith@ 7@@fb^@_`b]@d+invalid_arg@D@@qdi@jkdh@f$Exit@@g.Assert_failure@@@s@@v@@y@|@h!=@?@}B@@~AB&%equalBA@@i"<>@N@CQ@@DGH)%notequalBAN@j!<@\@I_@@JMN)%lessthanBA\@k!>@j@Om+@@PST,%greaterthanBAj@l"<=@x@U{9@@VYZ*%lessequalBAx@m">=@@[G@@\_`-%greaterequalBA@n'compare@@ae@@bef'compareBA@o#min@@motoh olnoijog@r#max@@}rrx r|~ryzrw@u"==@ư@@@#%eqBA@v"!=@԰@@@&%noteqBA@w#not@ⰲ@@@@(%boolnotAA@x!&@@@@@@@(%sequandBA@y"&&@@@@@@@(%sequandBA@z"or@@@@@@@'%sequorBA@{"||@)@@.@@@@Ő'%sequorBA.@|"~-@< @@ư @@̐'%negintAA<@}$succ@J@@Ͱ@@Ӑ(%succintAAJ@~$pred@X&@@԰)@@ڐ(%predintAAX@!+@f4@@۰k9@@ް<@@'%addintBAk@@!-@yG@@氰~L@@鰲O@@'%subintBA~@A!*@Z@@_@@b@@'%mulintBA@B!/@m@@r@@u@@'%divintBA@C#mod@@@@@ @@ '%modintBA@D#abs@@@DDDD@F$land@հ@@!ڰ@@$@@'*+'%andintBA@G#lor@谲@@,@@/@@256&%orintBA@H$lxor@@@7@@:@@=@A'%xorintBA@I$lnot@@@KIC@@IIDEIB@K#lsl@@@N$@@Q@@TWX'%lslintBA$@L#lsr@2@@Y7@@\@@_bc'%lsrintBA7@M#asr@E@@dJ@@g@@jmn'%asrintBAJ@N'min_int@(@@MMrNo@O'max_int@0@@NO@P#~-.@j@@@@)%negfloatAAk@Q"+.@y@@~@@@@)%addfloatBA~@R"-.@"@@'@@*@@)%subfloatBA@S"*.@5@@:@@=@@)%mulfloatBA@T"/.@H@@M@@P@@)%divfloatBA@U"**@Ű[@@ʰ`@@°c@@ɐ+power_floatBA#powAV#exp@ٰo@@ʰr@@А)exp_floatAA#expAW$acos@谲~@@Ѱ@@א*acos_floatAA$acosAX$asin@@@ذ@@ސ*asin_floatAA$asinAY$atan@@@߰@@*atan_floatAA$atanAZ%atan2@@@氰@@鰲@@+atan2_floatBA%atan2A[#cos@)@@@@)cos_floatAA#cosA\$cosh@8@@@@*cosh_floatAA$coshA]#log@G@@@@)log_floatAA#logA^%log10@V@@@@  +log10_floatAA%log10A_#sin@e@@ @@)sin_floatAA#sinA`$sinh@t @@ @@*sinh_floatAA$sinhAa$sqrt@@@@@!*sqrt_floatAA$sqrtAb#tan@(@@"+@@%()tan_floatAA#tanAc$tanh@7@@):@@,/*tanh_floatAA$tanhAd$ceil@F@@0I@@36*ceil_floatAA$ceilAe%floor@U@@7X@@:=+floor_floatAA%floorAf)abs_float@ΰd@@>g@@AD)%absfloatAA@g)mod_float@ܰr@@Eᰲw@@Hz@@KNO*fmod_floatBA$fmodAh%frexp@@@P@@S@@V@YZ+frexp_floatAA@i%ldexp@@@[ @@^@@ade+ldexp_floatBA @j$modf@@@f@@i@@l@op*modf_floatAA@k%float@-@@q@@tw+%floatofintAA-@l,float_of_int@; @@x@@{~+%floatofintAA;@m(truncate@I@@@@+%intoffloatAAI@n,int_of_float@W@@(@@+%intoffloatAAW@o-string_length@e8@@6@@.%string_lengthAAe@p-string_create@sA@@I@@-create_stringAAs@q+string_blit@T@@T@@^@@^@@c@@@@+blit_stringE@ @r!^@~@@rr@@rr@@rrr@x+int_of_char@ð?@@簲@@)%identityAA@y2unsafe_char_of_int@Ұ@@@@)%identityAA@z+char_of_int@Ѱ@@z zz*@@zz@|&ignore@@^@@'%ignoreAA@}#fst@@@@'%field0AA@~#snd@@@@'%field1AA@*format_int@@@"@@"@@%()*format_intBA"@,format_float@0@@*5@@- @@034,format_floatBA5@.string_of_bool@4@@:6p@@;785@.bool_of_string@ }@@B?@@C@A>@-string_of_int@X9@@TMC@@SNOL@-int_of_string@xK@@XI@@[^-int_of_stringAAx@/string_of_float@w @@g`b@@fab_@/float_of_string@j@@k0@@nq/float_of_stringAA@!@@@|@@{v @@ztsuwr@*in_channel@@@@@@@@@3open_descriptor_out@Ȱ@@@@4caml_open_descriptorAA@2open_descriptor_in@ְ@@@@4caml_open_descriptorAA@%stdin@@@i@&stdout@@@f@@mQ@@AD@@BC@@qK@@ACRG@@N@@A;L@@BD A@@B@@H@@ABoF@@J@@ACE@@I@@AFR@@>S@@ABM@@P@@AO@@BCDE@@S@$ ,>ސAA"*@@@AB CDE@@R@$ GTA*3%# @@ABCDE@@Q@$ |P x@A@8@A7@5@AB0.*@(@ACD@@H@$ lY p@A H@$ [@@c!s@@ba@@A@@A@@A@$ f @@e!s@>dl@@A@@A@@A@$ q@Ap!x@ok@q!y@oo@@B@@A A@@B@@B@$ @AB@$ ݐ3@@oposAB@$ p@@B@$ X@A$s!x@r{@t!y@r@@B@@A A@@B@@B@$ L @AB@$ DR@@rrAB@$ 4@@B@$  @ARE!x@D@@A@@A@@A@$  @A A@$ @@ A@$  @@eJ!x@IF@@A@@A@@A@$ #@@rAs"s1@!r@t"s2@r@u"l1@@@rrrrs@v"l2@@@rrrs@w!s@5rrs@@(C@@AD@@E@@AB6B@@3A@@AC@@E@$  ef@@rACE@$ N@AEE@$ )@AF@@@ABC@@D@$ l@@J@@A@B@@B@$ Tr@A{!n@4z@@A@@A@A@@A@A@$ @,S@A A@$ .:@@ A@$ 0@A!b@9@@A@@A@@A@$ ;@A A@$ =@@ A@$ ?[@A@H%match@B@@AG%param@A@@B@#A@@A@BC$ N8@A&B$ QL@A)B$ T!A@,@@A@A $ dY@@3!n@P@@A@@A@@A@$ Hd@@@!f@c@@A@@A@@A@$ 8oN1@@A_&stderr@~@)open_flag@@@+Open_rdonly@+Open_wronly@+Open_append@*Open_creat@*Open_trunc@)Open_excl@+Open_binary@)Open_text@-Open_nonblock@@@)open_desc@h@@񠰕1@@@@t@@w@@(sys_openCA@$mode@ @@@@@$perm@@@@$name@@@@@&C@@AA@@B@@AB@@C@$ $"@@t C@$g@@u,open_out_gen@1'!@@@$name@@@@@ A@@A@#A@@A@A@$ @@((open_out@ @@@$name@@@@@ A@@A@BA@@A@A@$ 1R@@%,open_out_bin@ +@@@&fflush@: 3@@@@*caml_flushAA:@%flush@H A@@@@ #*caml_flushAAH@-unsafe_output@V O@@$[.@@'`.@@*e3@@-@@03456+caml_outputDAe@+output_char@s l@@7x@@:@@=@A0caml_output_charBAx@"oc@ @@SCF@!s@g@@RVGJ@@B@@AA@@B@@B@$ @A-output_string@$@@OHIDEB@"oc@ @@[^@!s@@@w_b@#ofs@@@|cf@#len@@@{gj@@A@@6D@@AB!B@@/C@@AC@A@@A@D@$p @AR D@$8 @@TD@$ @@X&output@IC;1w@@hide`a\]Z@+output_byte@  @@ @@@@0caml_output_charBA @1output_binary_int@ * #@@ /@@@@/caml_output_intBA /@2marshal_to_channel@ = 6@@ B@ E@@@@@@,output_valueCA K@$chan@ T@@@!v@@@@B@@A A@@B@@B@$ |H@@A,output_value@ m% q@@@(seek_out@  @@а  _@@Ӱ@@ڐ-caml_seek_outBA @'pos_out@  @@۰ p@@,caml_pos_outAA @2out_channel_length@  @@ⰲ ~@@1caml_channel_sizeAA @1close_out_channel@  @@鰲&@@2caml_close_channelAA @"oc@ @@@@A@@A@@A@$ @@@dA@$  > @@Ap)close_out@  S@@@3set_binary_mode_out@  @@  @@c@@4caml_set_binary_modeBA @$mode@_l@@@@ @$perm@ @@ @$name@ @@@@&C@@AA@@B@@AB@@C@$ ; @@O C@$ = V@@P+open_in_gen@ &1 *' .!h@@   @$name@ @@+#&@@ A@@A@#A@@A@A@$| d @@('open_in@ M@@*$%"@$name@ =@@D<?@@ A@@A@BA@@A@A@$\ !@A%+open_in_bin@ q@@C=>;@*input_char@ @@T@@WZ/caml_input_charAA @,unsafe_input@ @@[  r@@^  r@@a  w@@d z@@gjklm*caml_inputDA @"ic@@@or@!s@ @@sv@#ofs@ @@wz@#len@ @@{~@@5D@@AA@@B!B@@/C@@AC@ A@@A@D@$H !@A{ D@$ !@@}D@$ #?@A%input@ I C ; 1 @@|}xytupqn@3unsafe_really_input@ A@@  @@  @@  @@@@@"ic@m@@@!s@ %@@@#ofs@ .@@@#len@ :@@@@5D@@AA@@B!B@@/C@@AC@ cA@@AkB@@B@D@$ #@AD@$ "@@D@$t ([@@,really_input@ Q K C 9 @@@/input_scan_line@ @@ |@@4caml_input_scan_lineAA @*input_line@ @@mZM'! @@u "@*input_byte@ а@@z @@}/caml_input_charAA @0input_binary_int@ ް@@ @@.caml_input_intAA @+input_value@ 찲@@@+input_valueAA @'seek_in@ @@  @@h@@,caml_seek_inBA @&pos_in@ 2@@ @@+caml_pos_inAA @1in_channel_length@ @@@ @@1caml_channel_sizeAA @(close_in@ 'N@@@@2caml_close_channelAA '@2set_binary_mode_in@ 5\@@ : @@@@4caml_set_binary_modeBA :@!c@@@@@ A@@A@hA@@A@A@$` c(@@Ӱ*print_char@ L@@@!s@ <@@@@ A@@A@B@@A@@AB@A@$P (Ӑ K@@ِA),print_string@ t@@@!i@ _@@@@ A@@A@C@@AB@@;A@@AB@A@$D (@@# A@$4 ) w@@A-)print_int@ "@@@!f@ S@@@@ A@@A@#C@@AB@@HA@@AB@A@$( (@@# A@$  )>6@@B++print_float@  E@@@!s@ @@@@ A@@A@LB@@A@@AB@A@$)(@@! A@$)^@@A'-print_endline@ k@@@@C@B@@AB@A@@B@%A@@A@B@$ )o@A BA$$)jA@@ @A @A$))@@#-print_newline@ @@@@@!c@q@@ @@ A@@A@A@@A@A@$M)@@%*prerr_char@ 6@@   @!s@ &@@@@ A@@A@B@@A@@AB@A@$n*K 5@@(+A),prerr_string@ ^@@@!i@ I@@,!$@@ A@@A@C@@AB@@%A@@AB@A@$*&@@# A@$x* a@@69A-)prerr_int@ " @@'"# @!f@ =@@:/2@@ A@@A@ C@@AEB@@2A@@AB@A@$l*a@@# A@$X*ѐ @@HA*+prerr_float@  .@@501.@!s@ @@D=@@@ A@@A@5B@@nA@@AB@A@$D* E@@CB&A@$4*@@(A@$ + N@@WA.-prerr_endline@ # [@@M>?<@@A@B@@A@@A@@B@A@@A@B@$*@A BA$*A@@ @A @A$+f s@@eA&-prerr_newline@ @@TQ @@\RSP@@?@B@@A>@A@@B@vC@@AKA@@CB@@AB@B@$>+Z@A!BA$B+UA@%@@A@A$G+@@rtA2)read_line@6 @@c`!@@hab_@@=!@B@@A< @A@@B@A@@A@B@$k+@A BA$o+A@!@ @A @A$t+Ր;@@A.(read_int@c @@olI@@qmnk@@;N@B@@A:M@A@@B@GA@@A@B@$+@A BA$+A@!@ @A @A$-Z @@ A2*read_float@ @@|y B@@~z{x@#ref@@@A(contentsA@@@#ref@@@@,%makemutableAA@!!@ϰ @@@'%field0AA@":=@ް@@@尕 O@@*%setfield0BA@$incr@0@@@@ c@@%%incrAA@ $decr@D@@ @@ w@@%%decrAA @ (sys_exit@@@@(sys_exitAA@@9@B@@A8@A@@B@B@@ BA@@AB@B@$=-N@A BA$A-DA@@@A @A$dF-@A -exit_function@; @@  ݰ @@    @@     @ !f@  @@ @  @!g@$  @@A@@ B@@AB@;A@@A@B@$X-}@@?@ @A@A@$H-AF@7M@B@@A6L@A@@B@0A@@A!B@@B@B@$@-@AS BA$8-A@W@@A @A$(-@A[ 'at_exit@? @@  @@5p@B@@A4o@A@@B@oA@@A@BA$ -A@@ @A@A$ . `A#*do_at_exit@ '@@鰕q@'retcode@@@@@ A@@A@A@@A@A@$-@@!A@$%@AO$chan@$#@!n@@@paR@7-&$@#beg@:Ltvl][@@C@@A-A@@D#exn@D@@AE@E@@1B@@ABC@ rA@@A@`@@@AE@$%%ڐBA@ @AB  G@$,%ڐXAHG@$0%@AJ C@$2%@@iAPC@$8%@ARC@$:%m@AS@'BB@$>%@AX#res@7:8@@4@A+@ C@@AB,*C@$M$ |@@YA C@$S$@A C@$|U$ؐ@@IAC@$`[$@AC@$H]$@Av#B@$4_$D@Ax%B@$ a$+@Az'B@$c#@A|)B@$e#@@}@R@AHFA@$i"@Ah"ic@L@!s@J@#ofs@H@#len@D@!r@L@@@@'D@@AA@@BB@@E@@A(C@@BC@@}@@@AE@$"@A6E@$"m@A8E@$"D@A9@ @AC@ D@$"2@A>D@$p"!@@@D@$X@A"l1@ x@"l2@ y@@B@@A A@@F |@C@@AB@@ @@@AC@$D͐ B"hd@ }@"tl@ ~@@D@@A @B@@E@@ABC@E@$x@A E@$T@@6*(@B@$B@@CODECPRIM DATASYMBDBUGޘCaml1999X006