Kumite (ko͞omiˌtā) is the practice of taking techniques learned from Kata and applying them through the act of freestyle sparring.
You can create a new kumite by providing some initial code and optionally some test cases. From there other warriors can spar with you, by enhancing, refactoring and translating your code. There is no limit to how many warriors you can spar with.
A great use for kumite is to begin an idea for a kata as one. You can collaborate with other code warriors until you have it right, then you can convert it to a kata.
#include <criterion/criterion.h> int foo; Test(variable_foo, should_be_zero) { cr_assert_eq(foo, 0); }
- #include <criterion/criterion.h>
- int foo;
Test(function_foo, should_return_zero) {cr_assert_eq(foo, 0);}Test(function_bar, should_return_zero) {cr_assert_eq(foo, 0);}Test(function_baz, should_return_zero) {- Test(variable_foo, should_be_zero) {
- cr_assert_eq(foo, 0);
- }
well i guess it still works.
module BigIntExample where -- purescript-bigints now available on Codewars -- but fails with runtime JavaScript error due to -- missing JavaScript module import Prelude import Data.BigInt (BigInt, fromString) import Data.Maybe (fromJust) import Partial.Unsafe (unsafePartial) biiiig :: BigInt biiiig = unsafePartial fromJust $ fromString "917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937"
- module BigIntExample where
- -- purescript-bigints now available on Codewars
- -- but fails with runtime JavaScript error due to
- -- missing JavaScript module
- import Prelude
- import Data.BigInt (BigInt, fromString)
- import Data.Maybe (fromJust)
- import Partial.Unsafe (unsafePartial)
- biiiig :: BigInt
biiiig = unsafePartial fromJust $ fromString "917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937"- biiiig = unsafePartial fromJust $ fromString "917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937917389127398375893457348957389457128937189237189237894357389457438957348957348957348947128937128937128937"
module ExampleSpec where import Prelude import Test.Spec (Spec, describe, it) import Test.Spec.Assertions (shouldEqual) spec :: Spec Unit spec = describe "Is Data.BigInt available on Codewars?" do describe "Let's see" do it "This should compile with passed tests if it is indeed supported." do true `shouldEqual` true
- module ExampleSpec where
- import Prelude
- import Test.Spec (Spec, describe, it)
- import Test.Spec.Assertions (shouldEqual)
import BigIntExample (biiiig)- spec :: Spec Unit
- spec =
- describe "Is Data.BigInt available on Codewars?" do
- describe "Let's see" do
- it "This should compile with passed tests if it is indeed supported." do
- true `shouldEqual` true
package kumite import "time" func CheckWorkHours(dateTime time.Time) bool { return 1 <= dateTime.Weekday() && dateTime.Weekday() <= 5 && 8 <= dateTime.Hour() && dateTime.Hour() < 18 }
- package kumite
- import "time"
- func CheckWorkHours(dateTime time.Time) bool {
const (firstWorkingDay = 1lastWorkingDay = 5firstWorkingHour = 8lastWorkingHour = 18)day, hour := dateTime.Weekday(), dateTime.Hour()return firstWorkingDay <= day && day <= lastWorkingDay && firstWorkingHour <= hour && hour < lastWorkingHour- return 1 <= dateTime.Weekday() && dateTime.Weekday() <= 5 && 8 <= dateTime.Hour() && dateTime.Hour() < 18
- }
creating code that finds out the volume of the cube from the data (x,y,z)
// TODO: Replace examples and use TDD by writing your own tests. The code provided here is just a how-to example. #include <criterion/criterion.h> Test(the_multiply_function, should_pass_all_the_tests_provided) { t(); cr_assert(1); }
- // TODO: Replace examples and use TDD by writing your own tests. The code provided here is just a how-to example.
- #include <criterion/criterion.h>
- Test(the_multiply_function, should_pass_all_the_tests_provided) {
- t();
- cr_assert(1);
- }
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertArrayEquals; // TODO: Replace examples and use TDD by writing your own tests class SolutionTest { @Test void printStatement_displays_column_headings() { Account account = new Account(); String statement = account.printStatement(); String[] rows = statement.split("\\n"); String[] columns= rows[0].split("\\s"); String[] expectedColumns = "Date Amount Balance".split(" "); assertArrayEquals(expectedColumns, columns); } @Test void depositAmountIsDisplayedOnStatement(){ Account account = new Account(); account.deposit(400); String testStatement = account.printStatement(); String[] lines = testStatement.split("\n"); StatementLine line = parseStatementLine(lines[1]); assertEquals(400, line.amount()); } //test helper method private StatementLine parseStatementLine(String statementLine) { String[] lineContents = statementLine.trim().split("\\s"); String date = lineContents[0]; int amount = Integer.parseInt(lineContents[1]); int balance = Integer.parseInt(lineContents[2]); return new StatementLine(date, amount, balance); } private record StatementLine(String date, int amount, int balance){} }
- import org.junit.jupiter.api.Test;
- import static org.junit.jupiter.api.Assertions.assertEquals;
- import static org.junit.jupiter.api.Assertions.assertTrue;
- import static org.junit.jupiter.api.Assertions.assertArrayEquals;
- // TODO: Replace examples and use TDD by writing your own tests
- class SolutionTest {
- @Test
- void printStatement_displays_column_headings() {
- Account account = new Account();
- String statement = account.printStatement();
- String[] rows = statement.split("\\n");
- String[] columns= rows[0].split("\\s");
- String[] expectedColumns = "Date Amount Balance".split(" ");
- assertArrayEquals(expectedColumns, columns);
- }
- @Test
- void depositAmountIsDisplayedOnStatement(){
- Account account = new Account();
- account.deposit(400);
- String testStatement = account.printStatement();
assertEquals("Date Amount Balance\n31.10.2022 400 400", testStatement);- String[] lines = testStatement.split("\n");
- StatementLine line = parseStatementLine(lines[1]);
- assertEquals(400, line.amount());
- }
- //test helper method
- private StatementLine parseStatementLine(String statementLine) {
- String[] lineContents = statementLine.trim().split("\\s");
- String date = lineContents[0];
- int amount = Integer.parseInt(lineContents[1]);
- int balance = Integer.parseInt(lineContents[2]);
- return new StatementLine(date, amount, balance);
- }
- private record StatementLine(String date, int amount, int balance){}
- }