From 3397e7ff162a5bf066b0f6b76d180c2c4a6ce7c5 Mon Sep 17 00:00:00 2001 From: Damien Doligez Date: Fri, 9 Oct 2015 15:45:37 +0000 Subject: [PATCH] GPR#243: Faster test suite (Xavier Leroy) git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@16466 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- .travis-ci.sh | 2 +- Changes | 7 +- byterun/caml/mlvalues.h | 2 + byterun/io.c | 1 + emacs/caml-help.el | 3 +- stdlib/scanf.ml | 6 +- .../backtrace/backtraces_and_finalizers.ml | 12 + testsuite/tests/basic-modules/main.mli | 0 testsuite/tests/basic-more/pr2719.ml | 12 + testsuite/tests/basic-more/pr6216.ml | 12 + testsuite/tests/float-unboxing/Makefile | 12 + .../float_subst_boxed_number.ml | 12 + testsuite/tests/lib-hashtbl/htbl.ml | 4 +- testsuite/tests/lib-set/testmap.ml | 2 +- testsuite/tests/lib-set/testset.ml | 2 +- .../tests/lib-threads/{test5.ml => bank.ml} | 34 +- testsuite/tests/lib-threads/bank.reference | 2 + .../tests/lib-threads/{test3.ml => beat.ml} | 19 +- testsuite/tests/lib-threads/beat.reference | 1 + .../lib-threads/{test8.ml => bufchan.ml} | 0 .../{test8.reference => bufchan.reference} | 0 .../lib-threads/{testio.ml => fileio.ml} | 9 +- .../{testio.reference => fileio.reference} | 4 +- .../lib-threads/{test1.ml => prodcons.ml} | 35 +- .../tests/lib-threads/prodcons.reference | 1 + testsuite/tests/lib-threads/prodcons2.ml | 45 + .../tests/lib-threads/prodcons2.reference | 1 + testsuite/tests/lib-threads/sieve.ml | 57 +- testsuite/tests/lib-threads/sieve.reference | 45 - .../{test1.checker => signal.checker} | 2 +- .../lib-threads/{testsignal.ml => signal.ml} | 4 +- .../{test3.precheck => signal.precheck} | 0 .../{testsignal.runner => signal.runner} | 4 +- .../{test2.checker => signal2.checker} | 2 +- .../{testsignal2.ml => signal2.ml} | 6 +- .../{test5.precheck => signal2.precheck} | 0 .../{testsignal2.runner => signal2.runner} | 4 +- testsuite/tests/lib-threads/sockets.ml | 52 + .../{testsocket.precheck => sockets.precheck} | 0 testsuite/tests/lib-threads/sockets.reference | 2 + .../lib-threads/{test9.ml => swapchan.ml} | 0 .../{test9.reference => swapchan.reference} | 2 +- .../tests/lib-threads/test-file-short-lines | 10 - testsuite/tests/lib-threads/test1.reference | 20002 ---------------- testsuite/tests/lib-threads/test2.ml | 27 - testsuite/tests/lib-threads/test3.checker | 13 - testsuite/tests/lib-threads/test3.runner | 16 - testsuite/tests/lib-threads/test4.checker | 13 - testsuite/tests/lib-threads/test4.data | 3 - testsuite/tests/lib-threads/test4.ml | 33 - testsuite/tests/lib-threads/test4.reference | 4 - testsuite/tests/lib-threads/test4.runner | 13 - testsuite/tests/lib-threads/test5.checker | 13 - testsuite/tests/lib-threads/test5.reference | 4 - testsuite/tests/lib-threads/test5.runner | 16 - testsuite/tests/lib-threads/test6.checker | 13 - testsuite/tests/lib-threads/test6.ml | 27 - testsuite/tests/lib-threads/test6.precheck | 13 - testsuite/tests/lib-threads/test6.reference | 2 - testsuite/tests/lib-threads/test6.runner | 16 - testsuite/tests/lib-threads/test7.checker | 14 - testsuite/tests/lib-threads/test7.ml | 38 - testsuite/tests/lib-threads/test7.precheck | 13 - testsuite/tests/lib-threads/test7.runner | 16 - testsuite/tests/lib-threads/test8.precheck | 13 - testsuite/tests/lib-threads/test9.checker | 13 - testsuite/tests/lib-threads/test9.precheck | 13 - testsuite/tests/lib-threads/testA.checker | 13 - testsuite/tests/lib-threads/testexit.checker | 13 - testsuite/tests/lib-threads/testexit.ml | 33 - .../tests/lib-threads/testexit.reference | 27 - testsuite/tests/lib-threads/testsieve.ml | 54 - .../tests/lib-threads/testsieve.reference | 100 - .../tests/lib-threads/testsignal.checker | 13 - .../tests/lib-threads/testsignal.precheck | 13 - .../tests/lib-threads/testsignal2.precheck | 13 - testsuite/tests/lib-threads/testsocket.ml | 48 - .../tests/lib-threads/testsocket.reference | 3 - .../{testsignal2.checker => tls.checker} | 2 +- .../tests/lib-threads/{testA.ml => tls.ml} | 0 .../{testA.reference => tls.reference} | 0 testsuite/tests/lib-threads/token1.ml | 48 - testsuite/tests/lib-threads/token2.ml | 51 - testsuite/tests/lib-threads/torture.data | 3 - testsuite/tests/lib-threads/torture.ml | 33 +- testsuite/tests/lib-threads/torture.reference | 5 +- testsuite/tests/lib-threads/torture.runner | 13 - testsuite/tests/misc-kb/kbmain.ml | 2 +- testsuite/tests/misc-kb/kbmain.reference | 5187 ---- testsuite/tests/misc-unsafe/almabench.ml | 2 + testsuite/tests/misc-unsafe/fft.ml | 2 +- testsuite/tests/misc-unsafe/fft.reference | 1 - testsuite/tests/misc-unsafe/quicksort.ml | 4 +- testsuite/tests/misc/bdd.ml | 4 +- testsuite/tests/misc/boyer.ml | 21 +- testsuite/tests/misc/fib.ml | 2 +- testsuite/tests/misc/fib.reference | 2 +- testsuite/tests/misc/nucleic.ml | 1 - testsuite/tests/misc/sorts.ml | 5 +- testsuite/tests/misc/sorts.reference | 192 +- testsuite/tests/misc/takc.ml | 2 +- testsuite/tests/misc/takc.reference | 2 +- testsuite/tests/misc/taku.ml | 2 +- testsuite/tests/misc/taku.reference | 2 +- 104 files changed, 401 insertions(+), 26295 deletions(-) create mode 100644 testsuite/tests/basic-modules/main.mli rename testsuite/tests/lib-threads/{test5.ml => bank.ml} (52%) create mode 100644 testsuite/tests/lib-threads/bank.reference rename testsuite/tests/lib-threads/{test3.ml => beat.ml} (66%) create mode 100644 testsuite/tests/lib-threads/beat.reference rename testsuite/tests/lib-threads/{test8.ml => bufchan.ml} (100%) rename testsuite/tests/lib-threads/{test8.reference => bufchan.reference} (100%) rename testsuite/tests/lib-threads/{testio.ml => fileio.ml} (94%) rename testsuite/tests/lib-threads/{testio.reference => fileio.reference} (84%) rename testsuite/tests/lib-threads/{test1.ml => prodcons.ml} (74%) create mode 100644 testsuite/tests/lib-threads/prodcons.reference create mode 100644 testsuite/tests/lib-threads/prodcons2.ml create mode 100644 testsuite/tests/lib-threads/prodcons2.reference rename testsuite/tests/lib-threads/{test1.checker => signal.checker} (92%) rename testsuite/tests/lib-threads/{testsignal.ml => signal.ml} (89%) rename testsuite/tests/lib-threads/{test3.precheck => signal.precheck} (100%) rename testsuite/tests/lib-threads/{testsignal.runner => signal.runner} (94%) rename testsuite/tests/lib-threads/{test2.checker => signal2.checker} (94%) rename testsuite/tests/lib-threads/{testsignal2.ml => signal2.ml} (85%) rename testsuite/tests/lib-threads/{test5.precheck => signal2.precheck} (100%) rename testsuite/tests/lib-threads/{testsignal2.runner => signal2.runner} (94%) create mode 100644 testsuite/tests/lib-threads/sockets.ml rename testsuite/tests/lib-threads/{testsocket.precheck => sockets.precheck} (100%) create mode 100644 testsuite/tests/lib-threads/sockets.reference rename testsuite/tests/lib-threads/{test9.ml => swapchan.ml} (100%) rename testsuite/tests/lib-threads/{test9.reference => swapchan.reference} (100%) delete mode 100644 testsuite/tests/lib-threads/test-file-short-lines delete mode 100644 testsuite/tests/lib-threads/test1.reference delete mode 100644 testsuite/tests/lib-threads/test2.ml delete mode 100644 testsuite/tests/lib-threads/test3.checker delete mode 100644 testsuite/tests/lib-threads/test3.runner delete mode 100644 testsuite/tests/lib-threads/test4.checker delete mode 100644 testsuite/tests/lib-threads/test4.data delete mode 100644 testsuite/tests/lib-threads/test4.ml delete mode 100644 testsuite/tests/lib-threads/test4.reference delete mode 100644 testsuite/tests/lib-threads/test4.runner delete mode 100644 testsuite/tests/lib-threads/test5.checker delete mode 100644 testsuite/tests/lib-threads/test5.reference delete mode 100644 testsuite/tests/lib-threads/test5.runner delete mode 100644 testsuite/tests/lib-threads/test6.checker delete mode 100644 testsuite/tests/lib-threads/test6.ml delete mode 100644 testsuite/tests/lib-threads/test6.precheck delete mode 100644 testsuite/tests/lib-threads/test6.reference delete mode 100644 testsuite/tests/lib-threads/test6.runner delete mode 100644 testsuite/tests/lib-threads/test7.checker delete mode 100644 testsuite/tests/lib-threads/test7.ml delete mode 100644 testsuite/tests/lib-threads/test7.precheck delete mode 100644 testsuite/tests/lib-threads/test7.runner delete mode 100644 testsuite/tests/lib-threads/test8.precheck delete mode 100644 testsuite/tests/lib-threads/test9.checker delete mode 100644 testsuite/tests/lib-threads/test9.precheck delete mode 100644 testsuite/tests/lib-threads/testA.checker delete mode 100644 testsuite/tests/lib-threads/testexit.checker delete mode 100644 testsuite/tests/lib-threads/testexit.ml delete mode 100644 testsuite/tests/lib-threads/testexit.reference delete mode 100644 testsuite/tests/lib-threads/testsieve.ml delete mode 100644 testsuite/tests/lib-threads/testsieve.reference delete mode 100644 testsuite/tests/lib-threads/testsignal.checker delete mode 100644 testsuite/tests/lib-threads/testsignal.precheck delete mode 100644 testsuite/tests/lib-threads/testsignal2.precheck delete mode 100644 testsuite/tests/lib-threads/testsocket.ml delete mode 100644 testsuite/tests/lib-threads/testsocket.reference rename testsuite/tests/lib-threads/{testsignal2.checker => tls.checker} (94%) rename testsuite/tests/lib-threads/{testA.ml => tls.ml} (100%) rename testsuite/tests/lib-threads/{testA.reference => tls.reference} (100%) delete mode 100644 testsuite/tests/lib-threads/token1.ml delete mode 100644 testsuite/tests/lib-threads/token2.ml delete mode 100644 testsuite/tests/lib-threads/torture.data delete mode 100644 testsuite/tests/lib-threads/torture.runner diff --git a/.travis-ci.sh b/.travis-ci.sh index aa37577ba..1ca01e758 100644 --- a/.travis-ci.sh +++ b/.travis-ci.sh @@ -12,7 +12,7 @@ case $XARCH in i386) - ./configure + myconfigure make world.opt sudo make install (cd testsuite && make all) diff --git a/Changes b/Changes index 660550fba..fa5f0cef0 100644 --- a/Changes +++ b/Changes @@ -326,10 +326,6 @@ Libraries: - PR#6834: Add Obj.{first,last}_non_constant_constructor_tag (Mark Shinwell, request by Gabriel Scherer) -Libraries: -- PR#6285: Add support for nanosecond precision in Unix.stat() - (Jérémie Dimino, report by user 'gfxmonk') - Runtime: - PR#6078: Release the runtime system when calling caml_dlopen (Jérémie Dimino) @@ -504,8 +500,6 @@ Feature wishes: (Christophe Troestler, review by Damien Doligez) - GPR#171: allow custom warning printers / catchers (Benjamin Canou, review by Damien Doligez) -- Misplaced assertion in major_gc.c for no-naked-pointers mode - (Stephen Dolan, Mark Shinwell) - GPR#191: Making gc.h and some part of memory.h public (Thomas Refis) @@ -517,6 +511,7 @@ OCaml 4.02.1 (14 Oct 2014): Standard library: * Add optional argument ?limit to Arg.align. +Bug Fixes: - PR#4099: Bug in Makefile.nt: won't stop on error (George Necula) - PR#6181: Improve MSVC build diff --git a/byterun/caml/mlvalues.h b/byterun/caml/mlvalues.h index 3b94d010c..406e6b3f0 100644 --- a/byterun/caml/mlvalues.h +++ b/byterun/caml/mlvalues.h @@ -302,4 +302,6 @@ CAMLextern value caml_set_oo_id(value obj); } #endif +extern intnat caml_stat_top_heap_wsz; + #endif /* CAML_MLVALUES_H */ diff --git a/byterun/io.c b/byterun/io.c index 1339d4238..f7b181ba2 100644 --- a/byterun/io.c +++ b/byterun/io.c @@ -178,6 +178,7 @@ again: } } if (retcode == -1) caml_sys_io_error(NO_ARG); + CAMLassert (retcode > 0); return retcode; } diff --git a/emacs/caml-help.el b/emacs/caml-help.el index 82defadc0..dd74ca25a 100644 --- a/emacs/caml-help.el +++ b/emacs/caml-help.el @@ -197,7 +197,8 @@ (insert-file-contents file)) (message "Module %s not found" module)) (while (re-search-forward - "\\([ \t]*val\\|let\\|exception\\|external\\| [|]\\) \\([a-zA-Z_0-9'][a-zA-Z_0-9']*\\)\\|^ *[{]* \\([a-z_][A-Za-z_0-9]*\\) : [^;\n][^;\n]*;" + (concat "\\([ \t]*val\\|let\\|exception\\|external\\| [|]\\) \\([a-zA-Z_0-9'][a-zA-Z_0-9']*\\)" + "\\|^ *[{]* \\([a-z_][A-Za-z_0-9]*\\) : [^;\n][^;\n]*;") (point-max) 'move) (pop-to-buffer (current-buffer)) (setq alist (cons (or (match-string 2) (match-string 3)) alist))) diff --git a/stdlib/scanf.ml b/stdlib/scanf.ml index 5d50d41cf..d0c618ba8 100644 --- a/stdlib/scanf.ml +++ b/stdlib/scanf.ml @@ -215,7 +215,9 @@ module Scanning : SCANNING = struct ;; let char_count ib = - if ib.ic_current_char_is_valid then ib.ic_char_count - 1 else ib.ic_char_count + if ib.ic_current_char_is_valid + then ib.ic_char_count - 1 + else ib.ic_char_count ;; let line_count ib = ib.ic_line_count;; @@ -413,7 +415,7 @@ module Scanning : SCANNING = struct Memo.fold (fun ib opt -> match opt with - | None -> if ib.ic_input_name == ic_name then Some ib else opt + | None -> if ib.ic_input_name = ic_name then Some ib else opt | opt -> opt) memo_table None in match ib_option with diff --git a/testsuite/tests/backtrace/backtraces_and_finalizers.ml b/testsuite/tests/backtrace/backtraces_and_finalizers.ml index 22acf1af8..8e2ed8af7 100644 --- a/testsuite/tests/backtrace/backtraces_and_finalizers.ml +++ b/testsuite/tests/backtrace/backtraces_and_finalizers.ml @@ -1,3 +1,15 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Mark Shinwell, Jane Street Europe *) +(* *) +(* Copyright 2014 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + let () = Printexc.record_backtrace true let finaliser _ = try raise Exit with _ -> () diff --git a/testsuite/tests/basic-modules/main.mli b/testsuite/tests/basic-modules/main.mli new file mode 100644 index 000000000..e69de29bb diff --git a/testsuite/tests/basic-more/pr2719.ml b/testsuite/tests/basic-more/pr2719.ml index f0a9d6a4f..1fd196e76 100644 --- a/testsuite/tests/basic-more/pr2719.ml +++ b/testsuite/tests/basic-more/pr2719.ml @@ -1,3 +1,15 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Gallium, INRIA Rocquencourt *) +(* *) +(* Copyright 2014 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + open Printf let bug () = diff --git a/testsuite/tests/basic-more/pr6216.ml b/testsuite/tests/basic-more/pr6216.ml index 71844f149..bbd9ec6bf 100644 --- a/testsuite/tests/basic-more/pr6216.ml +++ b/testsuite/tests/basic-more/pr6216.ml @@ -1,3 +1,15 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Jacques Garrigue, Nagoya University *) +(* *) +(* Copyright 2013 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + (* PR6216: wrong inlining of GADT match *) type _ t = diff --git a/testsuite/tests/float-unboxing/Makefile b/testsuite/tests/float-unboxing/Makefile index 685241185..d36ba939a 100644 --- a/testsuite/tests/float-unboxing/Makefile +++ b/testsuite/tests/float-unboxing/Makefile @@ -1,3 +1,15 @@ +#(***********************************************************************) +#(* *) +#(* OCaml *) +#(* *) +#(* Mark Shinwell, Jane Street Europe *) +#(* *) +#(* Copyright 2014 Institut National de Recherche en Informatique et *) +#(* en Automatique. All rights reserved. This file is distributed *) +#(* under the terms of the Q Public License version 1.0. *) +#(* *) +#(***********************************************************************) + BASEDIR=../.. MODULES= MAIN_MODULE=float_subst_boxed_number diff --git a/testsuite/tests/float-unboxing/float_subst_boxed_number.ml b/testsuite/tests/float-unboxing/float_subst_boxed_number.ml index ce175ceb6..1078e1d39 100644 --- a/testsuite/tests/float-unboxing/float_subst_boxed_number.ml +++ b/testsuite/tests/float-unboxing/float_subst_boxed_number.ml @@ -1,3 +1,15 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Mark Shinwell, Jane Street Europe *) +(* *) +(* Copyright 2015 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + module PR_6686 = struct type t = | A of float diff --git a/testsuite/tests/lib-hashtbl/htbl.ml b/testsuite/tests/lib-hashtbl/htbl.ml index bd5f33a65..c023d4bcd 100644 --- a/testsuite/tests/lib-hashtbl/htbl.ml +++ b/testsuite/tests/lib-hashtbl/htbl.ml @@ -189,9 +189,9 @@ let list_data data = let _ = printf "-- Random integers, large range\n%!"; - TI1.test (random_integers 100_000 1_000_000); + TI1.test (random_integers 20_000 1_000_000); printf "-- Random integers, narrow range\n%!"; - TI2.test (random_integers 100_000 1_000); + TI2.test (random_integers 20_000 1_000); let d = try file_data "../../LICENSE" with Sys_error _ -> string_data in printf "-- Strings, generic interface\n%!"; diff --git a/testsuite/tests/lib-set/testmap.ml b/testsuite/tests/lib-set/testmap.ml index 8eee5e5f2..1dd919a24 100644 --- a/testsuite/tests/lib-set/testmap.ml +++ b/testsuite/tests/lib-set/testmap.ml @@ -131,4 +131,4 @@ let rmap() = let _ = Random.init 42; - for i = 1 to 25000 do test (rkey()) (rdata()) (rmap()) (rmap()) done + for i = 1 to 10000 do test (rkey()) (rdata()) (rmap()) (rmap()) done diff --git a/testsuite/tests/lib-set/testset.ml b/testsuite/tests/lib-set/testset.ml index 588133206..e6bcc62ae 100644 --- a/testsuite/tests/lib-set/testset.ml +++ b/testsuite/tests/lib-set/testset.ml @@ -129,7 +129,7 @@ let rset() = let _ = Random.init 42; - for i = 1 to 25000 do test (relt()) (rset()) (rset()) done + for i = 1 to 10000 do test (relt()) (rset()) (rset()) done let () = (* #6645: check that adding an element to set that already contains diff --git a/testsuite/tests/lib-threads/test5.ml b/testsuite/tests/lib-threads/bank.ml similarity index 52% rename from testsuite/tests/lib-threads/test5.ml rename to testsuite/tests/lib-threads/bank.ml index 24591919d..bb31fc24c 100644 --- a/testsuite/tests/lib-threads/test5.ml +++ b/testsuite/tests/lib-threads/bank.ml @@ -10,22 +10,30 @@ (* *) (***********************************************************************) +(* The bank account example, using events and channels *) + +open Printf open Event -let ch = (new_channel() : string channel) +type account = int channel * int channel -let rec sender msg = - sync (send ch msg); - sender msg +let account (put_ch, get_ch) = + let rec acc balance = + select [ + wrap (send get_ch balance) (fun () -> acc balance); + wrap (receive put_ch) (fun amount -> + if balance + amount < 0 then failwith "negative balance"; + acc (balance + amount)) + ] + in acc 0 -let rec receiver name = - print_string (name ^ ": " ^ sync (receive ch) ^ "\n"); - flush stdout; - receiver name +let get ((put_ch, get_ch): account) = sync (receive get_ch) +let put ((put_ch, get_ch): account) amount = sync (send put_ch amount) let _ = - Thread.create sender "hello"; - Thread.create sender "world"; - Thread.create receiver "A"; - receiver "B"; - exit 0 + let a : account = (new_channel(), new_channel()) in + ignore (Thread.create account a); + put a 100; + printf "Current balance: %d\n" (get a); + for i = 1 to 99 do put a (-2); put a 1 done; + printf "Final balance: %d\n" (get a) diff --git a/testsuite/tests/lib-threads/bank.reference b/testsuite/tests/lib-threads/bank.reference new file mode 100644 index 000000000..80ad5cd59 --- /dev/null +++ b/testsuite/tests/lib-threads/bank.reference @@ -0,0 +1,2 @@ +Current balance: 100 +Final balance: 1 diff --git a/testsuite/tests/lib-threads/test3.ml b/testsuite/tests/lib-threads/beat.ml similarity index 66% rename from testsuite/tests/lib-threads/test3.ml rename to testsuite/tests/lib-threads/beat.ml index 1540363c5..30929cbc5 100644 --- a/testsuite/tests/lib-threads/test3.ml +++ b/testsuite/tests/lib-threads/beat.ml @@ -10,11 +10,22 @@ (* *) (***********************************************************************) -let print_message delay c = +(* Test Thread.delay and its scheduling *) + +open Printf + +let tick (delay, count) = while true do - print_char c; flush stdout; Thread.delay delay + Thread.delay delay; + incr count done let _ = - Thread.create (print_message 0.6666666666) 'a'; - print_message 1.0 'b' + let c1 = ref 0 and c2 = ref 0 in + ignore (Thread.create tick (0.333333333, c1)); + ignore (Thread.create tick (0.5, c2)); + Thread.delay 3.0; + let n1 = !c1 and n2 = !c2 in + if n1 >= 8 && n1 <= 10 && n2 >= 5 && n2 <= 7 + then printf "passed\n" + else printf "FAILED (n1 = %d, n2 = %d)\n" n1 n2 diff --git a/testsuite/tests/lib-threads/beat.reference b/testsuite/tests/lib-threads/beat.reference new file mode 100644 index 000000000..b0aad4deb --- /dev/null +++ b/testsuite/tests/lib-threads/beat.reference @@ -0,0 +1 @@ +passed diff --git a/testsuite/tests/lib-threads/test8.ml b/testsuite/tests/lib-threads/bufchan.ml similarity index 100% rename from testsuite/tests/lib-threads/test8.ml rename to testsuite/tests/lib-threads/bufchan.ml diff --git a/testsuite/tests/lib-threads/test8.reference b/testsuite/tests/lib-threads/bufchan.reference similarity index 100% rename from testsuite/tests/lib-threads/test8.reference rename to testsuite/tests/lib-threads/bufchan.reference diff --git a/testsuite/tests/lib-threads/testio.ml b/testsuite/tests/lib-threads/fileio.ml similarity index 94% rename from testsuite/tests/lib-threads/testio.ml rename to testsuite/tests/lib-threads/fileio.ml index de0e41362..bfbe7a0cb 100644 --- a/testsuite/tests/lib-threads/testio.ml +++ b/testsuite/tests/lib-threads/fileio.ml @@ -98,7 +98,7 @@ let test_trunc_line ofile = (* The test *) let main() = - let ifile = try Sys.argv.(1) with _ -> "testio.ml" in + let ifile = if Array.length Sys.argv > 1 then Sys.argv.(1) else "fileio.ml" in let ofile = Filename.temp_file "testio" "" in test "256-byte chunks, 256-byte chunks" (copy_file 256) (copy_file 256) ifile ofile; @@ -118,15 +118,12 @@ let main() = (copy_file 613) (copy_file 1027) ifile ofile; test "0...8192 byte chunks" (copy_random 8192) (copy_random 8192) ifile ofile; - test "line per line, short lines" - copy_line copy_line "test-file-short-lines" ofile; let linesfile = Filename.temp_file "lines" "" in make_lines linesfile; - test "line per line, short and long lines" + test "line per line" copy_line copy_line linesfile ofile; test_trunc_line ofile; Sys.remove linesfile; - Sys.remove ofile; - exit 0 + Sys.remove ofile let _ = Unix.handle_unix_error main (); exit 0 diff --git a/testsuite/tests/lib-threads/testio.reference b/testsuite/tests/lib-threads/fileio.reference similarity index 84% rename from testsuite/tests/lib-threads/testio.reference rename to testsuite/tests/lib-threads/fileio.reference index 26de848f7..24f04b9bc 100644 --- a/testsuite/tests/lib-threads/testio.reference +++ b/testsuite/tests/lib-threads/fileio.reference @@ -16,9 +16,7 @@ passed passed 0...8192 byte chunks passed -line per line, short lines -passed -line per line, short and long lines +line per line passed truncated line passed diff --git a/testsuite/tests/lib-threads/test1.ml b/testsuite/tests/lib-threads/prodcons.ml similarity index 74% rename from testsuite/tests/lib-threads/test1.ml rename to testsuite/tests/lib-threads/prodcons.ml index c551fbc5d..31ed6aaae 100644 --- a/testsuite/tests/lib-threads/test1.ml +++ b/testsuite/tests/lib-threads/prodcons.ml @@ -28,8 +28,6 @@ let create size init = notempty = Condition.create(); notfull = Condition.create() } -let output_lock = Mutex.create() - let put p data = Mutex.lock p.lock; while (p.writepos + 1) mod Array.length p.buffer = p.readpos do @@ -53,23 +51,24 @@ let get p = (* Test *) -let buff = create 20 0 - -let rec produce n = - Mutex.lock output_lock; - print_int n; print_string "-->"; print_newline(); - Mutex.unlock output_lock; +let rec produce buff n max = put buff n; - if n < 10000 then produce (n+1) + if n < max then produce buff (n+1) max -let rec consume () = +let rec consume buff cur max = let n = get buff in - Mutex.lock output_lock; - print_string "-->"; print_int n; print_newline(); - Mutex.unlock output_lock; - if n < 10000 then consume () + if n <> cur then false + else if n = max then true + else consume buff (cur + 1) max -let t1 = Thread.create produce 0 -let _ = consume () - -;; +let _ = + let buff1 = create 20 0 and buff2 = create 30 0 in + let ok1 = ref false and ok2 = ref false in + let _p1 = Thread.create (fun () -> produce buff1 0 10000) () + and _p2 = Thread.create (fun () -> produce buff2 0 8000) () + and c1 = Thread.create (fun () -> ok1 := consume buff1 0 10000) () in + ok2 := consume buff2 0 8000; + Thread.join c1; + if !ok1 && !ok2 + then print_string "passed\n" + else print_string "FAILED\n" diff --git a/testsuite/tests/lib-threads/prodcons.reference b/testsuite/tests/lib-threads/prodcons.reference new file mode 100644 index 000000000..b0aad4deb --- /dev/null +++ b/testsuite/tests/lib-threads/prodcons.reference @@ -0,0 +1 @@ +passed diff --git a/testsuite/tests/lib-threads/prodcons2.ml b/testsuite/tests/lib-threads/prodcons2.ml new file mode 100644 index 000000000..ec50b892b --- /dev/null +++ b/testsuite/tests/lib-threads/prodcons2.ml @@ -0,0 +1,45 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + +(* Producer-consumer with events and multiple producers *) + +open Event + +let rec produce chan n max = + sync (send chan n); + if n < max then produce chan (n + 1) max else sync (send chan (-1)) + +let rec consume chans sum = + let rec mkreceive prev = function + | [] -> [] + | chan :: rem as chans -> + wrap (receive chan) (fun n -> + if n < 0 + then consume (List.rev_append rem prev) sum + else consume (List.rev_append chans prev) (sum + n)) + :: mkreceive (chan :: prev) rem + in + if chans = [] then sum else select (mkreceive [] chans) + +let sum_0_n n = n * (n + 1) / 2 + +let _ = + let chan1 = new_channel() + and chan2 = new_channel() + and chan3 = new_channel() in + ignore (Thread.create (fun () -> produce chan1 0 5000) ()); + ignore (Thread.create (fun () -> produce chan2 0 2000) ()); + ignore (Thread.create (fun () -> produce chan3 0 1000) ()); + let n = consume [chan1; chan2; chan3] 0 in + if n = sum_0_n 5000 + sum_0_n 2000 + sum_0_n 1000 + then print_string "passed\n" + else print_string "FAILED\n" diff --git a/testsuite/tests/lib-threads/prodcons2.reference b/testsuite/tests/lib-threads/prodcons2.reference new file mode 100644 index 000000000..b0aad4deb --- /dev/null +++ b/testsuite/tests/lib-threads/prodcons2.reference @@ -0,0 +1 @@ +passed diff --git a/testsuite/tests/lib-threads/sieve.ml b/testsuite/tests/lib-threads/sieve.ml index ac3a9d2f9..fc061bfc2 100644 --- a/testsuite/tests/lib-threads/sieve.ml +++ b/testsuite/tests/lib-threads/sieve.ml @@ -10,36 +10,31 @@ (* *) (***********************************************************************) -open Printf -open Thread +let sieve primes = + Event.sync (Event.send primes 2); + let integers = Event.new_channel () in + let rec enumerate n = + Event.sync (Event.send integers n); + enumerate (n + 2) + and filter input = + let n = Event.sync (Event.receive input) + and output = Event.new_channel () in + Event.sync (Event.send primes n); + ignore(Thread.create filter output); + (* On elimine de la sortie ceux qui sont des multiples de n *) + while true do + let m = Event.sync (Event.receive input) in + (* print_int n; print_string ": "; print_int m; print_newline(); *) + if m mod n <> 0 then Event.sync (Event.send output m) + done in + ignore(Thread.create filter integers); + ignore(Thread.create enumerate 3) -let rec integers n ch = - Event.sync (Event.send ch n); - integers (n+1) ch +let primes = Event.new_channel () -let rec sieve n chin chout = - let m = Event.sync (Event.receive chin) - in if m mod n = 0 - then sieve n chin chout - else Event.sync (Event.send chout m); - sieve n chin chout - -let rec print_primes ch max = - let n = Event.sync (Event.receive ch) - in if n > max - then () - else begin - printf "%d\n" n; flush stdout; - let ch_after_n = Event.new_channel () - in Thread.create (sieve n ch) ch_after_n; - print_primes ch_after_n max - end - -let go max = - let ch = Event.new_channel () - in Thread.create (integers 2) ch; - print_primes ch max;; - -let _ = go 500 - -;; +let _ = + ignore(Thread.create sieve primes); + for i = 1 to 50 do + let n = Event.sync (Event.receive primes) in + print_int n; print_newline() + done diff --git a/testsuite/tests/lib-threads/sieve.reference b/testsuite/tests/lib-threads/sieve.reference index 3e7998db4..ad2c8fd7a 100644 --- a/testsuite/tests/lib-threads/sieve.reference +++ b/testsuite/tests/lib-threads/sieve.reference @@ -48,48 +48,3 @@ 223 227 229 -233 -239 -241 -251 -257 -263 -269 -271 -277 -281 -283 -293 -307 -311 -313 -317 -331 -337 -347 -349 -353 -359 -367 -373 -379 -383 -389 -397 -401 -409 -419 -421 -431 -433 -439 -443 -449 -457 -461 -463 -467 -479 -487 -491 -499 diff --git a/testsuite/tests/lib-threads/test1.checker b/testsuite/tests/lib-threads/signal.checker similarity index 92% rename from testsuite/tests/lib-threads/test1.checker rename to testsuite/tests/lib-threads/signal.checker index 94778f234..c99c0780e 100644 --- a/testsuite/tests/lib-threads/test1.checker +++ b/testsuite/tests/lib-threads/signal.checker @@ -10,4 +10,4 @@ # # ######################################################################### -LC_ALL=C $SORT test1.result | $DIFF test1.reference - +sed -e 1q signal.result | grep -q '^[ab]*Got ctrl-C, exiting...$' diff --git a/testsuite/tests/lib-threads/testsignal.ml b/testsuite/tests/lib-threads/signal.ml similarity index 89% rename from testsuite/tests/lib-threads/testsignal.ml rename to testsuite/tests/lib-threads/signal.ml index 67fa75f74..7d508971c 100644 --- a/testsuite/tests/lib-threads/testsignal.ml +++ b/testsuite/tests/lib-threads/signal.ml @@ -20,6 +20,6 @@ let print_message delay c = done let _ = - Sys.signal Sys.sigint (Sys.Signal_handle sighandler); - Thread.create (print_message 0.6666666666) 'a'; + ignore (Sys.signal Sys.sigint (Sys.Signal_handle sighandler)); + ignore (Thread.create (print_message 0.6666666666) 'a'); print_message 1.0 'b' diff --git a/testsuite/tests/lib-threads/test3.precheck b/testsuite/tests/lib-threads/signal.precheck similarity index 100% rename from testsuite/tests/lib-threads/test3.precheck rename to testsuite/tests/lib-threads/signal.precheck diff --git a/testsuite/tests/lib-threads/testsignal.runner b/testsuite/tests/lib-threads/signal.runner similarity index 94% rename from testsuite/tests/lib-threads/testsignal.runner rename to testsuite/tests/lib-threads/signal.runner index ed4e9279e..eec95bcce 100644 --- a/testsuite/tests/lib-threads/testsignal.runner +++ b/testsuite/tests/lib-threads/signal.runner @@ -10,7 +10,7 @@ # # ######################################################################### -$RUNTIME ./program >testsignal.result & +$RUNTIME ./program >signal.result & pid=$! -sleep 3 +sleep 2 kill -INT $pid diff --git a/testsuite/tests/lib-threads/test2.checker b/testsuite/tests/lib-threads/signal2.checker similarity index 94% rename from testsuite/tests/lib-threads/test2.checker rename to testsuite/tests/lib-threads/signal2.checker index 75f6cf566..8fd6198e5 100644 --- a/testsuite/tests/lib-threads/test2.checker +++ b/testsuite/tests/lib-threads/signal2.checker @@ -10,4 +10,4 @@ # # ######################################################################### -sed -e 1q test2.result | grep -q '^[ab]*' +sed -e 1q signal2.result | grep -q '^[ab]*' diff --git a/testsuite/tests/lib-threads/testsignal2.ml b/testsuite/tests/lib-threads/signal2.ml similarity index 85% rename from testsuite/tests/lib-threads/testsignal2.ml rename to testsuite/tests/lib-threads/signal2.ml index e59a8557a..aef6eb031 100644 --- a/testsuite/tests/lib-threads/testsignal2.ml +++ b/testsuite/tests/lib-threads/signal2.ml @@ -16,8 +16,8 @@ let print_message delay c = done let _ = - Thread.sigmask Unix.SIG_BLOCK [Sys.sigint; Sys.sigterm]; - let th1 = Thread.create (print_message 0.6666666666) 'a' in - let th2 = Thread.create (print_message 1.0) 'b' in + ignore (Thread.sigmask Unix.SIG_BLOCK [Sys.sigint; Sys.sigterm]); + ignore (Thread.create (print_message 0.6666666666) 'a'); + ignore (Thread.create (print_message 1.0) 'b'); let s = Thread.wait_signal [Sys.sigint; Sys.sigterm] in Printf.printf "Got signal %d, exiting...\n" s diff --git a/testsuite/tests/lib-threads/test5.precheck b/testsuite/tests/lib-threads/signal2.precheck similarity index 100% rename from testsuite/tests/lib-threads/test5.precheck rename to testsuite/tests/lib-threads/signal2.precheck diff --git a/testsuite/tests/lib-threads/testsignal2.runner b/testsuite/tests/lib-threads/signal2.runner similarity index 94% rename from testsuite/tests/lib-threads/testsignal2.runner rename to testsuite/tests/lib-threads/signal2.runner index 19a3942f9..3793b4943 100644 --- a/testsuite/tests/lib-threads/testsignal2.runner +++ b/testsuite/tests/lib-threads/signal2.runner @@ -10,9 +10,9 @@ # # ######################################################################### -$RUNTIME ./program >testsignal2.result & +$RUNTIME ./program >signal2.result & pid=$! -sleep 3 +sleep 2 kill -INT $pid sleep 1 kill -9 $pid 2>&- || true diff --git a/testsuite/tests/lib-threads/sockets.ml b/testsuite/tests/lib-threads/sockets.ml new file mode 100644 index 000000000..3f9f39376 --- /dev/null +++ b/testsuite/tests/lib-threads/sockets.ml @@ -0,0 +1,52 @@ +(***********************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + +open Printf + +(* Threads and sockets *) + +let serve_connection s = + let buf = String.make 1024 '>' in + let n = Unix.read s buf 2 (String.length buf - 2) in + Thread.delay 1.0; + ignore (Unix.write s buf 0 (n + 2)); + Unix.close s + +let server sock = + while true do + let (s, _) = Unix.accept sock in + ignore(Thread.create serve_connection s) + done + +let client (addr, msg) = + let sock = + Unix.socket (Unix.domain_of_sockaddr addr) Unix.SOCK_STREAM 0 in + Unix.connect sock addr; + let buf = String.make 1024 ' ' in + ignore(Unix.write sock msg 0 (String.length msg)); + let n = Unix.read sock buf 0 (String.length buf) in + print_string (String.sub buf 0 n); flush stdout + +let _ = + let addr = Unix.ADDR_INET(Unix.inet_addr_loopback, 9876) in + let sock = + Unix.socket (Unix.domain_of_sockaddr addr) Unix.SOCK_STREAM 0 in + Unix.setsockopt sock Unix.SO_REUSEADDR true; + Unix.bind sock addr; + Unix.listen sock 5; + ignore (Thread.create server sock); + ignore (Thread.create client (addr, "Client #1\n")); + Thread.delay 0.5; + client (addr, "Client #2\n") + + + diff --git a/testsuite/tests/lib-threads/testsocket.precheck b/testsuite/tests/lib-threads/sockets.precheck similarity index 100% rename from testsuite/tests/lib-threads/testsocket.precheck rename to testsuite/tests/lib-threads/sockets.precheck diff --git a/testsuite/tests/lib-threads/sockets.reference b/testsuite/tests/lib-threads/sockets.reference new file mode 100644 index 000000000..a3f7067df --- /dev/null +++ b/testsuite/tests/lib-threads/sockets.reference @@ -0,0 +1,2 @@ +>>Client #1 +>>Client #2 diff --git a/testsuite/tests/lib-threads/test9.ml b/testsuite/tests/lib-threads/swapchan.ml similarity index 100% rename from testsuite/tests/lib-threads/test9.ml rename to testsuite/tests/lib-threads/swapchan.ml diff --git a/testsuite/tests/lib-threads/test9.reference b/testsuite/tests/lib-threads/swapchan.reference similarity index 100% rename from testsuite/tests/lib-threads/test9.reference rename to testsuite/tests/lib-threads/swapchan.reference index 58dc8b586..0be61d124 100644 --- a/testsuite/tests/lib-threads/test9.reference +++ b/testsuite/tests/lib-threads/swapchan.reference @@ -1,2 +1,2 @@ -f G g F +f G diff --git a/testsuite/tests/lib-threads/test-file-short-lines b/testsuite/tests/lib-threads/test-file-short-lines deleted file mode 100644 index 35abe7ca2..000000000 --- a/testsuite/tests/lib-threads/test-file-short-lines +++ /dev/null @@ -1,10 +0,0 @@ -## -# Host Database -# -# localhost is used to configure the loopback interface -# when the system is booting. Do not change this entry. -## -127.0.0.1 localhost -255.255.255.255 broadcasthost -::1 localhost -fe80::1%lo0 localhost diff --git a/testsuite/tests/lib-threads/test1.reference b/testsuite/tests/lib-threads/test1.reference deleted file mode 100644 index febf6610b..000000000 --- a/testsuite/tests/lib-threads/test1.reference +++ /dev/null @@ -1,20002 +0,0 @@ --->0 --->1 --->10 --->100 --->1000 --->10000 --->1001 --->1002 --->1003 --->1004 --->1005 --->1006 --->1007 --->1008 --->1009 --->101 --->1010 --->1011 --->1012 --->1013 --->1014 --->1015 --->1016 --->1017 --->1018 --->1019 --->102 --->1020 --->1021 --->1022 --->1023 --->1024 --->1025 --->1026 --->1027 --->1028 --->1029 --->103 --->1030 --->1031 --->1032 --->1033 --->1034 --->1035 --->1036 --->1037 --->1038 --->1039 --->104 --->1040 --->1041 --->1042 --->1043 --->1044 --->1045 --->1046 --->1047 --->1048 --->1049 --->105 --->1050 --->1051 --->1052 --->1053 --->1054 --->1055 --->1056 --->1057 --->1058 --->1059 --->106 --->1060 --->1061 --->1062 --->1063 --->1064 --->1065 --->1066 --->1067 --->1068 --->1069 --->107 --->1070 --->1071 --->1072 --->1073 --->1074 --->1075 --->1076 --->1077 --->1078 --->1079 --->108 --->1080 --->1081 --->1082 --->1083 --->1084 --->1085 --->1086 --->1087 --->1088 --->1089 --->109 --->1090 --->1091 --->1092 --->1093 --->1094 --->1095 --->1096 --->1097 --->1098 --->1099 --->11 --->110 --->1100 --->1101 --->1102 --->1103 --->1104 --->1105 --->1106 --->1107 --->1108 --->1109 --->111 --->1110 --->1111 --->1112 --->1113 --->1114 --->1115 --->1116 --->1117 --->1118 --->1119 --->112 --->1120 --->1121 --->1122 --->1123 --->1124 --->1125 --->1126 --->1127 --->1128 --->1129 --->113 --->1130 --->1131 --->1132 --->1133 --->1134 --->1135 --->1136 --->1137 --->1138 --->1139 --->114 --->1140 --->1141 --->1142 --->1143 --->1144 --->1145 --->1146 --->1147 --->1148 --->1149 --->115 --->1150 --->1151 --->1152 --->1153 --->1154 --->1155 --->1156 --->1157 --->1158 --->1159 --->116 --->1160 --->1161 --->1162 --->1163 --->1164 --->1165 --->1166 --->1167 --->1168 --->1169 --->117 --->1170 --->1171 --->1172 --->1173 --->1174 --->1175 --->1176 --->1177 --->1178 --->1179 --->118 --->1180 --->1181 --->1182 --->1183 --->1184 --->1185 --->1186 --->1187 --->1188 --->1189 --->119 --->1190 --->1191 --->1192 --->1193 --->1194 --->1195 --->1196 --->1197 --->1198 --->1199 --->12 --->120 --->1200 --->1201 --->1202 --->1203 --->1204 --->1205 --->1206 --->1207 --->1208 --->1209 --->121 --->1210 --->1211 --->1212 --->1213 --->1214 --->1215 --->1216 --->1217 --->1218 --->1219 --->122 --->1220 --->1221 --->1222 --->1223 --->1224 --->1225 --->1226 --->1227 --->1228 --->1229 --->123 --->1230 --->1231 --->1232 --->1233 --->1234 --->1235 --->1236 --->1237 --->1238 --->1239 --->124 --->1240 --->1241 --->1242 --->1243 --->1244 --->1245 --->1246 --->1247 --->1248 --->1249 --->125 --->1250 --->1251 --->1252 --->1253 --->1254 --->1255 --->1256 --->1257 --->1258 --->1259 --->126 --->1260 --->1261 --->1262 --->1263 --->1264 --->1265 --->1266 --->1267 --->1268 --->1269 --->127 --->1270 --->1271 --->1272 --->1273 --->1274 --->1275 --->1276 --->1277 --->1278 --->1279 --->128 --->1280 --->1281 --->1282 --->1283 --->1284 --->1285 --->1286 --->1287 --->1288 --->1289 --->129 --->1290 --->1291 --->1292 --->1293 --->1294 --->1295 --->1296 --->1297 --->1298 --->1299 --->13 --->130 --->1300 --->1301 --->1302 --->1303 --->1304 --->1305 --->1306 --->1307 --->1308 --->1309 --->131 --->1310 --->1311 --->1312 --->1313 --->1314 --->1315 --->1316 --->1317 --->1318 --->1319 --->132 --->1320 --->1321 --->1322 --->1323 --->1324 --->1325 --->1326 --->1327 --->1328 --->1329 --->133 --->1330 --->1331 --->1332 --->1333 --->1334 --->1335 --->1336 --->1337 --->1338 --->1339 --->134 --->1340 --->1341 --->1342 --->1343 --->1344 --->1345 --->1346 --->1347 --->1348 --->1349 --->135 --->1350 --->1351 --->1352 --->1353 --->1354 --->1355 --->1356 --->1357 --->1358 --->1359 --->136 --->1360 --->1361 --->1362 --->1363 --->1364 --->1365 --->1366 --->1367 --->1368 --->1369 --->137 --->1370 --->1371 --->1372 --->1373 --->1374 --->1375 --->1376 --->1377 --->1378 --->1379 --->138 --->1380 --->1381 --->1382 --->1383 --->1384 --->1385 --->1386 --->1387 --->1388 --->1389 --->139 --->1390 --->1391 --->1392 --->1393 --->1394 --->1395 --->1396 --->1397 --->1398 --->1399 --->14 --->140 --->1400 --->1401 --->1402 --->1403 --->1404 --->1405 --->1406 --->1407 --->1408 --->1409 --->141 --->1410 --->1411 --->1412 --->1413 --->1414 --->1415 --->1416 --->1417 --->1418 --->1419 --->142 --->1420 --->1421 --->1422 --->1423 --->1424 --->1425 --->1426 --->1427 --->1428 --->1429 --->143 --->1430 --->1431 --->1432 --->1433 --->1434 --->1435 --->1436 --->1437 --->1438 --->1439 --->144 --->1440 --->1441 --->1442 --->1443 --->1444 --->1445 --->1446 --->1447 --->1448 --->1449 --->145 --->1450 --->1451 --->1452 --->1453 --->1454 --->1455 --->1456 --->1457 --->1458 --->1459 --->146 --->1460 --->1461 --->1462 --->1463 --->1464 --->1465 --->1466 --->1467 --->1468 --->1469 --->147 --->1470 --->1471 --->1472 --->1473 --->1474 --->1475 --->1476 --->1477 --->1478 --->1479 --->148 --->1480 --->1481 --->1482 --->1483 --->1484 --->1485 --->1486 --->1487 --->1488 --->1489 --->149 --->1490 --->1491 --->1492 --->1493 --->1494 --->1495 --->1496 --->1497 --->1498 --->1499 --->15 --->150 --->1500 --->1501 --->1502 --->1503 --->1504 --->1505 --->1506 --->1507 --->1508 --->1509 --->151 --->1510 --->1511 --->1512 --->1513 --->1514 --->1515 --->1516 --->1517 --->1518 --->1519 --->152 --->1520 --->1521 --->1522 --->1523 --->1524 --->1525 --->1526 --->1527 --->1528 --->1529 --->153 --->1530 --->1531 --->1532 --->1533 --->1534 --->1535 --->1536 --->1537 --->1538 --->1539 --->154 --->1540 --->1541 --->1542 --->1543 --->1544 --->1545 --->1546 --->1547 --->1548 --->1549 --->155 --->1550 --->1551 --->1552 --->1553 --->1554 --->1555 --->1556 --->1557 --->1558 --->1559 --->156 --->1560 --->1561 --->1562 --->1563 --->1564 --->1565 --->1566 --->1567 --->1568 --->1569 --->157 --->1570 --->1571 --->1572 --->1573 --->1574 --->1575 --->1576 --->1577 --->1578 --->1579 --->158 --->1580 --->1581 --->1582 --->1583 --->1584 --->1585 --->1586 --->1587 --->1588 --->1589 --->159 --->1590 --->1591 --->1592 --->1593 --->1594 --->1595 --->1596 --->1597 --->1598 --->1599 --->16 --->160 --->1600 --->1601 --->1602 --->1603 --->1604 --->1605 --->1606 --->1607 --->1608 --->1609 --->161 --->1610 --->1611 --->1612 --->1613 --->1614 --->1615 --->1616 --->1617 --->1618 --->1619 --->162 --->1620 --->1621 --->1622 --->1623 --->1624 --->1625 --->1626 --->1627 --->1628 --->1629 --->163 --->1630 --->1631 --->1632 --->1633 --->1634 --->1635 --->1636 --->1637 --->1638 --->1639 --->164 --->1640 --->1641 --->1642 --->1643 --->1644 --->1645 --->1646 --->1647 --->1648 --->1649 --->165 --->1650 --->1651 --->1652 --->1653 --->1654 --->1655 --->1656 --->1657 --->1658 --->1659 --->166 --->1660 --->1661 --->1662 --->1663 --->1664 --->1665 --->1666 --->1667 --->1668 --->1669 --->167 --->1670 --->1671 --->1672 --->1673 --->1674 --->1675 --->1676 --->1677 --->1678 --->1679 --->168 --->1680 --->1681 --->1682 --->1683 --->1684 --->1685 --->1686 --->1687 --->1688 --->1689 --->169 --->1690 --->1691 --->1692 --->1693 --->1694 --->1695 --->1696 --->1697 --->1698 --->1699 --->17 --->170 --->1700 --->1701 --->1702 --->1703 --->1704 --->1705 --->1706 --->1707 --->1708 --->1709 --->171 --->1710 --->1711 --->1712 --->1713 --->1714 --->1715 --->1716 --->1717 --->1718 --->1719 --->172 --->1720 --->1721 --->1722 --->1723 --->1724 --->1725 --->1726 --->1727 --->1728 --->1729 --->173 --->1730 --->1731 --->1732 --->1733 --->1734 --->1735 --->1736 --->1737 --->1738 --->1739 --->174 --->1740 --->1741 --->1742 --->1743 --->1744 --->1745 --->1746 --->1747 --->1748 --->1749 --->175 --->1750 --->1751 --->1752 --->1753 --->1754 --->1755 --->1756 --->1757 --->1758 --->1759 --->176 --->1760 --->1761 --->1762 --->1763 --->1764 --->1765 --->1766 --->1767 --->1768 --->1769 --->177 --->1770 --->1771 --->1772 --->1773 --->1774 --->1775 --->1776 --->1777 --->1778 --->1779 --->178 --->1780 --->1781 --->1782 --->1783 --->1784 --->1785 --->1786 --->1787 --->1788 --->1789 --->179 --->1790 --->1791 --->1792 --->1793 --->1794 --->1795 --->1796 --->1797 --->1798 --->1799 --->18 --->180 --->1800 --->1801 --->1802 --->1803 --->1804 --->1805 --->1806 --->1807 --->1808 --->1809 --->181 --->1810 --->1811 --->1812 --->1813 --->1814 --->1815 --->1816 --->1817 --->1818 --->1819 --->182 --->1820 --->1821 --->1822 --->1823 --->1824 --->1825 --->1826 --->1827 --->1828 --->1829 --->183 --->1830 --->1831 --->1832 --->1833 --->1834 --->1835 --->1836 --->1837 --->1838 --->1839 --->184 --->1840 --->1841 --->1842 --->1843 --->1844 --->1845 --->1846 --->1847 --->1848 --->1849 --->185 --->1850 --->1851 --->1852 --->1853 --->1854 --->1855 --->1856 --->1857 --->1858 --->1859 --->186 --->1860 --->1861 --->1862 --->1863 --->1864 --->1865 --->1866 --->1867 --->1868 --->1869 --->187 --->1870 --->1871 --->1872 --->1873 --->1874 --->1875 --->1876 --->1877 --->1878 --->1879 --->188 --->1880 --->1881 --->1882 --->1883 --->1884 --->1885 --->1886 --->1887 --->1888 --->1889 --->189 --->1890 --->1891 --->1892 --->1893 --->1894 --->1895 --->1896 --->1897 --->1898 --->1899 --->19 --->190 --->1900 --->1901 --->1902 --->1903 --->1904 --->1905 --->1906 --->1907 --->1908 --->1909 --->191 --->1910 --->1911 --->1912 --->1913 --->1914 --->1915 --->1916 --->1917 --->1918 --->1919 --->192 --->1920 --->1921 --->1922 --->1923 --->1924 --->1925 --->1926 --->1927 --->1928 --->1929 --->193 --->1930 --->1931 --->1932 --->1933 --->1934 --->1935 --->1936 --->1937 --->1938 --->1939 --->194 --->1940 --->1941 --->1942 --->1943 --->1944 --->1945 --->1946 --->1947 --->1948 --->1949 --->195 --->1950 --->1951 --->1952 --->1953 --->1954 --->1955 --->1956 --->1957 --->1958 --->1959 --->196 --->1960 --->1961 --->1962 --->1963 --->1964 --->1965 --->1966 --->1967 --->1968 --->1969 --->197 --->1970 --->1971 --->1972 --->1973 --->1974 --->1975 --->1976 --->1977 --->1978 --->1979 --->198 --->1980 --->1981 --->1982 --->1983 --->1984 --->1985 --->1986 --->1987 --->1988 --->1989 --->199 --->1990 --->1991 --->1992 --->1993 --->1994 --->1995 --->1996 --->1997 --->1998 --->1999 --->2 --->20 --->200 --->2000 --->2001 --->2002 --->2003 --->2004 --->2005 --->2006 --->2007 --->2008 --->2009 --->201 --->2010 --->2011 --->2012 --->2013 --->2014 --->2015 --->2016 --->2017 --->2018 --->2019 --->202 --->2020 --->2021 --->2022 --->2023 --->2024 --->2025 --->2026 --->2027 --->2028 --->2029 --->203 --->2030 --->2031 --->2032 --->2033 --->2034 --->2035 --->2036 --->2037 --->2038 --->2039 --->204 --->2040 --->2041 --->2042 --->2043 --->2044 --->2045 --->2046 --->2047 --->2048 --->2049 --->205 --->2050 --->2051 --->2052 --->2053 --->2054 --->2055 --->2056 --->2057 --->2058 --->2059 --->206 --->2060 --->2061 --->2062 --->2063 --->2064 --->2065 --->2066 --->2067 --->2068 --->2069 --->207 --->2070 --->2071 --->2072 --->2073 --->2074 --->2075 --->2076 --->2077 --->2078 --->2079 --->208 --->2080 --->2081 --->2082 --->2083 --->2084 --->2085 --->2086 --->2087 --->2088 --->2089 --->209 --->2090 --->2091 --->2092 --->2093 --->2094 --->2095 --->2096 --->2097 --->2098 --->2099 --->21 --->210 --->2100 --->2101 --->2102 --->2103 --->2104 --->2105 --->2106 --->2107 --->2108 --->2109 --->211 --->2110 --->2111 --->2112 --->2113 --->2114 --->2115 --->2116 --->2117 --->2118 --->2119 --->212 --->2120 --->2121 --->2122 --->2123 --->2124 --->2125 --->2126 --->2127 --->2128 --->2129 --->213 --->2130 --->2131 --->2132 --->2133 --->2134 --->2135 --->2136 --->2137 --->2138 --->2139 --->214 --->2140 --->2141 --->2142 --->2143 --->2144 --->2145 --->2146 --->2147 --->2148 --->2149 --->215 --->2150 --->2151 --->2152 --->2153 --->2154 --->2155 --->2156 --->2157 --->2158 --->2159 --->216 --->2160 --->2161 --->2162 --->2163 --->2164 --->2165 --->2166 --->2167 --->2168 --->2169 --->217 --->2170 --->2171 --->2172 --->2173 --->2174 --->2175 --->2176 --->2177 --->2178 --->2179 --->218 --->2180 --->2181 --->2182 --->2183 --->2184 --->2185 --->2186 --->2187 --->2188 --->2189 --->219 --->2190 --->2191 --->2192 --->2193 --->2194 --->2195 --->2196 --->2197 --->2198 --->2199 --->22 --->220 --->2200 --->2201 --->2202 --->2203 --->2204 --->2205 --->2206 --->2207 --->2208 --->2209 --->221 --->2210 --->2211 --->2212 --->2213 --->2214 --->2215 --->2216 --->2217 --->2218 --->2219 --->222 --->2220 --->2221 --->2222 --->2223 --->2224 --->2225 --->2226 --->2227 --->2228 --->2229 --->223 --->2230 --->2231 --->2232 --->2233 --->2234 --->2235 --->2236 --->2237 --->2238 --->2239 --->224 --->2240 --->2241 --->2242 --->2243 --->2244 --->2245 --->2246 --->2247 --->2248 --->2249 --->225 --->2250 --->2251 --->2252 --->2253 --->2254 --->2255 --->2256 --->2257 --->2258 --->2259 --->226 --->2260 --->2261 --->2262 --->2263 --->2264 --->2265 --->2266 --->2267 --->2268 --->2269 --->227 --->2270 --->2271 --->2272 --->2273 --->2274 --->2275 --->2276 --->2277 --->2278 --->2279 --->228 --->2280 --->2281 --->2282 --->2283 --->2284 --->2285 --->2286 --->2287 --->2288 --->2289 --->229 --->2290 --->2291 --->2292 --->2293 --->2294 --->2295 --->2296 --->2297 --->2298 --->2299 --->23 --->230 --->2300 --->2301 --->2302 --->2303 --->2304 --->2305 --->2306 --->2307 --->2308 --->2309 --->231 --->2310 --->2311 --->2312 --->2313 --->2314 --->2315 --->2316 --->2317 --->2318 --->2319 --->232 --->2320 --->2321 --->2322 --->2323 --->2324 --->2325 --->2326 --->2327 --->2328 --->2329 --->233 --->2330 --->2331 --->2332 --->2333 --->2334 --->2335 --->2336 --->2337 --->2338 --->2339 --->234 --->2340 --->2341 --->2342 --->2343 --->2344 --->2345 --->2346 --->2347 --->2348 --->2349 --->235 --->2350 --->2351 --->2352 --->2353 --->2354 --->2355 --->2356 --->2357 --->2358 --->2359 --->236 --->2360 --->2361 --->2362 --->2363 --->2364 --->2365 --->2366 --->2367 --->2368 --->2369 --->237 --->2370 --->2371 --->2372 --->2373 --->2374 --->2375 --->2376 --->2377 --->2378 --->2379 --->238 --->2380 --->2381 --->2382 --->2383 --->2384 --->2385 --->2386 --->2387 --->2388 --->2389 --->239 --->2390 --->2391 --->2392 --->2393 --->2394 --->2395 --->2396 --->2397 --->2398 --->2399 --->24 --->240 --->2400 --->2401 --->2402 --->2403 --->2404 --->2405 --->2406 --->2407 --->2408 --->2409 --->241 --->2410 --->2411 --->2412 --->2413 --->2414 --->2415 --->2416 --->2417 --->2418 --->2419 --->242 --->2420 --->2421 --->2422 --->2423 --->2424 --->2425 --->2426 --->2427 --->2428 --->2429 --->243 --->2430 --->2431 --->2432 --->2433 --->2434 --->2435 --->2436 --->2437 --->2438 --->2439 --->244 --->2440 --->2441 --->2442 --->2443 --->2444 --->2445 --->2446 --->2447 --->2448 --->2449 --->245 --->2450 --->2451 --->2452 --->2453 --->2454 --->2455 --->2456 --->2457 --->2458 --->2459 --->246 --->2460 --->2461 --->2462 --->2463 --->2464 --->2465 --->2466 --->2467 --->2468 --->2469 --->247 --->2470 --->2471 --->2472 --->2473 --->2474 --->2475 --->2476 --->2477 --->2478 --->2479 --->248 --->2480 --->2481 --->2482 --->2483 --->2484 --->2485 --->2486 --->2487 --->2488 --->2489 --->249 --->2490 --->2491 --->2492 --->2493 --->2494 --->2495 --->2496 --->2497 --->2498 --->2499 --->25 --->250 --->2500 --->2501 --->2502 --->2503 --->2504 --->2505 --->2506 --->2507 --->2508 --->2509 --->251 --->2510 --->2511 --->2512 --->2513 --->2514 --->2515 --->2516 --->2517 --->2518 --->2519 --->252 --->2520 --->2521 --->2522 --->2523 --->2524 --->2525 --->2526 --->2527 --->2528 --->2529 --->253 --->2530 --->2531 --->2532 --->2533 --->2534 --->2535 --->2536 --->2537 --->2538 --->2539 --->254 --->2540 --->2541 --->2542 --->2543 --->2544 --->2545 --->2546 --->2547 --->2548 --->2549 --->255 --->2550 --->2551 --->2552 --->2553 --->2554 --->2555 --->2556 --->2557 --->2558 --->2559 --->256 --->2560 --->2561 --->2562 --->2563 --->2564 --->2565 --->2566 --->2567 --->2568 --->2569 --->257 --->2570 --->2571 --->2572 --->2573 --->2574 --->2575 --->2576 --->2577 --->2578 --->2579 --->258 --->2580 --->2581 --->2582 --->2583 --->2584 --->2585 --->2586 --->2587 --->2588 --->2589 --->259 --->2590 --->2591 --->2592 --->2593 --->2594 --->2595 --->2596 --->2597 --->2598 --->2599 --->26 --->260 --->2600 --->2601 --->2602 --->2603 --->2604 --->2605 --->2606 --->2607 --->2608 --->2609 --->261 --->2610 --->2611 --->2612 --->2613 --->2614 --->2615 --->2616 --->2617 --->2618 --->2619 --->262 --->2620 --->2621 --->2622 --->2623 --->2624 --->2625 --->2626 --->2627 --->2628 --->2629 --->263 --->2630 --->2631 --->2632 --->2633 --->2634 --->2635 --->2636 --->2637 --->2638 --->2639 --->264 --->2640 --->2641 --->2642 --->2643 --->2644 --->2645 --->2646 --->2647 --->2648 --->2649 --->265 --->2650 --->2651 --->2652 --->2653 --->2654 --->2655 --->2656 --->2657 --->2658 --->2659 --->266 --->2660 --->2661 --->2662 --->2663 --->2664 --->2665 --->2666 --->2667 --->2668 --->2669 --->267 --->2670 --->2671 --->2672 --->2673 --->2674 --->2675 --->2676 --->2677 --->2678 --->2679 --->268 --->2680 --->2681 --->2682 --->2683 --->2684 --->2685 --->2686 --->2687 --->2688 --->2689 --->269 --->2690 --->2691 --->2692 --->2693 --->2694 --->2695 --->2696 --->2697 --->2698 --->2699 --->27 --->270 --->2700 --->2701 --->2702 --->2703 --->2704 --->2705 --->2706 --->2707 --->2708 --->2709 --->271 --->2710 --->2711 --->2712 --->2713 --->2714 --->2715 --->2716 --->2717 --->2718 --->2719 --->272 --->2720 --->2721 --->2722 --->2723 --->2724 --->2725 --->2726 --->2727 --->2728 --->2729 --->273 --->2730 --->2731 --->2732 --->2733 --->2734 --->2735 --->2736 --->2737 --->2738 --->2739 --->274 --->2740 --->2741 --->2742 --->2743 --->2744 --->2745 --->2746 --->2747 --->2748 --->2749 --->275 --->2750 --->2751 --->2752 --->2753 --->2754 --->2755 --->2756 --->2757 --->2758 --->2759 --->276 --->2760 --->2761 --->2762 --->2763 --->2764 --->2765 --->2766 --->2767 --->2768 --->2769 --->277 --->2770 --->2771 --->2772 --->2773 --->2774 --->2775 --->2776 --->2777 --->2778 --->2779 --->278 --->2780 --->2781 --->2782 --->2783 --->2784 --->2785 --->2786 --->2787 --->2788 --->2789 --->279 --->2790 --->2791 --->2792 --->2793 --->2794 --->2795 --->2796 --->2797 --->2798 --->2799 --->28 --->280 --->2800 --->2801 --->2802 --->2803 --->2804 --->2805 --->2806 --->2807 --->2808 --->2809 --->281 --->2810 --->2811 --->2812 --->2813 --->2814 --->2815 --->2816 --->2817 --->2818 --->2819 --->282 --->2820 --->2821 --->2822 --->2823 --->2824 --->2825 --->2826 --->2827 --->2828 --->2829 --->283 --->2830 --->2831 --->2832 --->2833 --->2834 --->2835 --->2836 --->2837 --->2838 --->2839 --->284 --->2840 --->2841 --->2842 --->2843 --->2844 --->2845 --->2846 --->2847 --->2848 --->2849 --->285 --->2850 --->2851 --->2852 --->2853 --->2854 --->2855 --->2856 --->2857 --->2858 --->2859 --->286 --->2860 --->2861 --->2862 --->2863 --->2864 --->2865 --->2866 --->2867 --->2868 --->2869 --->287 --->2870 --->2871 --->2872 --->2873 --->2874 --->2875 --->2876 --->2877 --->2878 --->2879 --->288 --->2880 --->2881 --->2882 --->2883 --->2884 --->2885 --->2886 --->2887 --->2888 --->2889 --->289 --->2890 --->2891 --->2892 --->2893 --->2894 --->2895 --->2896 --->2897 --->2898 --->2899 --->29 --->290 --->2900 --->2901 --->2902 --->2903 --->2904 --->2905 --->2906 --->2907 --->2908 --->2909 --->291 --->2910 --->2911 --->2912 --->2913 --->2914 --->2915 --->2916 --->2917 --->2918 --->2919 --->292 --->2920 --->2921 --->2922 --->2923 --->2924 --->2925 --->2926 --->2927 --->2928 --->2929 --->293 --->2930 --->2931 --->2932 --->2933 --->2934 --->2935 --->2936 --->2937 --->2938 --->2939 --->294 --->2940 --->2941 --->2942 --->2943 --->2944 --->2945 --->2946 --->2947 --->2948 --->2949 --->295 --->2950 --->2951 --->2952 --->2953 --->2954 --->2955 --->2956 --->2957 --->2958 --->2959 --->296 --->2960 --->2961 --->2962 --->2963 --->2964 --->2965 --->2966 --->2967 --->2968 --->2969 --->297 --->2970 --->2971 --->2972 --->2973 --->2974 --->2975 --->2976 --->2977 --->2978 --->2979 --->298 --->2980 --->2981 --->2982 --->2983 --->2984 --->2985 --->2986 --->2987 --->2988 --->2989 --->299 --->2990 --->2991 --->2992 --->2993 --->2994 --->2995 --->2996 --->2997 --->2998 --->2999 --->3 --->30 --->300 --->3000 --->3001 --->3002 --->3003 --->3004 --->3005 --->3006 --->3007 --->3008 --->3009 --->301 --->3010 --->3011 --->3012 --->3013 --->3014 --->3015 --->3016 --->3017 --->3018 --->3019 --->302 --->3020 --->3021 --->3022 --->3023 --->3024 --->3025 --->3026 --->3027 --->3028 --->3029 --->303 --->3030 --->3031 --->3032 --->3033 --->3034 --->3035 --->3036 --->3037 --->3038 --->3039 --->304 --->3040 --->3041 --->3042 --->3043 --->3044 --->3045 --->3046 --->3047 --->3048 --->3049 --->305 --->3050 --->3051 --->3052 --->3053 --->3054 --->3055 --->3056 --->3057 --->3058 --->3059 --->306 --->3060 --->3061 --->3062 --->3063 --->3064 --->3065 --->3066 --->3067 --->3068 --->3069 --->307 --->3070 --->3071 --->3072 --->3073 --->3074 --->3075 --->3076 --->3077 --->3078 --->3079 --->308 --->3080 --->3081 --->3082 --->3083 --->3084 --->3085 --->3086 --->3087 --->3088 --->3089 --->309 --->3090 --->3091 --->3092 --->3093 --->3094 --->3095 --->3096 --->3097 --->3098 --->3099 --->31 --->310 --->3100 --->3101 --->3102 --->3103 --->3104 --->3105 --->3106 --->3107 --->3108 --->3109 --->311 --->3110 --->3111 --->3112 --->3113 --->3114 --->3115 --->3116 --->3117 --->3118 --->3119 --->312 --->3120 --->3121 --->3122 --->3123 --->3124 --->3125 --->3126 --->3127 --->3128 --->3129 --->313 --->3130 --->3131 --->3132 --->3133 --->3134 --->3135 --->3136 --->3137 --->3138 --->3139 --->314 --->3140 --->3141 --->3142 --->3143 --->3144 --->3145 --->3146 --->3147 --->3148 --->3149 --->315 --->3150 --->3151 --->3152 --->3153 --->3154 --->3155 --->3156 --->3157 --->3158 --->3159 --->316 --->3160 --->3161 --->3162 --->3163 --->3164 --->3165 --->3166 --->3167 --->3168 --->3169 --->317 --->3170 --->3171 --->3172 --->3173 --->3174 --->3175 --->3176 --->3177 --->3178 --->3179 --->318 --->3180 --->3181 --->3182 --->3183 --->3184 --->3185 --->3186 --->3187 --->3188 --->3189 --->319 --->3190 --->3191 --->3192 --->3193 --->3194 --->3195 --->3196 --->3197 --->3198 --->3199 --->32 --->320 --->3200 --->3201 --->3202 --->3203 --->3204 --->3205 --->3206 --->3207 --->3208 --->3209 --->321 --->3210 --->3211 --->3212 --->3213 --->3214 --->3215 --->3216 --->3217 --->3218 --->3219 --->322 --->3220 --->3221 --->3222 --->3223 --->3224 --->3225 --->3226 --->3227 --->3228 --->3229 --->323 --->3230 --->3231 --->3232 --->3233 --->3234 --->3235 --->3236 --->3237 --->3238 --->3239 --->324 --->3240 --->3241 --->3242 --->3243 --->3244 --->3245 --->3246 --->3247 --->3248 --->3249 --->325 --->3250 --->3251 --->3252 --->3253 --->3254 --->3255 --->3256 --->3257 --->3258 --->3259 --->326 --->3260 --->3261 --->3262 --->3263 --->3264 --->3265 --->3266 --->3267 --->3268 --->3269 --->327 --->3270 --->3271 --->3272 --->3273 --->3274 --->3275 --->3276 --->3277 --->3278 --->3279 --->328 --->3280 --->3281 --->3282 --->3283 --->3284 --->3285 --->3286 --->3287 --->3288 --->3289 --->329 --->3290 --->3291 --->3292 --->3293 --->3294 --->3295 --->3296 --->3297 --->3298 --->3299 --->33 --->330 --->3300 --->3301 --->3302 --->3303 --->3304 --->3305 --->3306 --->3307 --->3308 --->3309 --->331 --->3310 --->3311 --->3312 --->3313 --->3314 --->3315 --->3316 --->3317 --->3318 --->3319 --->332 --->3320 --->3321 --->3322 --->3323 --->3324 --->3325 --->3326 --->3327 --->3328 --->3329 --->333 --->3330 --->3331 --->3332 --->3333 --->3334 --->3335 --->3336 --->3337 --->3338 --->3339 --->334 --->3340 --->3341 --->3342 --->3343 --->3344 --->3345 --->3346 --->3347 --->3348 --->3349 --->335 --->3350 --->3351 --->3352 --->3353 --->3354 --->3355 --->3356 --->3357 --->3358 --->3359 --->336 --->3360 --->3361 --->3362 --->3363 --->3364 --->3365 --->3366 --->3367 --->3368 --->3369 --->337 --->3370 --->3371 --->3372 --->3373 --->3374 --->3375 --->3376 --->3377 --->3378 --->3379 --->338 --->3380 --->3381 --->3382 --->3383 --->3384 --->3385 --->3386 --->3387 --->3388 --->3389 --->339 --->3390 --->3391 --->3392 --->3393 --->3394 --->3395 --->3396 --->3397 --->3398 --->3399 --->34 --->340 --->3400 --->3401 --->3402 --->3403 --->3404 --->3405 --->3406 --->3407 --->3408 --->3409 --->341 --->3410 --->3411 --->3412 --->3413 --->3414 --->3415 --->3416 --->3417 --->3418 --->3419 --->342 --->3420 --->3421 --->3422 --->3423 --->3424 --->3425 --->3426 --->3427 --->3428 --->3429 --->343 --->3430 --->3431 --->3432 --->3433 --->3434 --->3435 --->3436 --->3437 --->3438 --->3439 --->344 --->3440 --->3441 --->3442 --->3443 --->3444 --->3445 --->3446 --->3447 --->3448 --->3449 --->345 --->3450 --->3451 --->3452 --->3453 --->3454 --->3455 --->3456 --->3457 --->3458 --->3459 --->346 --->3460 --->3461 --->3462 --->3463 --->3464 --->3465 --->3466 --->3467 --->3468 --->3469 --->347 --->3470 --->3471 --->3472 --->3473 --->3474 --->3475 --->3476 --->3477 --->3478 --->3479 --->348 --->3480 --->3481 --->3482 --->3483 --->3484 --->3485 --->3486 --->3487 --->3488 --->3489 --->349 --->3490 --->3491 --->3492 --->3493 --->3494 --->3495 --->3496 --->3497 --->3498 --->3499 --->35 --->350 --->3500 --->3501 --->3502 --->3503 --->3504 --->3505 --->3506 --->3507 --->3508 --->3509 --->351 --->3510 --->3511 --->3512 --->3513 --->3514 --->3515 --->3516 --->3517 --->3518 --->3519 --->352 --->3520 --->3521 --->3522 --->3523 --->3524 --->3525 --->3526 --->3527 --->3528 --->3529 --->353 --->3530 --->3531 --->3532 --->3533 --->3534 --->3535 --->3536 --->3537 --->3538 --->3539 --->354 --->3540 --->3541 --->3542 --->3543 --->3544 --->3545 --->3546 --->3547 --->3548 --->3549 --->355 --->3550 --->3551 --->3552 --->3553 --->3554 --->3555 --->3556 --->3557 --->3558 --->3559 --->356 --->3560 --->3561 --->3562 --->3563 --->3564 --->3565 --->3566 --->3567 --->3568 --->3569 --->357 --->3570 --->3571 --->3572 --->3573 --->3574 --->3575 --->3576 --->3577 --->3578 --->3579 --->358 --->3580 --->3581 --->3582 --->3583 --->3584 --->3585 --->3586 --->3587 --->3588 --->3589 --->359 --->3590 --->3591 --->3592 --->3593 --->3594 --->3595 --->3596 --->3597 --->3598 --->3599 --->36 --->360 --->3600 --->3601 --->3602 --->3603 --->3604 --->3605 --->3606 --->3607 --->3608 --->3609 --->361 --->3610 --->3611 --->3612 --->3613 --->3614 --->3615 --->3616 --->3617 --->3618 --->3619 --->362 --->3620 --->3621 --->3622 --->3623 --->3624 --->3625 --->3626 --->3627 --->3628 --->3629 --->363 --->3630 --->3631 --->3632 --->3633 --->3634 --->3635 --->3636 --->3637 --->3638 --->3639 --->364 --->3640 --->3641 --->3642 --->3643 --->3644 --->3645 --->3646 --->3647 --->3648 --->3649 --->365 --->3650 --->3651 --->3652 --->3653 --->3654 --->3655 --->3656 --->3657 --->3658 --->3659 --->366 --->3660 --->3661 --->3662 --->3663 --->3664 --->3665 --->3666 --->3667 --->3668 --->3669 --->367 --->3670 --->3671 --->3672 --->3673 --->3674 --->3675 --->3676 --->3677 --->3678 --->3679 --->368 --->3680 --->3681 --->3682 --->3683 --->3684 --->3685 --->3686 --->3687 --->3688 --->3689 --->369 --->3690 --->3691 --->3692 --->3693 --->3694 --->3695 --->3696 --->3697 --->3698 --->3699 --->37 --->370 --->3700 --->3701 --->3702 --->3703 --->3704 --->3705 --->3706 --->3707 --->3708 --->3709 --->371 --->3710 --->3711 --->3712 --->3713 --->3714 --->3715 --->3716 --->3717 --->3718 --->3719 --->372 --->3720 --->3721 --->3722 --->3723 --->3724 --->3725 --->3726 --->3727 --->3728 --->3729 --->373 --->3730 --->3731 --->3732 --->3733 --->3734 --->3735 --->3736 --->3737 --->3738 --->3739 --->374 --->3740 --->3741 --->3742 --->3743 --->3744 --->3745 --->3746 --->3747 --->3748 --->3749 --->375 --->3750 --->3751 --->3752 --->3753 --->3754 --->3755 --->3756 --->3757 --->3758 --->3759 --->376 --->3760 --->3761 --->3762 --->3763 --->3764 --->3765 --->3766 --->3767 --->3768 --->3769 --->377 --->3770 --->3771 --->3772 --->3773 --->3774 --->3775 --->3776 --->3777 --->3778 --->3779 --->378 --->3780 --->3781 --->3782 --->3783 --->3784 --->3785 --->3786 --->3787 --->3788 --->3789 --->379 --->3790 --->3791 --->3792 --->3793 --->3794 --->3795 --->3796 --->3797 --->3798 --->3799 --->38 --->380 --->3800 --->3801 --->3802 --->3803 --->3804 --->3805 --->3806 --->3807 --->3808 --->3809 --->381 --->3810 --->3811 --->3812 --->3813 --->3814 --->3815 --->3816 --->3817 --->3818 --->3819 --->382 --->3820 --->3821 --->3822 --->3823 --->3824 --->3825 --->3826 --->3827 --->3828 --->3829 --->383 --->3830 --->3831 --->3832 --->3833 --->3834 --->3835 --->3836 --->3837 --->3838 --->3839 --->384 --->3840 --->3841 --->3842 --->3843 --->3844 --->3845 --->3846 --->3847 --->3848 --->3849 --->385 --->3850 --->3851 --->3852 --->3853 --->3854 --->3855 --->3856 --->3857 --->3858 --->3859 --->386 --->3860 --->3861 --->3862 --->3863 --->3864 --->3865 --->3866 --->3867 --->3868 --->3869 --->387 --->3870 --->3871 --->3872 --->3873 --->3874 --->3875 --->3876 --->3877 --->3878 --->3879 --->388 --->3880 --->3881 --->3882 --->3883 --->3884 --->3885 --->3886 --->3887 --->3888 --->3889 --->389 --->3890 --->3891 --->3892 --->3893 --->3894 --->3895 --->3896 --->3897 --->3898 --->3899 --->39 --->390 --->3900 --->3901 --->3902 --->3903 --->3904 --->3905 --->3906 --->3907 --->3908 --->3909 --->391 --->3910 --->3911 --->3912 --->3913 --->3914 --->3915 --->3916 --->3917 --->3918 --->3919 --->392 --->3920 --->3921 --->3922 --->3923 --->3924 --->3925 --->3926 --->3927 --->3928 --->3929 --->393 --->3930 --->3931 --->3932 --->3933 --->3934 --->3935 --->3936 --->3937 --->3938 --->3939 --->394 --->3940 --->3941 --->3942 --->3943 --->3944 --->3945 --->3946 --->3947 --->3948 --->3949 --->395 --->3950 --->3951 --->3952 --->3953 --->3954 --->3955 --->3956 --->3957 --->3958 --->3959 --->396 --->3960 --->3961 --->3962 --->3963 --->3964 --->3965 --->3966 --->3967 --->3968 --->3969 --->397 --->3970 --->3971 --->3972 --->3973 --->3974 --->3975 --->3976 --->3977 --->3978 --->3979 --->398 --->3980 --->3981 --->3982 --->3983 --->3984 --->3985 --->3986 --->3987 --->3988 --->3989 --->399 --->3990 --->3991 --->3992 --->3993 --->3994 --->3995 --->3996 --->3997 --->3998 --->3999 --->4 --->40 --->400 --->4000 --->4001 --->4002 --->4003 --->4004 --->4005 --->4006 --->4007 --->4008 --->4009 --->401 --->4010 --->4011 --->4012 --->4013 --->4014 --->4015 --->4016 --->4017 --->4018 --->4019 --->402 --->4020 --->4021 --->4022 --->4023 --->4024 --->4025 --->4026 --->4027 --->4028 --->4029 --->403 --->4030 --->4031 --->4032 --->4033 --->4034 --->4035 --->4036 --->4037 --->4038 --->4039 --->404 --->4040 --->4041 --->4042 --->4043 --->4044 --->4045 --->4046 --->4047 --->4048 --->4049 --->405 --->4050 --->4051 --->4052 --->4053 --->4054 --->4055 --->4056 --->4057 --->4058 --->4059 --->406 --->4060 --->4061 --->4062 --->4063 --->4064 --->4065 --->4066 --->4067 --->4068 --->4069 --->407 --->4070 --->4071 --->4072 --->4073 --->4074 --->4075 --->4076 --->4077 --->4078 --->4079 --->408 --->4080 --->4081 --->4082 --->4083 --->4084 --->4085 --->4086 --->4087 --->4088 --->4089 --->409 --->4090 --->4091 --->4092 --->4093 --->4094 --->4095 --->4096 --->4097 --->4098 --->4099 --->41 --->410 --->4100 --->4101 --->4102 --->4103 --->4104 --->4105 --->4106 --->4107 --->4108 --->4109 --->411 --->4110 --->4111 --->4112 --->4113 --->4114 --->4115 --->4116 --->4117 --->4118 --->4119 --->412 --->4120 --->4121 --->4122 --->4123 --->4124 --->4125 --->4126 --->4127 --->4128 --->4129 --->413 --->4130 --->4131 --->4132 --->4133 --->4134 --->4135 --->4136 --->4137 --->4138 --->4139 --->414 --->4140 --->4141 --->4142 --->4143 --->4144 --->4145 --->4146 --->4147 --->4148 --->4149 --->415 --->4150 --->4151 --->4152 --->4153 --->4154 --->4155 --->4156 --->4157 --->4158 --->4159 --->416 --->4160 --->4161 --->4162 --->4163 --->4164 --->4165 --->4166 --->4167 --->4168 --->4169 --->417 --->4170 --->4171 --->4172 --->4173 --->4174 --->4175 --->4176 --->4177 --->4178 --->4179 --->418 --->4180 --->4181 --->4182 --->4183 --->4184 --->4185 --->4186 --->4187 --->4188 --->4189 --->419 --->4190 --->4191 --->4192 --->4193 --->4194 --->4195 --->4196 --->4197 --->4198 --->4199 --->42 --->420 --->4200 --->4201 --->4202 --->4203 --->4204 --->4205 --->4206 --->4207 --->4208 --->4209 --->421 --->4210 --->4211 --->4212 --->4213 --->4214 --->4215 --->4216 --->4217 --->4218 --->4219 --->422 --->4220 --->4221 --->4222 --->4223 --->4224 --->4225 --->4226 --->4227 --->4228 --->4229 --->423 --->4230 --->4231 --->4232 --->4233 --->4234 --->4235 --->4236 --->4237 --->4238 --->4239 --->424 --->4240 --->4241 --->4242 --->4243 --->4244 --->4245 --->4246 --->4247 --->4248 --->4249 --->425 --->4250 --->4251 --->4252 --->4253 --->4254 --->4255 --->4256 --->4257 --->4258 --->4259 --->426 --->4260 --->4261 --->4262 --->4263 --->4264 --->4265 --->4266 --->4267 --->4268 --->4269 --->427 --->4270 --->4271 --->4272 --->4273 --->4274 --->4275 --->4276 --->4277 --->4278 --->4279 --->428 --->4280 --->4281 --->4282 --->4283 --->4284 --->4285 --->4286 --->4287 --->4288 --->4289 --->429 --->4290 --->4291 --->4292 --->4293 --->4294 --->4295 --->4296 --->4297 --->4298 --->4299 --->43 --->430 --->4300 --->4301 --->4302 --->4303 --->4304 --->4305 --->4306 --->4307 --->4308 --->4309 --->431 --->4310 --->4311 --->4312 --->4313 --->4314 --->4315 --->4316 --->4317 --->4318 --->4319 --->432 --->4320 --->4321 --->4322 --->4323 --->4324 --->4325 --->4326 --->4327 --->4328 --->4329 --->433 --->4330 --->4331 --->4332 --->4333 --->4334 --->4335 --->4336 --->4337 --->4338 --->4339 --->434 --->4340 --->4341 --->4342 --->4343 --->4344 --->4345 --->4346 --->4347 --->4348 --->4349 --->435 --->4350 --->4351 --->4352 --->4353 --->4354 --->4355 --->4356 --->4357 --->4358 --->4359 --->436 --->4360 --->4361 --->4362 --->4363 --->4364 --->4365 --->4366 --->4367 --->4368 --->4369 --->437 --->4370 --->4371 --->4372 --->4373 --->4374 --->4375 --->4376 --->4377 --->4378 --->4379 --->438 --->4380 --->4381 --->4382 --->4383 --->4384 --->4385 --->4386 --->4387 --->4388 --->4389 --->439 --->4390 --->4391 --->4392 --->4393 --->4394 --->4395 --->4396 --->4397 --->4398 --->4399 --->44 --->440 --->4400 --->4401 --->4402 --->4403 --->4404 --->4405 --->4406 --->4407 --->4408 --->4409 --->441 --->4410 --->4411 --->4412 --->4413 --->4414 --->4415 --->4416 --->4417 --->4418 --->4419 --->442 --->4420 --->4421 --->4422 --->4423 --->4424 --->4425 --->4426 --->4427 --->4428 --->4429 --->443 --->4430 --->4431 --->4432 --->4433 --->4434 --->4435 --->4436 --->4437 --->4438 --->4439 --->444 --->4440 --->4441 --->4442 --->4443 --->4444 --->4445 --->4446 --->4447 --->4448 --->4449 --->445 --->4450 --->4451 --->4452 --->4453 --->4454 --->4455 --->4456 --->4457 --->4458 --->4459 --->446 --->4460 --->4461 --->4462 --->4463 --->4464 --->4465 --->4466 --->4467 --->4468 --->4469 --->447 --->4470 --->4471 --->4472 --->4473 --->4474 --->4475 --->4476 --->4477 --->4478 --->4479 --->448 --->4480 --->4481 --->4482 --->4483 --->4484 --->4485 --->4486 --->4487 --->4488 --->4489 --->449 --->4490 --->4491 --->4492 --->4493 --->4494 --->4495 --->4496 --->4497 --->4498 --->4499 --->45 --->450 --->4500 --->4501 --->4502 --->4503 --->4504 --->4505 --->4506 --->4507 --->4508 --->4509 --->451 --->4510 --->4511 --->4512 --->4513 --->4514 --->4515 --->4516 --->4517 --->4518 --->4519 --->452 --->4520 --->4521 --->4522 --->4523 --->4524 --->4525 --->4526 --->4527 --->4528 --->4529 --->453 --->4530 --->4531 --->4532 --->4533 --->4534 --->4535 --->4536 --->4537 --->4538 --->4539 --->454 --->4540 --->4541 --->4542 --->4543 --->4544 --->4545 --->4546 --->4547 --->4548 --->4549 --->455 --->4550 --->4551 --->4552 --->4553 --->4554 --->4555 --->4556 --->4557 --->4558 --->4559 --->456 --->4560 --->4561 --->4562 --->4563 --->4564 --->4565 --->4566 --->4567 --->4568 --->4569 --->457 --->4570 --->4571 --->4572 --->4573 --->4574 --->4575 --->4576 --->4577 --->4578 --->4579 --->458 --->4580 --->4581 --->4582 --->4583 --->4584 --->4585 --->4586 --->4587 --->4588 --->4589 --->459 --->4590 --->4591 --->4592 --->4593 --->4594 --->4595 --->4596 --->4597 --->4598 --->4599 --->46 --->460 --->4600 --->4601 --->4602 --->4603 --->4604 --->4605 --->4606 --->4607 --->4608 --->4609 --->461 --->4610 --->4611 --->4612 --->4613 --->4614 --->4615 --->4616 --->4617 --->4618 --->4619 --->462 --->4620 --->4621 --->4622 --->4623 --->4624 --->4625 --->4626 --->4627 --->4628 --->4629 --->463 --->4630 --->4631 --->4632 --->4633 --->4634 --->4635 --->4636 --->4637 --->4638 --->4639 --->464 --->4640 --->4641 --->4642 --->4643 --->4644 --->4645 --->4646 --->4647 --->4648 --->4649 --->465 --->4650 --->4651 --->4652 --->4653 --->4654 --->4655 --->4656 --->4657 --->4658 --->4659 --->466 --->4660 --->4661 --->4662 --->4663 --->4664 --->4665 --->4666 --->4667 --->4668 --->4669 --->467 --->4670 --->4671 --->4672 --->4673 --->4674 --->4675 --->4676 --->4677 --->4678 --->4679 --->468 --->4680 --->4681 --->4682 --->4683 --->4684 --->4685 --->4686 --->4687 --->4688 --->4689 --->469 --->4690 --->4691 --->4692 --->4693 --->4694 --->4695 --->4696 --->4697 --->4698 --->4699 --->47 --->470 --->4700 --->4701 --->4702 --->4703 --->4704 --->4705 --->4706 --->4707 --->4708 --->4709 --->471 --->4710 --->4711 --->4712 --->4713 --->4714 --->4715 --->4716 --->4717 --->4718 --->4719 --->472 --->4720 --->4721 --->4722 --->4723 --->4724 --->4725 --->4726 --->4727 --->4728 --->4729 --->473 --->4730 --->4731 --->4732 --->4733 --->4734 --->4735 --->4736 --->4737 --->4738 --->4739 --->474 --->4740 --->4741 --->4742 --->4743 --->4744 --->4745 --->4746 --->4747 --->4748 --->4749 --->475 --->4750 --->4751 --->4752 --->4753 --->4754 --->4755 --->4756 --->4757 --->4758 --->4759 --->476 --->4760 --->4761 --->4762 --->4763 --->4764 --->4765 --->4766 --->4767 --->4768 --->4769 --->477 --->4770 --->4771 --->4772 --->4773 --->4774 --->4775 --->4776 --->4777 --->4778 --->4779 --->478 --->4780 --->4781 --->4782 --->4783 --->4784 --->4785 --->4786 --->4787 --->4788 --->4789 --->479 --->4790 --->4791 --->4792 --->4793 --->4794 --->4795 --->4796 --->4797 --->4798 --->4799 --->48 --->480 --->4800 --->4801 --->4802 --->4803 --->4804 --->4805 --->4806 --->4807 --->4808 --->4809 --->481 --->4810 --->4811 --->4812 --->4813 --->4814 --->4815 --->4816 --->4817 --->4818 --->4819 --->482 --->4820 --->4821 --->4822 --->4823 --->4824 --->4825 --->4826 --->4827 --->4828 --->4829 --->483 --->4830 --->4831 --->4832 --->4833 --->4834 --->4835 --->4836 --->4837 --->4838 --->4839 --->484 --->4840 --->4841 --->4842 --->4843 --->4844 --->4845 --->4846 --->4847 --->4848 --->4849 --->485 --->4850 --->4851 --->4852 --->4853 --->4854 --->4855 --->4856 --->4857 --->4858 --->4859 --->486 --->4860 --->4861 --->4862 --->4863 --->4864 --->4865 --->4866 --->4867 --->4868 --->4869 --->487 --->4870 --->4871 --->4872 --->4873 --->4874 --->4875 --->4876 --->4877 --->4878 --->4879 --->488 --->4880 --->4881 --->4882 --->4883 --->4884 --->4885 --->4886 --->4887 --->4888 --->4889 --->489 --->4890 --->4891 --->4892 --->4893 --->4894 --->4895 --->4896 --->4897 --->4898 --->4899 --->49 --->490 --->4900 --->4901 --->4902 --->4903 --->4904 --->4905 --->4906 --->4907 --->4908 --->4909 --->491 --->4910 --->4911 --->4912 --->4913 --->4914 --->4915 --->4916 --->4917 --->4918 --->4919 --->492 --->4920 --->4921 --->4922 --->4923 --->4924 --->4925 --->4926 --->4927 --->4928 --->4929 --->493 --->4930 --->4931 --->4932 --->4933 --->4934 --->4935 --->4936 --->4937 --->4938 --->4939 --->494 --->4940 --->4941 --->4942 --->4943 --->4944 --->4945 --->4946 --->4947 --->4948 --->4949 --->495 --->4950 --->4951 --->4952 --->4953 --->4954 --->4955 --->4956 --->4957 --->4958 --->4959 --->496 --->4960 --->4961 --->4962 --->4963 --->4964 --->4965 --->4966 --->4967 --->4968 --->4969 --->497 --->4970 --->4971 --->4972 --->4973 --->4974 --->4975 --->4976 --->4977 --->4978 --->4979 --->498 --->4980 --->4981 --->4982 --->4983 --->4984 --->4985 --->4986 --->4987 --->4988 --->4989 --->499 --->4990 --->4991 --->4992 --->4993 --->4994 --->4995 --->4996 --->4997 --->4998 --->4999 --->5 --->50 --->500 --->5000 --->5001 --->5002 --->5003 --->5004 --->5005 --->5006 --->5007 --->5008 --->5009 --->501 --->5010 --->5011 --->5012 --->5013 --->5014 --->5015 --->5016 --->5017 --->5018 --->5019 --->502 --->5020 --->5021 --->5022 --->5023 --->5024 --->5025 --->5026 --->5027 --->5028 --->5029 --->503 --->5030 --->5031 --->5032 --->5033 --->5034 --->5035 --->5036 --->5037 --->5038 --->5039 --->504 --->5040 --->5041 --->5042 --->5043 --->5044 --->5045 --->5046 --->5047 --->5048 --->5049 --->505 --->5050 --->5051 --->5052 --->5053 --->5054 --->5055 --->5056 --->5057 --->5058 --->5059 --->506 --->5060 --->5061 --->5062 --->5063 --->5064 --->5065 --->5066 --->5067 --->5068 --->5069 --->507 --->5070 --->5071 --->5072 --->5073 --->5074 --->5075 --->5076 --->5077 --->5078 --->5079 --->508 --->5080 --->5081 --->5082 --->5083 --->5084 --->5085 --->5086 --->5087 --->5088 --->5089 --->509 --->5090 --->5091 --->5092 --->5093 --->5094 --->5095 --->5096 --->5097 --->5098 --->5099 --->51 --->510 --->5100 --->5101 --->5102 --->5103 --->5104 --->5105 --->5106 --->5107 --->5108 --->5109 --->511 --->5110 --->5111 --->5112 --->5113 --->5114 --->5115 --->5116 --->5117 --->5118 --->5119 --->512 --->5120 --->5121 --->5122 --->5123 --->5124 --->5125 --->5126 --->5127 --->5128 --->5129 --->513 --->5130 --->5131 --->5132 --->5133 --->5134 --->5135 --->5136 --->5137 --->5138 --->5139 --->514 --->5140 --->5141 --->5142 --->5143 --->5144 --->5145 --->5146 --->5147 --->5148 --->5149 --->515 --->5150 --->5151 --->5152 --->5153 --->5154 --->5155 --->5156 --->5157 --->5158 --->5159 --->516 --->5160 --->5161 --->5162 --->5163 --->5164 --->5165 --->5166 --->5167 --->5168 --->5169 --->517 --->5170 --->5171 --->5172 --->5173 --->5174 --->5175 --->5176 --->5177 --->5178 --->5179 --->518 --->5180 --->5181 --->5182 --->5183 --->5184 --->5185 --->5186 --->5187 --->5188 --->5189 --->519 --->5190 --->5191 --->5192 --->5193 --->5194 --->5195 --->5196 --->5197 --->5198 --->5199 --->52 --->520 --->5200 --->5201 --->5202 --->5203 --->5204 --->5205 --->5206 --->5207 --->5208 --->5209 --->521 --->5210 --->5211 --->5212 --->5213 --->5214 --->5215 --->5216 --->5217 --->5218 --->5219 --->522 --->5220 --->5221 --->5222 --->5223 --->5224 --->5225 --->5226 --->5227 --->5228 --->5229 --->523 --->5230 --->5231 --->5232 --->5233 --->5234 --->5235 --->5236 --->5237 --->5238 --->5239 --->524 --->5240 --->5241 --->5242 --->5243 --->5244 --->5245 --->5246 --->5247 --->5248 --->5249 --->525 --->5250 --->5251 --->5252 --->5253 --->5254 --->5255 --->5256 --->5257 --->5258 --->5259 --->526 --->5260 --->5261 --->5262 --->5263 --->5264 --->5265 --->5266 --->5267 --->5268 --->5269 --->527 --->5270 --->5271 --->5272 --->5273 --->5274 --->5275 --->5276 --->5277 --->5278 --->5279 --->528 --->5280 --->5281 --->5282 --->5283 --->5284 --->5285 --->5286 --->5287 --->5288 --->5289 --->529 --->5290 --->5291 --->5292 --->5293 --->5294 --->5295 --->5296 --->5297 --->5298 --->5299 --->53 --->530 --->5300 --->5301 --->5302 --->5303 --->5304 --->5305 --->5306 --->5307 --->5308 --->5309 --->531 --->5310 --->5311 --->5312 --->5313 --->5314 --->5315 --->5316 --->5317 --->5318 --->5319 --->532 --->5320 --->5321 --->5322 --->5323 --->5324 --->5325 --->5326 --->5327 --->5328 --->5329 --->533 --->5330 --->5331 --->5332 --->5333 --->5334 --->5335 --->5336 --->5337 --->5338 --->5339 --->534 --->5340 --->5341 --->5342 --->5343 --->5344 --->5345 --->5346 --->5347 --->5348 --->5349 --->535 --->5350 --->5351 --->5352 --->5353 --->5354 --->5355 --->5356 --->5357 --->5358 --->5359 --->536 --->5360 --->5361 --->5362 --->5363 --->5364 --->5365 --->5366 --->5367 --->5368 --->5369 --->537 --->5370 --->5371 --->5372 --->5373 --->5374 --->5375 --->5376 --->5377 --->5378 --->5379 --->538 --->5380 --->5381 --->5382 --->5383 --->5384 --->5385 --->5386 --->5387 --->5388 --->5389 --->539 --->5390 --->5391 --->5392 --->5393 --->5394 --->5395 --->5396 --->5397 --->5398 --->5399 --->54 --->540 --->5400 --->5401 --->5402 --->5403 --->5404 --->5405 --->5406 --->5407 --->5408 --->5409 --->541 --->5410 --->5411 --->5412 --->5413 --->5414 --->5415 --->5416 --->5417 --->5418 --->5419 --->542 --->5420 --->5421 --->5422 --->5423 --->5424 --->5425 --->5426 --->5427 --->5428 --->5429 --->543 --->5430 --->5431 --->5432 --->5433 --->5434 --->5435 --->5436 --->5437 --->5438 --->5439 --->544 --->5440 --->5441 --->5442 --->5443 --->5444 --->5445 --->5446 --->5447 --->5448 --->5449 --->545 --->5450 --->5451 --->5452 --->5453 --->5454 --->5455 --->5456 --->5457 --->5458 --->5459 --->546 --->5460 --->5461 --->5462 --->5463 --->5464 --->5465 --->5466 --->5467 --->5468 --->5469 --->547 --->5470 --->5471 --->5472 --->5473 --->5474 --->5475 --->5476 --->5477 --->5478 --->5479 --->548 --->5480 --->5481 --->5482 --->5483 --->5484 --->5485 --->5486 --->5487 --->5488 --->5489 --->549 --->5490 --->5491 --->5492 --->5493 --->5494 --->5495 --->5496 --->5497 --->5498 --->5499 --->55 --->550 --->5500 --->5501 --->5502 --->5503 --->5504 --->5505 --->5506 --->5507 --->5508 --->5509 --->551 --->5510 --->5511 --->5512 --->5513 --->5514 --->5515 --->5516 --->5517 --->5518 --->5519 --->552 --->5520 --->5521 --->5522 --->5523 --->5524 --->5525 --->5526 --->5527 --->5528 --->5529 --->553 --->5530 --->5531 --->5532 --->5533 --->5534 --->5535 --->5536 --->5537 --->5538 --->5539 --->554 --->5540 --->5541 --->5542 --->5543 --->5544 --->5545 --->5546 --->5547 --->5548 --->5549 --->555 --->5550 --->5551 --->5552 --->5553 --->5554 --->5555 --->5556 --->5557 --->5558 --->5559 --->556 --->5560 --->5561 --->5562 --->5563 --->5564 --->5565 --->5566 --->5567 --->5568 --->5569 --->557 --->5570 --->5571 --->5572 --->5573 --->5574 --->5575 --->5576 --->5577 --->5578 --->5579 --->558 --->5580 --->5581 --->5582 --->5583 --->5584 --->5585 --->5586 --->5587 --->5588 --->5589 --->559 --->5590 --->5591 --->5592 --->5593 --->5594 --->5595 --->5596 --->5597 --->5598 --->5599 --->56 --->560 --->5600 --->5601 --->5602 --->5603 --->5604 --->5605 --->5606 --->5607 --->5608 --->5609 --->561 --->5610 --->5611 --->5612 --->5613 --->5614 --->5615 --->5616 --->5617 --->5618 --->5619 --->562 --->5620 --->5621 --->5622 --->5623 --->5624 --->5625 --->5626 --->5627 --->5628 --->5629 --->563 --->5630 --->5631 --->5632 --->5633 --->5634 --->5635 --->5636 --->5637 --->5638 --->5639 --->564 --->5640 --->5641 --->5642 --->5643 --->5644 --->5645 --->5646 --->5647 --->5648 --->5649 --->565 --->5650 --->5651 --->5652 --->5653 --->5654 --->5655 --->5656 --->5657 --->5658 --->5659 --->566 --->5660 --->5661 --->5662 --->5663 --->5664 --->5665 --->5666 --->5667 --->5668 --->5669 --->567 --->5670 --->5671 --->5672 --->5673 --->5674 --->5675 --->5676 --->5677 --->5678 --->5679 --->568 --->5680 --->5681 --->5682 --->5683 --->5684 --->5685 --->5686 --->5687 --->5688 --->5689 --->569 --->5690 --->5691 --->5692 --->5693 --->5694 --->5695 --->5696 --->5697 --->5698 --->5699 --->57 --->570 --->5700 --->5701 --->5702 --->5703 --->5704 --->5705 --->5706 --->5707 --->5708 --->5709 --->571 --->5710 --->5711 --->5712 --->5713 --->5714 --->5715 --->5716 --->5717 --->5718 --->5719 --->572 --->5720 --->5721 --->5722 --->5723 --->5724 --->5725 --->5726 --->5727 --->5728 --->5729 --->573 --->5730 --->5731 --->5732 --->5733 --->5734 --->5735 --->5736 --->5737 --->5738 --->5739 --->574 --->5740 --->5741 --->5742 --->5743 --->5744 --->5745 --->5746 --->5747 --->5748 --->5749 --->575 --->5750 --->5751 --->5752 --->5753 --->5754 --->5755 --->5756 --->5757 --->5758 --->5759 --->576 --->5760 --->5761 --->5762 --->5763 --->5764 --->5765 --->5766 --->5767 --->5768 --->5769 --->577 --->5770 --->5771 --->5772 --->5773 --->5774 --->5775 --->5776 --->5777 --->5778 --->5779 --->578 --->5780 --->5781 --->5782 --->5783 --->5784 --->5785 --->5786 --->5787 --->5788 --->5789 --->579 --->5790 --->5791 --->5792 --->5793 --->5794 --->5795 --->5796 --->5797 --->5798 --->5799 --->58 --->580 --->5800 --->5801 --->5802 --->5803 --->5804 --->5805 --->5806 --->5807 --->5808 --->5809 --->581 --->5810 --->5811 --->5812 --->5813 --->5814 --->5815 --->5816 --->5817 --->5818 --->5819 --->582 --->5820 --->5821 --->5822 --->5823 --->5824 --->5825 --->5826 --->5827 --->5828 --->5829 --->583 --->5830 --->5831 --->5832 --->5833 --->5834 --->5835 --->5836 --->5837 --->5838 --->5839 --->584 --->5840 --->5841 --->5842 --->5843 --->5844 --->5845 --->5846 --->5847 --->5848 --->5849 --->585 --->5850 --->5851 --->5852 --->5853 --->5854 --->5855 --->5856 --->5857 --->5858 --->5859 --->586 --->5860 --->5861 --->5862 --->5863 --->5864 --->5865 --->5866 --->5867 --->5868 --->5869 --->587 --->5870 --->5871 --->5872 --->5873 --->5874 --->5875 --->5876 --->5877 --->5878 --->5879 --->588 --->5880 --->5881 --->5882 --->5883 --->5884 --->5885 --->5886 --->5887 --->5888 --->5889 --->589 --->5890 --->5891 --->5892 --->5893 --->5894 --->5895 --->5896 --->5897 --->5898 --->5899 --->59 --->590 --->5900 --->5901 --->5902 --->5903 --->5904 --->5905 --->5906 --->5907 --->5908 --->5909 --->591 --->5910 --->5911 --->5912 --->5913 --->5914 --->5915 --->5916 --->5917 --->5918 --->5919 --->592 --->5920 --->5921 --->5922 --->5923 --->5924 --->5925 --->5926 --->5927 --->5928 --->5929 --->593 --->5930 --->5931 --->5932 --->5933 --->5934 --->5935 --->5936 --->5937 --->5938 --->5939 --->594 --->5940 --->5941 --->5942 --->5943 --->5944 --->5945 --->5946 --->5947 --->5948 --->5949 --->595 --->5950 --->5951 --->5952 --->5953 --->5954 --->5955 --->5956 --->5957 --->5958 --->5959 --->596 --->5960 --->5961 --->5962 --->5963 --->5964 --->5965 --->5966 --->5967 --->5968 --->5969 --->597 --->5970 --->5971 --->5972 --->5973 --->5974 --->5975 --->5976 --->5977 --->5978 --->5979 --->598 --->5980 --->5981 --->5982 --->5983 --->5984 --->5985 --->5986 --->5987 --->5988 --->5989 --->599 --->5990 --->5991 --->5992 --->5993 --->5994 --->5995 --->5996 --->5997 --->5998 --->5999 --->6 --->60 --->600 --->6000 --->6001 --->6002 --->6003 --->6004 --->6005 --->6006 --->6007 --->6008 --->6009 --->601 --->6010 --->6011 --->6012 --->6013 --->6014 --->6015 --->6016 --->6017 --->6018 --->6019 --->602 --->6020 --->6021 --->6022 --->6023 --->6024 --->6025 --->6026 --->6027 --->6028 --->6029 --->603 --->6030 --->6031 --->6032 --->6033 --->6034 --->6035 --->6036 --->6037 --->6038 --->6039 --->604 --->6040 --->6041 --->6042 --->6043 --->6044 --->6045 --->6046 --->6047 --->6048 --->6049 --->605 --->6050 --->6051 --->6052 --->6053 --->6054 --->6055 --->6056 --->6057 --->6058 --->6059 --->606 --->6060 --->6061 --->6062 --->6063 --->6064 --->6065 --->6066 --->6067 --->6068 --->6069 --->607 --->6070 --->6071 --->6072 --->6073 --->6074 --->6075 --->6076 --->6077 --->6078 --->6079 --->608 --->6080 --->6081 --->6082 --->6083 --->6084 --->6085 --->6086 --->6087 --->6088 --->6089 --->609 --->6090 --->6091 --->6092 --->6093 --->6094 --->6095 --->6096 --->6097 --->6098 --->6099 --->61 --->610 --->6100 --->6101 --->6102 --->6103 --->6104 --->6105 --->6106 --->6107 --->6108 --->6109 --->611 --->6110 --->6111 --->6112 --->6113 --->6114 --->6115 --->6116 --->6117 --->6118 --->6119 --->612 --->6120 --->6121 --->6122 --->6123 --->6124 --->6125 --->6126 --->6127 --->6128 --->6129 --->613 --->6130 --->6131 --->6132 --->6133 --->6134 --->6135 --->6136 --->6137 --->6138 --->6139 --->614 --->6140 --->6141 --->6142 --->6143 --->6144 --->6145 --->6146 --->6147 --->6148 --->6149 --->615 --->6150 --->6151 --->6152 --->6153 --->6154 --->6155 --->6156 --->6157 --->6158 --->6159 --->616 --->6160 --->6161 --->6162 --->6163 --->6164 --->6165 --->6166 --->6167 --->6168 --->6169 --->617 --->6170 --->6171 --->6172 --->6173 --->6174 --->6175 --->6176 --->6177 --->6178 --->6179 --->618 --->6180 --->6181 --->6182 --->6183 --->6184 --->6185 --->6186 --->6187 --->6188 --->6189 --->619 --->6190 --->6191 --->6192 --->6193 --->6194 --->6195 --->6196 --->6197 --->6198 --->6199 --->62 --->620 --->6200 --->6201 --->6202 --->6203 --->6204 --->6205 --->6206 --->6207 --->6208 --->6209 --->621 --->6210 --->6211 --->6212 --->6213 --->6214 --->6215 --->6216 --->6217 --->6218 --->6219 --->622 --->6220 --->6221 --->6222 --->6223 --->6224 --->6225 --->6226 --->6227 --->6228 --->6229 --->623 --->6230 --->6231 --->6232 --->6233 --->6234 --->6235 --->6236 --->6237 --->6238 --->6239 --->624 --->6240 --->6241 --->6242 --->6243 --->6244 --->6245 --->6246 --->6247 --->6248 --->6249 --->625 --->6250 --->6251 --->6252 --->6253 --->6254 --->6255 --->6256 --->6257 --->6258 --->6259 --->626 --->6260 --->6261 --->6262 --->6263 --->6264 --->6265 --->6266 --->6267 --->6268 --->6269 --->627 --->6270 --->6271 --->6272 --->6273 --->6274 --->6275 --->6276 --->6277 --->6278 --->6279 --->628 --->6280 --->6281 --->6282 --->6283 --->6284 --->6285 --->6286 --->6287 --->6288 --->6289 --->629 --->6290 --->6291 --->6292 --->6293 --->6294 --->6295 --->6296 --->6297 --->6298 --->6299 --->63 --->630 --->6300 --->6301 --->6302 --->6303 --->6304 --->6305 --->6306 --->6307 --->6308 --->6309 --->631 --->6310 --->6311 --->6312 --->6313 --->6314 --->6315 --->6316 --->6317 --->6318 --->6319 --->632 --->6320 --->6321 --->6322 --->6323 --->6324 --->6325 --->6326 --->6327 --->6328 --->6329 --->633 --->6330 --->6331 --->6332 --->6333 --->6334 --->6335 --->6336 --->6337 --->6338 --->6339 --->634 --->6340 --->6341 --->6342 --->6343 --->6344 --->6345 --->6346 --->6347 --->6348 --->6349 --->635 --->6350 --->6351 --->6352 --->6353 --->6354 --->6355 --->6356 --->6357 --->6358 --->6359 --->636 --->6360 --->6361 --->6362 --->6363 --->6364 --->6365 --->6366 --->6367 --->6368 --->6369 --->637 --->6370 --->6371 --->6372 --->6373 --->6374 --->6375 --->6376 --->6377 --->6378 --->6379 --->638 --->6380 --->6381 --->6382 --->6383 --->6384 --->6385 --->6386 --->6387 --->6388 --->6389 --->639 --->6390 --->6391 --->6392 --->6393 --->6394 --->6395 --->6396 --->6397 --->6398 --->6399 --->64 --->640 --->6400 --->6401 --->6402 --->6403 --->6404 --->6405 --->6406 --->6407 --->6408 --->6409 --->641 --->6410 --->6411 --->6412 --->6413 --->6414 --->6415 --->6416 --->6417 --->6418 --->6419 --->642 --->6420 --->6421 --->6422 --->6423 --->6424 --->6425 --->6426 --->6427 --->6428 --->6429 --->643 --->6430 --->6431 --->6432 --->6433 --->6434 --->6435 --->6436 --->6437 --->6438 --->6439 --->644 --->6440 --->6441 --->6442 --->6443 --->6444 --->6445 --->6446 --->6447 --->6448 --->6449 --->645 --->6450 --->6451 --->6452 --->6453 --->6454 --->6455 --->6456 --->6457 --->6458 --->6459 --->646 --->6460 --->6461 --->6462 --->6463 --->6464 --->6465 --->6466 --->6467 --->6468 --->6469 --->647 --->6470 --->6471 --->6472 --->6473 --->6474 --->6475 --->6476 --->6477 --->6478 --->6479 --->648 --->6480 --->6481 --->6482 --->6483 --->6484 --->6485 --->6486 --->6487 --->6488 --->6489 --->649 --->6490 --->6491 --->6492 --->6493 --->6494 --->6495 --->6496 --->6497 --->6498 --->6499 --->65 --->650 --->6500 --->6501 --->6502 --->6503 --->6504 --->6505 --->6506 --->6507 --->6508 --->6509 --->651 --->6510 --->6511 --->6512 --->6513 --->6514 --->6515 --->6516 --->6517 --->6518 --->6519 --->652 --->6520 --->6521 --->6522 --->6523 --->6524 --->6525 --->6526 --->6527 --->6528 --->6529 --->653 --->6530 --->6531 --->6532 --->6533 --->6534 --->6535 --->6536 --->6537 --->6538 --->6539 --->654 --->6540 --->6541 --->6542 --->6543 --->6544 --->6545 --->6546 --->6547 --->6548 --->6549 --->655 --->6550 --->6551 --->6552 --->6553 --->6554 --->6555 --->6556 --->6557 --->6558 --->6559 --->656 --->6560 --->6561 --->6562 --->6563 --->6564 --->6565 --->6566 --->6567 --->6568 --->6569 --->657 --->6570 --->6571 --->6572 --->6573 --->6574 --->6575 --->6576 --->6577 --->6578 --->6579 --->658 --->6580 --->6581 --->6582 --->6583 --->6584 --->6585 --->6586 --->6587 --->6588 --->6589 --->659 --->6590 --->6591 --->6592 --->6593 --->6594 --->6595 --->6596 --->6597 --->6598 --->6599 --->66 --->660 --->6600 --->6601 --->6602 --->6603 --->6604 --->6605 --->6606 --->6607 --->6608 --->6609 --->661 --->6610 --->6611 --->6612 --->6613 --->6614 --->6615 --->6616 --->6617 --->6618 --->6619 --->662 --->6620 --->6621 --->6622 --->6623 --->6624 --->6625 --->6626 --->6627 --->6628 --->6629 --->663 --->6630 --->6631 --->6632 --->6633 --->6634 --->6635 --->6636 --->6637 --->6638 --->6639 --->664 --->6640 --->6641 --->6642 --->6643 --->6644 --->6645 --->6646 --->6647 --->6648 --->6649 --->665 --->6650 --->6651 --->6652 --->6653 --->6654 --->6655 --->6656 --->6657 --->6658 --->6659 --->666 --->6660 --->6661 --->6662 --->6663 --->6664 --->6665 --->6666 --->6667 --->6668 --->6669 --->667 --->6670 --->6671 --->6672 --->6673 --->6674 --->6675 --->6676 --->6677 --->6678 --->6679 --->668 --->6680 --->6681 --->6682 --->6683 --->6684 --->6685 --->6686 --->6687 --->6688 --->6689 --->669 --->6690 --->6691 --->6692 --->6693 --->6694 --->6695 --->6696 --->6697 --->6698 --->6699 --->67 --->670 --->6700 --->6701 --->6702 --->6703 --->6704 --->6705 --->6706 --->6707 --->6708 --->6709 --->671 --->6710 --->6711 --->6712 --->6713 --->6714 --->6715 --->6716 --->6717 --->6718 --->6719 --->672 --->6720 --->6721 --->6722 --->6723 --->6724 --->6725 --->6726 --->6727 --->6728 --->6729 --->673 --->6730 --->6731 --->6732 --->6733 --->6734 --->6735 --->6736 --->6737 --->6738 --->6739 --->674 --->6740 --->6741 --->6742 --->6743 --->6744 --->6745 --->6746 --->6747 --->6748 --->6749 --->675 --->6750 --->6751 --->6752 --->6753 --->6754 --->6755 --->6756 --->6757 --->6758 --->6759 --->676 --->6760 --->6761 --->6762 --->6763 --->6764 --->6765 --->6766 --->6767 --->6768 --->6769 --->677 --->6770 --->6771 --->6772 --->6773 --->6774 --->6775 --->6776 --->6777 --->6778 --->6779 --->678 --->6780 --->6781 --->6782 --->6783 --->6784 --->6785 --->6786 --->6787 --->6788 --->6789 --->679 --->6790 --->6791 --->6792 --->6793 --->6794 --->6795 --->6796 --->6797 --->6798 --->6799 --->68 --->680 --->6800 --->6801 --->6802 --->6803 --->6804 --->6805 --->6806 --->6807 --->6808 --->6809 --->681 --->6810 --->6811 --->6812 --->6813 --->6814 --->6815 --->6816 --->6817 --->6818 --->6819 --->682 --->6820 --->6821 --->6822 --->6823 --->6824 --->6825 --->6826 --->6827 --->6828 --->6829 --->683 --->6830 --->6831 --->6832 --->6833 --->6834 --->6835 --->6836 --->6837 --->6838 --->6839 --->684 --->6840 --->6841 --->6842 --->6843 --->6844 --->6845 --->6846 --->6847 --->6848 --->6849 --->685 --->6850 --->6851 --->6852 --->6853 --->6854 --->6855 --->6856 --->6857 --->6858 --->6859 --->686 --->6860 --->6861 --->6862 --->6863 --->6864 --->6865 --->6866 --->6867 --->6868 --->6869 --->687 --->6870 --->6871 --->6872 --->6873 --->6874 --->6875 --->6876 --->6877 --->6878 --->6879 --->688 --->6880 --->6881 --->6882 --->6883 --->6884 --->6885 --->6886 --->6887 --->6888 --->6889 --->689 --->6890 --->6891 --->6892 --->6893 --->6894 --->6895 --->6896 --->6897 --->6898 --->6899 --->69 --->690 --->6900 --->6901 --->6902 --->6903 --->6904 --->6905 --->6906 --->6907 --->6908 --->6909 --->691 --->6910 --->6911 --->6912 --->6913 --->6914 --->6915 --->6916 --->6917 --->6918 --->6919 --->692 --->6920 --->6921 --->6922 --->6923 --->6924 --->6925 --->6926 --->6927 --->6928 --->6929 --->693 --->6930 --->6931 --->6932 --->6933 --->6934 --->6935 --->6936 --->6937 --->6938 --->6939 --->694 --->6940 --->6941 --->6942 --->6943 --->6944 --->6945 --->6946 --->6947 --->6948 --->6949 --->695 --->6950 --->6951 --->6952 --->6953 --->6954 --->6955 --->6956 --->6957 --->6958 --->6959 --->696 --->6960 --->6961 --->6962 --->6963 --->6964 --->6965 --->6966 --->6967 --->6968 --->6969 --->697 --->6970 --->6971 --->6972 --->6973 --->6974 --->6975 --->6976 --->6977 --->6978 --->6979 --->698 --->6980 --->6981 --->6982 --->6983 --->6984 --->6985 --->6986 --->6987 --->6988 --->6989 --->699 --->6990 --->6991 --->6992 --->6993 --->6994 --->6995 --->6996 --->6997 --->6998 --->6999 --->7 --->70 --->700 --->7000 --->7001 --->7002 --->7003 --->7004 --->7005 --->7006 --->7007 --->7008 --->7009 --->701 --->7010 --->7011 --->7012 --->7013 --->7014 --->7015 --->7016 --->7017 --->7018 --->7019 --->702 --->7020 --->7021 --->7022 --->7023 --->7024 --->7025 --->7026 --->7027 --->7028 --->7029 --->703 --->7030 --->7031 --->7032 --->7033 --->7034 --->7035 --->7036 --->7037 --->7038 --->7039 --->704 --->7040 --->7041 --->7042 --->7043 --->7044 --->7045 --->7046 --->7047 --->7048 --->7049 --->705 --->7050 --->7051 --->7052 --->7053 --->7054 --->7055 --->7056 --->7057 --->7058 --->7059 --->706 --->7060 --->7061 --->7062 --->7063 --->7064 --->7065 --->7066 --->7067 --->7068 --->7069 --->707 --->7070 --->7071 --->7072 --->7073 --->7074 --->7075 --->7076 --->7077 --->7078 --->7079 --->708 --->7080 --->7081 --->7082 --->7083 --->7084 --->7085 --->7086 --->7087 --->7088 --->7089 --->709 --->7090 --->7091 --->7092 --->7093 --->7094 --->7095 --->7096 --->7097 --->7098 --->7099 --->71 --->710 --->7100 --->7101 --->7102 --->7103 --->7104 --->7105 --->7106 --->7107 --->7108 --->7109 --->711 --->7110 --->7111 --->7112 --->7113 --->7114 --->7115 --->7116 --->7117 --->7118 --->7119 --->712 --->7120 --->7121 --->7122 --->7123 --->7124 --->7125 --->7126 --->7127 --->7128 --->7129 --->713 --->7130 --->7131 --->7132 --->7133 --->7134 --->7135 --->7136 --->7137 --->7138 --->7139 --->714 --->7140 --->7141 --->7142 --->7143 --->7144 --->7145 --->7146 --->7147 --->7148 --->7149 --->715 --->7150 --->7151 --->7152 --->7153 --->7154 --->7155 --->7156 --->7157 --->7158 --->7159 --->716 --->7160 --->7161 --->7162 --->7163 --->7164 --->7165 --->7166 --->7167 --->7168 --->7169 --->717 --->7170 --->7171 --->7172 --->7173 --->7174 --->7175 --->7176 --->7177 --->7178 --->7179 --->718 --->7180 --->7181 --->7182 --->7183 --->7184 --->7185 --->7186 --->7187 --->7188 --->7189 --->719 --->7190 --->7191 --->7192 --->7193 --->7194 --->7195 --->7196 --->7197 --->7198 --->7199 --->72 --->720 --->7200 --->7201 --->7202 --->7203 --->7204 --->7205 --->7206 --->7207 --->7208 --->7209 --->721 --->7210 --->7211 --->7212 --->7213 --->7214 --->7215 --->7216 --->7217 --->7218 --->7219 --->722 --->7220 --->7221 --->7222 --->7223 --->7224 --->7225 --->7226 --->7227 --->7228 --->7229 --->723 --->7230 --->7231 --->7232 --->7233 --->7234 --->7235 --->7236 --->7237 --->7238 --->7239 --->724 --->7240 --->7241 --->7242 --->7243 --->7244 --->7245 --->7246 --->7247 --->7248 --->7249 --->725 --->7250 --->7251 --->7252 --->7253 --->7254 --->7255 --->7256 --->7257 --->7258 --->7259 --->726 --->7260 --->7261 --->7262 --->7263 --->7264 --->7265 --->7266 --->7267 --->7268 --->7269 --->727 --->7270 --->7271 --->7272 --->7273 --->7274 --->7275 --->7276 --->7277 --->7278 --->7279 --->728 --->7280 --->7281 --->7282 --->7283 --->7284 --->7285 --->7286 --->7287 --->7288 --->7289 --->729 --->7290 --->7291 --->7292 --->7293 --->7294 --->7295 --->7296 --->7297 --->7298 --->7299 --->73 --->730 --->7300 --->7301 --->7302 --->7303 --->7304 --->7305 --->7306 --->7307 --->7308 --->7309 --->731 --->7310 --->7311 --->7312 --->7313 --->7314 --->7315 --->7316 --->7317 --->7318 --->7319 --->732 --->7320 --->7321 --->7322 --->7323 --->7324 --->7325 --->7326 --->7327 --->7328 --->7329 --->733 --->7330 --->7331 --->7332 --->7333 --->7334 --->7335 --->7336 --->7337 --->7338 --->7339 --->734 --->7340 --->7341 --->7342 --->7343 --->7344 --->7345 --->7346 --->7347 --->7348 --->7349 --->735 --->7350 --->7351 --->7352 --->7353 --->7354 --->7355 --->7356 --->7357 --->7358 --->7359 --->736 --->7360 --->7361 --->7362 --->7363 --->7364 --->7365 --->7366 --->7367 --->7368 --->7369 --->737 --->7370 --->7371 --->7372 --->7373 --->7374 --->7375 --->7376 --->7377 --->7378 --->7379 --->738 --->7380 --->7381 --->7382 --->7383 --->7384 --->7385 --->7386 --->7387 --->7388 --->7389 --->739 --->7390 --->7391 --->7392 --->7393 --->7394 --->7395 --->7396 --->7397 --->7398 --->7399 --->74 --->740 --->7400 --->7401 --->7402 --->7403 --->7404 --->7405 --->7406 --->7407 --->7408 --->7409 --->741 --->7410 --->7411 --->7412 --->7413 --->7414 --->7415 --->7416 --->7417 --->7418 --->7419 --->742 --->7420 --->7421 --->7422 --->7423 --->7424 --->7425 --->7426 --->7427 --->7428 --->7429 --->743 --->7430 --->7431 --->7432 --->7433 --->7434 --->7435 --->7436 --->7437 --->7438 --->7439 --->744 --->7440 --->7441 --->7442 --->7443 --->7444 --->7445 --->7446 --->7447 --->7448 --->7449 --->745 --->7450 --->7451 --->7452 --->7453 --->7454 --->7455 --->7456 --->7457 --->7458 --->7459 --->746 --->7460 --->7461 --->7462 --->7463 --->7464 --->7465 --->7466 --->7467 --->7468 --->7469 --->747 --->7470 --->7471 --->7472 --->7473 --->7474 --->7475 --->7476 --->7477 --->7478 --->7479 --->748 --->7480 --->7481 --->7482 --->7483 --->7484 --->7485 --->7486 --->7487 --->7488 --->7489 --->749 --->7490 --->7491 --->7492 --->7493 --->7494 --->7495 --->7496 --->7497 --->7498 --->7499 --->75 --->750 --->7500 --->7501 --->7502 --->7503 --->7504 --->7505 --->7506 --->7507 --->7508 --->7509 --->751 --->7510 --->7511 --->7512 --->7513 --->7514 --->7515 --->7516 --->7517 --->7518 --->7519 --->752 --->7520 --->7521 --->7522 --->7523 --->7524 --->7525 --->7526 --->7527 --->7528 --->7529 --->753 --->7530 --->7531 --->7532 --->7533 --->7534 --->7535 --->7536 --->7537 --->7538 --->7539 --->754 --->7540 --->7541 --->7542 --->7543 --->7544 --->7545 --->7546 --->7547 --->7548 --->7549 --->755 --->7550 --->7551 --->7552 --->7553 --->7554 --->7555 --->7556 --->7557 --->7558 --->7559 --->756 --->7560 --->7561 --->7562 --->7563 --->7564 --->7565 --->7566 --->7567 --->7568 --->7569 --->757 --->7570 --->7571 --->7572 --->7573 --->7574 --->7575 --->7576 --->7577 --->7578 --->7579 --->758 --->7580 --->7581 --->7582 --->7583 --->7584 --->7585 --->7586 --->7587 --->7588 --->7589 --->759 --->7590 --->7591 --->7592 --->7593 --->7594 --->7595 --->7596 --->7597 --->7598 --->7599 --->76 --->760 --->7600 --->7601 --->7602 --->7603 --->7604 --->7605 --->7606 --->7607 --->7608 --->7609 --->761 --->7610 --->7611 --->7612 --->7613 --->7614 --->7615 --->7616 --->7617 --->7618 --->7619 --->762 --->7620 --->7621 --->7622 --->7623 --->7624 --->7625 --->7626 --->7627 --->7628 --->7629 --->763 --->7630 --->7631 --->7632 --->7633 --->7634 --->7635 --->7636 --->7637 --->7638 --->7639 --->764 --->7640 --->7641 --->7642 --->7643 --->7644 --->7645 --->7646 --->7647 --->7648 --->7649 --->765 --->7650 --->7651 --->7652 --->7653 --->7654 --->7655 --->7656 --->7657 --->7658 --->7659 --->766 --->7660 --->7661 --->7662 --->7663 --->7664 --->7665 --->7666 --->7667 --->7668 --->7669 --->767 --->7670 --->7671 --->7672 --->7673 --->7674 --->7675 --->7676 --->7677 --->7678 --->7679 --->768 --->7680 --->7681 --->7682 --->7683 --->7684 --->7685 --->7686 --->7687 --->7688 --->7689 --->769 --->7690 --->7691 --->7692 --->7693 --->7694 --->7695 --->7696 --->7697 --->7698 --->7699 --->77 --->770 --->7700 --->7701 --->7702 --->7703 --->7704 --->7705 --->7706 --->7707 --->7708 --->7709 --->771 --->7710 --->7711 --->7712 --->7713 --->7714 --->7715 --->7716 --->7717 --->7718 --->7719 --->772 --->7720 --->7721 --->7722 --->7723 --->7724 --->7725 --->7726 --->7727 --->7728 --->7729 --->773 --->7730 --->7731 --->7732 --->7733 --->7734 --->7735 --->7736 --->7737 --->7738 --->7739 --->774 --->7740 --->7741 --->7742 --->7743 --->7744 --->7745 --->7746 --->7747 --->7748 --->7749 --->775 --->7750 --->7751 --->7752 --->7753 --->7754 --->7755 --->7756 --->7757 --->7758 --->7759 --->776 --->7760 --->7761 --->7762 --->7763 --->7764 --->7765 --->7766 --->7767 --->7768 --->7769 --->777 --->7770 --->7771 --->7772 --->7773 --->7774 --->7775 --->7776 --->7777 --->7778 --->7779 --->778 --->7780 --->7781 --->7782 --->7783 --->7784 --->7785 --->7786 --->7787 --->7788 --->7789 --->779 --->7790 --->7791 --->7792 --->7793 --->7794 --->7795 --->7796 --->7797 --->7798 --->7799 --->78 --->780 --->7800 --->7801 --->7802 --->7803 --->7804 --->7805 --->7806 --->7807 --->7808 --->7809 --->781 --->7810 --->7811 --->7812 --->7813 --->7814 --->7815 --->7816 --->7817 --->7818 --->7819 --->782 --->7820 --->7821 --->7822 --->7823 --->7824 --->7825 --->7826 --->7827 --->7828 --->7829 --->783 --->7830 --->7831 --->7832 --->7833 --->7834 --->7835 --->7836 --->7837 --->7838 --->7839 --->784 --->7840 --->7841 --->7842 --->7843 --->7844 --->7845 --->7846 --->7847 --->7848 --->7849 --->785 --->7850 --->7851 --->7852 --->7853 --->7854 --->7855 --->7856 --->7857 --->7858 --->7859 --->786 --->7860 --->7861 --->7862 --->7863 --->7864 --->7865 --->7866 --->7867 --->7868 --->7869 --->787 --->7870 --->7871 --->7872 --->7873 --->7874 --->7875 --->7876 --->7877 --->7878 --->7879 --->788 --->7880 --->7881 --->7882 --->7883 --->7884 --->7885 --->7886 --->7887 --->7888 --->7889 --->789 --->7890 --->7891 --->7892 --->7893 --->7894 --->7895 --->7896 --->7897 --->7898 --->7899 --->79 --->790 --->7900 --->7901 --->7902 --->7903 --->7904 --->7905 --->7906 --->7907 --->7908 --->7909 --->791 --->7910 --->7911 --->7912 --->7913 --->7914 --->7915 --->7916 --->7917 --->7918 --->7919 --->792 --->7920 --->7921 --->7922 --->7923 --->7924 --->7925 --->7926 --->7927 --->7928 --->7929 --->793 --->7930 --->7931 --->7932 --->7933 --->7934 --->7935 --->7936 --->7937 --->7938 --->7939 --->794 --->7940 --->7941 --->7942 --->7943 --->7944 --->7945 --->7946 --->7947 --->7948 --->7949 --->795 --->7950 --->7951 --->7952 --->7953 --->7954 --->7955 --->7956 --->7957 --->7958 --->7959 --->796 --->7960 --->7961 --->7962 --->7963 --->7964 --->7965 --->7966 --->7967 --->7968 --->7969 --->797 --->7970 --->7971 --->7972 --->7973 --->7974 --->7975 --->7976 --->7977 --->7978 --->7979 --->798 --->7980 --->7981 --->7982 --->7983 --->7984 --->7985 --->7986 --->7987 --->7988 --->7989 --->799 --->7990 --->7991 --->7992 --->7993 --->7994 --->7995 --->7996 --->7997 --->7998 --->7999 --->8 --->80 --->800 --->8000 --->8001 --->8002 --->8003 --->8004 --->8005 --->8006 --->8007 --->8008 --->8009 --->801 --->8010 --->8011 --->8012 --->8013 --->8014 --->8015 --->8016 --->8017 --->8018 --->8019 --->802 --->8020 --->8021 --->8022 --->8023 --->8024 --->8025 --->8026 --->8027 --->8028 --->8029 --->803 --->8030 --->8031 --->8032 --->8033 --->8034 --->8035 --->8036 --->8037 --->8038 --->8039 --->804 --->8040 --->8041 --->8042 --->8043 --->8044 --->8045 --->8046 --->8047 --->8048 --->8049 --->805 --->8050 --->8051 --->8052 --->8053 --->8054 --->8055 --->8056 --->8057 --->8058 --->8059 --->806 --->8060 --->8061 --->8062 --->8063 --->8064 --->8065 --->8066 --->8067 --->8068 --->8069 --->807 --->8070 --->8071 --->8072 --->8073 --->8074 --->8075 --->8076 --->8077 --->8078 --->8079 --->808 --->8080 --->8081 --->8082 --->8083 --->8084 --->8085 --->8086 --->8087 --->8088 --->8089 --->809 --->8090 --->8091 --->8092 --->8093 --->8094 --->8095 --->8096 --->8097 --->8098 --->8099 --->81 --->810 --->8100 --->8101 --->8102 --->8103 --->8104 --->8105 --->8106 --->8107 --->8108 --->8109 --->811 --->8110 --->8111 --->8112 --->8113 --->8114 --->8115 --->8116 --->8117 --->8118 --->8119 --->812 --->8120 --->8121 --->8122 --->8123 --->8124 --->8125 --->8126 --->8127 --->8128 --->8129 --->813 --->8130 --->8131 --->8132 --->8133 --->8134 --->8135 --->8136 --->8137 --->8138 --->8139 --->814 --->8140 --->8141 --->8142 --->8143 --->8144 --->8145 --->8146 --->8147 --->8148 --->8149 --->815 --->8150 --->8151 --->8152 --->8153 --->8154 --->8155 --->8156 --->8157 --->8158 --->8159 --->816 --->8160 --->8161 --->8162 --->8163 --->8164 --->8165 --->8166 --->8167 --->8168 --->8169 --->817 --->8170 --->8171 --->8172 --->8173 --->8174 --->8175 --->8176 --->8177 --->8178 --->8179 --->818 --->8180 --->8181 --->8182 --->8183 --->8184 --->8185 --->8186 --->8187 --->8188 --->8189 --->819 --->8190 --->8191 --->8192 --->8193 --->8194 --->8195 --->8196 --->8197 --->8198 --->8199 --->82 --->820 --->8200 --->8201 --->8202 --->8203 --->8204 --->8205 --->8206 --->8207 --->8208 --->8209 --->821 --->8210 --->8211 --->8212 --->8213 --->8214 --->8215 --->8216 --->8217 --->8218 --->8219 --->822 --->8220 --->8221 --->8222 --->8223 --->8224 --->8225 --->8226 --->8227 --->8228 --->8229 --->823 --->8230 --->8231 --->8232 --->8233 --->8234 --->8235 --->8236 --->8237 --->8238 --->8239 --->824 --->8240 --->8241 --->8242 --->8243 --->8244 --->8245 --->8246 --->8247 --->8248 --->8249 --->825 --->8250 --->8251 --->8252 --->8253 --->8254 --->8255 --->8256 --->8257 --->8258 --->8259 --->826 --->8260 --->8261 --->8262 --->8263 --->8264 --->8265 --->8266 --->8267 --->8268 --->8269 --->827 --->8270 --->8271 --->8272 --->8273 --->8274 --->8275 --->8276 --->8277 --->8278 --->8279 --->828 --->8280 --->8281 --->8282 --->8283 --->8284 --->8285 --->8286 --->8287 --->8288 --->8289 --->829 --->8290 --->8291 --->8292 --->8293 --->8294 --->8295 --->8296 --->8297 --->8298 --->8299 --->83 --->830 --->8300 --->8301 --->8302 --->8303 --->8304 --->8305 --->8306 --->8307 --->8308 --->8309 --->831 --->8310 --->8311 --->8312 --->8313 --->8314 --->8315 --->8316 --->8317 --->8318 --->8319 --->832 --->8320 --->8321 --->8322 --->8323 --->8324 --->8325 --->8326 --->8327 --->8328 --->8329 --->833 --->8330 --->8331 --->8332 --->8333 --->8334 --->8335 --->8336 --->8337 --->8338 --->8339 --->834 --->8340 --->8341 --->8342 --->8343 --->8344 --->8345 --->8346 --->8347 --->8348 --->8349 --->835 --->8350 --->8351 --->8352 --->8353 --->8354 --->8355 --->8356 --->8357 --->8358 --->8359 --->836 --->8360 --->8361 --->8362 --->8363 --->8364 --->8365 --->8366 --->8367 --->8368 --->8369 --->837 --->8370 --->8371 --->8372 --->8373 --->8374 --->8375 --->8376 --->8377 --->8378 --->8379 --->838 --->8380 --->8381 --->8382 --->8383 --->8384 --->8385 --->8386 --->8387 --->8388 --->8389 --->839 --->8390 --->8391 --->8392 --->8393 --->8394 --->8395 --->8396 --->8397 --->8398 --->8399 --->84 --->840 --->8400 --->8401 --->8402 --->8403 --->8404 --->8405 --->8406 --->8407 --->8408 --->8409 --->841 --->8410 --->8411 --->8412 --->8413 --->8414 --->8415 --->8416 --->8417 --->8418 --->8419 --->842 --->8420 --->8421 --->8422 --->8423 --->8424 --->8425 --->8426 --->8427 --->8428 --->8429 --->843 --->8430 --->8431 --->8432 --->8433 --->8434 --->8435 --->8436 --->8437 --->8438 --->8439 --->844 --->8440 --->8441 --->8442 --->8443 --->8444 --->8445 --->8446 --->8447 --->8448 --->8449 --->845 --->8450 --->8451 --->8452 --->8453 --->8454 --->8455 --->8456 --->8457 --->8458 --->8459 --->846 --->8460 --->8461 --->8462 --->8463 --->8464 --->8465 --->8466 --->8467 --->8468 --->8469 --->847 --->8470 --->8471 --->8472 --->8473 --->8474 --->8475 --->8476 --->8477 --->8478 --->8479 --->848 --->8480 --->8481 --->8482 --->8483 --->8484 --->8485 --->8486 --->8487 --->8488 --->8489 --->849 --->8490 --->8491 --->8492 --->8493 --->8494 --->8495 --->8496 --->8497 --->8498 --->8499 --->85 --->850 --->8500 --->8501 --->8502 --->8503 --->8504 --->8505 --->8506 --->8507 --->8508 --->8509 --->851 --->8510 --->8511 --->8512 --->8513 --->8514 --->8515 --->8516 --->8517 --->8518 --->8519 --->852 --->8520 --->8521 --->8522 --->8523 --->8524 --->8525 --->8526 --->8527 --->8528 --->8529 --->853 --->8530 --->8531 --->8532 --->8533 --->8534 --->8535 --->8536 --->8537 --->8538 --->8539 --->854 --->8540 --->8541 --->8542 --->8543 --->8544 --->8545 --->8546 --->8547 --->8548 --->8549 --->855 --->8550 --->8551 --->8552 --->8553 --->8554 --->8555 --->8556 --->8557 --->8558 --->8559 --->856 --->8560 --->8561 --->8562 --->8563 --->8564 --->8565 --->8566 --->8567 --->8568 --->8569 --->857 --->8570 --->8571 --->8572 --->8573 --->8574 --->8575 --->8576 --->8577 --->8578 --->8579 --->858 --->8580 --->8581 --->8582 --->8583 --->8584 --->8585 --->8586 --->8587 --->8588 --->8589 --->859 --->8590 --->8591 --->8592 --->8593 --->8594 --->8595 --->8596 --->8597 --->8598 --->8599 --->86 --->860 --->8600 --->8601 --->8602 --->8603 --->8604 --->8605 --->8606 --->8607 --->8608 --->8609 --->861 --->8610 --->8611 --->8612 --->8613 --->8614 --->8615 --->8616 --->8617 --->8618 --->8619 --->862 --->8620 --->8621 --->8622 --->8623 --->8624 --->8625 --->8626 --->8627 --->8628 --->8629 --->863 --->8630 --->8631 --->8632 --->8633 --->8634 --->8635 --->8636 --->8637 --->8638 --->8639 --->864 --->8640 --->8641 --->8642 --->8643 --->8644 --->8645 --->8646 --->8647 --->8648 --->8649 --->865 --->8650 --->8651 --->8652 --->8653 --->8654 --->8655 --->8656 --->8657 --->8658 --->8659 --->866 --->8660 --->8661 --->8662 --->8663 --->8664 --->8665 --->8666 --->8667 --->8668 --->8669 --->867 --->8670 --->8671 --->8672 --->8673 --->8674 --->8675 --->8676 --->8677 --->8678 --->8679 --->868 --->8680 --->8681 --->8682 --->8683 --->8684 --->8685 --->8686 --->8687 --->8688 --->8689 --->869 --->8690 --->8691 --->8692 --->8693 --->8694 --->8695 --->8696 --->8697 --->8698 --->8699 --->87 --->870 --->8700 --->8701 --->8702 --->8703 --->8704 --->8705 --->8706 --->8707 --->8708 --->8709 --->871 --->8710 --->8711 --->8712 --->8713 --->8714 --->8715 --->8716 --->8717 --->8718 --->8719 --->872 --->8720 --->8721 --->8722 --->8723 --->8724 --->8725 --->8726 --->8727 --->8728 --->8729 --->873 --->8730 --->8731 --->8732 --->8733 --->8734 --->8735 --->8736 --->8737 --->8738 --->8739 --->874 --->8740 --->8741 --->8742 --->8743 --->8744 --->8745 --->8746 --->8747 --->8748 --->8749 --->875 --->8750 --->8751 --->8752 --->8753 --->8754 --->8755 --->8756 --->8757 --->8758 --->8759 --->876 --->8760 --->8761 --->8762 --->8763 --->8764 --->8765 --->8766 --->8767 --->8768 --->8769 --->877 --->8770 --->8771 --->8772 --->8773 --->8774 --->8775 --->8776 --->8777 --->8778 --->8779 --->878 --->8780 --->8781 --->8782 --->8783 --->8784 --->8785 --->8786 --->8787 --->8788 --->8789 --->879 --->8790 --->8791 --->8792 --->8793 --->8794 --->8795 --->8796 --->8797 --->8798 --->8799 --->88 --->880 --->8800 --->8801 --->8802 --->8803 --->8804 --->8805 --->8806 --->8807 --->8808 --->8809 --->881 --->8810 --->8811 --->8812 --->8813 --->8814 --->8815 --->8816 --->8817 --->8818 --->8819 --->882 --->8820 --->8821 --->8822 --->8823 --->8824 --->8825 --->8826 --->8827 --->8828 --->8829 --->883 --->8830 --->8831 --->8832 --->8833 --->8834 --->8835 --->8836 --->8837 --->8838 --->8839 --->884 --->8840 --->8841 --->8842 --->8843 --->8844 --->8845 --->8846 --->8847 --->8848 --->8849 --->885 --->8850 --->8851 --->8852 --->8853 --->8854 --->8855 --->8856 --->8857 --->8858 --->8859 --->886 --->8860 --->8861 --->8862 --->8863 --->8864 --->8865 --->8866 --->8867 --->8868 --->8869 --->887 --->8870 --->8871 --->8872 --->8873 --->8874 --->8875 --->8876 --->8877 --->8878 --->8879 --->888 --->8880 --->8881 --->8882 --->8883 --->8884 --->8885 --->8886 --->8887 --->8888 --->8889 --->889 --->8890 --->8891 --->8892 --->8893 --->8894 --->8895 --->8896 --->8897 --->8898 --->8899 --->89 --->890 --->8900 --->8901 --->8902 --->8903 --->8904 --->8905 --->8906 --->8907 --->8908 --->8909 --->891 --->8910 --->8911 --->8912 --->8913 --->8914 --->8915 --->8916 --->8917 --->8918 --->8919 --->892 --->8920 --->8921 --->8922 --->8923 --->8924 --->8925 --->8926 --->8927 --->8928 --->8929 --->893 --->8930 --->8931 --->8932 --->8933 --->8934 --->8935 --->8936 --->8937 --->8938 --->8939 --->894 --->8940 --->8941 --->8942 --->8943 --->8944 --->8945 --->8946 --->8947 --->8948 --->8949 --->895 --->8950 --->8951 --->8952 --->8953 --->8954 --->8955 --->8956 --->8957 --->8958 --->8959 --->896 --->8960 --->8961 --->8962 --->8963 --->8964 --->8965 --->8966 --->8967 --->8968 --->8969 --->897 --->8970 --->8971 --->8972 --->8973 --->8974 --->8975 --->8976 --->8977 --->8978 --->8979 --->898 --->8980 --->8981 --->8982 --->8983 --->8984 --->8985 --->8986 --->8987 --->8988 --->8989 --->899 --->8990 --->8991 --->8992 --->8993 --->8994 --->8995 --->8996 --->8997 --->8998 --->8999 --->9 --->90 --->900 --->9000 --->9001 --->9002 --->9003 --->9004 --->9005 --->9006 --->9007 --->9008 --->9009 --->901 --->9010 --->9011 --->9012 --->9013 --->9014 --->9015 --->9016 --->9017 --->9018 --->9019 --->902 --->9020 --->9021 --->9022 --->9023 --->9024 --->9025 --->9026 --->9027 --->9028 --->9029 --->903 --->9030 --->9031 --->9032 --->9033 --->9034 --->9035 --->9036 --->9037 --->9038 --->9039 --->904 --->9040 --->9041 --->9042 --->9043 --->9044 --->9045 --->9046 --->9047 --->9048 --->9049 --->905 --->9050 --->9051 --->9052 --->9053 --->9054 --->9055 --->9056 --->9057 --->9058 --->9059 --->906 --->9060 --->9061 --->9062 --->9063 --->9064 --->9065 --->9066 --->9067 --->9068 --->9069 --->907 --->9070 --->9071 --->9072 --->9073 --->9074 --->9075 --->9076 --->9077 --->9078 --->9079 --->908 --->9080 --->9081 --->9082 --->9083 --->9084 --->9085 --->9086 --->9087 --->9088 --->9089 --->909 --->9090 --->9091 --->9092 --->9093 --->9094 --->9095 --->9096 --->9097 --->9098 --->9099 --->91 --->910 --->9100 --->9101 --->9102 --->9103 --->9104 --->9105 --->9106 --->9107 --->9108 --->9109 --->911 --->9110 --->9111 --->9112 --->9113 --->9114 --->9115 --->9116 --->9117 --->9118 --->9119 --->912 --->9120 --->9121 --->9122 --->9123 --->9124 --->9125 --->9126 --->9127 --->9128 --->9129 --->913 --->9130 --->9131 --->9132 --->9133 --->9134 --->9135 --->9136 --->9137 --->9138 --->9139 --->914 --->9140 --->9141 --->9142 --->9143 --->9144 --->9145 --->9146 --->9147 --->9148 --->9149 --->915 --->9150 --->9151 --->9152 --->9153 --->9154 --->9155 --->9156 --->9157 --->9158 --->9159 --->916 --->9160 --->9161 --->9162 --->9163 --->9164 --->9165 --->9166 --->9167 --->9168 --->9169 --->917 --->9170 --->9171 --->9172 --->9173 --->9174 --->9175 --->9176 --->9177 --->9178 --->9179 --->918 --->9180 --->9181 --->9182 --->9183 --->9184 --->9185 --->9186 --->9187 --->9188 --->9189 --->919 --->9190 --->9191 --->9192 --->9193 --->9194 --->9195 --->9196 --->9197 --->9198 --->9199 --->92 --->920 --->9200 --->9201 --->9202 --->9203 --->9204 --->9205 --->9206 --->9207 --->9208 --->9209 --->921 --->9210 --->9211 --->9212 --->9213 --->9214 --->9215 --->9216 --->9217 --->9218 --->9219 --->922 --->9220 --->9221 --->9222 --->9223 --->9224 --->9225 --->9226 --->9227 --->9228 --->9229 --->923 --->9230 --->9231 --->9232 --->9233 --->9234 --->9235 --->9236 --->9237 --->9238 --->9239 --->924 --->9240 --->9241 --->9242 --->9243 --->9244 --->9245 --->9246 --->9247 --->9248 --->9249 --->925 --->9250 --->9251 --->9252 --->9253 --->9254 --->9255 --->9256 --->9257 --->9258 --->9259 --->926 --->9260 --->9261 --->9262 --->9263 --->9264 --->9265 --->9266 --->9267 --->9268 --->9269 --->927 --->9270 --->9271 --->9272 --->9273 --->9274 --->9275 --->9276 --->9277 --->9278 --->9279 --->928 --->9280 --->9281 --->9282 --->9283 --->9284 --->9285 --->9286 --->9287 --->9288 --->9289 --->929 --->9290 --->9291 --->9292 --->9293 --->9294 --->9295 --->9296 --->9297 --->9298 --->9299 --->93 --->930 --->9300 --->9301 --->9302 --->9303 --->9304 --->9305 --->9306 --->9307 --->9308 --->9309 --->931 --->9310 --->9311 --->9312 --->9313 --->9314 --->9315 --->9316 --->9317 --->9318 --->9319 --->932 --->9320 --->9321 --->9322 --->9323 --->9324 --->9325 --->9326 --->9327 --->9328 --->9329 --->933 --->9330 --->9331 --->9332 --->9333 --->9334 --->9335 --->9336 --->9337 --->9338 --->9339 --->934 --->9340 --->9341 --->9342 --->9343 --->9344 --->9345 --->9346 --->9347 --->9348 --->9349 --->935 --->9350 --->9351 --->9352 --->9353 --->9354 --->9355 --->9356 --->9357 --->9358 --->9359 --->936 --->9360 --->9361 --->9362 --->9363 --->9364 --->9365 --->9366 --->9367 --->9368 --->9369 --->937 --->9370 --->9371 --->9372 --->9373 --->9374 --->9375 --->9376 --->9377 --->9378 --->9379 --->938 --->9380 --->9381 --->9382 --->9383 --->9384 --->9385 --->9386 --->9387 --->9388 --->9389 --->939 --->9390 --->9391 --->9392 --->9393 --->9394 --->9395 --->9396 --->9397 --->9398 --->9399 --->94 --->940 --->9400 --->9401 --->9402 --->9403 --->9404 --->9405 --->9406 --->9407 --->9408 --->9409 --->941 --->9410 --->9411 --->9412 --->9413 --->9414 --->9415 --->9416 --->9417 --->9418 --->9419 --->942 --->9420 --->9421 --->9422 --->9423 --->9424 --->9425 --->9426 --->9427 --->9428 --->9429 --->943 --->9430 --->9431 --->9432 --->9433 --->9434 --->9435 --->9436 --->9437 --->9438 --->9439 --->944 --->9440 --->9441 --->9442 --->9443 --->9444 --->9445 --->9446 --->9447 --->9448 --->9449 --->945 --->9450 --->9451 --->9452 --->9453 --->9454 --->9455 --->9456 --->9457 --->9458 --->9459 --->946 --->9460 --->9461 --->9462 --->9463 --->9464 --->9465 --->9466 --->9467 --->9468 --->9469 --->947 --->9470 --->9471 --->9472 --->9473 --->9474 --->9475 --->9476 --->9477 --->9478 --->9479 --->948 --->9480 --->9481 --->9482 --->9483 --->9484 --->9485 --->9486 --->9487 --->9488 --->9489 --->949 --->9490 --->9491 --->9492 --->9493 --->9494 --->9495 --->9496 --->9497 --->9498 --->9499 --->95 --->950 --->9500 --->9501 --->9502 --->9503 --->9504 --->9505 --->9506 --->9507 --->9508 --->9509 --->951 --->9510 --->9511 --->9512 --->9513 --->9514 --->9515 --->9516 --->9517 --->9518 --->9519 --->952 --->9520 --->9521 --->9522 --->9523 --->9524 --->9525 --->9526 --->9527 --->9528 --->9529 --->953 --->9530 --->9531 --->9532 --->9533 --->9534 --->9535 --->9536 --->9537 --->9538 --->9539 --->954 --->9540 --->9541 --->9542 --->9543 --->9544 --->9545 --->9546 --->9547 --->9548 --->9549 --->955 --->9550 --->9551 --->9552 --->9553 --->9554 --->9555 --->9556 --->9557 --->9558 --->9559 --->956 --->9560 --->9561 --->9562 --->9563 --->9564 --->9565 --->9566 --->9567 --->9568 --->9569 --->957 --->9570 --->9571 --->9572 --->9573 --->9574 --->9575 --->9576 --->9577 --->9578 --->9579 --->958 --->9580 --->9581 --->9582 --->9583 --->9584 --->9585 --->9586 --->9587 --->9588 --->9589 --->959 --->9590 --->9591 --->9592 --->9593 --->9594 --->9595 --->9596 --->9597 --->9598 --->9599 --->96 --->960 --->9600 --->9601 --->9602 --->9603 --->9604 --->9605 --->9606 --->9607 --->9608 --->9609 --->961 --->9610 --->9611 --->9612 --->9613 --->9614 --->9615 --->9616 --->9617 --->9618 --->9619 --->962 --->9620 --->9621 --->9622 --->9623 --->9624 --->9625 --->9626 --->9627 --->9628 --->9629 --->963 --->9630 --->9631 --->9632 --->9633 --->9634 --->9635 --->9636 --->9637 --->9638 --->9639 --->964 --->9640 --->9641 --->9642 --->9643 --->9644 --->9645 --->9646 --->9647 --->9648 --->9649 --->965 --->9650 --->9651 --->9652 --->9653 --->9654 --->9655 --->9656 --->9657 --->9658 --->9659 --->966 --->9660 --->9661 --->9662 --->9663 --->9664 --->9665 --->9666 --->9667 --->9668 --->9669 --->967 --->9670 --->9671 --->9672 --->9673 --->9674 --->9675 --->9676 --->9677 --->9678 --->9679 --->968 --->9680 --->9681 --->9682 --->9683 --->9684 --->9685 --->9686 --->9687 --->9688 --->9689 --->969 --->9690 --->9691 --->9692 --->9693 --->9694 --->9695 --->9696 --->9697 --->9698 --->9699 --->97 --->970 --->9700 --->9701 --->9702 --->9703 --->9704 --->9705 --->9706 --->9707 --->9708 --->9709 --->971 --->9710 --->9711 --->9712 --->9713 --->9714 --->9715 --->9716 --->9717 --->9718 --->9719 --->972 --->9720 --->9721 --->9722 --->9723 --->9724 --->9725 --->9726 --->9727 --->9728 --->9729 --->973 --->9730 --->9731 --->9732 --->9733 --->9734 --->9735 --->9736 --->9737 --->9738 --->9739 --->974 --->9740 --->9741 --->9742 --->9743 --->9744 --->9745 --->9746 --->9747 --->9748 --->9749 --->975 --->9750 --->9751 --->9752 --->9753 --->9754 --->9755 --->9756 --->9757 --->9758 --->9759 --->976 --->9760 --->9761 --->9762 --->9763 --->9764 --->9765 --->9766 --->9767 --->9768 --->9769 --->977 --->9770 --->9771 --->9772 --->9773 --->9774 --->9775 --->9776 --->9777 --->9778 --->9779 --->978 --->9780 --->9781 --->9782 --->9783 --->9784 --->9785 --->9786 --->9787 --->9788 --->9789 --->979 --->9790 --->9791 --->9792 --->9793 --->9794 --->9795 --->9796 --->9797 --->9798 --->9799 --->98 --->980 --->9800 --->9801 --->9802 --->9803 --->9804 --->9805 --->9806 --->9807 --->9808 --->9809 --->981 --->9810 --->9811 --->9812 --->9813 --->9814 --->9815 --->9816 --->9817 --->9818 --->9819 --->982 --->9820 --->9821 --->9822 --->9823 --->9824 --->9825 --->9826 --->9827 --->9828 --->9829 --->983 --->9830 --->9831 --->9832 --->9833 --->9834 --->9835 --->9836 --->9837 --->9838 --->9839 --->984 --->9840 --->9841 --->9842 --->9843 --->9844 --->9845 --->9846 --->9847 --->9848 --->9849 --->985 --->9850 --->9851 --->9852 --->9853 --->9854 --->9855 --->9856 --->9857 --->9858 --->9859 --->986 --->9860 --->9861 --->9862 --->9863 --->9864 --->9865 --->9866 --->9867 --->9868 --->9869 --->987 --->9870 --->9871 --->9872 --->9873 --->9874 --->9875 --->9876 --->9877 --->9878 --->9879 --->988 --->9880 --->9881 --->9882 --->9883 --->9884 --->9885 --->9886 --->9887 --->9888 --->9889 --->989 --->9890 --->9891 --->9892 --->9893 --->9894 --->9895 --->9896 --->9897 --->9898 --->9899 --->99 --->990 --->9900 --->9901 --->9902 --->9903 --->9904 --->9905 --->9906 --->9907 --->9908 --->9909 --->991 --->9910 --->9911 --->9912 --->9913 --->9914 --->9915 --->9916 --->9917 --->9918 --->9919 --->992 --->9920 --->9921 --->9922 --->9923 --->9924 --->9925 --->9926 --->9927 --->9928 --->9929 --->993 --->9930 --->9931 --->9932 --->9933 --->9934 --->9935 --->9936 --->9937 --->9938 --->9939 --->994 --->9940 --->9941 --->9942 --->9943 --->9944 --->9945 --->9946 --->9947 --->9948 --->9949 --->995 --->9950 --->9951 --->9952 --->9953 --->9954 --->9955 --->9956 --->9957 --->9958 --->9959 --->996 --->9960 --->9961 --->9962 --->9963 --->9964 --->9965 --->9966 --->9967 --->9968 --->9969 --->997 --->9970 --->9971 --->9972 --->9973 --->9974 --->9975 --->9976 --->9977 --->9978 --->9979 --->998 --->9980 --->9981 --->9982 --->9983 --->9984 --->9985 --->9986 --->9987 --->9988 --->9989 --->999 --->9990 --->9991 --->9992 --->9993 --->9994 --->9995 --->9996 --->9997 --->9998 --->9999 -0--> -1--> -10--> -100--> -1000--> -10000--> -1001--> -1002--> -1003--> -1004--> -1005--> -1006--> -1007--> -1008--> -1009--> -101--> -1010--> -1011--> -1012--> -1013--> -1014--> -1015--> -1016--> -1017--> -1018--> -1019--> -102--> -1020--> -1021--> -1022--> -1023--> -1024--> -1025--> -1026--> -1027--> -1028--> -1029--> -103--> -1030--> -1031--> -1032--> -1033--> -1034--> -1035--> -1036--> -1037--> -1038--> -1039--> -104--> -1040--> -1041--> -1042--> -1043--> -1044--> -1045--> -1046--> -1047--> -1048--> -1049--> -105--> -1050--> -1051--> -1052--> -1053--> -1054--> -1055--> -1056--> -1057--> -1058--> -1059--> -106--> -1060--> -1061--> -1062--> -1063--> -1064--> -1065--> -1066--> -1067--> -1068--> -1069--> -107--> -1070--> -1071--> -1072--> -1073--> -1074--> -1075--> -1076--> -1077--> -1078--> -1079--> -108--> -1080--> -1081--> -1082--> -1083--> -1084--> -1085--> -1086--> -1087--> -1088--> -1089--> -109--> -1090--> -1091--> -1092--> -1093--> -1094--> -1095--> -1096--> -1097--> -1098--> -1099--> -11--> -110--> -1100--> -1101--> -1102--> -1103--> -1104--> -1105--> -1106--> -1107--> -1108--> -1109--> -111--> -1110--> -1111--> -1112--> -1113--> -1114--> -1115--> -1116--> -1117--> -1118--> -1119--> -112--> -1120--> -1121--> -1122--> -1123--> -1124--> -1125--> -1126--> -1127--> -1128--> -1129--> -113--> -1130--> -1131--> -1132--> -1133--> -1134--> -1135--> -1136--> -1137--> -1138--> -1139--> -114--> -1140--> -1141--> -1142--> -1143--> -1144--> -1145--> -1146--> -1147--> -1148--> -1149--> -115--> -1150--> -1151--> -1152--> -1153--> -1154--> -1155--> -1156--> -1157--> -1158--> -1159--> -116--> -1160--> -1161--> -1162--> -1163--> -1164--> -1165--> -1166--> -1167--> -1168--> -1169--> -117--> -1170--> -1171--> -1172--> -1173--> -1174--> -1175--> -1176--> -1177--> -1178--> -1179--> -118--> -1180--> -1181--> -1182--> -1183--> -1184--> -1185--> -1186--> -1187--> -1188--> -1189--> -119--> -1190--> -1191--> -1192--> -1193--> -1194--> -1195--> -1196--> -1197--> -1198--> -1199--> -12--> -120--> -1200--> -1201--> -1202--> -1203--> -1204--> -1205--> -1206--> -1207--> -1208--> -1209--> -121--> -1210--> -1211--> -1212--> -1213--> -1214--> -1215--> -1216--> -1217--> -1218--> -1219--> -122--> -1220--> -1221--> -1222--> -1223--> -1224--> -1225--> -1226--> -1227--> -1228--> -1229--> -123--> -1230--> -1231--> -1232--> -1233--> -1234--> -1235--> -1236--> -1237--> -1238--> -1239--> -124--> -1240--> -1241--> -1242--> -1243--> -1244--> -1245--> -1246--> -1247--> -1248--> -1249--> -125--> -1250--> -1251--> -1252--> -1253--> -1254--> -1255--> -1256--> -1257--> -1258--> -1259--> -126--> -1260--> -1261--> -1262--> -1263--> -1264--> -1265--> -1266--> -1267--> -1268--> -1269--> -127--> -1270--> -1271--> -1272--> -1273--> -1274--> -1275--> -1276--> -1277--> -1278--> -1279--> -128--> -1280--> -1281--> -1282--> -1283--> -1284--> -1285--> -1286--> -1287--> -1288--> -1289--> -129--> -1290--> -1291--> -1292--> -1293--> -1294--> -1295--> -1296--> -1297--> -1298--> -1299--> -13--> -130--> -1300--> -1301--> -1302--> -1303--> -1304--> -1305--> -1306--> -1307--> -1308--> -1309--> -131--> -1310--> -1311--> -1312--> -1313--> -1314--> -1315--> -1316--> -1317--> -1318--> -1319--> -132--> -1320--> -1321--> -1322--> -1323--> -1324--> -1325--> -1326--> -1327--> -1328--> -1329--> -133--> -1330--> -1331--> -1332--> -1333--> -1334--> -1335--> -1336--> -1337--> -1338--> -1339--> -134--> -1340--> -1341--> -1342--> -1343--> -1344--> -1345--> -1346--> -1347--> -1348--> -1349--> -135--> -1350--> -1351--> -1352--> -1353--> -1354--> -1355--> -1356--> -1357--> -1358--> -1359--> -136--> -1360--> -1361--> -1362--> -1363--> -1364--> -1365--> -1366--> -1367--> -1368--> -1369--> -137--> -1370--> -1371--> -1372--> -1373--> -1374--> -1375--> -1376--> -1377--> -1378--> -1379--> -138--> -1380--> -1381--> -1382--> -1383--> -1384--> -1385--> -1386--> -1387--> -1388--> -1389--> -139--> -1390--> -1391--> -1392--> -1393--> -1394--> -1395--> -1396--> -1397--> -1398--> -1399--> -14--> -140--> -1400--> -1401--> -1402--> -1403--> -1404--> -1405--> -1406--> -1407--> -1408--> -1409--> -141--> -1410--> -1411--> -1412--> -1413--> -1414--> -1415--> -1416--> -1417--> -1418--> -1419--> -142--> -1420--> -1421--> -1422--> -1423--> -1424--> -1425--> -1426--> -1427--> -1428--> -1429--> -143--> -1430--> -1431--> -1432--> -1433--> -1434--> -1435--> -1436--> -1437--> -1438--> -1439--> -144--> -1440--> -1441--> -1442--> -1443--> -1444--> -1445--> -1446--> -1447--> -1448--> -1449--> -145--> -1450--> -1451--> -1452--> -1453--> -1454--> -1455--> -1456--> -1457--> -1458--> -1459--> -146--> -1460--> -1461--> -1462--> -1463--> -1464--> -1465--> -1466--> -1467--> -1468--> -1469--> -147--> -1470--> -1471--> -1472--> -1473--> -1474--> -1475--> -1476--> -1477--> -1478--> -1479--> -148--> -1480--> -1481--> -1482--> -1483--> -1484--> -1485--> -1486--> -1487--> -1488--> -1489--> -149--> -1490--> -1491--> -1492--> -1493--> -1494--> -1495--> -1496--> -1497--> -1498--> -1499--> -15--> -150--> -1500--> -1501--> -1502--> -1503--> -1504--> -1505--> -1506--> -1507--> -1508--> -1509--> -151--> -1510--> -1511--> -1512--> -1513--> -1514--> -1515--> -1516--> -1517--> -1518--> -1519--> -152--> -1520--> -1521--> -1522--> -1523--> -1524--> -1525--> -1526--> -1527--> -1528--> -1529--> -153--> -1530--> -1531--> -1532--> -1533--> -1534--> -1535--> -1536--> -1537--> -1538--> -1539--> -154--> -1540--> -1541--> -1542--> -1543--> -1544--> -1545--> -1546--> -1547--> -1548--> -1549--> -155--> -1550--> -1551--> -1552--> -1553--> -1554--> -1555--> -1556--> -1557--> -1558--> -1559--> -156--> -1560--> -1561--> -1562--> -1563--> -1564--> -1565--> -1566--> -1567--> -1568--> -1569--> -157--> -1570--> -1571--> -1572--> -1573--> -1574--> -1575--> -1576--> -1577--> -1578--> -1579--> -158--> -1580--> -1581--> -1582--> -1583--> -1584--> -1585--> -1586--> -1587--> -1588--> -1589--> -159--> -1590--> -1591--> -1592--> -1593--> -1594--> -1595--> -1596--> -1597--> -1598--> -1599--> -16--> -160--> -1600--> -1601--> -1602--> -1603--> -1604--> -1605--> -1606--> -1607--> -1608--> -1609--> -161--> -1610--> -1611--> -1612--> -1613--> -1614--> -1615--> -1616--> -1617--> -1618--> -1619--> -162--> -1620--> -1621--> -1622--> -1623--> -1624--> -1625--> -1626--> -1627--> -1628--> -1629--> -163--> -1630--> -1631--> -1632--> -1633--> -1634--> -1635--> -1636--> -1637--> -1638--> -1639--> -164--> -1640--> -1641--> -1642--> -1643--> -1644--> -1645--> -1646--> -1647--> -1648--> -1649--> -165--> -1650--> -1651--> -1652--> -1653--> -1654--> -1655--> -1656--> -1657--> -1658--> -1659--> -166--> -1660--> -1661--> -1662--> -1663--> -1664--> -1665--> -1666--> -1667--> -1668--> -1669--> -167--> -1670--> -1671--> -1672--> -1673--> -1674--> -1675--> -1676--> -1677--> -1678--> -1679--> -168--> -1680--> -1681--> -1682--> -1683--> -1684--> -1685--> -1686--> -1687--> -1688--> -1689--> -169--> -1690--> -1691--> -1692--> -1693--> -1694--> -1695--> -1696--> -1697--> -1698--> -1699--> -17--> -170--> -1700--> -1701--> -1702--> -1703--> -1704--> -1705--> -1706--> -1707--> -1708--> -1709--> -171--> -1710--> -1711--> -1712--> -1713--> -1714--> -1715--> -1716--> -1717--> -1718--> -1719--> -172--> -1720--> -1721--> -1722--> -1723--> -1724--> -1725--> -1726--> -1727--> -1728--> -1729--> -173--> -1730--> -1731--> -1732--> -1733--> -1734--> -1735--> -1736--> -1737--> -1738--> -1739--> -174--> -1740--> -1741--> -1742--> -1743--> -1744--> -1745--> -1746--> -1747--> -1748--> -1749--> -175--> -1750--> -1751--> -1752--> -1753--> -1754--> -1755--> -1756--> -1757--> -1758--> -1759--> -176--> -1760--> -1761--> -1762--> -1763--> -1764--> -1765--> -1766--> -1767--> -1768--> -1769--> -177--> -1770--> -1771--> -1772--> -1773--> -1774--> -1775--> -1776--> -1777--> -1778--> -1779--> -178--> -1780--> -1781--> -1782--> -1783--> -1784--> -1785--> -1786--> -1787--> -1788--> -1789--> -179--> -1790--> -1791--> -1792--> -1793--> -1794--> -1795--> -1796--> -1797--> -1798--> -1799--> -18--> -180--> -1800--> -1801--> -1802--> -1803--> -1804--> -1805--> -1806--> -1807--> -1808--> -1809--> -181--> -1810--> -1811--> -1812--> -1813--> -1814--> -1815--> -1816--> -1817--> -1818--> -1819--> -182--> -1820--> -1821--> -1822--> -1823--> -1824--> -1825--> -1826--> -1827--> -1828--> -1829--> -183--> -1830--> -1831--> -1832--> -1833--> -1834--> -1835--> -1836--> -1837--> -1838--> -1839--> -184--> -1840--> -1841--> -1842--> -1843--> -1844--> -1845--> -1846--> -1847--> -1848--> -1849--> -185--> -1850--> -1851--> -1852--> -1853--> -1854--> -1855--> -1856--> -1857--> -1858--> -1859--> -186--> -1860--> -1861--> -1862--> -1863--> -1864--> -1865--> -1866--> -1867--> -1868--> -1869--> -187--> -1870--> -1871--> -1872--> -1873--> -1874--> -1875--> -1876--> -1877--> -1878--> -1879--> -188--> -1880--> -1881--> -1882--> -1883--> -1884--> -1885--> -1886--> -1887--> -1888--> -1889--> -189--> -1890--> -1891--> -1892--> -1893--> -1894--> -1895--> -1896--> -1897--> -1898--> -1899--> -19--> -190--> -1900--> -1901--> -1902--> -1903--> -1904--> -1905--> -1906--> -1907--> -1908--> -1909--> -191--> -1910--> -1911--> -1912--> -1913--> -1914--> -1915--> -1916--> -1917--> -1918--> -1919--> -192--> -1920--> -1921--> -1922--> -1923--> -1924--> -1925--> -1926--> -1927--> -1928--> -1929--> -193--> -1930--> -1931--> -1932--> -1933--> -1934--> -1935--> -1936--> -1937--> -1938--> -1939--> -194--> -1940--> -1941--> -1942--> -1943--> -1944--> -1945--> -1946--> -1947--> -1948--> -1949--> -195--> -1950--> -1951--> -1952--> -1953--> -1954--> -1955--> -1956--> -1957--> -1958--> -1959--> -196--> -1960--> -1961--> -1962--> -1963--> -1964--> -1965--> -1966--> -1967--> -1968--> -1969--> -197--> -1970--> -1971--> -1972--> -1973--> -1974--> -1975--> -1976--> -1977--> -1978--> -1979--> -198--> -1980--> -1981--> -1982--> -1983--> -1984--> -1985--> -1986--> -1987--> -1988--> -1989--> -199--> -1990--> -1991--> -1992--> -1993--> -1994--> -1995--> -1996--> -1997--> -1998--> -1999--> -2--> -20--> -200--> -2000--> -2001--> -2002--> -2003--> -2004--> -2005--> -2006--> -2007--> -2008--> -2009--> -201--> -2010--> -2011--> -2012--> -2013--> -2014--> -2015--> -2016--> -2017--> -2018--> -2019--> -202--> -2020--> -2021--> -2022--> -2023--> -2024--> -2025--> -2026--> -2027--> -2028--> -2029--> -203--> -2030--> -2031--> -2032--> -2033--> -2034--> -2035--> -2036--> -2037--> -2038--> -2039--> -204--> -2040--> -2041--> -2042--> -2043--> -2044--> -2045--> -2046--> -2047--> -2048--> -2049--> -205--> -2050--> -2051--> -2052--> -2053--> -2054--> -2055--> -2056--> -2057--> -2058--> -2059--> -206--> -2060--> -2061--> -2062--> -2063--> -2064--> -2065--> -2066--> -2067--> -2068--> -2069--> -207--> -2070--> -2071--> -2072--> -2073--> -2074--> -2075--> -2076--> -2077--> -2078--> -2079--> -208--> -2080--> -2081--> -2082--> -2083--> -2084--> -2085--> -2086--> -2087--> -2088--> -2089--> -209--> -2090--> -2091--> -2092--> -2093--> -2094--> -2095--> -2096--> -2097--> -2098--> -2099--> -21--> -210--> -2100--> -2101--> -2102--> -2103--> -2104--> -2105--> -2106--> -2107--> -2108--> -2109--> -211--> -2110--> -2111--> -2112--> -2113--> -2114--> -2115--> -2116--> -2117--> -2118--> -2119--> -212--> -2120--> -2121--> -2122--> -2123--> -2124--> -2125--> -2126--> -2127--> -2128--> -2129--> -213--> -2130--> -2131--> -2132--> -2133--> -2134--> -2135--> -2136--> -2137--> -2138--> -2139--> -214--> -2140--> -2141--> -2142--> -2143--> -2144--> -2145--> -2146--> -2147--> -2148--> -2149--> -215--> -2150--> -2151--> -2152--> -2153--> -2154--> -2155--> -2156--> -2157--> -2158--> -2159--> -216--> -2160--> -2161--> -2162--> -2163--> -2164--> -2165--> -2166--> -2167--> -2168--> -2169--> -217--> -2170--> -2171--> -2172--> -2173--> -2174--> -2175--> -2176--> -2177--> -2178--> -2179--> -218--> -2180--> -2181--> -2182--> -2183--> -2184--> -2185--> -2186--> -2187--> -2188--> -2189--> -219--> -2190--> -2191--> -2192--> -2193--> -2194--> -2195--> -2196--> -2197--> -2198--> -2199--> -22--> -220--> -2200--> -2201--> -2202--> -2203--> -2204--> -2205--> -2206--> -2207--> -2208--> -2209--> -221--> -2210--> -2211--> -2212--> -2213--> -2214--> -2215--> -2216--> -2217--> -2218--> -2219--> -222--> -2220--> -2221--> -2222--> -2223--> -2224--> -2225--> -2226--> -2227--> -2228--> -2229--> -223--> -2230--> -2231--> -2232--> -2233--> -2234--> -2235--> -2236--> -2237--> -2238--> -2239--> -224--> -2240--> -2241--> -2242--> -2243--> -2244--> -2245--> -2246--> -2247--> -2248--> -2249--> -225--> -2250--> -2251--> -2252--> -2253--> -2254--> -2255--> -2256--> -2257--> -2258--> -2259--> -226--> -2260--> -2261--> -2262--> -2263--> -2264--> -2265--> -2266--> -2267--> -2268--> -2269--> -227--> -2270--> -2271--> -2272--> -2273--> -2274--> -2275--> -2276--> -2277--> -2278--> -2279--> -228--> -2280--> -2281--> -2282--> -2283--> -2284--> -2285--> -2286--> -2287--> -2288--> -2289--> -229--> -2290--> -2291--> -2292--> -2293--> -2294--> -2295--> -2296--> -2297--> -2298--> -2299--> -23--> -230--> -2300--> -2301--> -2302--> -2303--> -2304--> -2305--> -2306--> -2307--> -2308--> -2309--> -231--> -2310--> -2311--> -2312--> -2313--> -2314--> -2315--> -2316--> -2317--> -2318--> -2319--> -232--> -2320--> -2321--> -2322--> -2323--> -2324--> -2325--> -2326--> -2327--> -2328--> -2329--> -233--> -2330--> -2331--> -2332--> -2333--> -2334--> -2335--> -2336--> -2337--> -2338--> -2339--> -234--> -2340--> -2341--> -2342--> -2343--> -2344--> -2345--> -2346--> -2347--> -2348--> -2349--> -235--> -2350--> -2351--> -2352--> -2353--> -2354--> -2355--> -2356--> -2357--> -2358--> -2359--> -236--> -2360--> -2361--> -2362--> -2363--> -2364--> -2365--> -2366--> -2367--> -2368--> -2369--> -237--> -2370--> -2371--> -2372--> -2373--> -2374--> -2375--> -2376--> -2377--> -2378--> -2379--> -238--> -2380--> -2381--> -2382--> -2383--> -2384--> -2385--> -2386--> -2387--> -2388--> -2389--> -239--> -2390--> -2391--> -2392--> -2393--> -2394--> -2395--> -2396--> -2397--> -2398--> -2399--> -24--> -240--> -2400--> -2401--> -2402--> -2403--> -2404--> -2405--> -2406--> -2407--> -2408--> -2409--> -241--> -2410--> -2411--> -2412--> -2413--> -2414--> -2415--> -2416--> -2417--> -2418--> -2419--> -242--> -2420--> -2421--> -2422--> -2423--> -2424--> -2425--> -2426--> -2427--> -2428--> -2429--> -243--> -2430--> -2431--> -2432--> -2433--> -2434--> -2435--> -2436--> -2437--> -2438--> -2439--> -244--> -2440--> -2441--> -2442--> -2443--> -2444--> -2445--> -2446--> -2447--> -2448--> -2449--> -245--> -2450--> -2451--> -2452--> -2453--> -2454--> -2455--> -2456--> -2457--> -2458--> -2459--> -246--> -2460--> -2461--> -2462--> -2463--> -2464--> -2465--> -2466--> -2467--> -2468--> -2469--> -247--> -2470--> -2471--> -2472--> -2473--> -2474--> -2475--> -2476--> -2477--> -2478--> -2479--> -248--> -2480--> -2481--> -2482--> -2483--> -2484--> -2485--> -2486--> -2487--> -2488--> -2489--> -249--> -2490--> -2491--> -2492--> -2493--> -2494--> -2495--> -2496--> -2497--> -2498--> -2499--> -25--> -250--> -2500--> -2501--> -2502--> -2503--> -2504--> -2505--> -2506--> -2507--> -2508--> -2509--> -251--> -2510--> -2511--> -2512--> -2513--> -2514--> -2515--> -2516--> -2517--> -2518--> -2519--> -252--> -2520--> -2521--> -2522--> -2523--> -2524--> -2525--> -2526--> -2527--> -2528--> -2529--> -253--> -2530--> -2531--> -2532--> -2533--> -2534--> -2535--> -2536--> -2537--> -2538--> -2539--> -254--> -2540--> -2541--> -2542--> -2543--> -2544--> -2545--> -2546--> -2547--> -2548--> -2549--> -255--> -2550--> -2551--> -2552--> -2553--> -2554--> -2555--> -2556--> -2557--> -2558--> -2559--> -256--> -2560--> -2561--> -2562--> -2563--> -2564--> -2565--> -2566--> -2567--> -2568--> -2569--> -257--> -2570--> -2571--> -2572--> -2573--> -2574--> -2575--> -2576--> -2577--> -2578--> -2579--> -258--> -2580--> -2581--> -2582--> -2583--> -2584--> -2585--> -2586--> -2587--> -2588--> -2589--> -259--> -2590--> -2591--> -2592--> -2593--> -2594--> -2595--> -2596--> -2597--> -2598--> -2599--> -26--> -260--> -2600--> -2601--> -2602--> -2603--> -2604--> -2605--> -2606--> -2607--> -2608--> -2609--> -261--> -2610--> -2611--> -2612--> -2613--> -2614--> -2615--> -2616--> -2617--> -2618--> -2619--> -262--> -2620--> -2621--> -2622--> -2623--> -2624--> -2625--> -2626--> -2627--> -2628--> -2629--> -263--> -2630--> -2631--> -2632--> -2633--> -2634--> -2635--> -2636--> -2637--> -2638--> -2639--> -264--> -2640--> -2641--> -2642--> -2643--> -2644--> -2645--> -2646--> -2647--> -2648--> -2649--> -265--> -2650--> -2651--> -2652--> -2653--> -2654--> -2655--> -2656--> -2657--> -2658--> -2659--> -266--> -2660--> -2661--> -2662--> -2663--> -2664--> -2665--> -2666--> -2667--> -2668--> -2669--> -267--> -2670--> -2671--> -2672--> -2673--> -2674--> -2675--> -2676--> -2677--> -2678--> -2679--> -268--> -2680--> -2681--> -2682--> -2683--> -2684--> -2685--> -2686--> -2687--> -2688--> -2689--> -269--> -2690--> -2691--> -2692--> -2693--> -2694--> -2695--> -2696--> -2697--> -2698--> -2699--> -27--> -270--> -2700--> -2701--> -2702--> -2703--> -2704--> -2705--> -2706--> -2707--> -2708--> -2709--> -271--> -2710--> -2711--> -2712--> -2713--> -2714--> -2715--> -2716--> -2717--> -2718--> -2719--> -272--> -2720--> -2721--> -2722--> -2723--> -2724--> -2725--> -2726--> -2727--> -2728--> -2729--> -273--> -2730--> -2731--> -2732--> -2733--> -2734--> -2735--> -2736--> -2737--> -2738--> -2739--> -274--> -2740--> -2741--> -2742--> -2743--> -2744--> -2745--> -2746--> -2747--> -2748--> -2749--> -275--> -2750--> -2751--> -2752--> -2753--> -2754--> -2755--> -2756--> -2757--> -2758--> -2759--> -276--> -2760--> -2761--> -2762--> -2763--> -2764--> -2765--> -2766--> -2767--> -2768--> -2769--> -277--> -2770--> -2771--> -2772--> -2773--> -2774--> -2775--> -2776--> -2777--> -2778--> -2779--> -278--> -2780--> -2781--> -2782--> -2783--> -2784--> -2785--> -2786--> -2787--> -2788--> -2789--> -279--> -2790--> -2791--> -2792--> -2793--> -2794--> -2795--> -2796--> -2797--> -2798--> -2799--> -28--> -280--> -2800--> -2801--> -2802--> -2803--> -2804--> -2805--> -2806--> -2807--> -2808--> -2809--> -281--> -2810--> -2811--> -2812--> -2813--> -2814--> -2815--> -2816--> -2817--> -2818--> -2819--> -282--> -2820--> -2821--> -2822--> -2823--> -2824--> -2825--> -2826--> -2827--> -2828--> -2829--> -283--> -2830--> -2831--> -2832--> -2833--> -2834--> -2835--> -2836--> -2837--> -2838--> -2839--> -284--> -2840--> -2841--> -2842--> -2843--> -2844--> -2845--> -2846--> -2847--> -2848--> -2849--> -285--> -2850--> -2851--> -2852--> -2853--> -2854--> -2855--> -2856--> -2857--> -2858--> -2859--> -286--> -2860--> -2861--> -2862--> -2863--> -2864--> -2865--> -2866--> -2867--> -2868--> -2869--> -287--> -2870--> -2871--> -2872--> -2873--> -2874--> -2875--> -2876--> -2877--> -2878--> -2879--> -288--> -2880--> -2881--> -2882--> -2883--> -2884--> -2885--> -2886--> -2887--> -2888--> -2889--> -289--> -2890--> -2891--> -2892--> -2893--> -2894--> -2895--> -2896--> -2897--> -2898--> -2899--> -29--> -290--> -2900--> -2901--> -2902--> -2903--> -2904--> -2905--> -2906--> -2907--> -2908--> -2909--> -291--> -2910--> -2911--> -2912--> -2913--> -2914--> -2915--> -2916--> -2917--> -2918--> -2919--> -292--> -2920--> -2921--> -2922--> -2923--> -2924--> -2925--> -2926--> -2927--> -2928--> -2929--> -293--> -2930--> -2931--> -2932--> -2933--> -2934--> -2935--> -2936--> -2937--> -2938--> -2939--> -294--> -2940--> -2941--> -2942--> -2943--> -2944--> -2945--> -2946--> -2947--> -2948--> -2949--> -295--> -2950--> -2951--> -2952--> -2953--> -2954--> -2955--> -2956--> -2957--> -2958--> -2959--> -296--> -2960--> -2961--> -2962--> -2963--> -2964--> -2965--> -2966--> -2967--> -2968--> -2969--> -297--> -2970--> -2971--> -2972--> -2973--> -2974--> -2975--> -2976--> -2977--> -2978--> -2979--> -298--> -2980--> -2981--> -2982--> -2983--> -2984--> -2985--> -2986--> -2987--> -2988--> -2989--> -299--> -2990--> -2991--> -2992--> -2993--> -2994--> -2995--> -2996--> -2997--> -2998--> -2999--> -3--> -30--> -300--> -3000--> -3001--> -3002--> -3003--> -3004--> -3005--> -3006--> -3007--> -3008--> -3009--> -301--> -3010--> -3011--> -3012--> -3013--> -3014--> -3015--> -3016--> -3017--> -3018--> -3019--> -302--> -3020--> -3021--> -3022--> -3023--> -3024--> -3025--> -3026--> -3027--> -3028--> -3029--> -303--> -3030--> -3031--> -3032--> -3033--> -3034--> -3035--> -3036--> -3037--> -3038--> -3039--> -304--> -3040--> -3041--> -3042--> -3043--> -3044--> -3045--> -3046--> -3047--> -3048--> -3049--> -305--> -3050--> -3051--> -3052--> -3053--> -3054--> -3055--> -3056--> -3057--> -3058--> -3059--> -306--> -3060--> -3061--> -3062--> -3063--> -3064--> -3065--> -3066--> -3067--> -3068--> -3069--> -307--> -3070--> -3071--> -3072--> -3073--> -3074--> -3075--> -3076--> -3077--> -3078--> -3079--> -308--> -3080--> -3081--> -3082--> -3083--> -3084--> -3085--> -3086--> -3087--> -3088--> -3089--> -309--> -3090--> -3091--> -3092--> -3093--> -3094--> -3095--> -3096--> -3097--> -3098--> -3099--> -31--> -310--> -3100--> -3101--> -3102--> -3103--> -3104--> -3105--> -3106--> -3107--> -3108--> -3109--> -311--> -3110--> -3111--> -3112--> -3113--> -3114--> -3115--> -3116--> -3117--> -3118--> -3119--> -312--> -3120--> -3121--> -3122--> -3123--> -3124--> -3125--> -3126--> -3127--> -3128--> -3129--> -313--> -3130--> -3131--> -3132--> -3133--> -3134--> -3135--> -3136--> -3137--> -3138--> -3139--> -314--> -3140--> -3141--> -3142--> -3143--> -3144--> -3145--> -3146--> -3147--> -3148--> -3149--> -315--> -3150--> -3151--> -3152--> -3153--> -3154--> -3155--> -3156--> -3157--> -3158--> -3159--> -316--> -3160--> -3161--> -3162--> -3163--> -3164--> -3165--> -3166--> -3167--> -3168--> -3169--> -317--> -3170--> -3171--> -3172--> -3173--> -3174--> -3175--> -3176--> -3177--> -3178--> -3179--> -318--> -3180--> -3181--> -3182--> -3183--> -3184--> -3185--> -3186--> -3187--> -3188--> -3189--> -319--> -3190--> -3191--> -3192--> -3193--> -3194--> -3195--> -3196--> -3197--> -3198--> -3199--> -32--> -320--> -3200--> -3201--> -3202--> -3203--> -3204--> -3205--> -3206--> -3207--> -3208--> -3209--> -321--> -3210--> -3211--> -3212--> -3213--> -3214--> -3215--> -3216--> -3217--> -3218--> -3219--> -322--> -3220--> -3221--> -3222--> -3223--> -3224--> -3225--> -3226--> -3227--> -3228--> -3229--> -323--> -3230--> -3231--> -3232--> -3233--> -3234--> -3235--> -3236--> -3237--> -3238--> -3239--> -324--> -3240--> -3241--> -3242--> -3243--> -3244--> -3245--> -3246--> -3247--> -3248--> -3249--> -325--> -3250--> -3251--> -3252--> -3253--> -3254--> -3255--> -3256--> -3257--> -3258--> -3259--> -326--> -3260--> -3261--> -3262--> -3263--> -3264--> -3265--> -3266--> -3267--> -3268--> -3269--> -327--> -3270--> -3271--> -3272--> -3273--> -3274--> -3275--> -3276--> -3277--> -3278--> -3279--> -328--> -3280--> -3281--> -3282--> -3283--> -3284--> -3285--> -3286--> -3287--> -3288--> -3289--> -329--> -3290--> -3291--> -3292--> -3293--> -3294--> -3295--> -3296--> -3297--> -3298--> -3299--> -33--> -330--> -3300--> -3301--> -3302--> -3303--> -3304--> -3305--> -3306--> -3307--> -3308--> -3309--> -331--> -3310--> -3311--> -3312--> -3313--> -3314--> -3315--> -3316--> -3317--> -3318--> -3319--> -332--> -3320--> -3321--> -3322--> -3323--> -3324--> -3325--> -3326--> -3327--> -3328--> -3329--> -333--> -3330--> -3331--> -3332--> -3333--> -3334--> -3335--> -3336--> -3337--> -3338--> -3339--> -334--> -3340--> -3341--> -3342--> -3343--> -3344--> -3345--> -3346--> -3347--> -3348--> -3349--> -335--> -3350--> -3351--> -3352--> -3353--> -3354--> -3355--> -3356--> -3357--> -3358--> -3359--> -336--> -3360--> -3361--> -3362--> -3363--> -3364--> -3365--> -3366--> -3367--> -3368--> -3369--> -337--> -3370--> -3371--> -3372--> -3373--> -3374--> -3375--> -3376--> -3377--> -3378--> -3379--> -338--> -3380--> -3381--> -3382--> -3383--> -3384--> -3385--> -3386--> -3387--> -3388--> -3389--> -339--> -3390--> -3391--> -3392--> -3393--> -3394--> -3395--> -3396--> -3397--> -3398--> -3399--> -34--> -340--> -3400--> -3401--> -3402--> -3403--> -3404--> -3405--> -3406--> -3407--> -3408--> -3409--> -341--> -3410--> -3411--> -3412--> -3413--> -3414--> -3415--> -3416--> -3417--> -3418--> -3419--> -342--> -3420--> -3421--> -3422--> -3423--> -3424--> -3425--> -3426--> -3427--> -3428--> -3429--> -343--> -3430--> -3431--> -3432--> -3433--> -3434--> -3435--> -3436--> -3437--> -3438--> -3439--> -344--> -3440--> -3441--> -3442--> -3443--> -3444--> -3445--> -3446--> -3447--> -3448--> -3449--> -345--> -3450--> -3451--> -3452--> -3453--> -3454--> -3455--> -3456--> -3457--> -3458--> -3459--> -346--> -3460--> -3461--> -3462--> -3463--> -3464--> -3465--> -3466--> -3467--> -3468--> -3469--> -347--> -3470--> -3471--> -3472--> -3473--> -3474--> -3475--> -3476--> -3477--> -3478--> -3479--> -348--> -3480--> -3481--> -3482--> -3483--> -3484--> -3485--> -3486--> -3487--> -3488--> -3489--> -349--> -3490--> -3491--> -3492--> -3493--> -3494--> -3495--> -3496--> -3497--> -3498--> -3499--> -35--> -350--> -3500--> -3501--> -3502--> -3503--> -3504--> -3505--> -3506--> -3507--> -3508--> -3509--> -351--> -3510--> -3511--> -3512--> -3513--> -3514--> -3515--> -3516--> -3517--> -3518--> -3519--> -352--> -3520--> -3521--> -3522--> -3523--> -3524--> -3525--> -3526--> -3527--> -3528--> -3529--> -353--> -3530--> -3531--> -3532--> -3533--> -3534--> -3535--> -3536--> -3537--> -3538--> -3539--> -354--> -3540--> -3541--> -3542--> -3543--> -3544--> -3545--> -3546--> -3547--> -3548--> -3549--> -355--> -3550--> -3551--> -3552--> -3553--> -3554--> -3555--> -3556--> -3557--> -3558--> -3559--> -356--> -3560--> -3561--> -3562--> -3563--> -3564--> -3565--> -3566--> -3567--> -3568--> -3569--> -357--> -3570--> -3571--> -3572--> -3573--> -3574--> -3575--> -3576--> -3577--> -3578--> -3579--> -358--> -3580--> -3581--> -3582--> -3583--> -3584--> -3585--> -3586--> -3587--> -3588--> -3589--> -359--> -3590--> -3591--> -3592--> -3593--> -3594--> -3595--> -3596--> -3597--> -3598--> -3599--> -36--> -360--> -3600--> -3601--> -3602--> -3603--> -3604--> -3605--> -3606--> -3607--> -3608--> -3609--> -361--> -3610--> -3611--> -3612--> -3613--> -3614--> -3615--> -3616--> -3617--> -3618--> -3619--> -362--> -3620--> -3621--> -3622--> -3623--> -3624--> -3625--> -3626--> -3627--> -3628--> -3629--> -363--> -3630--> -3631--> -3632--> -3633--> -3634--> -3635--> -3636--> -3637--> -3638--> -3639--> -364--> -3640--> -3641--> -3642--> -3643--> -3644--> -3645--> -3646--> -3647--> -3648--> -3649--> -365--> -3650--> -3651--> -3652--> -3653--> -3654--> -3655--> -3656--> -3657--> -3658--> -3659--> -366--> -3660--> -3661--> -3662--> -3663--> -3664--> -3665--> -3666--> -3667--> -3668--> -3669--> -367--> -3670--> -3671--> -3672--> -3673--> -3674--> -3675--> -3676--> -3677--> -3678--> -3679--> -368--> -3680--> -3681--> -3682--> -3683--> -3684--> -3685--> -3686--> -3687--> -3688--> -3689--> -369--> -3690--> -3691--> -3692--> -3693--> -3694--> -3695--> -3696--> -3697--> -3698--> -3699--> -37--> -370--> -3700--> -3701--> -3702--> -3703--> -3704--> -3705--> -3706--> -3707--> -3708--> -3709--> -371--> -3710--> -3711--> -3712--> -3713--> -3714--> -3715--> -3716--> -3717--> -3718--> -3719--> -372--> -3720--> -3721--> -3722--> -3723--> -3724--> -3725--> -3726--> -3727--> -3728--> -3729--> -373--> -3730--> -3731--> -3732--> -3733--> -3734--> -3735--> -3736--> -3737--> -3738--> -3739--> -374--> -3740--> -3741--> -3742--> -3743--> -3744--> -3745--> -3746--> -3747--> -3748--> -3749--> -375--> -3750--> -3751--> -3752--> -3753--> -3754--> -3755--> -3756--> -3757--> -3758--> -3759--> -376--> -3760--> -3761--> -3762--> -3763--> -3764--> -3765--> -3766--> -3767--> -3768--> -3769--> -377--> -3770--> -3771--> -3772--> -3773--> -3774--> -3775--> -3776--> -3777--> -3778--> -3779--> -378--> -3780--> -3781--> -3782--> -3783--> -3784--> -3785--> -3786--> -3787--> -3788--> -3789--> -379--> -3790--> -3791--> -3792--> -3793--> -3794--> -3795--> -3796--> -3797--> -3798--> -3799--> -38--> -380--> -3800--> -3801--> -3802--> -3803--> -3804--> -3805--> -3806--> -3807--> -3808--> -3809--> -381--> -3810--> -3811--> -3812--> -3813--> -3814--> -3815--> -3816--> -3817--> -3818--> -3819--> -382--> -3820--> -3821--> -3822--> -3823--> -3824--> -3825--> -3826--> -3827--> -3828--> -3829--> -383--> -3830--> -3831--> -3832--> -3833--> -3834--> -3835--> -3836--> -3837--> -3838--> -3839--> -384--> -3840--> -3841--> -3842--> -3843--> -3844--> -3845--> -3846--> -3847--> -3848--> -3849--> -385--> -3850--> -3851--> -3852--> -3853--> -3854--> -3855--> -3856--> -3857--> -3858--> -3859--> -386--> -3860--> -3861--> -3862--> -3863--> -3864--> -3865--> -3866--> -3867--> -3868--> -3869--> -387--> -3870--> -3871--> -3872--> -3873--> -3874--> -3875--> -3876--> -3877--> -3878--> -3879--> -388--> -3880--> -3881--> -3882--> -3883--> -3884--> -3885--> -3886--> -3887--> -3888--> -3889--> -389--> -3890--> -3891--> -3892--> -3893--> -3894--> -3895--> -3896--> -3897--> -3898--> -3899--> -39--> -390--> -3900--> -3901--> -3902--> -3903--> -3904--> -3905--> -3906--> -3907--> -3908--> -3909--> -391--> -3910--> -3911--> -3912--> -3913--> -3914--> -3915--> -3916--> -3917--> -3918--> -3919--> -392--> -3920--> -3921--> -3922--> -3923--> -3924--> -3925--> -3926--> -3927--> -3928--> -3929--> -393--> -3930--> -3931--> -3932--> -3933--> -3934--> -3935--> -3936--> -3937--> -3938--> -3939--> -394--> -3940--> -3941--> -3942--> -3943--> -3944--> -3945--> -3946--> -3947--> -3948--> -3949--> -395--> -3950--> -3951--> -3952--> -3953--> -3954--> -3955--> -3956--> -3957--> -3958--> -3959--> -396--> -3960--> -3961--> -3962--> -3963--> -3964--> -3965--> -3966--> -3967--> -3968--> -3969--> -397--> -3970--> -3971--> -3972--> -3973--> -3974--> -3975--> -3976--> -3977--> -3978--> -3979--> -398--> -3980--> -3981--> -3982--> -3983--> -3984--> -3985--> -3986--> -3987--> -3988--> -3989--> -399--> -3990--> -3991--> -3992--> -3993--> -3994--> -3995--> -3996--> -3997--> -3998--> -3999--> -4--> -40--> -400--> -4000--> -4001--> -4002--> -4003--> -4004--> -4005--> -4006--> -4007--> -4008--> -4009--> -401--> -4010--> -4011--> -4012--> -4013--> -4014--> -4015--> -4016--> -4017--> -4018--> -4019--> -402--> -4020--> -4021--> -4022--> -4023--> -4024--> -4025--> -4026--> -4027--> -4028--> -4029--> -403--> -4030--> -4031--> -4032--> -4033--> -4034--> -4035--> -4036--> -4037--> -4038--> -4039--> -404--> -4040--> -4041--> -4042--> -4043--> -4044--> -4045--> -4046--> -4047--> -4048--> -4049--> -405--> -4050--> -4051--> -4052--> -4053--> -4054--> -4055--> -4056--> -4057--> -4058--> -4059--> -406--> -4060--> -4061--> -4062--> -4063--> -4064--> -4065--> -4066--> -4067--> -4068--> -4069--> -407--> -4070--> -4071--> -4072--> -4073--> -4074--> -4075--> -4076--> -4077--> -4078--> -4079--> -408--> -4080--> -4081--> -4082--> -4083--> -4084--> -4085--> -4086--> -4087--> -4088--> -4089--> -409--> -4090--> -4091--> -4092--> -4093--> -4094--> -4095--> -4096--> -4097--> -4098--> -4099--> -41--> -410--> -4100--> -4101--> -4102--> -4103--> -4104--> -4105--> -4106--> -4107--> -4108--> -4109--> -411--> -4110--> -4111--> -4112--> -4113--> -4114--> -4115--> -4116--> -4117--> -4118--> -4119--> -412--> -4120--> -4121--> -4122--> -4123--> -4124--> -4125--> -4126--> -4127--> -4128--> -4129--> -413--> -4130--> -4131--> -4132--> -4133--> -4134--> -4135--> -4136--> -4137--> -4138--> -4139--> -414--> -4140--> -4141--> -4142--> -4143--> -4144--> -4145--> -4146--> -4147--> -4148--> -4149--> -415--> -4150--> -4151--> -4152--> -4153--> -4154--> -4155--> -4156--> -4157--> -4158--> -4159--> -416--> -4160--> -4161--> -4162--> -4163--> -4164--> -4165--> -4166--> -4167--> -4168--> -4169--> -417--> -4170--> -4171--> -4172--> -4173--> -4174--> -4175--> -4176--> -4177--> -4178--> -4179--> -418--> -4180--> -4181--> -4182--> -4183--> -4184--> -4185--> -4186--> -4187--> -4188--> -4189--> -419--> -4190--> -4191--> -4192--> -4193--> -4194--> -4195--> -4196--> -4197--> -4198--> -4199--> -42--> -420--> -4200--> -4201--> -4202--> -4203--> -4204--> -4205--> -4206--> -4207--> -4208--> -4209--> -421--> -4210--> -4211--> -4212--> -4213--> -4214--> -4215--> -4216--> -4217--> -4218--> -4219--> -422--> -4220--> -4221--> -4222--> -4223--> -4224--> -4225--> -4226--> -4227--> -4228--> -4229--> -423--> -4230--> -4231--> -4232--> -4233--> -4234--> -4235--> -4236--> -4237--> -4238--> -4239--> -424--> -4240--> -4241--> -4242--> -4243--> -4244--> -4245--> -4246--> -4247--> -4248--> -4249--> -425--> -4250--> -4251--> -4252--> -4253--> -4254--> -4255--> -4256--> -4257--> -4258--> -4259--> -426--> -4260--> -4261--> -4262--> -4263--> -4264--> -4265--> -4266--> -4267--> -4268--> -4269--> -427--> -4270--> -4271--> -4272--> -4273--> -4274--> -4275--> -4276--> -4277--> -4278--> -4279--> -428--> -4280--> -4281--> -4282--> -4283--> -4284--> -4285--> -4286--> -4287--> -4288--> -4289--> -429--> -4290--> -4291--> -4292--> -4293--> -4294--> -4295--> -4296--> -4297--> -4298--> -4299--> -43--> -430--> -4300--> -4301--> -4302--> -4303--> -4304--> -4305--> -4306--> -4307--> -4308--> -4309--> -431--> -4310--> -4311--> -4312--> -4313--> -4314--> -4315--> -4316--> -4317--> -4318--> -4319--> -432--> -4320--> -4321--> -4322--> -4323--> -4324--> -4325--> -4326--> -4327--> -4328--> -4329--> -433--> -4330--> -4331--> -4332--> -4333--> -4334--> -4335--> -4336--> -4337--> -4338--> -4339--> -434--> -4340--> -4341--> -4342--> -4343--> -4344--> -4345--> -4346--> -4347--> -4348--> -4349--> -435--> -4350--> -4351--> -4352--> -4353--> -4354--> -4355--> -4356--> -4357--> -4358--> -4359--> -436--> -4360--> -4361--> -4362--> -4363--> -4364--> -4365--> -4366--> -4367--> -4368--> -4369--> -437--> -4370--> -4371--> -4372--> -4373--> -4374--> -4375--> -4376--> -4377--> -4378--> -4379--> -438--> -4380--> -4381--> -4382--> -4383--> -4384--> -4385--> -4386--> -4387--> -4388--> -4389--> -439--> -4390--> -4391--> -4392--> -4393--> -4394--> -4395--> -4396--> -4397--> -4398--> -4399--> -44--> -440--> -4400--> -4401--> -4402--> -4403--> -4404--> -4405--> -4406--> -4407--> -4408--> -4409--> -441--> -4410--> -4411--> -4412--> -4413--> -4414--> -4415--> -4416--> -4417--> -4418--> -4419--> -442--> -4420--> -4421--> -4422--> -4423--> -4424--> -4425--> -4426--> -4427--> -4428--> -4429--> -443--> -4430--> -4431--> -4432--> -4433--> -4434--> -4435--> -4436--> -4437--> -4438--> -4439--> -444--> -4440--> -4441--> -4442--> -4443--> -4444--> -4445--> -4446--> -4447--> -4448--> -4449--> -445--> -4450--> -4451--> -4452--> -4453--> -4454--> -4455--> -4456--> -4457--> -4458--> -4459--> -446--> -4460--> -4461--> -4462--> -4463--> -4464--> -4465--> -4466--> -4467--> -4468--> -4469--> -447--> -4470--> -4471--> -4472--> -4473--> -4474--> -4475--> -4476--> -4477--> -4478--> -4479--> -448--> -4480--> -4481--> -4482--> -4483--> -4484--> -4485--> -4486--> -4487--> -4488--> -4489--> -449--> -4490--> -4491--> -4492--> -4493--> -4494--> -4495--> -4496--> -4497--> -4498--> -4499--> -45--> -450--> -4500--> -4501--> -4502--> -4503--> -4504--> -4505--> -4506--> -4507--> -4508--> -4509--> -451--> -4510--> -4511--> -4512--> -4513--> -4514--> -4515--> -4516--> -4517--> -4518--> -4519--> -452--> -4520--> -4521--> -4522--> -4523--> -4524--> -4525--> -4526--> -4527--> -4528--> -4529--> -453--> -4530--> -4531--> -4532--> -4533--> -4534--> -4535--> -4536--> -4537--> -4538--> -4539--> -454--> -4540--> -4541--> -4542--> -4543--> -4544--> -4545--> -4546--> -4547--> -4548--> -4549--> -455--> -4550--> -4551--> -4552--> -4553--> -4554--> -4555--> -4556--> -4557--> -4558--> -4559--> -456--> -4560--> -4561--> -4562--> -4563--> -4564--> -4565--> -4566--> -4567--> -4568--> -4569--> -457--> -4570--> -4571--> -4572--> -4573--> -4574--> -4575--> -4576--> -4577--> -4578--> -4579--> -458--> -4580--> -4581--> -4582--> -4583--> -4584--> -4585--> -4586--> -4587--> -4588--> -4589--> -459--> -4590--> -4591--> -4592--> -4593--> -4594--> -4595--> -4596--> -4597--> -4598--> -4599--> -46--> -460--> -4600--> -4601--> -4602--> -4603--> -4604--> -4605--> -4606--> -4607--> -4608--> -4609--> -461--> -4610--> -4611--> -4612--> -4613--> -4614--> -4615--> -4616--> -4617--> -4618--> -4619--> -462--> -4620--> -4621--> -4622--> -4623--> -4624--> -4625--> -4626--> -4627--> -4628--> -4629--> -463--> -4630--> -4631--> -4632--> -4633--> -4634--> -4635--> -4636--> -4637--> -4638--> -4639--> -464--> -4640--> -4641--> -4642--> -4643--> -4644--> -4645--> -4646--> -4647--> -4648--> -4649--> -465--> -4650--> -4651--> -4652--> -4653--> -4654--> -4655--> -4656--> -4657--> -4658--> -4659--> -466--> -4660--> -4661--> -4662--> -4663--> -4664--> -4665--> -4666--> -4667--> -4668--> -4669--> -467--> -4670--> -4671--> -4672--> -4673--> -4674--> -4675--> -4676--> -4677--> -4678--> -4679--> -468--> -4680--> -4681--> -4682--> -4683--> -4684--> -4685--> -4686--> -4687--> -4688--> -4689--> -469--> -4690--> -4691--> -4692--> -4693--> -4694--> -4695--> -4696--> -4697--> -4698--> -4699--> -47--> -470--> -4700--> -4701--> -4702--> -4703--> -4704--> -4705--> -4706--> -4707--> -4708--> -4709--> -471--> -4710--> -4711--> -4712--> -4713--> -4714--> -4715--> -4716--> -4717--> -4718--> -4719--> -472--> -4720--> -4721--> -4722--> -4723--> -4724--> -4725--> -4726--> -4727--> -4728--> -4729--> -473--> -4730--> -4731--> -4732--> -4733--> -4734--> -4735--> -4736--> -4737--> -4738--> -4739--> -474--> -4740--> -4741--> -4742--> -4743--> -4744--> -4745--> -4746--> -4747--> -4748--> -4749--> -475--> -4750--> -4751--> -4752--> -4753--> -4754--> -4755--> -4756--> -4757--> -4758--> -4759--> -476--> -4760--> -4761--> -4762--> -4763--> -4764--> -4765--> -4766--> -4767--> -4768--> -4769--> -477--> -4770--> -4771--> -4772--> -4773--> -4774--> -4775--> -4776--> -4777--> -4778--> -4779--> -478--> -4780--> -4781--> -4782--> -4783--> -4784--> -4785--> -4786--> -4787--> -4788--> -4789--> -479--> -4790--> -4791--> -4792--> -4793--> -4794--> -4795--> -4796--> -4797--> -4798--> -4799--> -48--> -480--> -4800--> -4801--> -4802--> -4803--> -4804--> -4805--> -4806--> -4807--> -4808--> -4809--> -481--> -4810--> -4811--> -4812--> -4813--> -4814--> -4815--> -4816--> -4817--> -4818--> -4819--> -482--> -4820--> -4821--> -4822--> -4823--> -4824--> -4825--> -4826--> -4827--> -4828--> -4829--> -483--> -4830--> -4831--> -4832--> -4833--> -4834--> -4835--> -4836--> -4837--> -4838--> -4839--> -484--> -4840--> -4841--> -4842--> -4843--> -4844--> -4845--> -4846--> -4847--> -4848--> -4849--> -485--> -4850--> -4851--> -4852--> -4853--> -4854--> -4855--> -4856--> -4857--> -4858--> -4859--> -486--> -4860--> -4861--> -4862--> -4863--> -4864--> -4865--> -4866--> -4867--> -4868--> -4869--> -487--> -4870--> -4871--> -4872--> -4873--> -4874--> -4875--> -4876--> -4877--> -4878--> -4879--> -488--> -4880--> -4881--> -4882--> -4883--> -4884--> -4885--> -4886--> -4887--> -4888--> -4889--> -489--> -4890--> -4891--> -4892--> -4893--> -4894--> -4895--> -4896--> -4897--> -4898--> -4899--> -49--> -490--> -4900--> -4901--> -4902--> -4903--> -4904--> -4905--> -4906--> -4907--> -4908--> -4909--> -491--> -4910--> -4911--> -4912--> -4913--> -4914--> -4915--> -4916--> -4917--> -4918--> -4919--> -492--> -4920--> -4921--> -4922--> -4923--> -4924--> -4925--> -4926--> -4927--> -4928--> -4929--> -493--> -4930--> -4931--> -4932--> -4933--> -4934--> -4935--> -4936--> -4937--> -4938--> -4939--> -494--> -4940--> -4941--> -4942--> -4943--> -4944--> -4945--> -4946--> -4947--> -4948--> -4949--> -495--> -4950--> -4951--> -4952--> -4953--> -4954--> -4955--> -4956--> -4957--> -4958--> -4959--> -496--> -4960--> -4961--> -4962--> -4963--> -4964--> -4965--> -4966--> -4967--> -4968--> -4969--> -497--> -4970--> -4971--> -4972--> -4973--> -4974--> -4975--> -4976--> -4977--> -4978--> -4979--> -498--> -4980--> -4981--> -4982--> -4983--> -4984--> -4985--> -4986--> -4987--> -4988--> -4989--> -499--> -4990--> -4991--> -4992--> -4993--> -4994--> -4995--> -4996--> -4997--> -4998--> -4999--> -5--> -50--> -500--> -5000--> -5001--> -5002--> -5003--> -5004--> -5005--> -5006--> -5007--> -5008--> -5009--> -501--> -5010--> -5011--> -5012--> -5013--> -5014--> -5015--> -5016--> -5017--> -5018--> -5019--> -502--> -5020--> -5021--> -5022--> -5023--> -5024--> -5025--> -5026--> -5027--> -5028--> -5029--> -503--> -5030--> -5031--> -5032--> -5033--> -5034--> -5035--> -5036--> -5037--> -5038--> -5039--> -504--> -5040--> -5041--> -5042--> -5043--> -5044--> -5045--> -5046--> -5047--> -5048--> -5049--> -505--> -5050--> -5051--> -5052--> -5053--> -5054--> -5055--> -5056--> -5057--> -5058--> -5059--> -506--> -5060--> -5061--> -5062--> -5063--> -5064--> -5065--> -5066--> -5067--> -5068--> -5069--> -507--> -5070--> -5071--> -5072--> -5073--> -5074--> -5075--> -5076--> -5077--> -5078--> -5079--> -508--> -5080--> -5081--> -5082--> -5083--> -5084--> -5085--> -5086--> -5087--> -5088--> -5089--> -509--> -5090--> -5091--> -5092--> -5093--> -5094--> -5095--> -5096--> -5097--> -5098--> -5099--> -51--> -510--> -5100--> -5101--> -5102--> -5103--> -5104--> -5105--> -5106--> -5107--> -5108--> -5109--> -511--> -5110--> -5111--> -5112--> -5113--> -5114--> -5115--> -5116--> -5117--> -5118--> -5119--> -512--> -5120--> -5121--> -5122--> -5123--> -5124--> -5125--> -5126--> -5127--> -5128--> -5129--> -513--> -5130--> -5131--> -5132--> -5133--> -5134--> -5135--> -5136--> -5137--> -5138--> -5139--> -514--> -5140--> -5141--> -5142--> -5143--> -5144--> -5145--> -5146--> -5147--> -5148--> -5149--> -515--> -5150--> -5151--> -5152--> -5153--> -5154--> -5155--> -5156--> -5157--> -5158--> -5159--> -516--> -5160--> -5161--> -5162--> -5163--> -5164--> -5165--> -5166--> -5167--> -5168--> -5169--> -517--> -5170--> -5171--> -5172--> -5173--> -5174--> -5175--> -5176--> -5177--> -5178--> -5179--> -518--> -5180--> -5181--> -5182--> -5183--> -5184--> -5185--> -5186--> -5187--> -5188--> -5189--> -519--> -5190--> -5191--> -5192--> -5193--> -5194--> -5195--> -5196--> -5197--> -5198--> -5199--> -52--> -520--> -5200--> -5201--> -5202--> -5203--> -5204--> -5205--> -5206--> -5207--> -5208--> -5209--> -521--> -5210--> -5211--> -5212--> -5213--> -5214--> -5215--> -5216--> -5217--> -5218--> -5219--> -522--> -5220--> -5221--> -5222--> -5223--> -5224--> -5225--> -5226--> -5227--> -5228--> -5229--> -523--> -5230--> -5231--> -5232--> -5233--> -5234--> -5235--> -5236--> -5237--> -5238--> -5239--> -524--> -5240--> -5241--> -5242--> -5243--> -5244--> -5245--> -5246--> -5247--> -5248--> -5249--> -525--> -5250--> -5251--> -5252--> -5253--> -5254--> -5255--> -5256--> -5257--> -5258--> -5259--> -526--> -5260--> -5261--> -5262--> -5263--> -5264--> -5265--> -5266--> -5267--> -5268--> -5269--> -527--> -5270--> -5271--> -5272--> -5273--> -5274--> -5275--> -5276--> -5277--> -5278--> -5279--> -528--> -5280--> -5281--> -5282--> -5283--> -5284--> -5285--> -5286--> -5287--> -5288--> -5289--> -529--> -5290--> -5291--> -5292--> -5293--> -5294--> -5295--> -5296--> -5297--> -5298--> -5299--> -53--> -530--> -5300--> -5301--> -5302--> -5303--> -5304--> -5305--> -5306--> -5307--> -5308--> -5309--> -531--> -5310--> -5311--> -5312--> -5313--> -5314--> -5315--> -5316--> -5317--> -5318--> -5319--> -532--> -5320--> -5321--> -5322--> -5323--> -5324--> -5325--> -5326--> -5327--> -5328--> -5329--> -533--> -5330--> -5331--> -5332--> -5333--> -5334--> -5335--> -5336--> -5337--> -5338--> -5339--> -534--> -5340--> -5341--> -5342--> -5343--> -5344--> -5345--> -5346--> -5347--> -5348--> -5349--> -535--> -5350--> -5351--> -5352--> -5353--> -5354--> -5355--> -5356--> -5357--> -5358--> -5359--> -536--> -5360--> -5361--> -5362--> -5363--> -5364--> -5365--> -5366--> -5367--> -5368--> -5369--> -537--> -5370--> -5371--> -5372--> -5373--> -5374--> -5375--> -5376--> -5377--> -5378--> -5379--> -538--> -5380--> -5381--> -5382--> -5383--> -5384--> -5385--> -5386--> -5387--> -5388--> -5389--> -539--> -5390--> -5391--> -5392--> -5393--> -5394--> -5395--> -5396--> -5397--> -5398--> -5399--> -54--> -540--> -5400--> -5401--> -5402--> -5403--> -5404--> -5405--> -5406--> -5407--> -5408--> -5409--> -541--> -5410--> -5411--> -5412--> -5413--> -5414--> -5415--> -5416--> -5417--> -5418--> -5419--> -542--> -5420--> -5421--> -5422--> -5423--> -5424--> -5425--> -5426--> -5427--> -5428--> -5429--> -543--> -5430--> -5431--> -5432--> -5433--> -5434--> -5435--> -5436--> -5437--> -5438--> -5439--> -544--> -5440--> -5441--> -5442--> -5443--> -5444--> -5445--> -5446--> -5447--> -5448--> -5449--> -545--> -5450--> -5451--> -5452--> -5453--> -5454--> -5455--> -5456--> -5457--> -5458--> -5459--> -546--> -5460--> -5461--> -5462--> -5463--> -5464--> -5465--> -5466--> -5467--> -5468--> -5469--> -547--> -5470--> -5471--> -5472--> -5473--> -5474--> -5475--> -5476--> -5477--> -5478--> -5479--> -548--> -5480--> -5481--> -5482--> -5483--> -5484--> -5485--> -5486--> -5487--> -5488--> -5489--> -549--> -5490--> -5491--> -5492--> -5493--> -5494--> -5495--> -5496--> -5497--> -5498--> -5499--> -55--> -550--> -5500--> -5501--> -5502--> -5503--> -5504--> -5505--> -5506--> -5507--> -5508--> -5509--> -551--> -5510--> -5511--> -5512--> -5513--> -5514--> -5515--> -5516--> -5517--> -5518--> -5519--> -552--> -5520--> -5521--> -5522--> -5523--> -5524--> -5525--> -5526--> -5527--> -5528--> -5529--> -553--> -5530--> -5531--> -5532--> -5533--> -5534--> -5535--> -5536--> -5537--> -5538--> -5539--> -554--> -5540--> -5541--> -5542--> -5543--> -5544--> -5545--> -5546--> -5547--> -5548--> -5549--> -555--> -5550--> -5551--> -5552--> -5553--> -5554--> -5555--> -5556--> -5557--> -5558--> -5559--> -556--> -5560--> -5561--> -5562--> -5563--> -5564--> -5565--> -5566--> -5567--> -5568--> -5569--> -557--> -5570--> -5571--> -5572--> -5573--> -5574--> -5575--> -5576--> -5577--> -5578--> -5579--> -558--> -5580--> -5581--> -5582--> -5583--> -5584--> -5585--> -5586--> -5587--> -5588--> -5589--> -559--> -5590--> -5591--> -5592--> -5593--> -5594--> -5595--> -5596--> -5597--> -5598--> -5599--> -56--> -560--> -5600--> -5601--> -5602--> -5603--> -5604--> -5605--> -5606--> -5607--> -5608--> -5609--> -561--> -5610--> -5611--> -5612--> -5613--> -5614--> -5615--> -5616--> -5617--> -5618--> -5619--> -562--> -5620--> -5621--> -5622--> -5623--> -5624--> -5625--> -5626--> -5627--> -5628--> -5629--> -563--> -5630--> -5631--> -5632--> -5633--> -5634--> -5635--> -5636--> -5637--> -5638--> -5639--> -564--> -5640--> -5641--> -5642--> -5643--> -5644--> -5645--> -5646--> -5647--> -5648--> -5649--> -565--> -5650--> -5651--> -5652--> -5653--> -5654--> -5655--> -5656--> -5657--> -5658--> -5659--> -566--> -5660--> -5661--> -5662--> -5663--> -5664--> -5665--> -5666--> -5667--> -5668--> -5669--> -567--> -5670--> -5671--> -5672--> -5673--> -5674--> -5675--> -5676--> -5677--> -5678--> -5679--> -568--> -5680--> -5681--> -5682--> -5683--> -5684--> -5685--> -5686--> -5687--> -5688--> -5689--> -569--> -5690--> -5691--> -5692--> -5693--> -5694--> -5695--> -5696--> -5697--> -5698--> -5699--> -57--> -570--> -5700--> -5701--> -5702--> -5703--> -5704--> -5705--> -5706--> -5707--> -5708--> -5709--> -571--> -5710--> -5711--> -5712--> -5713--> -5714--> -5715--> -5716--> -5717--> -5718--> -5719--> -572--> -5720--> -5721--> -5722--> -5723--> -5724--> -5725--> -5726--> -5727--> -5728--> -5729--> -573--> -5730--> -5731--> -5732--> -5733--> -5734--> -5735--> -5736--> -5737--> -5738--> -5739--> -574--> -5740--> -5741--> -5742--> -5743--> -5744--> -5745--> -5746--> -5747--> -5748--> -5749--> -575--> -5750--> -5751--> -5752--> -5753--> -5754--> -5755--> -5756--> -5757--> -5758--> -5759--> -576--> -5760--> -5761--> -5762--> -5763--> -5764--> -5765--> -5766--> -5767--> -5768--> -5769--> -577--> -5770--> -5771--> -5772--> -5773--> -5774--> -5775--> -5776--> -5777--> -5778--> -5779--> -578--> -5780--> -5781--> -5782--> -5783--> -5784--> -5785--> -5786--> -5787--> -5788--> -5789--> -579--> -5790--> -5791--> -5792--> -5793--> -5794--> -5795--> -5796--> -5797--> -5798--> -5799--> -58--> -580--> -5800--> -5801--> -5802--> -5803--> -5804--> -5805--> -5806--> -5807--> -5808--> -5809--> -581--> -5810--> -5811--> -5812--> -5813--> -5814--> -5815--> -5816--> -5817--> -5818--> -5819--> -582--> -5820--> -5821--> -5822--> -5823--> -5824--> -5825--> -5826--> -5827--> -5828--> -5829--> -583--> -5830--> -5831--> -5832--> -5833--> -5834--> -5835--> -5836--> -5837--> -5838--> -5839--> -584--> -5840--> -5841--> -5842--> -5843--> -5844--> -5845--> -5846--> -5847--> -5848--> -5849--> -585--> -5850--> -5851--> -5852--> -5853--> -5854--> -5855--> -5856--> -5857--> -5858--> -5859--> -586--> -5860--> -5861--> -5862--> -5863--> -5864--> -5865--> -5866--> -5867--> -5868--> -5869--> -587--> -5870--> -5871--> -5872--> -5873--> -5874--> -5875--> -5876--> -5877--> -5878--> -5879--> -588--> -5880--> -5881--> -5882--> -5883--> -5884--> -5885--> -5886--> -5887--> -5888--> -5889--> -589--> -5890--> -5891--> -5892--> -5893--> -5894--> -5895--> -5896--> -5897--> -5898--> -5899--> -59--> -590--> -5900--> -5901--> -5902--> -5903--> -5904--> -5905--> -5906--> -5907--> -5908--> -5909--> -591--> -5910--> -5911--> -5912--> -5913--> -5914--> -5915--> -5916--> -5917--> -5918--> -5919--> -592--> -5920--> -5921--> -5922--> -5923--> -5924--> -5925--> -5926--> -5927--> -5928--> -5929--> -593--> -5930--> -5931--> -5932--> -5933--> -5934--> -5935--> -5936--> -5937--> -5938--> -5939--> -594--> -5940--> -5941--> -5942--> -5943--> -5944--> -5945--> -5946--> -5947--> -5948--> -5949--> -595--> -5950--> -5951--> -5952--> -5953--> -5954--> -5955--> -5956--> -5957--> -5958--> -5959--> -596--> -5960--> -5961--> -5962--> -5963--> -5964--> -5965--> -5966--> -5967--> -5968--> -5969--> -597--> -5970--> -5971--> -5972--> -5973--> -5974--> -5975--> -5976--> -5977--> -5978--> -5979--> -598--> -5980--> -5981--> -5982--> -5983--> -5984--> -5985--> -5986--> -5987--> -5988--> -5989--> -599--> -5990--> -5991--> -5992--> -5993--> -5994--> -5995--> -5996--> -5997--> -5998--> -5999--> -6--> -60--> -600--> -6000--> -6001--> -6002--> -6003--> -6004--> -6005--> -6006--> -6007--> -6008--> -6009--> -601--> -6010--> -6011--> -6012--> -6013--> -6014--> -6015--> -6016--> -6017--> -6018--> -6019--> -602--> -6020--> -6021--> -6022--> -6023--> -6024--> -6025--> -6026--> -6027--> -6028--> -6029--> -603--> -6030--> -6031--> -6032--> -6033--> -6034--> -6035--> -6036--> -6037--> -6038--> -6039--> -604--> -6040--> -6041--> -6042--> -6043--> -6044--> -6045--> -6046--> -6047--> -6048--> -6049--> -605--> -6050--> -6051--> -6052--> -6053--> -6054--> -6055--> -6056--> -6057--> -6058--> -6059--> -606--> -6060--> -6061--> -6062--> -6063--> -6064--> -6065--> -6066--> -6067--> -6068--> -6069--> -607--> -6070--> -6071--> -6072--> -6073--> -6074--> -6075--> -6076--> -6077--> -6078--> -6079--> -608--> -6080--> -6081--> -6082--> -6083--> -6084--> -6085--> -6086--> -6087--> -6088--> -6089--> -609--> -6090--> -6091--> -6092--> -6093--> -6094--> -6095--> -6096--> -6097--> -6098--> -6099--> -61--> -610--> -6100--> -6101--> -6102--> -6103--> -6104--> -6105--> -6106--> -6107--> -6108--> -6109--> -611--> -6110--> -6111--> -6112--> -6113--> -6114--> -6115--> -6116--> -6117--> -6118--> -6119--> -612--> -6120--> -6121--> -6122--> -6123--> -6124--> -6125--> -6126--> -6127--> -6128--> -6129--> -613--> -6130--> -6131--> -6132--> -6133--> -6134--> -6135--> -6136--> -6137--> -6138--> -6139--> -614--> -6140--> -6141--> -6142--> -6143--> -6144--> -6145--> -6146--> -6147--> -6148--> -6149--> -615--> -6150--> -6151--> -6152--> -6153--> -6154--> -6155--> -6156--> -6157--> -6158--> -6159--> -616--> -6160--> -6161--> -6162--> -6163--> -6164--> -6165--> -6166--> -6167--> -6168--> -6169--> -617--> -6170--> -6171--> -6172--> -6173--> -6174--> -6175--> -6176--> -6177--> -6178--> -6179--> -618--> -6180--> -6181--> -6182--> -6183--> -6184--> -6185--> -6186--> -6187--> -6188--> -6189--> -619--> -6190--> -6191--> -6192--> -6193--> -6194--> -6195--> -6196--> -6197--> -6198--> -6199--> -62--> -620--> -6200--> -6201--> -6202--> -6203--> -6204--> -6205--> -6206--> -6207--> -6208--> -6209--> -621--> -6210--> -6211--> -6212--> -6213--> -6214--> -6215--> -6216--> -6217--> -6218--> -6219--> -622--> -6220--> -6221--> -6222--> -6223--> -6224--> -6225--> -6226--> -6227--> -6228--> -6229--> -623--> -6230--> -6231--> -6232--> -6233--> -6234--> -6235--> -6236--> -6237--> -6238--> -6239--> -624--> -6240--> -6241--> -6242--> -6243--> -6244--> -6245--> -6246--> -6247--> -6248--> -6249--> -625--> -6250--> -6251--> -6252--> -6253--> -6254--> -6255--> -6256--> -6257--> -6258--> -6259--> -626--> -6260--> -6261--> -6262--> -6263--> -6264--> -6265--> -6266--> -6267--> -6268--> -6269--> -627--> -6270--> -6271--> -6272--> -6273--> -6274--> -6275--> -6276--> -6277--> -6278--> -6279--> -628--> -6280--> -6281--> -6282--> -6283--> -6284--> -6285--> -6286--> -6287--> -6288--> -6289--> -629--> -6290--> -6291--> -6292--> -6293--> -6294--> -6295--> -6296--> -6297--> -6298--> -6299--> -63--> -630--> -6300--> -6301--> -6302--> -6303--> -6304--> -6305--> -6306--> -6307--> -6308--> -6309--> -631--> -6310--> -6311--> -6312--> -6313--> -6314--> -6315--> -6316--> -6317--> -6318--> -6319--> -632--> -6320--> -6321--> -6322--> -6323--> -6324--> -6325--> -6326--> -6327--> -6328--> -6329--> -633--> -6330--> -6331--> -6332--> -6333--> -6334--> -6335--> -6336--> -6337--> -6338--> -6339--> -634--> -6340--> -6341--> -6342--> -6343--> -6344--> -6345--> -6346--> -6347--> -6348--> -6349--> -635--> -6350--> -6351--> -6352--> -6353--> -6354--> -6355--> -6356--> -6357--> -6358--> -6359--> -636--> -6360--> -6361--> -6362--> -6363--> -6364--> -6365--> -6366--> -6367--> -6368--> -6369--> -637--> -6370--> -6371--> -6372--> -6373--> -6374--> -6375--> -6376--> -6377--> -6378--> -6379--> -638--> -6380--> -6381--> -6382--> -6383--> -6384--> -6385--> -6386--> -6387--> -6388--> -6389--> -639--> -6390--> -6391--> -6392--> -6393--> -6394--> -6395--> -6396--> -6397--> -6398--> -6399--> -64--> -640--> -6400--> -6401--> -6402--> -6403--> -6404--> -6405--> -6406--> -6407--> -6408--> -6409--> -641--> -6410--> -6411--> -6412--> -6413--> -6414--> -6415--> -6416--> -6417--> -6418--> -6419--> -642--> -6420--> -6421--> -6422--> -6423--> -6424--> -6425--> -6426--> -6427--> -6428--> -6429--> -643--> -6430--> -6431--> -6432--> -6433--> -6434--> -6435--> -6436--> -6437--> -6438--> -6439--> -644--> -6440--> -6441--> -6442--> -6443--> -6444--> -6445--> -6446--> -6447--> -6448--> -6449--> -645--> -6450--> -6451--> -6452--> -6453--> -6454--> -6455--> -6456--> -6457--> -6458--> -6459--> -646--> -6460--> -6461--> -6462--> -6463--> -6464--> -6465--> -6466--> -6467--> -6468--> -6469--> -647--> -6470--> -6471--> -6472--> -6473--> -6474--> -6475--> -6476--> -6477--> -6478--> -6479--> -648--> -6480--> -6481--> -6482--> -6483--> -6484--> -6485--> -6486--> -6487--> -6488--> -6489--> -649--> -6490--> -6491--> -6492--> -6493--> -6494--> -6495--> -6496--> -6497--> -6498--> -6499--> -65--> -650--> -6500--> -6501--> -6502--> -6503--> -6504--> -6505--> -6506--> -6507--> -6508--> -6509--> -651--> -6510--> -6511--> -6512--> -6513--> -6514--> -6515--> -6516--> -6517--> -6518--> -6519--> -652--> -6520--> -6521--> -6522--> -6523--> -6524--> -6525--> -6526--> -6527--> -6528--> -6529--> -653--> -6530--> -6531--> -6532--> -6533--> -6534--> -6535--> -6536--> -6537--> -6538--> -6539--> -654--> -6540--> -6541--> -6542--> -6543--> -6544--> -6545--> -6546--> -6547--> -6548--> -6549--> -655--> -6550--> -6551--> -6552--> -6553--> -6554--> -6555--> -6556--> -6557--> -6558--> -6559--> -656--> -6560--> -6561--> -6562--> -6563--> -6564--> -6565--> -6566--> -6567--> -6568--> -6569--> -657--> -6570--> -6571--> -6572--> -6573--> -6574--> -6575--> -6576--> -6577--> -6578--> -6579--> -658--> -6580--> -6581--> -6582--> -6583--> -6584--> -6585--> -6586--> -6587--> -6588--> -6589--> -659--> -6590--> -6591--> -6592--> -6593--> -6594--> -6595--> -6596--> -6597--> -6598--> -6599--> -66--> -660--> -6600--> -6601--> -6602--> -6603--> -6604--> -6605--> -6606--> -6607--> -6608--> -6609--> -661--> -6610--> -6611--> -6612--> -6613--> -6614--> -6615--> -6616--> -6617--> -6618--> -6619--> -662--> -6620--> -6621--> -6622--> -6623--> -6624--> -6625--> -6626--> -6627--> -6628--> -6629--> -663--> -6630--> -6631--> -6632--> -6633--> -6634--> -6635--> -6636--> -6637--> -6638--> -6639--> -664--> -6640--> -6641--> -6642--> -6643--> -6644--> -6645--> -6646--> -6647--> -6648--> -6649--> -665--> -6650--> -6651--> -6652--> -6653--> -6654--> -6655--> -6656--> -6657--> -6658--> -6659--> -666--> -6660--> -6661--> -6662--> -6663--> -6664--> -6665--> -6666--> -6667--> -6668--> -6669--> -667--> -6670--> -6671--> -6672--> -6673--> -6674--> -6675--> -6676--> -6677--> -6678--> -6679--> -668--> -6680--> -6681--> -6682--> -6683--> -6684--> -6685--> -6686--> -6687--> -6688--> -6689--> -669--> -6690--> -6691--> -6692--> -6693--> -6694--> -6695--> -6696--> -6697--> -6698--> -6699--> -67--> -670--> -6700--> -6701--> -6702--> -6703--> -6704--> -6705--> -6706--> -6707--> -6708--> -6709--> -671--> -6710--> -6711--> -6712--> -6713--> -6714--> -6715--> -6716--> -6717--> -6718--> -6719--> -672--> -6720--> -6721--> -6722--> -6723--> -6724--> -6725--> -6726--> -6727--> -6728--> -6729--> -673--> -6730--> -6731--> -6732--> -6733--> -6734--> -6735--> -6736--> -6737--> -6738--> -6739--> -674--> -6740--> -6741--> -6742--> -6743--> -6744--> -6745--> -6746--> -6747--> -6748--> -6749--> -675--> -6750--> -6751--> -6752--> -6753--> -6754--> -6755--> -6756--> -6757--> -6758--> -6759--> -676--> -6760--> -6761--> -6762--> -6763--> -6764--> -6765--> -6766--> -6767--> -6768--> -6769--> -677--> -6770--> -6771--> -6772--> -6773--> -6774--> -6775--> -6776--> -6777--> -6778--> -6779--> -678--> -6780--> -6781--> -6782--> -6783--> -6784--> -6785--> -6786--> -6787--> -6788--> -6789--> -679--> -6790--> -6791--> -6792--> -6793--> -6794--> -6795--> -6796--> -6797--> -6798--> -6799--> -68--> -680--> -6800--> -6801--> -6802--> -6803--> -6804--> -6805--> -6806--> -6807--> -6808--> -6809--> -681--> -6810--> -6811--> -6812--> -6813--> -6814--> -6815--> -6816--> -6817--> -6818--> -6819--> -682--> -6820--> -6821--> -6822--> -6823--> -6824--> -6825--> -6826--> -6827--> -6828--> -6829--> -683--> -6830--> -6831--> -6832--> -6833--> -6834--> -6835--> -6836--> -6837--> -6838--> -6839--> -684--> -6840--> -6841--> -6842--> -6843--> -6844--> -6845--> -6846--> -6847--> -6848--> -6849--> -685--> -6850--> -6851--> -6852--> -6853--> -6854--> -6855--> -6856--> -6857--> -6858--> -6859--> -686--> -6860--> -6861--> -6862--> -6863--> -6864--> -6865--> -6866--> -6867--> -6868--> -6869--> -687--> -6870--> -6871--> -6872--> -6873--> -6874--> -6875--> -6876--> -6877--> -6878--> -6879--> -688--> -6880--> -6881--> -6882--> -6883--> -6884--> -6885--> -6886--> -6887--> -6888--> -6889--> -689--> -6890--> -6891--> -6892--> -6893--> -6894--> -6895--> -6896--> -6897--> -6898--> -6899--> -69--> -690--> -6900--> -6901--> -6902--> -6903--> -6904--> -6905--> -6906--> -6907--> -6908--> -6909--> -691--> -6910--> -6911--> -6912--> -6913--> -6914--> -6915--> -6916--> -6917--> -6918--> -6919--> -692--> -6920--> -6921--> -6922--> -6923--> -6924--> -6925--> -6926--> -6927--> -6928--> -6929--> -693--> -6930--> -6931--> -6932--> -6933--> -6934--> -6935--> -6936--> -6937--> -6938--> -6939--> -694--> -6940--> -6941--> -6942--> -6943--> -6944--> -6945--> -6946--> -6947--> -6948--> -6949--> -695--> -6950--> -6951--> -6952--> -6953--> -6954--> -6955--> -6956--> -6957--> -6958--> -6959--> -696--> -6960--> -6961--> -6962--> -6963--> -6964--> -6965--> -6966--> -6967--> -6968--> -6969--> -697--> -6970--> -6971--> -6972--> -6973--> -6974--> -6975--> -6976--> -6977--> -6978--> -6979--> -698--> -6980--> -6981--> -6982--> -6983--> -6984--> -6985--> -6986--> -6987--> -6988--> -6989--> -699--> -6990--> -6991--> -6992--> -6993--> -6994--> -6995--> -6996--> -6997--> -6998--> -6999--> -7--> -70--> -700--> -7000--> -7001--> -7002--> -7003--> -7004--> -7005--> -7006--> -7007--> -7008--> -7009--> -701--> -7010--> -7011--> -7012--> -7013--> -7014--> -7015--> -7016--> -7017--> -7018--> -7019--> -702--> -7020--> -7021--> -7022--> -7023--> -7024--> -7025--> -7026--> -7027--> -7028--> -7029--> -703--> -7030--> -7031--> -7032--> -7033--> -7034--> -7035--> -7036--> -7037--> -7038--> -7039--> -704--> -7040--> -7041--> -7042--> -7043--> -7044--> -7045--> -7046--> -7047--> -7048--> -7049--> -705--> -7050--> -7051--> -7052--> -7053--> -7054--> -7055--> -7056--> -7057--> -7058--> -7059--> -706--> -7060--> -7061--> -7062--> -7063--> -7064--> -7065--> -7066--> -7067--> -7068--> -7069--> -707--> -7070--> -7071--> -7072--> -7073--> -7074--> -7075--> -7076--> -7077--> -7078--> -7079--> -708--> -7080--> -7081--> -7082--> -7083--> -7084--> -7085--> -7086--> -7087--> -7088--> -7089--> -709--> -7090--> -7091--> -7092--> -7093--> -7094--> -7095--> -7096--> -7097--> -7098--> -7099--> -71--> -710--> -7100--> -7101--> -7102--> -7103--> -7104--> -7105--> -7106--> -7107--> -7108--> -7109--> -711--> -7110--> -7111--> -7112--> -7113--> -7114--> -7115--> -7116--> -7117--> -7118--> -7119--> -712--> -7120--> -7121--> -7122--> -7123--> -7124--> -7125--> -7126--> -7127--> -7128--> -7129--> -713--> -7130--> -7131--> -7132--> -7133--> -7134--> -7135--> -7136--> -7137--> -7138--> -7139--> -714--> -7140--> -7141--> -7142--> -7143--> -7144--> -7145--> -7146--> -7147--> -7148--> -7149--> -715--> -7150--> -7151--> -7152--> -7153--> -7154--> -7155--> -7156--> -7157--> -7158--> -7159--> -716--> -7160--> -7161--> -7162--> -7163--> -7164--> -7165--> -7166--> -7167--> -7168--> -7169--> -717--> -7170--> -7171--> -7172--> -7173--> -7174--> -7175--> -7176--> -7177--> -7178--> -7179--> -718--> -7180--> -7181--> -7182--> -7183--> -7184--> -7185--> -7186--> -7187--> -7188--> -7189--> -719--> -7190--> -7191--> -7192--> -7193--> -7194--> -7195--> -7196--> -7197--> -7198--> -7199--> -72--> -720--> -7200--> -7201--> -7202--> -7203--> -7204--> -7205--> -7206--> -7207--> -7208--> -7209--> -721--> -7210--> -7211--> -7212--> -7213--> -7214--> -7215--> -7216--> -7217--> -7218--> -7219--> -722--> -7220--> -7221--> -7222--> -7223--> -7224--> -7225--> -7226--> -7227--> -7228--> -7229--> -723--> -7230--> -7231--> -7232--> -7233--> -7234--> -7235--> -7236--> -7237--> -7238--> -7239--> -724--> -7240--> -7241--> -7242--> -7243--> -7244--> -7245--> -7246--> -7247--> -7248--> -7249--> -725--> -7250--> -7251--> -7252--> -7253--> -7254--> -7255--> -7256--> -7257--> -7258--> -7259--> -726--> -7260--> -7261--> -7262--> -7263--> -7264--> -7265--> -7266--> -7267--> -7268--> -7269--> -727--> -7270--> -7271--> -7272--> -7273--> -7274--> -7275--> -7276--> -7277--> -7278--> -7279--> -728--> -7280--> -7281--> -7282--> -7283--> -7284--> -7285--> -7286--> -7287--> -7288--> -7289--> -729--> -7290--> -7291--> -7292--> -7293--> -7294--> -7295--> -7296--> -7297--> -7298--> -7299--> -73--> -730--> -7300--> -7301--> -7302--> -7303--> -7304--> -7305--> -7306--> -7307--> -7308--> -7309--> -731--> -7310--> -7311--> -7312--> -7313--> -7314--> -7315--> -7316--> -7317--> -7318--> -7319--> -732--> -7320--> -7321--> -7322--> -7323--> -7324--> -7325--> -7326--> -7327--> -7328--> -7329--> -733--> -7330--> -7331--> -7332--> -7333--> -7334--> -7335--> -7336--> -7337--> -7338--> -7339--> -734--> -7340--> -7341--> -7342--> -7343--> -7344--> -7345--> -7346--> -7347--> -7348--> -7349--> -735--> -7350--> -7351--> -7352--> -7353--> -7354--> -7355--> -7356--> -7357--> -7358--> -7359--> -736--> -7360--> -7361--> -7362--> -7363--> -7364--> -7365--> -7366--> -7367--> -7368--> -7369--> -737--> -7370--> -7371--> -7372--> -7373--> -7374--> -7375--> -7376--> -7377--> -7378--> -7379--> -738--> -7380--> -7381--> -7382--> -7383--> -7384--> -7385--> -7386--> -7387--> -7388--> -7389--> -739--> -7390--> -7391--> -7392--> -7393--> -7394--> -7395--> -7396--> -7397--> -7398--> -7399--> -74--> -740--> -7400--> -7401--> -7402--> -7403--> -7404--> -7405--> -7406--> -7407--> -7408--> -7409--> -741--> -7410--> -7411--> -7412--> -7413--> -7414--> -7415--> -7416--> -7417--> -7418--> -7419--> -742--> -7420--> -7421--> -7422--> -7423--> -7424--> -7425--> -7426--> -7427--> -7428--> -7429--> -743--> -7430--> -7431--> -7432--> -7433--> -7434--> -7435--> -7436--> -7437--> -7438--> -7439--> -744--> -7440--> -7441--> -7442--> -7443--> -7444--> -7445--> -7446--> -7447--> -7448--> -7449--> -745--> -7450--> -7451--> -7452--> -7453--> -7454--> -7455--> -7456--> -7457--> -7458--> -7459--> -746--> -7460--> -7461--> -7462--> -7463--> -7464--> -7465--> -7466--> -7467--> -7468--> -7469--> -747--> -7470--> -7471--> -7472--> -7473--> -7474--> -7475--> -7476--> -7477--> -7478--> -7479--> -748--> -7480--> -7481--> -7482--> -7483--> -7484--> -7485--> -7486--> -7487--> -7488--> -7489--> -749--> -7490--> -7491--> -7492--> -7493--> -7494--> -7495--> -7496--> -7497--> -7498--> -7499--> -75--> -750--> -7500--> -7501--> -7502--> -7503--> -7504--> -7505--> -7506--> -7507--> -7508--> -7509--> -751--> -7510--> -7511--> -7512--> -7513--> -7514--> -7515--> -7516--> -7517--> -7518--> -7519--> -752--> -7520--> -7521--> -7522--> -7523--> -7524--> -7525--> -7526--> -7527--> -7528--> -7529--> -753--> -7530--> -7531--> -7532--> -7533--> -7534--> -7535--> -7536--> -7537--> -7538--> -7539--> -754--> -7540--> -7541--> -7542--> -7543--> -7544--> -7545--> -7546--> -7547--> -7548--> -7549--> -755--> -7550--> -7551--> -7552--> -7553--> -7554--> -7555--> -7556--> -7557--> -7558--> -7559--> -756--> -7560--> -7561--> -7562--> -7563--> -7564--> -7565--> -7566--> -7567--> -7568--> -7569--> -757--> -7570--> -7571--> -7572--> -7573--> -7574--> -7575--> -7576--> -7577--> -7578--> -7579--> -758--> -7580--> -7581--> -7582--> -7583--> -7584--> -7585--> -7586--> -7587--> -7588--> -7589--> -759--> -7590--> -7591--> -7592--> -7593--> -7594--> -7595--> -7596--> -7597--> -7598--> -7599--> -76--> -760--> -7600--> -7601--> -7602--> -7603--> -7604--> -7605--> -7606--> -7607--> -7608--> -7609--> -761--> -7610--> -7611--> -7612--> -7613--> -7614--> -7615--> -7616--> -7617--> -7618--> -7619--> -762--> -7620--> -7621--> -7622--> -7623--> -7624--> -7625--> -7626--> -7627--> -7628--> -7629--> -763--> -7630--> -7631--> -7632--> -7633--> -7634--> -7635--> -7636--> -7637--> -7638--> -7639--> -764--> -7640--> -7641--> -7642--> -7643--> -7644--> -7645--> -7646--> -7647--> -7648--> -7649--> -765--> -7650--> -7651--> -7652--> -7653--> -7654--> -7655--> -7656--> -7657--> -7658--> -7659--> -766--> -7660--> -7661--> -7662--> -7663--> -7664--> -7665--> -7666--> -7667--> -7668--> -7669--> -767--> -7670--> -7671--> -7672--> -7673--> -7674--> -7675--> -7676--> -7677--> -7678--> -7679--> -768--> -7680--> -7681--> -7682--> -7683--> -7684--> -7685--> -7686--> -7687--> -7688--> -7689--> -769--> -7690--> -7691--> -7692--> -7693--> -7694--> -7695--> -7696--> -7697--> -7698--> -7699--> -77--> -770--> -7700--> -7701--> -7702--> -7703--> -7704--> -7705--> -7706--> -7707--> -7708--> -7709--> -771--> -7710--> -7711--> -7712--> -7713--> -7714--> -7715--> -7716--> -7717--> -7718--> -7719--> -772--> -7720--> -7721--> -7722--> -7723--> -7724--> -7725--> -7726--> -7727--> -7728--> -7729--> -773--> -7730--> -7731--> -7732--> -7733--> -7734--> -7735--> -7736--> -7737--> -7738--> -7739--> -774--> -7740--> -7741--> -7742--> -7743--> -7744--> -7745--> -7746--> -7747--> -7748--> -7749--> -775--> -7750--> -7751--> -7752--> -7753--> -7754--> -7755--> -7756--> -7757--> -7758--> -7759--> -776--> -7760--> -7761--> -7762--> -7763--> -7764--> -7765--> -7766--> -7767--> -7768--> -7769--> -777--> -7770--> -7771--> -7772--> -7773--> -7774--> -7775--> -7776--> -7777--> -7778--> -7779--> -778--> -7780--> -7781--> -7782--> -7783--> -7784--> -7785--> -7786--> -7787--> -7788--> -7789--> -779--> -7790--> -7791--> -7792--> -7793--> -7794--> -7795--> -7796--> -7797--> -7798--> -7799--> -78--> -780--> -7800--> -7801--> -7802--> -7803--> -7804--> -7805--> -7806--> -7807--> -7808--> -7809--> -781--> -7810--> -7811--> -7812--> -7813--> -7814--> -7815--> -7816--> -7817--> -7818--> -7819--> -782--> -7820--> -7821--> -7822--> -7823--> -7824--> -7825--> -7826--> -7827--> -7828--> -7829--> -783--> -7830--> -7831--> -7832--> -7833--> -7834--> -7835--> -7836--> -7837--> -7838--> -7839--> -784--> -7840--> -7841--> -7842--> -7843--> -7844--> -7845--> -7846--> -7847--> -7848--> -7849--> -785--> -7850--> -7851--> -7852--> -7853--> -7854--> -7855--> -7856--> -7857--> -7858--> -7859--> -786--> -7860--> -7861--> -7862--> -7863--> -7864--> -7865--> -7866--> -7867--> -7868--> -7869--> -787--> -7870--> -7871--> -7872--> -7873--> -7874--> -7875--> -7876--> -7877--> -7878--> -7879--> -788--> -7880--> -7881--> -7882--> -7883--> -7884--> -7885--> -7886--> -7887--> -7888--> -7889--> -789--> -7890--> -7891--> -7892--> -7893--> -7894--> -7895--> -7896--> -7897--> -7898--> -7899--> -79--> -790--> -7900--> -7901--> -7902--> -7903--> -7904--> -7905--> -7906--> -7907--> -7908--> -7909--> -791--> -7910--> -7911--> -7912--> -7913--> -7914--> -7915--> -7916--> -7917--> -7918--> -7919--> -792--> -7920--> -7921--> -7922--> -7923--> -7924--> -7925--> -7926--> -7927--> -7928--> -7929--> -793--> -7930--> -7931--> -7932--> -7933--> -7934--> -7935--> -7936--> -7937--> -7938--> -7939--> -794--> -7940--> -7941--> -7942--> -7943--> -7944--> -7945--> -7946--> -7947--> -7948--> -7949--> -795--> -7950--> -7951--> -7952--> -7953--> -7954--> -7955--> -7956--> -7957--> -7958--> -7959--> -796--> -7960--> -7961--> -7962--> -7963--> -7964--> -7965--> -7966--> -7967--> -7968--> -7969--> -797--> -7970--> -7971--> -7972--> -7973--> -7974--> -7975--> -7976--> -7977--> -7978--> -7979--> -798--> -7980--> -7981--> -7982--> -7983--> -7984--> -7985--> -7986--> -7987--> -7988--> -7989--> -799--> -7990--> -7991--> -7992--> -7993--> -7994--> -7995--> -7996--> -7997--> -7998--> -7999--> -8--> -80--> -800--> -8000--> -8001--> -8002--> -8003--> -8004--> -8005--> -8006--> -8007--> -8008--> -8009--> -801--> -8010--> -8011--> -8012--> -8013--> -8014--> -8015--> -8016--> -8017--> -8018--> -8019--> -802--> -8020--> -8021--> -8022--> -8023--> -8024--> -8025--> -8026--> -8027--> -8028--> -8029--> -803--> -8030--> -8031--> -8032--> -8033--> -8034--> -8035--> -8036--> -8037--> -8038--> -8039--> -804--> -8040--> -8041--> -8042--> -8043--> -8044--> -8045--> -8046--> -8047--> -8048--> -8049--> -805--> -8050--> -8051--> -8052--> -8053--> -8054--> -8055--> -8056--> -8057--> -8058--> -8059--> -806--> -8060--> -8061--> -8062--> -8063--> -8064--> -8065--> -8066--> -8067--> -8068--> -8069--> -807--> -8070--> -8071--> -8072--> -8073--> -8074--> -8075--> -8076--> -8077--> -8078--> -8079--> -808--> -8080--> -8081--> -8082--> -8083--> -8084--> -8085--> -8086--> -8087--> -8088--> -8089--> -809--> -8090--> -8091--> -8092--> -8093--> -8094--> -8095--> -8096--> -8097--> -8098--> -8099--> -81--> -810--> -8100--> -8101--> -8102--> -8103--> -8104--> -8105--> -8106--> -8107--> -8108--> -8109--> -811--> -8110--> -8111--> -8112--> -8113--> -8114--> -8115--> -8116--> -8117--> -8118--> -8119--> -812--> -8120--> -8121--> -8122--> -8123--> -8124--> -8125--> -8126--> -8127--> -8128--> -8129--> -813--> -8130--> -8131--> -8132--> -8133--> -8134--> -8135--> -8136--> -8137--> -8138--> -8139--> -814--> -8140--> -8141--> -8142--> -8143--> -8144--> -8145--> -8146--> -8147--> -8148--> -8149--> -815--> -8150--> -8151--> -8152--> -8153--> -8154--> -8155--> -8156--> -8157--> -8158--> -8159--> -816--> -8160--> -8161--> -8162--> -8163--> -8164--> -8165--> -8166--> -8167--> -8168--> -8169--> -817--> -8170--> -8171--> -8172--> -8173--> -8174--> -8175--> -8176--> -8177--> -8178--> -8179--> -818--> -8180--> -8181--> -8182--> -8183--> -8184--> -8185--> -8186--> -8187--> -8188--> -8189--> -819--> -8190--> -8191--> -8192--> -8193--> -8194--> -8195--> -8196--> -8197--> -8198--> -8199--> -82--> -820--> -8200--> -8201--> -8202--> -8203--> -8204--> -8205--> -8206--> -8207--> -8208--> -8209--> -821--> -8210--> -8211--> -8212--> -8213--> -8214--> -8215--> -8216--> -8217--> -8218--> -8219--> -822--> -8220--> -8221--> -8222--> -8223--> -8224--> -8225--> -8226--> -8227--> -8228--> -8229--> -823--> -8230--> -8231--> -8232--> -8233--> -8234--> -8235--> -8236--> -8237--> -8238--> -8239--> -824--> -8240--> -8241--> -8242--> -8243--> -8244--> -8245--> -8246--> -8247--> -8248--> -8249--> -825--> -8250--> -8251--> -8252--> -8253--> -8254--> -8255--> -8256--> -8257--> -8258--> -8259--> -826--> -8260--> -8261--> -8262--> -8263--> -8264--> -8265--> -8266--> -8267--> -8268--> -8269--> -827--> -8270--> -8271--> -8272--> -8273--> -8274--> -8275--> -8276--> -8277--> -8278--> -8279--> -828--> -8280--> -8281--> -8282--> -8283--> -8284--> -8285--> -8286--> -8287--> -8288--> -8289--> -829--> -8290--> -8291--> -8292--> -8293--> -8294--> -8295--> -8296--> -8297--> -8298--> -8299--> -83--> -830--> -8300--> -8301--> -8302--> -8303--> -8304--> -8305--> -8306--> -8307--> -8308--> -8309--> -831--> -8310--> -8311--> -8312--> -8313--> -8314--> -8315--> -8316--> -8317--> -8318--> -8319--> -832--> -8320--> -8321--> -8322--> -8323--> -8324--> -8325--> -8326--> -8327--> -8328--> -8329--> -833--> -8330--> -8331--> -8332--> -8333--> -8334--> -8335--> -8336--> -8337--> -8338--> -8339--> -834--> -8340--> -8341--> -8342--> -8343--> -8344--> -8345--> -8346--> -8347--> -8348--> -8349--> -835--> -8350--> -8351--> -8352--> -8353--> -8354--> -8355--> -8356--> -8357--> -8358--> -8359--> -836--> -8360--> -8361--> -8362--> -8363--> -8364--> -8365--> -8366--> -8367--> -8368--> -8369--> -837--> -8370--> -8371--> -8372--> -8373--> -8374--> -8375--> -8376--> -8377--> -8378--> -8379--> -838--> -8380--> -8381--> -8382--> -8383--> -8384--> -8385--> -8386--> -8387--> -8388--> -8389--> -839--> -8390--> -8391--> -8392--> -8393--> -8394--> -8395--> -8396--> -8397--> -8398--> -8399--> -84--> -840--> -8400--> -8401--> -8402--> -8403--> -8404--> -8405--> -8406--> -8407--> -8408--> -8409--> -841--> -8410--> -8411--> -8412--> -8413--> -8414--> -8415--> -8416--> -8417--> -8418--> -8419--> -842--> -8420--> -8421--> -8422--> -8423--> -8424--> -8425--> -8426--> -8427--> -8428--> -8429--> -843--> -8430--> -8431--> -8432--> -8433--> -8434--> -8435--> -8436--> -8437--> -8438--> -8439--> -844--> -8440--> -8441--> -8442--> -8443--> -8444--> -8445--> -8446--> -8447--> -8448--> -8449--> -845--> -8450--> -8451--> -8452--> -8453--> -8454--> -8455--> -8456--> -8457--> -8458--> -8459--> -846--> -8460--> -8461--> -8462--> -8463--> -8464--> -8465--> -8466--> -8467--> -8468--> -8469--> -847--> -8470--> -8471--> -8472--> -8473--> -8474--> -8475--> -8476--> -8477--> -8478--> -8479--> -848--> -8480--> -8481--> -8482--> -8483--> -8484--> -8485--> -8486--> -8487--> -8488--> -8489--> -849--> -8490--> -8491--> -8492--> -8493--> -8494--> -8495--> -8496--> -8497--> -8498--> -8499--> -85--> -850--> -8500--> -8501--> -8502--> -8503--> -8504--> -8505--> -8506--> -8507--> -8508--> -8509--> -851--> -8510--> -8511--> -8512--> -8513--> -8514--> -8515--> -8516--> -8517--> -8518--> -8519--> -852--> -8520--> -8521--> -8522--> -8523--> -8524--> -8525--> -8526--> -8527--> -8528--> -8529--> -853--> -8530--> -8531--> -8532--> -8533--> -8534--> -8535--> -8536--> -8537--> -8538--> -8539--> -854--> -8540--> -8541--> -8542--> -8543--> -8544--> -8545--> -8546--> -8547--> -8548--> -8549--> -855--> -8550--> -8551--> -8552--> -8553--> -8554--> -8555--> -8556--> -8557--> -8558--> -8559--> -856--> -8560--> -8561--> -8562--> -8563--> -8564--> -8565--> -8566--> -8567--> -8568--> -8569--> -857--> -8570--> -8571--> -8572--> -8573--> -8574--> -8575--> -8576--> -8577--> -8578--> -8579--> -858--> -8580--> -8581--> -8582--> -8583--> -8584--> -8585--> -8586--> -8587--> -8588--> -8589--> -859--> -8590--> -8591--> -8592--> -8593--> -8594--> -8595--> -8596--> -8597--> -8598--> -8599--> -86--> -860--> -8600--> -8601--> -8602--> -8603--> -8604--> -8605--> -8606--> -8607--> -8608--> -8609--> -861--> -8610--> -8611--> -8612--> -8613--> -8614--> -8615--> -8616--> -8617--> -8618--> -8619--> -862--> -8620--> -8621--> -8622--> -8623--> -8624--> -8625--> -8626--> -8627--> -8628--> -8629--> -863--> -8630--> -8631--> -8632--> -8633--> -8634--> -8635--> -8636--> -8637--> -8638--> -8639--> -864--> -8640--> -8641--> -8642--> -8643--> -8644--> -8645--> -8646--> -8647--> -8648--> -8649--> -865--> -8650--> -8651--> -8652--> -8653--> -8654--> -8655--> -8656--> -8657--> -8658--> -8659--> -866--> -8660--> -8661--> -8662--> -8663--> -8664--> -8665--> -8666--> -8667--> -8668--> -8669--> -867--> -8670--> -8671--> -8672--> -8673--> -8674--> -8675--> -8676--> -8677--> -8678--> -8679--> -868--> -8680--> -8681--> -8682--> -8683--> -8684--> -8685--> -8686--> -8687--> -8688--> -8689--> -869--> -8690--> -8691--> -8692--> -8693--> -8694--> -8695--> -8696--> -8697--> -8698--> -8699--> -87--> -870--> -8700--> -8701--> -8702--> -8703--> -8704--> -8705--> -8706--> -8707--> -8708--> -8709--> -871--> -8710--> -8711--> -8712--> -8713--> -8714--> -8715--> -8716--> -8717--> -8718--> -8719--> -872--> -8720--> -8721--> -8722--> -8723--> -8724--> -8725--> -8726--> -8727--> -8728--> -8729--> -873--> -8730--> -8731--> -8732--> -8733--> -8734--> -8735--> -8736--> -8737--> -8738--> -8739--> -874--> -8740--> -8741--> -8742--> -8743--> -8744--> -8745--> -8746--> -8747--> -8748--> -8749--> -875--> -8750--> -8751--> -8752--> -8753--> -8754--> -8755--> -8756--> -8757--> -8758--> -8759--> -876--> -8760--> -8761--> -8762--> -8763--> -8764--> -8765--> -8766--> -8767--> -8768--> -8769--> -877--> -8770--> -8771--> -8772--> -8773--> -8774--> -8775--> -8776--> -8777--> -8778--> -8779--> -878--> -8780--> -8781--> -8782--> -8783--> -8784--> -8785--> -8786--> -8787--> -8788--> -8789--> -879--> -8790--> -8791--> -8792--> -8793--> -8794--> -8795--> -8796--> -8797--> -8798--> -8799--> -88--> -880--> -8800--> -8801--> -8802--> -8803--> -8804--> -8805--> -8806--> -8807--> -8808--> -8809--> -881--> -8810--> -8811--> -8812--> -8813--> -8814--> -8815--> -8816--> -8817--> -8818--> -8819--> -882--> -8820--> -8821--> -8822--> -8823--> -8824--> -8825--> -8826--> -8827--> -8828--> -8829--> -883--> -8830--> -8831--> -8832--> -8833--> -8834--> -8835--> -8836--> -8837--> -8838--> -8839--> -884--> -8840--> -8841--> -8842--> -8843--> -8844--> -8845--> -8846--> -8847--> -8848--> -8849--> -885--> -8850--> -8851--> -8852--> -8853--> -8854--> -8855--> -8856--> -8857--> -8858--> -8859--> -886--> -8860--> -8861--> -8862--> -8863--> -8864--> -8865--> -8866--> -8867--> -8868--> -8869--> -887--> -8870--> -8871--> -8872--> -8873--> -8874--> -8875--> -8876--> -8877--> -8878--> -8879--> -888--> -8880--> -8881--> -8882--> -8883--> -8884--> -8885--> -8886--> -8887--> -8888--> -8889--> -889--> -8890--> -8891--> -8892--> -8893--> -8894--> -8895--> -8896--> -8897--> -8898--> -8899--> -89--> -890--> -8900--> -8901--> -8902--> -8903--> -8904--> -8905--> -8906--> -8907--> -8908--> -8909--> -891--> -8910--> -8911--> -8912--> -8913--> -8914--> -8915--> -8916--> -8917--> -8918--> -8919--> -892--> -8920--> -8921--> -8922--> -8923--> -8924--> -8925--> -8926--> -8927--> -8928--> -8929--> -893--> -8930--> -8931--> -8932--> -8933--> -8934--> -8935--> -8936--> -8937--> -8938--> -8939--> -894--> -8940--> -8941--> -8942--> -8943--> -8944--> -8945--> -8946--> -8947--> -8948--> -8949--> -895--> -8950--> -8951--> -8952--> -8953--> -8954--> -8955--> -8956--> -8957--> -8958--> -8959--> -896--> -8960--> -8961--> -8962--> -8963--> -8964--> -8965--> -8966--> -8967--> -8968--> -8969--> -897--> -8970--> -8971--> -8972--> -8973--> -8974--> -8975--> -8976--> -8977--> -8978--> -8979--> -898--> -8980--> -8981--> -8982--> -8983--> -8984--> -8985--> -8986--> -8987--> -8988--> -8989--> -899--> -8990--> -8991--> -8992--> -8993--> -8994--> -8995--> -8996--> -8997--> -8998--> -8999--> -9--> -90--> -900--> -9000--> -9001--> -9002--> -9003--> -9004--> -9005--> -9006--> -9007--> -9008--> -9009--> -901--> -9010--> -9011--> -9012--> -9013--> -9014--> -9015--> -9016--> -9017--> -9018--> -9019--> -902--> -9020--> -9021--> -9022--> -9023--> -9024--> -9025--> -9026--> -9027--> -9028--> -9029--> -903--> -9030--> -9031--> -9032--> -9033--> -9034--> -9035--> -9036--> -9037--> -9038--> -9039--> -904--> -9040--> -9041--> -9042--> -9043--> -9044--> -9045--> -9046--> -9047--> -9048--> -9049--> -905--> -9050--> -9051--> -9052--> -9053--> -9054--> -9055--> -9056--> -9057--> -9058--> -9059--> -906--> -9060--> -9061--> -9062--> -9063--> -9064--> -9065--> -9066--> -9067--> -9068--> -9069--> -907--> -9070--> -9071--> -9072--> -9073--> -9074--> -9075--> -9076--> -9077--> -9078--> -9079--> -908--> -9080--> -9081--> -9082--> -9083--> -9084--> -9085--> -9086--> -9087--> -9088--> -9089--> -909--> -9090--> -9091--> -9092--> -9093--> -9094--> -9095--> -9096--> -9097--> -9098--> -9099--> -91--> -910--> -9100--> -9101--> -9102--> -9103--> -9104--> -9105--> -9106--> -9107--> -9108--> -9109--> -911--> -9110--> -9111--> -9112--> -9113--> -9114--> -9115--> -9116--> -9117--> -9118--> -9119--> -912--> -9120--> -9121--> -9122--> -9123--> -9124--> -9125--> -9126--> -9127--> -9128--> -9129--> -913--> -9130--> -9131--> -9132--> -9133--> -9134--> -9135--> -9136--> -9137--> -9138--> -9139--> -914--> -9140--> -9141--> -9142--> -9143--> -9144--> -9145--> -9146--> -9147--> -9148--> -9149--> -915--> -9150--> -9151--> -9152--> -9153--> -9154--> -9155--> -9156--> -9157--> -9158--> -9159--> -916--> -9160--> -9161--> -9162--> -9163--> -9164--> -9165--> -9166--> -9167--> -9168--> -9169--> -917--> -9170--> -9171--> -9172--> -9173--> -9174--> -9175--> -9176--> -9177--> -9178--> -9179--> -918--> -9180--> -9181--> -9182--> -9183--> -9184--> -9185--> -9186--> -9187--> -9188--> -9189--> -919--> -9190--> -9191--> -9192--> -9193--> -9194--> -9195--> -9196--> -9197--> -9198--> -9199--> -92--> -920--> -9200--> -9201--> -9202--> -9203--> -9204--> -9205--> -9206--> -9207--> -9208--> -9209--> -921--> -9210--> -9211--> -9212--> -9213--> -9214--> -9215--> -9216--> -9217--> -9218--> -9219--> -922--> -9220--> -9221--> -9222--> -9223--> -9224--> -9225--> -9226--> -9227--> -9228--> -9229--> -923--> -9230--> -9231--> -9232--> -9233--> -9234--> -9235--> -9236--> -9237--> -9238--> -9239--> -924--> -9240--> -9241--> -9242--> -9243--> -9244--> -9245--> -9246--> -9247--> -9248--> -9249--> -925--> -9250--> -9251--> -9252--> -9253--> -9254--> -9255--> -9256--> -9257--> -9258--> -9259--> -926--> -9260--> -9261--> -9262--> -9263--> -9264--> -9265--> -9266--> -9267--> -9268--> -9269--> -927--> -9270--> -9271--> -9272--> -9273--> -9274--> -9275--> -9276--> -9277--> -9278--> -9279--> -928--> -9280--> -9281--> -9282--> -9283--> -9284--> -9285--> -9286--> -9287--> -9288--> -9289--> -929--> -9290--> -9291--> -9292--> -9293--> -9294--> -9295--> -9296--> -9297--> -9298--> -9299--> -93--> -930--> -9300--> -9301--> -9302--> -9303--> -9304--> -9305--> -9306--> -9307--> -9308--> -9309--> -931--> -9310--> -9311--> -9312--> -9313--> -9314--> -9315--> -9316--> -9317--> -9318--> -9319--> -932--> -9320--> -9321--> -9322--> -9323--> -9324--> -9325--> -9326--> -9327--> -9328--> -9329--> -933--> -9330--> -9331--> -9332--> -9333--> -9334--> -9335--> -9336--> -9337--> -9338--> -9339--> -934--> -9340--> -9341--> -9342--> -9343--> -9344--> -9345--> -9346--> -9347--> -9348--> -9349--> -935--> -9350--> -9351--> -9352--> -9353--> -9354--> -9355--> -9356--> -9357--> -9358--> -9359--> -936--> -9360--> -9361--> -9362--> -9363--> -9364--> -9365--> -9366--> -9367--> -9368--> -9369--> -937--> -9370--> -9371--> -9372--> -9373--> -9374--> -9375--> -9376--> -9377--> -9378--> -9379--> -938--> -9380--> -9381--> -9382--> -9383--> -9384--> -9385--> -9386--> -9387--> -9388--> -9389--> -939--> -9390--> -9391--> -9392--> -9393--> -9394--> -9395--> -9396--> -9397--> -9398--> -9399--> -94--> -940--> -9400--> -9401--> -9402--> -9403--> -9404--> -9405--> -9406--> -9407--> -9408--> -9409--> -941--> -9410--> -9411--> -9412--> -9413--> -9414--> -9415--> -9416--> -9417--> -9418--> -9419--> -942--> -9420--> -9421--> -9422--> -9423--> -9424--> -9425--> -9426--> -9427--> -9428--> -9429--> -943--> -9430--> -9431--> -9432--> -9433--> -9434--> -9435--> -9436--> -9437--> -9438--> -9439--> -944--> -9440--> -9441--> -9442--> -9443--> -9444--> -9445--> -9446--> -9447--> -9448--> -9449--> -945--> -9450--> -9451--> -9452--> -9453--> -9454--> -9455--> -9456--> -9457--> -9458--> -9459--> -946--> -9460--> -9461--> -9462--> -9463--> -9464--> -9465--> -9466--> -9467--> -9468--> -9469--> -947--> -9470--> -9471--> -9472--> -9473--> -9474--> -9475--> -9476--> -9477--> -9478--> -9479--> -948--> -9480--> -9481--> -9482--> -9483--> -9484--> -9485--> -9486--> -9487--> -9488--> -9489--> -949--> -9490--> -9491--> -9492--> -9493--> -9494--> -9495--> -9496--> -9497--> -9498--> -9499--> -95--> -950--> -9500--> -9501--> -9502--> -9503--> -9504--> -9505--> -9506--> -9507--> -9508--> -9509--> -951--> -9510--> -9511--> -9512--> -9513--> -9514--> -9515--> -9516--> -9517--> -9518--> -9519--> -952--> -9520--> -9521--> -9522--> -9523--> -9524--> -9525--> -9526--> -9527--> -9528--> -9529--> -953--> -9530--> -9531--> -9532--> -9533--> -9534--> -9535--> -9536--> -9537--> -9538--> -9539--> -954--> -9540--> -9541--> -9542--> -9543--> -9544--> -9545--> -9546--> -9547--> -9548--> -9549--> -955--> -9550--> -9551--> -9552--> -9553--> -9554--> -9555--> -9556--> -9557--> -9558--> -9559--> -956--> -9560--> -9561--> -9562--> -9563--> -9564--> -9565--> -9566--> -9567--> -9568--> -9569--> -957--> -9570--> -9571--> -9572--> -9573--> -9574--> -9575--> -9576--> -9577--> -9578--> -9579--> -958--> -9580--> -9581--> -9582--> -9583--> -9584--> -9585--> -9586--> -9587--> -9588--> -9589--> -959--> -9590--> -9591--> -9592--> -9593--> -9594--> -9595--> -9596--> -9597--> -9598--> -9599--> -96--> -960--> -9600--> -9601--> -9602--> -9603--> -9604--> -9605--> -9606--> -9607--> -9608--> -9609--> -961--> -9610--> -9611--> -9612--> -9613--> -9614--> -9615--> -9616--> -9617--> -9618--> -9619--> -962--> -9620--> -9621--> -9622--> -9623--> -9624--> -9625--> -9626--> -9627--> -9628--> -9629--> -963--> -9630--> -9631--> -9632--> -9633--> -9634--> -9635--> -9636--> -9637--> -9638--> -9639--> -964--> -9640--> -9641--> -9642--> -9643--> -9644--> -9645--> -9646--> -9647--> -9648--> -9649--> -965--> -9650--> -9651--> -9652--> -9653--> -9654--> -9655--> -9656--> -9657--> -9658--> -9659--> -966--> -9660--> -9661--> -9662--> -9663--> -9664--> -9665--> -9666--> -9667--> -9668--> -9669--> -967--> -9670--> -9671--> -9672--> -9673--> -9674--> -9675--> -9676--> -9677--> -9678--> -9679--> -968--> -9680--> -9681--> -9682--> -9683--> -9684--> -9685--> -9686--> -9687--> -9688--> -9689--> -969--> -9690--> -9691--> -9692--> -9693--> -9694--> -9695--> -9696--> -9697--> -9698--> -9699--> -97--> -970--> -9700--> -9701--> -9702--> -9703--> -9704--> -9705--> -9706--> -9707--> -9708--> -9709--> -971--> -9710--> -9711--> -9712--> -9713--> -9714--> -9715--> -9716--> -9717--> -9718--> -9719--> -972--> -9720--> -9721--> -9722--> -9723--> -9724--> -9725--> -9726--> -9727--> -9728--> -9729--> -973--> -9730--> -9731--> -9732--> -9733--> -9734--> -9735--> -9736--> -9737--> -9738--> -9739--> -974--> -9740--> -9741--> -9742--> -9743--> -9744--> -9745--> -9746--> -9747--> -9748--> -9749--> -975--> -9750--> -9751--> -9752--> -9753--> -9754--> -9755--> -9756--> -9757--> -9758--> -9759--> -976--> -9760--> -9761--> -9762--> -9763--> -9764--> -9765--> -9766--> -9767--> -9768--> -9769--> -977--> -9770--> -9771--> -9772--> -9773--> -9774--> -9775--> -9776--> -9777--> -9778--> -9779--> -978--> -9780--> -9781--> -9782--> -9783--> -9784--> -9785--> -9786--> -9787--> -9788--> -9789--> -979--> -9790--> -9791--> -9792--> -9793--> -9794--> -9795--> -9796--> -9797--> -9798--> -9799--> -98--> -980--> -9800--> -9801--> -9802--> -9803--> -9804--> -9805--> -9806--> -9807--> -9808--> -9809--> -981--> -9810--> -9811--> -9812--> -9813--> -9814--> -9815--> -9816--> -9817--> -9818--> -9819--> -982--> -9820--> -9821--> -9822--> -9823--> -9824--> -9825--> -9826--> -9827--> -9828--> -9829--> -983--> -9830--> -9831--> -9832--> -9833--> -9834--> -9835--> -9836--> -9837--> -9838--> -9839--> -984--> -9840--> -9841--> -9842--> -9843--> -9844--> -9845--> -9846--> -9847--> -9848--> -9849--> -985--> -9850--> -9851--> -9852--> -9853--> -9854--> -9855--> -9856--> -9857--> -9858--> -9859--> -986--> -9860--> -9861--> -9862--> -9863--> -9864--> -9865--> -9866--> -9867--> -9868--> -9869--> -987--> -9870--> -9871--> -9872--> -9873--> -9874--> -9875--> -9876--> -9877--> -9878--> -9879--> -988--> -9880--> -9881--> -9882--> -9883--> -9884--> -9885--> -9886--> -9887--> -9888--> -9889--> -989--> -9890--> -9891--> -9892--> -9893--> -9894--> -9895--> -9896--> -9897--> -9898--> -9899--> -99--> -990--> -9900--> -9901--> -9902--> -9903--> -9904--> -9905--> -9906--> -9907--> -9908--> -9909--> -991--> -9910--> -9911--> -9912--> -9913--> -9914--> -9915--> -9916--> -9917--> -9918--> -9919--> -992--> -9920--> -9921--> -9922--> -9923--> -9924--> -9925--> -9926--> -9927--> -9928--> -9929--> -993--> -9930--> -9931--> -9932--> -9933--> -9934--> -9935--> -9936--> -9937--> -9938--> -9939--> -994--> -9940--> -9941--> -9942--> -9943--> -9944--> -9945--> -9946--> -9947--> -9948--> -9949--> -995--> -9950--> -9951--> -9952--> -9953--> -9954--> -9955--> -9956--> -9957--> -9958--> -9959--> -996--> -9960--> -9961--> -9962--> -9963--> -9964--> -9965--> -9966--> -9967--> -9968--> -9969--> -997--> -9970--> -9971--> -9972--> -9973--> -9974--> -9975--> -9976--> -9977--> -9978--> -9979--> -998--> -9980--> -9981--> -9982--> -9983--> -9984--> -9985--> -9986--> -9987--> -9988--> -9989--> -999--> -9990--> -9991--> -9992--> -9993--> -9994--> -9995--> -9996--> -9997--> -9998--> -9999--> diff --git a/testsuite/tests/lib-threads/test2.ml b/testsuite/tests/lib-threads/test2.ml deleted file mode 100644 index 85a5e65a7..000000000 --- a/testsuite/tests/lib-threads/test2.ml +++ /dev/null @@ -1,27 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -let yield = ref false - -let print_message c = - for i = 1 to 10000 do - print_char c; flush stdout; - if !yield then Thread.yield() - done - -let _ = yield := (Array.length Sys.argv > 1) -let t1 = Thread.create print_message 'a' -let t2 = Thread.create print_message 'b' -let _ = Thread.join t1 -let _ = Thread.join t2 - -;; diff --git a/testsuite/tests/lib-threads/test3.checker b/testsuite/tests/lib-threads/test3.checker deleted file mode 100644 index 88fa4934d..000000000 --- a/testsuite/tests/lib-threads/test3.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -sed -e 1q test3.result | grep -q '^[ab]*' diff --git a/testsuite/tests/lib-threads/test3.runner b/testsuite/tests/lib-threads/test3.runner deleted file mode 100644 index dc04062a1..000000000 --- a/testsuite/tests/lib-threads/test3.runner +++ /dev/null @@ -1,16 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program >test3.result & -pid=$! -sleep 5 -kill -9 $pid diff --git a/testsuite/tests/lib-threads/test4.checker b/testsuite/tests/lib-threads/test4.checker deleted file mode 100644 index 38cc61865..000000000 --- a/testsuite/tests/lib-threads/test4.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT -u test4.result | $DIFF test4.reference - diff --git a/testsuite/tests/lib-threads/test4.data b/testsuite/tests/lib-threads/test4.data deleted file mode 100644 index 8edb37e36..000000000 --- a/testsuite/tests/lib-threads/test4.data +++ /dev/null @@ -1,3 +0,0 @@ -abc -def -ghi diff --git a/testsuite/tests/lib-threads/test4.ml b/testsuite/tests/lib-threads/test4.ml deleted file mode 100644 index 7fb789c76..000000000 --- a/testsuite/tests/lib-threads/test4.ml +++ /dev/null @@ -1,33 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -let output_lock = Mutex.create() - -let rec fib n = if n <= 2 then 1 else fib(n-1) + fib(n-2) - -let fibtask n = - while true do - let res = fib n in - Mutex.lock output_lock; - print_int res; print_newline(); - Mutex.unlock output_lock - done - -let _ = - Thread.create fibtask 28; - Thread.delay 1.0; - while true do - let l = read_line () in - Mutex.lock output_lock; - print_string ">> "; print_string l; print_newline(); - Mutex.unlock output_lock - done diff --git a/testsuite/tests/lib-threads/test4.reference b/testsuite/tests/lib-threads/test4.reference deleted file mode 100644 index dfcd2b527..000000000 --- a/testsuite/tests/lib-threads/test4.reference +++ /dev/null @@ -1,4 +0,0 @@ -317811 ->> abc ->> def ->> ghi diff --git a/testsuite/tests/lib-threads/test4.runner b/testsuite/tests/lib-threads/test4.runner deleted file mode 100644 index 43ac56329..000000000 --- a/testsuite/tests/lib-threads/test4.runner +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program test4.result 2>/dev/null || true diff --git a/testsuite/tests/lib-threads/test5.checker b/testsuite/tests/lib-threads/test5.checker deleted file mode 100644 index 5eef50b1c..000000000 --- a/testsuite/tests/lib-threads/test5.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT -u test5.result | $DIFF test5.reference - diff --git a/testsuite/tests/lib-threads/test5.reference b/testsuite/tests/lib-threads/test5.reference deleted file mode 100644 index a66a57b28..000000000 --- a/testsuite/tests/lib-threads/test5.reference +++ /dev/null @@ -1,4 +0,0 @@ -A: hello -A: world -B: hello -B: world diff --git a/testsuite/tests/lib-threads/test5.runner b/testsuite/tests/lib-threads/test5.runner deleted file mode 100644 index 80dfe37ea..000000000 --- a/testsuite/tests/lib-threads/test5.runner +++ /dev/null @@ -1,16 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program >test5.result & -pid=$! -sleep 3 -kill -9 $pid diff --git a/testsuite/tests/lib-threads/test6.checker b/testsuite/tests/lib-threads/test6.checker deleted file mode 100644 index cc00a6310..000000000 --- a/testsuite/tests/lib-threads/test6.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT -u test6.result | $DIFF test6.reference - diff --git a/testsuite/tests/lib-threads/test6.ml b/testsuite/tests/lib-threads/test6.ml deleted file mode 100644 index 1db9911d4..000000000 --- a/testsuite/tests/lib-threads/test6.ml +++ /dev/null @@ -1,27 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -open Event - -let ch = (new_channel() : string channel) - -let rec f tag msg = - select [ - send ch msg; - wrap (receive ch) (fun x -> print_string(tag ^ ": " ^ x); print_newline()) - ]; - f tag msg - -let _ = - Thread.create (f "A") "hello"; - f "B" "world"; - exit 0 diff --git a/testsuite/tests/lib-threads/test6.precheck b/testsuite/tests/lib-threads/test6.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/test6.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/test6.reference b/testsuite/tests/lib-threads/test6.reference deleted file mode 100644 index e4a148983..000000000 --- a/testsuite/tests/lib-threads/test6.reference +++ /dev/null @@ -1,2 +0,0 @@ -A: world -B: hello diff --git a/testsuite/tests/lib-threads/test6.runner b/testsuite/tests/lib-threads/test6.runner deleted file mode 100644 index 50f88d8c0..000000000 --- a/testsuite/tests/lib-threads/test6.runner +++ /dev/null @@ -1,16 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program >test6.result & -pid=$! -sleep 1 -kill -9 $pid diff --git a/testsuite/tests/lib-threads/test7.checker b/testsuite/tests/lib-threads/test7.checker deleted file mode 100644 index 4c4b2b4d6..000000000 --- a/testsuite/tests/lib-threads/test7.checker +++ /dev/null @@ -1,14 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -test `grep -E '^-?[0123456789]+$' test7.result | wc -l` \ - = `cat test7.result | wc -l` diff --git a/testsuite/tests/lib-threads/test7.ml b/testsuite/tests/lib-threads/test7.ml deleted file mode 100644 index 9dae688f2..000000000 --- a/testsuite/tests/lib-threads/test7.ml +++ /dev/null @@ -1,38 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -open Event - -let add_ch = new_channel() -let sub_ch = new_channel() -let read_ch = new_channel() - -let rec accu n = - select [ - wrap (receive add_ch) (fun x -> accu (n+x)); - wrap (receive sub_ch) (fun x -> accu (n-x)); - wrap (send read_ch n) (fun () -> accu n) - ] - -let rec sender chan value = - sync(send chan value); sender chan value - -let read () = - print_int(sync(receive read_ch)); print_newline() - -let main () = - Thread.create accu 0; - Thread.create (sender add_ch) 1; - Thread.create (sender sub_ch) 1; - while true do read() done - -let _ = Printexc.catch main () diff --git a/testsuite/tests/lib-threads/test7.precheck b/testsuite/tests/lib-threads/test7.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/test7.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/test7.runner b/testsuite/tests/lib-threads/test7.runner deleted file mode 100644 index ccd56a31d..000000000 --- a/testsuite/tests/lib-threads/test7.runner +++ /dev/null @@ -1,16 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program >test7.result & -pid=$! -sleep 1 -kill -9 $pid diff --git a/testsuite/tests/lib-threads/test8.precheck b/testsuite/tests/lib-threads/test8.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/test8.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/test9.checker b/testsuite/tests/lib-threads/test9.checker deleted file mode 100644 index 09dd0e254..000000000 --- a/testsuite/tests/lib-threads/test9.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT test9.result | $DIFF test9.reference - diff --git a/testsuite/tests/lib-threads/test9.precheck b/testsuite/tests/lib-threads/test9.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/test9.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/testA.checker b/testsuite/tests/lib-threads/testA.checker deleted file mode 100644 index 00fdfb7ad..000000000 --- a/testsuite/tests/lib-threads/testA.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT testA.result | $DIFF testA.reference - diff --git a/testsuite/tests/lib-threads/testexit.checker b/testsuite/tests/lib-threads/testexit.checker deleted file mode 100644 index 55dcd7ba3..000000000 --- a/testsuite/tests/lib-threads/testexit.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -LC_ALL=C $SORT testexit.result | $DIFF testexit.reference - diff --git a/testsuite/tests/lib-threads/testexit.ml b/testsuite/tests/lib-threads/testexit.ml deleted file mode 100644 index b0cb80d61..000000000 --- a/testsuite/tests/lib-threads/testexit.ml +++ /dev/null @@ -1,33 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -(* Test Thread.exit *) - -let somethread (name, limit, last) = - let counter = ref 0 in - while true do - incr counter; - if !counter >= limit then begin - print_string (name ^ " exiting\n"); - flush stdout; - if last then exit 0 else Thread.exit() - end; - print_string (name ^ ": " ^ string_of_int !counter ^ "\n"); - flush stdout; - Thread.delay 0.5 - done - -let _ = - let _ = Thread.create somethread ("A", 5, false) in - let _ = Thread.create somethread ("B", 8, false) in - let _ = Thread.create somethread ("C", 11, true) in - somethread ("Main", 3, false) diff --git a/testsuite/tests/lib-threads/testexit.reference b/testsuite/tests/lib-threads/testexit.reference deleted file mode 100644 index 46ee76221..000000000 --- a/testsuite/tests/lib-threads/testexit.reference +++ /dev/null @@ -1,27 +0,0 @@ -A exiting -A: 1 -A: 2 -A: 3 -A: 4 -B exiting -B: 1 -B: 2 -B: 3 -B: 4 -B: 5 -B: 6 -B: 7 -C exiting -C: 1 -C: 10 -C: 2 -C: 3 -C: 4 -C: 5 -C: 6 -C: 7 -C: 8 -C: 9 -Main exiting -Main: 1 -Main: 2 diff --git a/testsuite/tests/lib-threads/testsieve.ml b/testsuite/tests/lib-threads/testsieve.ml deleted file mode 100644 index 6979f8031..000000000 --- a/testsuite/tests/lib-threads/testsieve.ml +++ /dev/null @@ -1,54 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -let sieve primes= - Event.sync (Event.send primes 0); - Event.sync (Event.send primes 1); - Event.sync (Event.send primes 2); - let integers = Event.new_channel () in - let rec enumerate n= - Event.sync (Event.send integers n); - enumerate (n + 2) - and filter inpout = - let n = Event.sync (Event.receive inpout) - (* On prepare le terrain pour l'appel recursif *) - and output = Event.new_channel () in - (* Celui qui etait en tete du crible est premier *) - Event.sync (Event.send primes n); - Thread.create filter output; - (* On elimine de la sortie ceux qui sont des multiples de n *) - while true do - let m = Event.sync (Event.receive inpout) in - (* print_int n; print_string ": "; print_int m; print_newline(); *) - if (m mod n) = 0 - then () - else ((Event.sync (Event.send output m));()) - done in - Thread.create filter integers; - Thread.create enumerate 3 - -let premiers = Event.new_channel () - -let main _ = - Thread.create sieve premiers; - while true do - for i = 1 to 100 do - let n = Event.sync (Event.receive premiers) in - print_int n; print_newline() - done; - exit 0 - done - - -let _ = - try main () - with _ -> exit 0;; diff --git a/testsuite/tests/lib-threads/testsieve.reference b/testsuite/tests/lib-threads/testsieve.reference deleted file mode 100644 index b6b8c06e5..000000000 --- a/testsuite/tests/lib-threads/testsieve.reference +++ /dev/null @@ -1,100 +0,0 @@ -0 -1 -2 -3 -5 -7 -11 -13 -17 -19 -23 -29 -31 -37 -41 -43 -47 -53 -59 -61 -67 -71 -73 -79 -83 -89 -97 -101 -103 -107 -109 -113 -127 -131 -137 -139 -149 -151 -157 -163 -167 -173 -179 -181 -191 -193 -197 -199 -211 -223 -227 -229 -233 -239 -241 -251 -257 -263 -269 -271 -277 -281 -283 -293 -307 -311 -313 -317 -331 -337 -347 -349 -353 -359 -367 -373 -379 -383 -389 -397 -401 -409 -419 -421 -431 -433 -439 -443 -449 -457 -461 -463 -467 -479 -487 -491 -499 -503 -509 -521 diff --git a/testsuite/tests/lib-threads/testsignal.checker b/testsuite/tests/lib-threads/testsignal.checker deleted file mode 100644 index 3febbff49..000000000 --- a/testsuite/tests/lib-threads/testsignal.checker +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -sed -e 1q testsignal.result | grep -q '^[ab]*Got ctrl-C, exiting...$' diff --git a/testsuite/tests/lib-threads/testsignal.precheck b/testsuite/tests/lib-threads/testsignal.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/testsignal.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/testsignal2.precheck b/testsuite/tests/lib-threads/testsignal2.precheck deleted file mode 100644 index aa357092a..000000000 --- a/testsuite/tests/lib-threads/testsignal2.precheck +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Damien Doligez, projet Gallium, INRIA Rocquencourt # -# # -# Copyright 2013 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$CANKILL diff --git a/testsuite/tests/lib-threads/testsocket.ml b/testsuite/tests/lib-threads/testsocket.ml deleted file mode 100644 index 6b2b0b049..000000000 --- a/testsuite/tests/lib-threads/testsocket.ml +++ /dev/null @@ -1,48 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -open Unix - -let engine verbose number address = - print_int number; print_string "> connecting"; print_newline(); - let (ic, oc) = open_connection (ADDR_INET(address, 80)) in - print_int number; print_string "> connected"; print_newline(); - output_string oc "GET / HTTP1.0\r\n\r\n"; flush oc; - try - while true do - let s = input_line ic in - if verbose then begin - print_int number; print_string ">"; print_string s; print_newline() - end - done; - with End_of_file -> - close_out oc; - print_int number; print_string "> data retrieved"; print_newline() - -let main() = - let verbose, argv = - match Sys.argv with - | [| _ |] -> false, [| Sys.argv.(0); "caml.inria.fr" |] - | _ -> true, Sys.argv in - let addresses = Array.make (Array.length argv - 1) inet_addr_any in - for i = 1 to Array.length argv - 1 do - addresses.(i - 1) <- (gethostbyname argv.(i)).h_addr_list.(0) - done; - let processes = Array.make (Array.length addresses) (Thread.self()) in - for i = 0 to Array.length addresses - 1 do - processes.(i) <- Thread.create (engine verbose i) addresses.(i) - done; - for i = 0 to Array.length processes - 1 do - Thread.join processes.(i) - done - -let _ = Printexc.catch main (); exit 0 diff --git a/testsuite/tests/lib-threads/testsocket.reference b/testsuite/tests/lib-threads/testsocket.reference deleted file mode 100644 index ce5214182..000000000 --- a/testsuite/tests/lib-threads/testsocket.reference +++ /dev/null @@ -1,3 +0,0 @@ -0> connecting -0> connected -0> data retrieved diff --git a/testsuite/tests/lib-threads/testsignal2.checker b/testsuite/tests/lib-threads/tls.checker similarity index 94% rename from testsuite/tests/lib-threads/testsignal2.checker rename to testsuite/tests/lib-threads/tls.checker index 47ede3586..d4e9271f4 100644 --- a/testsuite/tests/lib-threads/testsignal2.checker +++ b/testsuite/tests/lib-threads/tls.checker @@ -10,4 +10,4 @@ # # ######################################################################### -sed -e 1q testsignal2.result | grep -q '^[ab]*' +LC_ALL=C $SORT tls.result | $DIFF tls.reference - diff --git a/testsuite/tests/lib-threads/testA.ml b/testsuite/tests/lib-threads/tls.ml similarity index 100% rename from testsuite/tests/lib-threads/testA.ml rename to testsuite/tests/lib-threads/tls.ml diff --git a/testsuite/tests/lib-threads/testA.reference b/testsuite/tests/lib-threads/tls.reference similarity index 100% rename from testsuite/tests/lib-threads/testA.reference rename to testsuite/tests/lib-threads/tls.reference diff --git a/testsuite/tests/lib-threads/token1.ml b/testsuite/tests/lib-threads/token1.ml deleted file mode 100644 index d0a7528b0..000000000 --- a/testsuite/tests/lib-threads/token1.ml +++ /dev/null @@ -1,48 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -(* Performance test for mutexes and conditions *) - -let mut = Mutex.create() - -let niter = ref 0 - -let token = ref 0 - -let process (n, conds, nprocs) = - while true do - Mutex.lock mut; - while !token <> n do - (* Printf.printf "Thread %d waiting (token = %d)\n" n !token; *) - Condition.wait conds.(n) mut - done; - (* Printf.printf "Thread %d got token %d\n" n !token; *) - incr token; - if !token >= nprocs then token := 0; - if n = 0 then begin - decr niter; - if !niter <= 0 then exit 0 - end; - Condition.signal conds.(!token); - Mutex.unlock mut - done - -let main() = - let nprocs = try int_of_string Sys.argv.(1) with _ -> 100 in - let iter = try int_of_string Sys.argv.(2) with _ -> 1000 in - let conds = Array.make nprocs (Condition.create()) in - for i = 1 to nprocs - 1 do conds.(i) <- Condition.create() done; - niter := iter; - for i = 0 to nprocs - 1 do Thread.create process (i, conds, nprocs) done; - Thread.delay 3600. - -let _ = main() diff --git a/testsuite/tests/lib-threads/token2.ml b/testsuite/tests/lib-threads/token2.ml deleted file mode 100644 index c3548fb0f..000000000 --- a/testsuite/tests/lib-threads/token2.ml +++ /dev/null @@ -1,51 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* *) -(* Copyright 1996 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the Q Public License version 1.0. *) -(* *) -(***********************************************************************) - -(* Performance test for I/O scheduling *) - -let mut = Mutex.create() - -let niter = ref 0 - -let token = ref 0 - -let process (n, ins, outs, nprocs) = - let buf = String.make 1 '.' in - while buf <> "-" do - Unix.read ins.(n) buf 0 1; - (* Printf.printf "Thread %d got the token\n" n; *) - if n = 0 then begin - decr niter; - if !niter <= 0 then buf.[0] <- '-'; - end; - let next = if n + 1 >= nprocs then 0 else n + 1 in - (* Printf.printf "Thread %d sending token to thread %d\n" n next; *) - Unix.write outs.(next) buf 0 1 - done - -let main() = - let nprocs = try int_of_string Sys.argv.(1) with _ -> 100 in - let iter = try int_of_string Sys.argv.(2) with _ -> 1000 in - let ins = Array.make nprocs Unix.stdin in - let outs = Array.make nprocs Unix.stdout in - let threads = Array.make nprocs (Thread.self ()) in - for n = 0 to nprocs - 1 do - let (i, o) = Unix.pipe() in ins.(n) <- i; outs.(n) <- o - done; - niter := iter; - for i = 0 to nprocs - 1 do - threads.(i) <- Thread.create process (i, ins, outs, nprocs) - done; - Unix.write outs.(0) "X" 0 1; - for i = 0 to nprocs - 1 do Thread.join threads.(i) done - -let _ = main() diff --git a/testsuite/tests/lib-threads/torture.data b/testsuite/tests/lib-threads/torture.data deleted file mode 100644 index 8edb37e36..000000000 --- a/testsuite/tests/lib-threads/torture.data +++ /dev/null @@ -1,3 +0,0 @@ -abc -def -ghi diff --git a/testsuite/tests/lib-threads/torture.ml b/testsuite/tests/lib-threads/torture.ml index 0c1a3a3a0..a60a7d7e6 100644 --- a/testsuite/tests/lib-threads/torture.ml +++ b/testsuite/tests/lib-threads/torture.ml @@ -10,9 +10,9 @@ (* *) (***********************************************************************) -(* Torture test - lots of GC *) +(* Torture test - I/O interspersed with lots of GC *) -let finished = ref false;; +let finished = ref false let gc_thread () = while not !finished do @@ -21,35 +21,28 @@ let gc_thread () = Thread.yield() done -let stdin_thread () = - while not !finished do - print_string ">"; flush stdout; - let s = read_line() in - print_string " >>> "; print_string s; print_newline() - done - let writer_thread (oc, size) = while not !finished do (* print_string "writer "; print_int size; print_newline(); *) let buff = String.make size 'a' in - Unix.write oc buff 0 size + ignore(Unix.write oc buff 0 size) done; let buff = String.make size 'b' in - Unix.write oc buff 0 size + ignore (Unix.write oc buff 0 size) let reader_thread (ic, size) = while true do (* print_string "reader "; print_int size; print_newline(); *) - let buff = String.create size in + let buff = String.make size ' ' in let n = Unix.read ic buff 0 size in (* print_string "reader "; print_int n; print_newline(); *) for i = 0 to n-1 do - if buff.[i] = 'b' then raise Exit - else if buff.[i] <> 'a' then prerr_endline "error in reader_thread" + if buff.[i] = 'b' then Thread.exit() + else if buff.[i] <> 'a' then print_string "error in reader_thread\n" done done -let main() = +let _ = let t1 = Thread.create gc_thread () in let (out1, in1) = Unix.pipe() in let t2 = Thread.create writer_thread (in1, 4096) in @@ -57,10 +50,8 @@ let main() = let (out2, in2) = Unix.pipe() in let t4 = Thread.create writer_thread (in2, 16) in let t5 = Thread.create reader_thread (out2, 16) in - try - stdin_thread() - with _ -> - finished := true; - List.iter Thread.join [t1; t2; t3; t4; t5] + Thread.delay 3.0; + finished := true; + List.iter Thread.join [t1; t2; t3; t4; t5]; + print_string "passed\n" -let _ = main() diff --git a/testsuite/tests/lib-threads/torture.reference b/testsuite/tests/lib-threads/torture.reference index f726cc468..b0aad4deb 100644 --- a/testsuite/tests/lib-threads/torture.reference +++ b/testsuite/tests/lib-threads/torture.reference @@ -1,4 +1 @@ -> >>> abc -> >>> def -> >>> ghi -> \ No newline at end of file +passed diff --git a/testsuite/tests/lib-threads/torture.runner b/testsuite/tests/lib-threads/torture.runner deleted file mode 100644 index fc1ed3879..000000000 --- a/testsuite/tests/lib-threads/torture.runner +++ /dev/null @@ -1,13 +0,0 @@ -######################################################################### -# # -# OCaml # -# # -# Xavier Clerc, SED, INRIA Rocquencourt # -# # -# Copyright 2010 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -$RUNTIME ./program torture.result 2>/dev/null || true diff --git a/testsuite/tests/misc-kb/kbmain.ml b/testsuite/tests/misc-kb/kbmain.ml index 753f73533..9d1959d70 100644 --- a/testsuite/tests/misc-kb/kbmain.ml +++ b/testsuite/tests/misc-kb/kbmain.ml @@ -76,4 +76,4 @@ let greater pair = match group_order pair with Greater -> true | _ -> false let _ = - for i = 1 to 20 do kb_complete greater [] geom_rules done + kb_complete greater [] geom_rules diff --git a/testsuite/tests/misc-kb/kbmain.reference b/testsuite/tests/misc-kb/kbmain.reference index 2789a669b..758a0b4d6 100644 --- a/testsuite/tests/misc-kb/kbmain.reference +++ b/testsuite/tests/misc-kb/kbmain.reference @@ -271,5190 +271,3 @@ Canonical set found : 134 : A*(I(B)*v1) = I(B)*(A*v1) 135 : C*I(B) = I(B)*C 136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*I(C)) -7 : C*(B*I(C)) = B -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -11 : C*(A*(I(C)*A)) = U -12 : C*(B*(I(C)*v1)) = B*v1 -13 : I(U)*v1 = v1 -14 : I(I(v1))*U = v1 -15 : I(v3*v2)*(v3*(v2*v1)) = v1 -16 : C*(A*(I(C)*(B*A))) = B -17 : I(C)*U = C -18 : C*(A*(I(C)*(A*v1))) = v1 -19 : I(C)*B = B*I(C) -20 : I(I(v2))*v1 = v2*v1 -Rule 14 deleted -21 : v1*U = v1 -Rule 17 deleted -22 : I(C) = C -Rule 19 deleted -Rule 18 deleted -Rule 16 deleted -Rule 12 deleted -Rule 11 deleted -Rule 7 deleted -23 : C*B = B*C -24 : C*(A*(C*(A*v1))) = v1 -25 : C*(A*(C*(B*A))) = B -26 : C*(B*(C*v1)) = B*v1 -27 : C*(A*(C*A)) = U -28 : C*(B*C) = B -29 : C*(A*(C*(B*(A*v1)))) = B*v1 -30 : I(I(v2*v1)*v2) = v1 -31 : I(v2*I(v1))*v2 = v1 -32 : I(v4*(v3*v2))*(v4*(v3*(v2*v1))) = v1 -33 : I(v1*A)*(v1*(B*A)) = B -34 : I(v1*C)*v1 = C -35 : I(v3*I(v2))*(v3*v1) = v2*v1 -36 : I(v2*A)*(v2*(B*(A*v1))) = B*v1 -37 : I(v2*C)*(v2*v1) = C*v1 -38 : v1*I(v1) = U -39 : I(C*(A*C))*v1 = A*v1 -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -Rule 13 deleted -42 : I(I(v1)) = v1 -Rule 20 deleted -43 : C*(B*v1) = B*(C*v1) -Rule 29 deleted -Rule 28 deleted -Rule 26 deleted -Rule 25 deleted -44 : A*(C*(A*v1)) = C*v1 -Rule 24 deleted -45 : A*(C*A) = C -Rule 27 deleted -46 : v2*(I(v1*v2)*v1) = U -47 : I(I(v3*(v2*v1))*(v3*v2)) = v1 -48 : I(I(B*A)*A) = B -49 : v3*(I(v2*v3)*(v2*v1)) = v1 -50 : I(I(v1)*I(v2)) = v2*v1 -51 : I(I(B*(A*v1))*A) = B*v1 -52 : I(I(v1)*C) = C*v1 -53 : I(v2*I(v1*v2)) = v1 -54 : I(v3*(v2*I(v1)))*(v3*v2) = v1 -55 : I(v1*(C*(A*C)))*v1 = A -56 : v2*I(I(v1)*v2) = v1 -57 : I(v2*(I(v3*v1)*v3))*v2 = v1 -58 : I(v5*(v4*(v3*v2)))*(v5*(v4*(v3*(v2*v1)))) = v1 -59 : I(v2*(v1*A))*(v2*(v1*(B*A))) = B -60 : I(v2*(v1*C))*(v2*v1) = C -61 : I(v4*(v3*I(v2)))*(v4*(v3*v1)) = v2*v1 -62 : I(v3*(v2*A))*(v3*(v2*(B*(A*v1)))) = B*v1 -63 : I(v3*(v2*C))*(v3*(v2*v1)) = C*v1 -64 : I(v3*(I(v4*v2)*v4))*(v3*v1) = v2*v1 -65 : v4*(I(v3*(v2*v4))*(v3*(v2*v1))) = v1 -66 : I(I(B)*A)*A = B -67 : I(A*A)*(B*(A*A)) = B -68 : v1*(I(A*v1)*(B*A)) = B -69 : I(I(v1*A)*(v1*B))*B = A -70 : v1*I(C*v1) = C -71 : I(A*I(v1))*(B*A) = v1*B -72 : I(C*I(v1)) = v1*C -73 : I(v2*(C*(A*C)))*(v2*v1) = A*v1 -74 : I(A*I(v2))*(B*(A*v1)) = v2*(B*v1) -75 : v3*(I(I(v2)*v3)*v1) = v2*v1 -76 : I(I(B*I(v1))*A)*(v1*A) = B -77 : I(v1*A)*(v1*(B*(B*A))) = B*B -78 : I(I(B)*A)*(A*v1) = B*v1 -79 : I(A*A)*(B*(A*(A*v1))) = B*v1 -80 : I(v2*A)*(v2*(B*(B*(A*v1)))) = B*(B*v1) -81 : v2*(I(A*v2)*(B*(A*v1))) = B*v1 -82 : I(I(v2*A)*(v2*B))*(B*v1) = A*v1 -83 : I(I(B*I(v2))*A)*(v2*(A*v1)) = B*v1 -84 : I(A*C)*(B*A) = B*C -85 : I(A*C)*(B*(A*v1)) = B*(C*v1) -86 : v2*(I(C*v2)*v1) = C*v1 -87 : I(I(B*C)*A)*(C*A) = B -88 : I(I(B*C)*A)*(C*(A*v1)) = B*v1 -89 : v2*(v1*I(v2*v1)) = U -90 : B*(A*I(B)) = A -91 : I(v2*v1)*v2 = I(v1) -Rule 64 deleted -Rule 57 deleted -Rule 55 deleted -Rule 46 deleted -Rule 34 deleted -Rule 31 deleted -Rule 30 deleted -92 : I(C*(A*C)) = A -Rule 39 deleted -93 : I(v3*(v2*v1))*(v3*v2) = I(v1) -Rule 60 deleted -Rule 54 deleted -Rule 47 deleted -94 : I(v1*I(v2)) = v2*I(v1) -Rule 83 deleted -Rule 76 deleted -Rule 74 deleted -Rule 72 deleted -Rule 71 deleted -Rule 53 deleted -Rule 50 deleted -Rule 35 deleted -95 : I(v2*(I(B)*A))*(v2*(A*v1)) = B*v1 -96 : I(v1*(I(B)*A))*(v1*A) = B -97 : I(v1*A)*(v1*B) = B*(C*(A*C)) -Rule 82 deleted -Rule 69 deleted -98 : I(v1*C) = C*I(v1) -Rule 88 deleted -Rule 87 deleted -Rule 85 deleted -Rule 84 deleted -Rule 52 deleted -Rule 37 deleted -99 : v3*(v2*(I(v3*v2)*v1)) = v1 -100 : B*(A*(I(B)*v1)) = A*v1 -101 : I(v3*v2)*(v3*v1) = I(v2)*v1 -Rule 97 deleted -Rule 96 deleted -Rule 95 deleted -Rule 93 deleted -Rule 80 deleted -Rule 77 deleted -Rule 73 deleted -Rule 65 deleted -Rule 63 deleted -Rule 62 deleted -Rule 61 deleted -Rule 59 deleted -Rule 58 deleted -Rule 49 deleted -Rule 36 deleted -Rule 33 deleted -Rule 32 deleted -Rule 15 deleted -102 : B*(C*I(B)) = C -103 : B*(C*(I(B)*v1)) = C*v1 -104 : B*(I(B*A)*A) = U -105 : B*(I(B*A)*(A*v1)) = v1 -106 : I(B*A)*A = I(B) -Rule 104 deleted -Rule 48 deleted -107 : B*(v1*(I(B*(A*v1))*A)) = U -108 : I(I(B*(B*A))*A) = B*B -109 : B*(v2*(I(B*(A*v2))*(A*v1))) = v1 -110 : I(I(B*(B*(A*v1)))*A) = B*(B*v1) -111 : I(I(B)*A) = B*(C*(A*C)) -Rule 78 deleted -Rule 66 deleted -112 : I(I(B*v1)*A) = B*(C*(A*(C*v1))) -Rule 110 deleted -Rule 108 deleted -Rule 51 deleted -113 : v3*(v2*I(I(v1)*(v3*v2))) = v1 -114 : v1*I(C*(A*(C*v1))) = A -115 : I(I(v1)*v2) = I(v2)*v1 -Rule 113 deleted -Rule 112 deleted -Rule 111 deleted -Rule 75 deleted -Rule 56 deleted -116 : v2*(v1*(I(A*(v2*v1))*(B*A))) = B -117 : I(A*v1)*(B*A) = I(v1)*B -Rule 116 deleted -Rule 68 deleted -118 : v2*(v1*I(C*(v2*v1))) = C -119 : I(C*v1) = I(v1)*C -Rule 118 deleted -Rule 114 deleted -Rule 92 deleted -Rule 86 deleted -Rule 70 deleted -120 : v1*(I(A*(C*v1))*C) = A -121 : I(A*A)*(B*(B*(A*A))) = B*B -122 : I(A*A)*(B*(B*(A*(A*v1)))) = B*(B*v1) -123 : I(A*A)*(B*(A*v1)) = B*(C*(A*(C*v1))) -Rule 79 deleted -Rule 67 deleted -124 : v3*(v2*(I(A*(v3*v2))*(B*(A*v1)))) = B*v1 -125 : v1*(I(A*v1)*(B*(B*A))) = B*B -126 : I(A*v2)*(B*(A*v1)) = I(v2)*(B*v1) -Rule 124 deleted -Rule 123 deleted -Rule 81 deleted -127 : v3*(v2*(v1*I(v3*(v2*v1)))) = U -128 : v2*I(v1*v2) = I(v1) -Rule 89 deleted -129 : A*I(B) = I(B)*A -Rule 90 deleted -130 : I(v1*v2) = I(v2)*I(v1) -Rule 128 deleted -Rule 127 deleted -Rule 126 deleted -Rule 125 deleted -Rule 122 deleted -Rule 121 deleted -Rule 120 deleted -Rule 119 deleted -Rule 117 deleted -Rule 115 deleted -Rule 109 deleted -Rule 107 deleted -Rule 106 deleted -Rule 105 deleted -Rule 101 deleted -Rule 99 deleted -Rule 98 deleted -Rule 94 deleted -Rule 91 deleted -131 : B*(C*(A*(C*(I(B)*(A*v1))))) = v1 -132 : B*(C*(A*(C*(I(B)*A)))) = U -133 : C*(A*(C*(I(B)*A))) = I(B) -Rule 132 deleted -134 : A*(I(B)*v1) = I(B)*(A*v1) -Rule 100 deleted -135 : C*I(B) = I(B)*C -Rule 102 deleted -136 : C*(I(B)*v1) = I(B)*(C*v1) -Rule 133 deleted -Rule 131 deleted -Rule 103 deleted -Canonical set found : -1 : U*v1 = v1 -2 : I(v1)*v1 = U -3 : (v3*v2)*v1 = v3*(v2*v1) -4 : A*B = B*A -5 : C*C = U -6 : I(A) = C*(A*C) -8 : I(v2)*(v2*v1) = v1 -9 : A*(B*v1) = B*(A*v1) -10 : C*(C*v1) = v1 -21 : v1*U = v1 -22 : I(C) = C -23 : C*B = B*C -38 : v1*I(v1) = U -40 : v2*(I(v2)*v1) = v1 -41 : I(U) = U -42 : I(I(v1)) = v1 -43 : C*(B*v1) = B*(C*v1) -44 : A*(C*(A*v1)) = C*v1 -45 : A*(C*A) = C -129 : A*I(B) = I(B)*A -130 : I(v1*v2) = I(v2)*I(v1) -134 : A*(I(B)*v1) = I(B)*(A*v1) -135 : C*I(B) = I(B)*C -136 : C*(I(B)*v1) = I(B)*(C*v1) diff --git a/testsuite/tests/misc-unsafe/almabench.ml b/testsuite/tests/misc-unsafe/almabench.ml index 2fe54177e..54fc31087 100644 --- a/testsuite/tests/misc-unsafe/almabench.ml +++ b/testsuite/tests/misc-unsafe/almabench.ml @@ -312,6 +312,7 @@ let _ = Printf.printf "%d %.2f %.2f\n%!" p position.(0) position.(1) done; (* Benchmark *) +(** for i = 0 to test_loops - 1 do jd.(0) <- j2000; jd.(1) <- 0.0; @@ -323,3 +324,4 @@ let _ = done done done +**) diff --git a/testsuite/tests/misc-unsafe/fft.ml b/testsuite/tests/misc-unsafe/fft.ml index 7e2442b0b..d9f8e851e 100644 --- a/testsuite/tests/misc-unsafe/fft.ml +++ b/testsuite/tests/misc-unsafe/fft.ml @@ -183,4 +183,4 @@ let test np = print_newline() let _ = - let np = ref 16 in for i = 1 to 16 do test !np; np := !np*2 done + let np = ref 16 in for i = 1 to 15 do test !np; np := !np*2 done diff --git a/testsuite/tests/misc-unsafe/fft.reference b/testsuite/tests/misc-unsafe/fft.reference index b0f1238b8..ce6544e91 100644 --- a/testsuite/tests/misc-unsafe/fft.reference +++ b/testsuite/tests/misc-unsafe/fft.reference @@ -13,4 +13,3 @@ 65536... ok 131072... ok 262144... ok -524288... ok diff --git a/testsuite/tests/misc-unsafe/quicksort.ml b/testsuite/tests/misc-unsafe/quicksort.ml index 8879d9529..ef6b75543 100644 --- a/testsuite/tests/misc-unsafe/quicksort.ml +++ b/testsuite/tests/misc-unsafe/quicksort.ml @@ -84,7 +84,7 @@ let test_sort sort_fun size = let main () = - test_sort qsort 500000; - test_sort qsort2 500000 + test_sort qsort 50000; + test_sort qsort2 50000 let _ = main(); exit 0 diff --git a/testsuite/tests/misc/bdd.ml b/testsuite/tests/misc/bdd.ml index 297eb68e4..c942d16fc 100644 --- a/testsuite/tests/misc/bdd.ml +++ b/testsuite/tests/misc/bdd.ml @@ -213,9 +213,9 @@ let test_hwb bdd vars = let main () = let n = - if Array.length Sys.argv >= 2 then int_of_string Sys.argv.(1) else 22 in + if Array.length Sys.argv >= 2 then int_of_string Sys.argv.(1) else 20 in let ntests = - if Array.length Sys.argv >= 3 then int_of_string Sys.argv.(2) else 100 in + if Array.length Sys.argv >= 3 then int_of_string Sys.argv.(2) else 10 in let bdd = hwb n in let succeeded = ref true in for i = 1 to ntests do diff --git a/testsuite/tests/misc/boyer.ml b/testsuite/tests/misc/boyer.ml index 09bfd649f..70a9f1d25 100644 --- a/testsuite/tests/misc/boyer.ml +++ b/testsuite/tests/misc/boyer.ml @@ -880,7 +880,7 @@ let term = cterm_to_term( let _ = let ok = ref true in - for i = 1 to 50 do + for i = 1 to 10 do if not (tautp (apply_subst subst term)) then ok := false done; if !ok then @@ -888,22 +888,3 @@ let _ = else print_string "Cannot prove!\n"; exit 0 - -(********* -with - failure s -> - print_string "Exception failure("; print_string s; print_string ")\n" - | Unify -> - print_string "Exception Unify\n" - | match_failure(file,start,stop) -> - print_string "Exception match_failure("; - print_string file; - print_string ","; - print_int start; - print_string ","; - print_int stop; - print_string ")\n" - | _ -> - print_string "Exception ?\n" - -**********) diff --git a/testsuite/tests/misc/fib.ml b/testsuite/tests/misc/fib.ml index adaf54885..16df96b4a 100644 --- a/testsuite/tests/misc/fib.ml +++ b/testsuite/tests/misc/fib.ml @@ -17,5 +17,5 @@ let _ = let n = if Array.length Sys.argv >= 2 then int_of_string Sys.argv.(1) - else 40 in + else 30 in print_int(fib n); print_newline(); exit 0 diff --git a/testsuite/tests/misc/fib.reference b/testsuite/tests/misc/fib.reference index 1d7ca9c61..08c2ab3e0 100644 --- a/testsuite/tests/misc/fib.reference +++ b/testsuite/tests/misc/fib.reference @@ -1 +1 @@ -165580141 +1346269 diff --git a/testsuite/tests/misc/nucleic.ml b/testsuite/tests/misc/nucleic.ml index 6b5b196f5..244651d71 100644 --- a/testsuite/tests/misc/nucleic.ml +++ b/testsuite/tests/misc/nucleic.ml @@ -3230,7 +3230,6 @@ let run () = most_distant_atom (pseudoknot ()) let main () = - for i = 1 to 50 do ignore(run()) done; Printf.printf "%.4f" (run ()); print_newline() let _ = main () diff --git a/testsuite/tests/misc/sorts.ml b/testsuite/tests/misc/sorts.ml index db9ecae58..493469b2a 100644 --- a/testsuite/tests/misc/sorts.ml +++ b/testsuite/tests/misc/sorts.ml @@ -193,9 +193,8 @@ let chklex b rstate n a = chkgen (mkrec1 b) cmplex rstate n a;; let lens = [ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 28; - 100; 127; 128; 129; 191; 192; 193; 506; - 1000; 1023; 1024; 1025; 1535; 1536; 1537; 2323; - 4000; 4094; 4096; 4098; 5123; + 100; 127; 128; 129; 193; 506; + 1000; 1025; 1535; 2323; ];; type ('a, 'b, 'c, 'd) aux = { diff --git a/testsuite/tests/misc/sorts.reference b/testsuite/tests/misc/sorts.reference index fa0cc0480..d311fcdd7 100644 --- a/testsuite/tests/misc/sorts.reference +++ b/testsuite/tests/misc/sorts.reference @@ -2,197 +2,197 @@ Command line arguments are: Testing List.sort... List.sort with constant ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with reverse-sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with random ints (many dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with random ints (few dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with records (str) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with records (int[1]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with records (int[10]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with records (int[100]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.sort with records (int[1000]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Testing List.stable_sort... List.stable_sort with constant ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with reverse-sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with random ints (many dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with random ints (few dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (str) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[1]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[10]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[100]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[1000]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[1]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[10]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[100]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. List.stable_sort with records (int[1000]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Testing Array.sort... Array.sort with constant ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with reverse-sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with random ints (many dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with random ints (few dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with records (str) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with records (int[1]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with records (int[10]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with records (int[100]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.sort with records (int[1000]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Testing Array.stable_sort... Array.stable_sort with constant ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with reverse-sorted ints 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with random ints (many dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with random ints (few dups) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (str) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[1]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[10]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[100]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[1000]) 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[1]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[10]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[100]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Array.stable_sort with records (int[1000]) [stable] 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - 12. 13. 28. 100. 127. 128. 129. 191. 192. 193. 506. 1000. - 1023. 1024. 1025. 1535. 1536. 1537. 2323. 4000. 4094. 4096. 4098. 5123. + 12. 13. 28. 100. 127. 128. 129. 193. 506. 1000. 1025. 1535. + 2323. Number of tests failed: 0 diff --git a/testsuite/tests/misc/takc.ml b/testsuite/tests/misc/takc.ml index 667ff5a74..a79e32a2a 100644 --- a/testsuite/tests/misc/takc.ml +++ b/testsuite/tests/misc/takc.ml @@ -17,4 +17,4 @@ let rec tak x y z = let rec repeat n = if n <= 0 then 0 else tak 18 12 6 + repeat(n-1) -let _ = print_int (repeat 2000); print_newline(); exit 0 +let _ = print_int (repeat 200); print_newline(); exit 0 diff --git a/testsuite/tests/misc/takc.reference b/testsuite/tests/misc/takc.reference index bfed81939..50989ffea 100644 --- a/testsuite/tests/misc/takc.reference +++ b/testsuite/tests/misc/takc.reference @@ -1 +1 @@ -14000 +1400 diff --git a/testsuite/tests/misc/taku.ml b/testsuite/tests/misc/taku.ml index 47d94c88b..7dd1abdbb 100644 --- a/testsuite/tests/misc/taku.ml +++ b/testsuite/tests/misc/taku.ml @@ -17,4 +17,4 @@ let rec tak (x, y, z) = let rec repeat n = if n <= 0 then 0 else tak(18,12,6) + repeat(n-1) -let _ = print_int (repeat 2000); print_newline(); exit 0 +let _ = print_int (repeat 200); print_newline(); exit 0 diff --git a/testsuite/tests/misc/taku.reference b/testsuite/tests/misc/taku.reference index bfed81939..50989ffea 100644 --- a/testsuite/tests/misc/taku.reference +++ b/testsuite/tests/misc/taku.reference @@ -1 +1 @@ -14000 +1400