From 2e67e3fdff60d15a64e727de8fac3d0473261d92 Mon Sep 17 00:00:00 2001 From: Jalil Chemseddine Date: Fri, 12 Oct 2012 11:13:19 +0200 Subject: cesar/ce/rx/bl: remove tonemap update tests, refs #3310 --- cesar/ce/rx/bitloading/test/common-define.mk | 14 +- cesar/ce/rx/bitloading/test/common-rule.mk | 4 - .../test/data/bl_iteratif_opti_table_shift.data | 32 - ...ratif_tm_update_new_tm_IN_1_tone_map_input.data | 1536 -------------------- ..._iteratif_tm_update_new_tm_IN_2_opti_table.data | 917 ------------ ...l_iteratif_tm_update_new_tm_IN_3_ber_input.data | 15 - ...teratif_tm_update_new_tm_IN_4_cursor_input.data | 1 - ...tif_tm_update_new_tm_OUT_1_tone_map_output.data | 1536 -------------------- ...ratif_tm_update_new_tm_OUT_2_cursor_output.data | 1 - cesar/ce/rx/bitloading/test/data/test_content.txt | 22 +- cesar/ce/rx/bitloading/test/src/test_bl.c | 758 ---------- 11 files changed, 5 insertions(+), 4831 deletions(-) delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_opti_table_shift.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_2_opti_table.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_3_ber_input.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data delete mode 100644 cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data (limited to 'cesar/ce') diff --git a/cesar/ce/rx/bitloading/test/common-define.mk b/cesar/ce/rx/bitloading/test/common-define.mk index eea97f142d..14fa54bc44 100644 --- a/cesar/ce/rx/bitloading/test/common-define.mk +++ b/cesar/ce/rx/bitloading/test/common-define.mk @@ -23,20 +23,13 @@ bl_test_vectors_tns = nsr_on_sound.data mean_on_sound_nsr.data \ tonemap_initial_2db_nsr_margin_0_01_ber_margin.data \ tonemap_initial_3db_nsr_margin_0_00_ber_margin.data \ tonemap_initial_3db_nsr_margin_0_01_ber_margin.data \ - tonemap_initial_under_ber_0db_nsr_margin_0_00_ber_margin.data \ - bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data \ - bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data + tonemap_initial_under_ber_0db_nsr_margin_0_00_ber_margin.data bl_test_vectors_ber_tns = ber_quantify.data + # Test vectors from scilab. bl_test_vectors_scilab = polynomial_nsr.data polynomial_raw.data -# Test vectors for tone map update. -bl_test_vectors_tm_update = bl_iteratif_opti_table_shift.data \ - bl_iteratif_tm_update_new_tm_IN_2_opti_table.data \ - bl_iteratif_tm_update_new_tm_IN_3_ber_input.data \ - bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data \ - bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data # Test vectors for Pber. bl_test_vectors_pber = pber_vector.data @@ -51,7 +44,6 @@ bl_test_vectors_dir = data # Generate header list. bl_test_vectors_tns_h = $(bl_test_vectors_tns:%.data=$(OBJ_INC_DIR)/%.h) bl_test_vectors_scilab_h = $(bl_test_vectors_scilab:%.data=$(OBJ_INC_DIR)/%.h) -bl_test_vectors_tm_update_h = $(bl_test_vectors_tm_update:%.data=$(OBJ_INC_DIR)/%.h) bl_test_vectors_pber_h = $(bl_test_vectors_pber:%.data=$(OBJ_INC_DIR)/%.h) bl_test_vectors_ber_margin_update_h = $(bl_test_vectors_ber_margin_update:%.data=$(OBJ_INC_DIR)/%.h) bl_test_vectors_ber_tns_h = $(bl_test_vectors_ber_tns:%.data=$(OBJ_INC_DIR)/%.h) @@ -59,7 +51,6 @@ bl_test_vectors_ber_tns_h = $(bl_test_vectors_ber_tns:%.data=$(OBJ_INC_DIR)/%.h) # Add it to the compile dependencies. COMPILE_DEPS += $(bl_test_vectors_tns_h) \ $(bl_test_vectors_scilab_h) \ - $(bl_test_vectors_tm_update_h) \ $(bl_test_vectors_pber_h) \ $(bl_test_vectors_ber_margin_update_h) \ $(bl_test_vectors_ber_tns_h) @@ -67,7 +58,6 @@ COMPILE_DEPS += $(bl_test_vectors_tns_h) \ # Add it to the clean rule. CLEAN_FILES += $(bl_test_vectors_tns_h) $(bl_test_vectors_scilab_h) $(bl_test_vectors_ber_tns_h) \ $(bl_test_vectors_scilab:%=$(bl_test_vectors_dir)/%) \ - $(bl_test_vectors_tm_update_h:%=$(bl_test_vectors_dir_h)/%) \ $(bl_test_vectors_pber_h:%=$(bl_test_vectors_dir_h)/%.) \ $(bl_test_vectors_ber_margin_update_h:%=$(bl_test_vectors_dir_h)/%) diff --git a/cesar/ce/rx/bitloading/test/common-rule.mk b/cesar/ce/rx/bitloading/test/common-rule.mk index 96c6564af4..8c056944dd 100644 --- a/cesar/ce/rx/bitloading/test/common-rule.mk +++ b/cesar/ce/rx/bitloading/test/common-rule.mk @@ -12,10 +12,6 @@ $(bl_test_vectors_scilab_h): $(OBJ_INC_DIR)/%.h : $(bl_test_vectors_dir)/%.data $(bl_test_vector_tools) $(OBJ_INC_DIR_STAMP) $(bl_test_vector_tools) $(@:$(OBJ_INC_DIR)/%.h=%) -d < $< > $@ -$(bl_test_vectors_tm_update_h): $(OBJ_INC_DIR)/%.h : $(bl_test_vectors_dir)/%.data \ - $(bl_test_vector_tools) $(OBJ_INC_DIR_STAMP) - $(bl_test_vector_tools) $(@:$(OBJ_INC_DIR)/%.h=%) -u < $< > $@ - $(bl_test_vectors_pber_h): $(OBJ_INC_DIR)/%.h : $(bl_test_vectors_dir)/%.data \ $(bl_test_vector_tools) $(OBJ_INC_DIR_STAMP) $(bl_test_vector_tools) $(@:$(OBJ_INC_DIR)/%.h=%) < $< > $@ diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_opti_table_shift.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_opti_table_shift.data deleted file mode 100644 index 5b475529d8..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_opti_table_shift.data +++ /dev/null @@ -1,32 +0,0 @@ -143520054238126 117843660550594 119294766166798 11 1 -143520054238126 122835040875281 127214378397664 3 1 -166038052374979 130119232407151 136887186436980 12 1 -166038052374979 137761637877759 146871681205943 3 1 -211074048648685 167383300393285 178956846352532 9 1 -233592046785538 188730695008516 201837691459334 6 1 -255566706426391 211318098870518 225287781290925 4 1 -121002056101273 119921369382117 121761934688575 6 0 -142039795511488 115638122924601 114076724660046 14 1 -142039795511488 119468101107796 121392466829804 8 1 -142039795511488 135301093293130 146053632056458 24 0 -142039795511488 170475837227030 201536695668297 336 0 -142039795511488 152595762963824 154470289055608 71 0 -142039795511488 127729150455425 113074292431388 1 1 -142039795511488 118146821976928 104632032980343 11 1 -142039795511488 115076137762840 106746484071724 14 1 -142039795511488 116033653859465 112864389374955 13 1 -164557793648341 122360803372328 125310693181616 21 1 -164557793648341 131425858536650 138975024002580 9 1 -164295864833177 42922630043236 42245097066940 95 1 -164295864833177 48910400263310 53135885151496 86 1 -164295864833177 58263510495131 68117943840481 73 1 -164295864833177 70360328605465 85680541178539 57 1 -186380711423175 85009540682521 105613784582749 50 1 -186380711423175 103968570736590 130857687052131 30 1 -186380711423175 120634787573828 150739587235872 14 1 -186380711423175 137986279280586 170542535494536 0 2 -186380711423175 139217934625068 171479771673471 0 2 -186380711423175 140432805592774 172397239997239 0 2 -186380711423175 161562863499371 188229960180114 9 0 -186380711423175 170531226845154 194201237824336 35 0 -186380711423175 174746157962532 192089619775724 26 0 diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data deleted file mode 100644 index dd4279040a..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data +++ /dev/null @@ -1,1536 +0,0 @@ -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -6 4 4 6 6 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 6 4 4 4 4 4 4 4 4 -6 4 4 6 4 4 6 4 4 4 4 4 4 4 4 -6 4 4 6 6 6 6 4 4 4 4 4 4 4 4 -6 4 4 6 6 6 6 6 4 4 4 4 4 4 6 -6 4 4 6 6 6 6 6 4 4 4 4 4 4 4 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 4 6 6 4 4 4 4 4 4 4 -6 4 4 6 6 6 6 6 4 4 4 4 4 4 4 -6 4 4 6 6 4 6 4 4 4 4 4 4 4 4 -4 4 4 6 4 4 6 4 4 4 4 4 4 4 4 -6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 6 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 2 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 2 2 2 3 3 3 3 -3 2 2 3 3 3 3 3 2 2 2 2 2 2 3 -3 2 2 3 3 3 3 3 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 3 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 2 2 2 2 2 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 3 3 3 4 4 3 3 3 3 3 4 4 -4 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 3 2 2 2 2 2 2 2 -3 2 2 3 3 2 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 -2 2 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 -1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 -1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 1 1 1 1 1 0 0 0 0 0 0 1 -1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 -2 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -2 1 1 2 2 1 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 -2 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 1 1 1 1 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -3 2 2 3 3 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 2 2 3 2 2 2 2 2 2 2 2 -3 2 2 3 3 3 3 3 2 2 2 2 2 2 2 -3 2 2 3 2 2 3 3 2 2 2 2 2 2 3 -3 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -3 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 1 2 2 2 2 2 1 1 1 2 2 2 2 -2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 1 1 1 1 1 1 2 -2 1 1 2 2 2 2 2 1 1 1 1 1 2 2 -2 1 1 2 2 2 2 2 1 1 1 1 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 -2 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 2 2 1 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 2 1 1 1 1 1 1 2 -1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 2 2 1 1 1 1 1 1 1 -2 1 1 2 1 1 2 2 1 1 1 1 2 2 2 -2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 -2 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 1 2 2 1 1 1 1 1 1 1 -1 1 1 2 2 1 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 -0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_2_opti_table.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_2_opti_table.data deleted file mode 100644 index d05697b62e..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_2_opti_table.data +++ /dev/null @@ -1,917 +0,0 @@ -308 308 308 678 678 678 459 459 459 459 459 459 459 459 459 -647 647 647 456 456 456 390 390 390 390 390 390 390 390 390 -378 378 378 675 675 675 478 478 478 478 478 478 478 478 478 -305 305 305 369 369 369 381 381 381 381 381 381 381 381 381 -463 463 463 371 371 371 274 274 274 274 274 274 274 274 274 -369 369 369 449 449 449 468 468 468 468 468 468 468 468 468 -935 935 935 477 477 477 450 450 450 450 450 450 450 450 450 -605 605 605 127 127 127 462 462 462 462 462 462 462 462 462 -353 353 353 680 680 680 391 391 391 391 391 391 391 391 391 -368 368 368 805 805 805 684 684 684 684 684 684 684 684 684 -128 128 128 126 126 126 370 370 370 370 370 370 370 370 370 -126 126 126 468 468 468 679 679 679 679 679 679 679 679 679 -467 467 467 455 455 455 374 374 374 374 374 374 374 374 374 -273 273 273 408 408 408 460 460 460 460 460 460 460 460 460 -382 382 382 460 460 460 682 682 682 682 682 682 682 682 682 -446 446 446 410 410 410 254 254 254 254 254 254 254 254 254 -356 356 356 354 354 354 371 371 371 371 371 371 371 371 371 -802 802 802 282 282 282 649 649 649 649 649 649 649 649 649 -407 407 407 531 531 531 355 355 355 355 355 355 355 355 355 -452 452 452 544 544 544 541 541 541 541 541 541 541 541 541 -275 275 275 376 376 376 352 352 352 352 352 352 352 352 352 -371 371 371 459 459 459 449 449 449 449 449 449 449 449 449 -253 253 253 808 808 808 369 369 369 369 369 369 369 369 369 -464 464 464 272 272 272 465 465 465 465 465 465 465 465 465 -447 447 447 358 358 358 281 281 281 281 281 281 281 281 281 -469 469 469 931 931 931 648 648 648 648 648 648 648 648 648 -391 391 391 604 604 604 272 272 272 272 272 272 272 272 272 -406 406 406 464 464 464 676 676 676 676 676 676 676 676 676 -359 359 359 377 377 377 674 674 674 674 674 674 674 674 674 -449 449 449 688 688 688 306 306 306 306 306 306 306 306 306 -354 354 354 463 463 463 456 456 456 456 456 456 456 456 456 -282 282 282 273 273 273 461 461 461 461 461 461 461 461 461 -392 392 392 283 283 283 408 408 408 408 408 408 408 408 408 -458 458 458 365 365 365 935 935 935 935 935 935 935 935 935 -547 547 547 254 254 254 529 529 529 529 529 529 529 529 529 -456 456 456 445 445 445 441 441 441 441 441 441 441 441 441 -544 544 544 466 466 466 467 467 467 467 467 467 467 467 467 -604 604 604 277 277 277 804 804 804 804 804 804 804 804 804 -648 648 648 446 446 446 392 392 392 392 392 392 392 392 392 -307 307 307 532 532 532 454 454 454 454 454 454 454 454 454 -800 800 800 368 368 368 307 307 307 307 307 307 307 307 307 -531 531 531 443 443 443 276 276 276 276 276 276 276 276 276 -383 383 383 370 370 370 466 466 466 466 466 466 466 466 466 -548 548 548 454 454 454 455 455 455 455 455 455 455 455 455 -271 271 271 406 406 406 650 650 650 650 650 650 650 650 650 -384 384 384 409 409 409 934 934 934 934 934 934 934 934 934 -457 457 457 304 304 304 936 936 936 936 936 936 936 936 936 -459 459 459 690 690 690 366 366 366 366 366 366 366 366 366 -649 649 649 128 128 128 367 367 367 367 367 367 367 367 367 -451 451 451 382 382 382 363 363 363 363 363 363 363 363 363 -268 268 268 461 461 461 128 128 128 128 128 128 128 128 128 -462 462 462 130 130 130 380 380 380 380 380 380 380 380 380 -934 934 934 441 441 441 368 368 368 368 368 368 368 368 368 -468 468 468 451 451 451 452 452 452 452 452 452 452 452 452 -256 256 256 359 359 359 686 686 686 686 686 686 686 686 686 -804 804 804 684 684 684 443 443 443 443 443 443 443 443 443 -533 533 533 603 603 603 815 815 815 815 815 815 815 815 815 -366 366 366 274 274 274 480 480 480 480 480 480 480 480 480 -438 438 438 934 934 934 606 606 606 606 606 606 606 606 606 -678 678 678 467 467 467 382 382 382 382 382 382 382 382 382 -479 479 479 191 191 191 364 364 364 364 364 364 364 364 364 -137 137 137 192 192 192 453 453 453 453 453 453 453 453 453 -460 460 460 812 812 812 193 193 193 193 193 193 193 193 193 -465 465 465 87 87 87 457 457 457 457 457 457 457 457 457 -255 255 255 281 281 281 305 305 305 305 305 305 305 305 305 -644 644 644 436 436 436 543 543 543 543 543 543 543 543 543 -470 470 470 366 366 366 445 445 445 445 445 445 445 445 445 -193 193 193 683 683 683 409 409 409 409 409 409 409 409 409 -472 472 472 305 305 305 189 189 189 189 189 189 189 189 189 -132 132 132 363 363 363 410 410 410 410 410 410 410 410 410 -304 304 304 271 271 271 448 448 448 448 448 448 448 448 448 -357 357 357 188 188 188 354 354 354 354 354 354 354 354 354 -408 408 408 356 356 356 282 282 282 282 282 282 282 282 282 -363 363 363 937 937 937 437 437 437 437 437 437 437 437 437 -684 684 684 270 270 270 451 451 451 451 451 451 451 451 451 -681 681 681 439 439 439 442 442 442 442 442 442 442 442 442 -433 433 433 447 447 447 464 464 464 464 464 464 464 464 464 -444 444 444 407 407 407 479 479 479 479 479 479 479 479 479 -188 188 188 383 383 383 446 446 446 446 446 446 446 446 446 -534 534 534 935 935 935 434 434 434 434 434 434 434 434 434 -409 409 409 375 375 375 444 444 444 444 444 444 444 444 444 -355 355 355 471 471 471 938 938 938 938 938 938 938 938 938 -431 431 431 392 392 392 356 356 356 356 356 356 356 356 356 -480 480 480 362 362 362 647 647 647 647 647 647 647 647 647 -270 270 270 129 129 129 680 680 680 680 680 680 680 680 680 -436 436 436 367 367 367 357 357 357 357 357 357 357 357 357 -806 806 806 809 809 809 447 447 447 447 447 447 447 447 447 -545 545 545 480 480 480 360 360 360 360 360 360 360 360 360 -130 130 130 133 133 133 469 469 469 469 469 469 469 469 469 -135 135 135 138 138 138 531 531 531 531 531 531 531 531 531 -546 546 546 457 457 457 406 406 406 406 406 406 406 406 406 -439 439 439 405 405 405 361 361 361 361 361 361 361 361 361 -358 358 358 360 360 360 438 438 438 438 438 438 438 438 438 -442 442 442 385 385 385 87 87 87 87 87 87 87 87 87 -807 807 807 469 469 469 192 192 192 192 192 192 192 192 192 -803 803 803 434 434 434 807 807 807 807 807 807 807 807 807 -404 404 404 546 546 546 362 362 362 362 362 362 362 362 362 -364 364 364 190 190 190 129 129 129 129 129 129 129 129 129 -432 432 432 194 194 194 424 424 424 424 424 424 424 424 424 -136 136 136 197 197 197 440 440 440 440 440 440 440 440 440 -430 430 430 685 685 685 385 385 385 385 385 385 385 385 385 -191 191 191 255 255 255 436 436 436 436 436 436 436 436 436 -269 269 269 430 430 430 393 393 393 393 393 393 393 393 393 -448 448 448 433 433 433 645 645 645 645 645 645 645 645 645 -385 385 385 533 533 533 811 811 811 811 811 811 811 811 811 -87 87 87 357 357 357 359 359 359 359 359 359 359 359 359 -685 685 685 438 438 438 685 685 685 685 685 685 685 685 685 -680 680 680 442 442 442 190 190 190 190 190 190 190 190 190 -937 937 937 545 545 545 358 358 358 358 358 358 358 358 358 -434 434 434 643 643 643 547 547 547 547 547 547 547 547 547 -437 437 437 472 472 472 806 806 806 806 806 806 806 806 806 -936 936 936 602 602 602 195 195 195 195 195 195 195 195 195 -129 129 129 938 938 938 941 941 941 941 941 941 941 941 941 -365 365 365 551 551 551 138 138 138 138 138 138 138 138 138 -428 428 428 136 136 136 365 365 365 365 365 365 365 365 365 -361 361 361 384 384 384 273 273 273 273 273 273 273 273 273 -362 362 362 189 189 189 471 471 471 471 471 471 471 471 471 -405 405 405 193 193 193 394 394 394 394 394 394 394 394 394 -410 410 410 444 444 444 407 407 407 407 407 407 407 407 407 -266 266 266 393 393 393 431 431 431 431 431 431 431 431 431 -445 445 445 137 137 137 188 188 188 188 188 188 188 188 188 -443 443 443 364 364 364 191 191 191 191 191 191 191 191 191 -440 440 440 185 185 185 395 395 395 395 395 395 395 395 395 -429 429 429 437 437 437 139 139 139 139 139 139 139 139 139 -471 471 471 269 269 269 256 256 256 256 256 256 256 256 256 -426 426 426 268 268 268 470 470 470 470 470 470 470 470 470 -190 190 190 428 428 428 187 187 187 187 187 187 187 187 187 -140 140 140 131 131 131 198 198 198 198 198 198 198 198 198 -461 461 461 361 361 361 820 820 820 820 820 820 820 820 820 -258 258 258 432 432 432 428 428 428 428 428 428 428 428 428 -131 131 131 470 470 470 265 265 265 265 265 265 265 265 265 -197 197 197 257 257 257 130 130 130 130 130 130 130 130 130 -267 267 267 135 135 135 472 472 472 472 472 472 472 472 472 -395 395 395 424 424 424 196 196 196 196 196 196 196 196 196 -427 427 427 427 427 427 810 810 810 810 810 810 810 810 810 -645 645 645 132 132 132 255 255 255 255 255 255 255 255 255 -386 386 386 267 267 267 271 271 271 271 271 271 271 271 271 -435 435 435 645 645 645 131 131 131 131 131 131 131 131 131 -187 187 187 435 435 435 481 481 481 481 481 481 481 481 481 -810 810 810 386 386 386 197 197 197 197 197 197 197 197 197 -473 473 473 816 816 816 267 267 267 267 267 267 267 267 267 -424 424 424 266 266 266 270 270 270 270 270 270 270 270 270 -474 474 474 440 440 440 403 403 403 403 403 403 403 403 403 -393 393 393 195 195 195 194 194 194 194 194 194 194 194 194 -196 196 196 199 199 199 435 435 435 435 435 435 435 435 435 -360 360 360 534 534 534 646 646 646 646 646 646 646 646 646 -138 138 138 256 256 256 199 199 199 199 199 199 199 199 199 -387 387 387 425 425 425 283 283 283 283 283 283 283 283 283 -535 535 535 187 187 187 475 475 475 475 475 475 475 475 475 -441 441 441 263 263 263 423 423 423 423 423 423 423 423 423 -192 192 192 547 547 547 405 405 405 405 405 405 405 405 405 -133 133 133 139 139 139 426 426 426 426 426 426 426 426 426 -262 262 262 479 479 479 133 133 133 133 133 133 133 133 133 -394 394 394 473 473 473 430 430 430 430 430 430 430 430 430 -263 263 263 398 398 398 473 473 473 473 473 473 473 473 473 -809 809 809 387 387 387 134 134 134 134 134 134 134 134 134 -805 805 805 264 264 264 384 384 384 384 384 384 384 384 384 -425 425 425 429 429 429 132 132 132 132 132 132 132 132 132 -475 475 475 431 431 431 137 137 137 137 137 137 137 137 137 -388 388 388 140 140 140 439 439 439 439 439 439 439 439 439 -257 257 257 810 810 810 605 605 605 605 605 605 605 605 605 -476 476 476 936 936 936 939 939 939 939 939 939 939 939 939 -283 283 283 481 481 481 304 304 304 304 304 304 304 304 304 -189 189 189 259 259 259 433 433 433 433 433 433 433 433 433 -812 812 812 400 400 400 404 404 404 404 404 404 404 404 404 -139 139 139 426 426 426 140 140 140 140 140 140 140 140 140 -134 134 134 134 134 134 425 425 425 425 425 425 425 425 425 -185 185 185 548 548 548 530 530 530 530 530 530 530 530 530 -194 194 194 388 388 388 257 257 257 257 257 257 257 257 257 -264 264 264 813 813 813 135 135 135 135 135 135 135 135 135 -603 603 603 399 399 399 136 136 136 136 136 136 136 136 136 -423 423 423 423 423 423 546 546 546 546 546 546 546 546 546 -265 265 265 474 474 474 474 474 474 474 474 474 474 474 474 -259 259 259 262 262 262 258 258 258 258 258 258 258 258 258 -422 422 422 395 395 395 422 422 422 422 422 422 422 422 422 -549 549 549 389 389 389 427 427 427 427 427 427 427 427 427 -261 261 261 186 186 186 184 184 184 184 184 184 184 184 184 -198 198 198 817 817 817 386 386 386 386 386 386 386 386 386 -260 260 260 939 939 939 185 185 185 185 185 185 185 185 185 -389 389 389 265 265 265 262 262 262 262 262 262 262 262 262 -195 195 195 641 641 641 387 387 387 387 387 387 387 387 387 -814 814 814 404 404 404 269 269 269 269 269 269 269 269 269 -186 186 186 260 260 260 532 532 532 532 532 532 532 532 532 -682 682 682 258 258 258 429 429 429 429 429 429 429 429 429 -199 199 199 475 475 475 186 186 186 186 186 186 186 186 186 -390 390 390 549 549 549 916 916 916 916 916 916 916 916 916 -421 421 421 422 422 422 266 266 266 266 266 266 266 266 266 -396 396 396 401 401 401 432 432 432 432 432 432 432 432 432 -729 729 729 814 814 814 533 533 533 533 533 533 533 533 533 -938 938 938 184 184 184 918 918 918 918 918 918 918 918 918 -811 811 811 198 198 198 261 261 261 261 261 261 261 261 261 -478 478 478 261 261 261 268 268 268 268 268 268 268 268 268 -643 643 643 397 397 397 476 476 476 476 476 476 476 476 476 -402 402 402 196 196 196 388 388 388 388 388 388 388 388 388 -908 908 908 421 421 421 421 421 421 421 421 421 421 421 421 -477 477 477 403 403 403 263 263 263 263 263 263 263 263 263 -850 850 850 940 940 940 389 389 389 389 389 389 389 389 389 -536 536 536 644 644 644 401 401 401 401 401 401 401 401 401 -642 642 642 915 915 915 264 264 264 264 264 264 264 264 264 -403 403 403 920 920 920 683 683 683 683 683 683 683 683 683 -639 639 639 391 391 391 200 200 200 200 200 200 200 200 200 -481 481 481 402 402 402 940 940 940 940 940 940 940 940 940 -482 482 482 390 390 390 914 914 914 914 914 914 914 914 914 -200 200 200 815 815 815 604 604 604 604 604 604 604 604 604 -602 602 602 476 476 476 260 260 260 260 260 260 260 260 260 -201 201 201 535 535 535 640 640 640 640 640 640 640 640 640 -397 397 397 478 478 478 259 259 259 259 259 259 259 259 259 -853 853 853 911 911 911 808 808 808 808 808 808 808 808 808 -731 731 731 183 183 183 937 937 937 937 937 937 937 937 937 -847 847 847 818 818 818 913 913 913 913 913 913 913 913 913 -640 640 640 811 811 811 911 911 911 911 911 911 911 911 911 -829 829 829 637 637 637 396 396 396 396 396 396 396 396 396 -813 813 813 909 909 909 809 809 809 809 809 809 809 809 809 -184 184 184 910 910 910 681 681 681 681 681 681 681 681 681 -483 483 483 916 916 916 908 908 908 908 908 908 908 908 908 -183 183 183 726 726 726 814 814 814 814 814 814 814 814 814 -550 550 550 914 914 914 402 402 402 402 402 402 402 402 402 -733 733 733 913 913 913 818 818 818 818 818 818 818 818 818 -641 641 641 396 396 396 477 477 477 477 477 477 477 477 477 -537 537 537 601 601 601 915 915 915 915 915 915 915 915 915 -400 400 400 642 642 642 813 813 813 813 813 813 813 813 813 -906 906 906 181 181 181 812 812 812 812 812 812 812 812 812 -401 401 401 919 919 919 896 896 896 896 896 896 896 896 896 -730 730 730 182 182 182 602 602 602 602 602 602 602 602 602 -939 939 939 892 892 892 182 182 182 182 182 182 182 182 182 -855 855 855 505 505 505 397 397 397 397 397 397 397 397 397 -886 886 886 727 727 727 732 732 732 732 732 732 732 732 732 -182 182 182 200 200 200 201 201 201 201 201 201 201 201 201 -909 909 909 912 912 912 909 909 909 909 909 909 909 909 909 -399 399 399 202 202 202 904 904 904 904 904 904 904 904 904 -504 504 504 638 638 638 400 400 400 400 400 400 400 400 400 -819 819 819 728 728 728 943 943 943 943 943 943 943 943 943 -857 857 857 556 556 556 638 638 638 638 638 638 638 638 638 -941 941 941 733 733 733 202 202 202 202 202 202 202 202 202 -940 940 940 500 500 500 503 503 503 503 503 503 503 503 503 -638 638 638 731 731 731 731 731 731 731 731 731 731 731 731 -815 815 815 905 905 905 942 942 942 942 942 942 942 942 942 -839 839 839 942 942 942 183 183 183 183 183 183 183 183 183 -734 734 734 941 941 941 641 641 641 641 641 641 641 641 641 -889 889 889 819 819 819 907 907 907 907 907 907 907 907 907 -822 822 822 503 503 503 840 840 840 840 840 840 840 840 840 -848 848 848 923 923 923 534 534 534 534 534 534 534 534 534 -914 914 914 918 918 918 900 900 900 900 900 900 900 900 900 -398 398 398 917 917 917 917 917 917 917 917 917 917 917 917 -943 943 943 394 394 394 549 549 549 549 549 549 549 549 549 -502 502 502 820 820 820 603 603 603 603 603 603 603 603 603 -852 852 852 724 724 724 398 398 398 398 398 398 398 398 398 -816 816 816 178 178 178 853 853 853 853 853 853 853 853 853 -856 856 856 502 502 502 912 912 912 912 912 912 912 912 912 -178 178 178 203 203 203 551 551 551 551 551 551 551 551 551 -849 849 849 550 550 550 822 822 822 822 822 822 822 822 822 -203 203 203 821 821 821 729 729 729 729 729 729 729 729 729 -496 496 496 729 729 729 901 901 901 901 901 901 901 901 901 -824 824 824 639 639 639 816 816 816 816 816 816 816 816 816 -728 728 728 201 201 201 906 906 906 906 906 906 906 906 906 -820 820 820 504 504 504 181 181 181 181 181 181 181 181 181 -910 910 910 501 501 501 483 483 483 483 483 483 483 483 483 -846 846 846 890 890 890 902 902 902 902 902 902 902 902 902 -912 912 912 640 640 640 842 842 842 842 842 842 842 842 842 -507 507 507 907 907 907 856 856 856 856 856 856 856 856 856 -181 181 181 723 723 723 642 642 642 642 642 642 642 642 642 -500 500 500 921 921 921 644 644 644 644 644 644 644 644 644 -484 484 484 537 537 537 204 204 204 204 204 204 204 204 204 -510 510 510 536 536 536 734 734 734 734 734 734 734 734 734 -921 921 921 496 496 496 399 399 399 399 399 399 399 399 399 -854 854 854 732 732 732 823 823 823 823 823 823 823 823 823 -825 825 825 894 894 894 722 722 722 722 722 722 722 722 722 -923 923 923 635 635 635 844 844 844 844 844 844 844 844 844 -202 202 202 903 903 903 506 506 506 506 506 506 506 506 506 -180 180 180 730 730 730 817 817 817 817 817 817 817 817 817 -724 724 724 180 180 180 889 889 889 889 889 889 889 889 889 -732 732 732 908 908 908 845 845 845 845 845 845 845 845 845 -887 887 887 898 898 898 615 615 615 615 615 615 615 615 615 -503 503 503 204 204 204 905 905 905 905 905 905 905 905 905 -727 727 727 735 735 735 735 735 735 735 735 735 735 735 735 -828 828 828 852 852 852 824 824 824 824 824 824 824 824 824 -601 601 601 717 717 717 944 944 944 944 944 944 944 944 944 -851 851 851 497 497 497 891 891 891 891 891 891 891 891 891 -888 888 888 725 725 725 826 826 826 826 826 826 826 826 826 -725 725 725 893 893 893 730 730 730 730 730 730 730 730 730 -826 826 826 826 826 826 887 887 887 887 887 887 887 887 887 -916 916 916 721 721 721 946 946 946 946 946 946 946 946 946 -506 506 506 736 736 736 502 502 502 502 502 502 502 502 502 -907 907 907 897 897 897 841 841 841 841 841 841 841 841 841 -926 926 926 507 507 507 819 819 819 819 819 819 819 819 819 -843 843 843 857 857 857 613 613 613 613 613 613 613 613 613 -833 833 833 718 718 718 719 719 719 719 719 719 719 719 719 -922 922 922 205 205 205 535 535 535 535 535 535 535 535 535 -505 505 505 600 600 600 825 825 825 825 825 825 825 825 825 -205 205 205 899 899 899 903 903 903 903 903 903 903 903 903 -508 508 508 616 616 616 180 180 180 180 180 180 180 180 180 -913 913 913 614 614 614 548 548 548 548 548 548 548 548 548 -945 945 945 887 887 887 550 550 550 550 550 550 550 550 550 -817 817 817 823 823 823 509 509 509 509 509 509 509 509 509 -552 552 552 499 499 499 724 724 724 724 724 724 724 724 724 -509 509 509 757 757 757 203 203 203 203 203 203 203 203 203 -823 823 823 179 179 179 206 206 206 206 206 206 206 206 206 -511 511 511 720 720 720 505 505 505 505 505 505 505 505 505 -553 553 553 854 854 854 850 850 850 850 850 850 850 850 850 -841 841 841 835 835 835 852 852 852 852 852 852 852 852 852 -112 112 112 770 770 770 854 854 854 854 854 854 854 854 854 -821 821 821 613 613 613 736 736 736 736 736 736 736 736 736 -208 208 208 506 506 506 643 643 643 643 643 643 643 643 643 -773 773 773 206 206 206 888 888 888 888 888 888 888 888 888 -903 903 903 482 482 482 179 179 179 179 179 179 179 179 179 -896 896 896 552 552 552 774 774 774 774 774 774 774 774 774 -885 885 885 734 734 734 721 721 721 721 721 721 721 721 721 -204 204 204 207 207 207 897 897 897 897 897 897 897 897 897 -904 904 904 906 906 906 920 920 920 920 920 920 920 920 920 -844 844 844 944 944 944 919 919 919 919 919 919 919 919 919 -551 551 551 851 851 851 499 499 499 499 499 499 499 499 499 -836 836 836 608 608 608 601 601 601 601 601 601 601 601 601 -211 211 211 636 636 636 855 855 855 855 855 855 855 855 855 -723 723 723 902 902 902 725 725 725 725 725 725 725 725 725 -176 176 176 922 922 922 910 910 910 910 910 910 910 910 910 -920 920 920 889 889 889 504 504 504 504 504 504 504 504 504 -842 842 842 177 177 177 899 899 899 899 899 899 899 899 899 -539 539 539 513 513 513 945 945 945 945 945 945 945 945 945 -919 919 919 209 209 209 508 508 508 508 508 508 508 508 508 -845 845 845 924 924 924 501 501 501 501 501 501 501 501 501 -915 915 915 722 722 722 728 728 728 728 728 728 728 728 728 -600 600 600 619 619 619 733 733 733 733 733 733 733 733 733 -735 735 735 553 553 553 205 205 205 205 205 205 205 205 205 -538 538 538 947 947 947 500 500 500 500 500 500 500 500 500 -619 619 619 599 599 599 208 208 208 208 208 208 208 208 208 -722 722 722 888 888 888 507 507 507 507 507 507 507 507 507 -206 206 206 483 483 483 639 639 639 639 639 639 639 639 639 -764 764 764 904 904 904 482 482 482 482 482 482 482 482 482 -115 115 115 610 610 610 611 611 611 611 611 611 611 611 611 -767 767 767 210 210 210 726 726 726 726 726 726 726 726 726 -635 635 635 509 509 509 839 839 839 839 839 839 839 839 839 -726 726 726 827 827 827 831 831 831 831 831 831 831 831 831 -759 759 759 612 612 612 720 720 720 720 720 720 720 720 720 -111 111 111 617 617 617 821 821 821 821 821 821 821 821 821 -554 554 554 853 853 853 836 836 836 836 836 836 836 836 836 -636 636 636 856 856 856 512 512 512 512 512 512 512 512 512 -818 818 818 514 514 514 843 843 843 843 843 843 843 843 843 -177 177 177 555 555 555 614 614 614 614 614 614 614 614 614 -637 637 637 719 719 719 851 851 851 851 851 851 851 851 851 -942 942 942 830 830 830 885 885 885 885 885 885 885 885 885 -944 944 944 609 609 609 895 895 895 895 895 895 895 895 895 -827 827 827 622 622 622 207 207 207 207 207 207 207 207 207 -891 891 891 829 829 829 898 898 898 898 898 898 898 898 898 -831 831 831 176 176 176 716 716 716 716 716 716 716 716 716 -514 514 514 901 901 901 600 600 600 600 600 600 600 600 600 -210 210 210 714 714 714 886 886 886 886 886 886 886 886 886 -501 501 501 621 621 621 713 713 713 713 713 713 713 713 713 -905 905 905 175 175 175 723 723 723 723 723 723 723 723 723 -113 113 113 758 758 758 718 718 718 718 718 718 718 718 718 -895 895 895 849 849 849 538 538 538 538 538 538 538 538 538 -486 486 486 896 896 896 830 830 830 830 830 830 830 830 830 -623 623 623 111 111 111 552 552 552 552 552 552 552 552 552 -513 513 513 611 611 611 516 516 516 516 516 516 516 516 516 -928 928 928 848 848 848 612 612 612 612 612 612 612 612 612 -763 763 763 895 895 895 857 857 857 857 857 857 857 857 857 -238 238 238 841 841 841 618 618 618 618 618 618 618 618 618 -840 840 840 766 766 766 835 835 835 835 835 835 835 835 835 -756 756 756 618 618 618 949 949 949 949 949 949 949 949 949 -830 830 830 891 891 891 536 536 536 536 536 536 536 536 536 -634 634 634 715 715 715 846 846 846 846 846 846 846 846 846 -497 497 497 174 174 174 764 764 764 764 764 764 764 764 764 -771 771 771 623 623 623 513 513 513 513 513 513 513 513 513 -512 512 512 557 557 557 617 617 617 617 617 617 617 617 617 -884 884 884 850 850 850 511 511 511 511 511 511 511 511 511 -761 761 761 831 831 831 834 834 834 834 834 834 834 834 834 -179 179 179 498 498 498 947 947 947 947 947 947 947 947 947 -720 720 720 510 510 510 714 714 714 714 714 714 714 714 714 -911 911 911 846 846 846 838 838 838 838 838 838 838 838 838 -721 721 721 772 772 772 616 616 616 616 616 616 616 616 616 -755 755 755 824 824 824 833 833 833 833 833 833 833 833 833 -890 890 890 211 211 211 827 827 827 827 827 827 827 827 827 -736 736 736 240 240 240 637 637 637 637 637 637 637 637 637 -609 609 609 615 615 615 515 515 515 515 515 515 515 515 515 -770 770 770 765 765 765 175 175 175 175 175 175 175 175 175 -917 917 917 845 845 845 176 176 176 176 176 176 176 176 176 -924 924 924 554 554 554 177 177 177 177 177 177 177 177 177 -894 894 894 822 822 822 711 711 711 711 711 711 711 711 711 -175 175 175 855 855 855 756 756 756 756 756 756 756 756 756 -900 900 900 847 847 847 727 727 727 727 727 727 727 727 727 -737 737 737 538 538 538 849 849 849 849 849 849 849 849 849 -835 835 835 833 833 833 710 710 710 710 710 710 710 710 710 -556 556 556 515 515 515 892 892 892 892 892 892 892 892 892 -897 897 897 839 839 839 829 829 829 829 829 829 829 829 829 -927 927 927 711 711 711 894 894 894 894 894 894 894 894 894 -615 615 615 838 838 838 921 921 921 921 921 921 921 921 921 -618 618 618 508 508 508 636 636 636 636 636 636 636 636 636 -108 108 108 900 900 900 633 633 633 633 633 633 633 633 633 -612 612 612 837 837 837 775 775 775 775 775 775 775 775 775 -775 775 775 775 775 775 786 786 786 786 786 786 786 786 786 -630 630 630 842 842 842 847 847 847 847 847 847 847 847 847 -925 925 925 784 784 784 209 209 209 209 209 209 209 209 209 -110 110 110 634 634 634 510 510 510 510 510 510 510 510 510 -918 918 918 632 632 632 772 772 772 772 772 772 772 772 772 -714 714 714 208 208 208 890 890 890 890 890 890 890 890 890 -899 899 899 836 836 836 610 610 610 610 610 610 610 610 610 -632 632 632 840 840 840 178 178 178 178 178 178 178 178 178 -207 207 207 828 828 828 778 778 778 778 778 778 778 778 778 -893 893 893 633 633 633 761 761 761 761 761 761 761 761 761 -494 494 494 929 929 929 717 717 717 717 717 717 717 717 717 -760 760 760 759 759 759 893 893 893 893 893 893 893 893 893 -892 892 892 945 945 945 923 923 923 923 923 923 923 923 923 -614 614 614 620 620 620 708 708 708 708 708 708 708 708 708 -209 209 209 626 626 626 174 174 174 174 174 174 174 174 174 -498 498 498 703 703 703 832 832 832 832 832 832 832 832 832 -616 616 616 832 832 832 737 737 737 737 737 737 737 737 737 -768 768 768 886 886 886 922 922 922 922 922 922 922 922 922 -901 901 901 558 558 558 753 753 753 753 753 753 753 753 753 -499 499 499 768 768 768 625 625 625 625 625 625 625 625 625 -837 837 837 112 112 112 837 837 837 837 837 837 837 837 837 -772 772 772 117 117 117 537 537 537 537 537 537 537 537 537 -752 752 752 239 239 239 762 762 762 762 762 762 762 762 762 -610 610 610 943 943 943 776 776 776 776 776 776 776 776 776 -832 832 832 771 771 771 484 484 484 484 484 484 484 484 484 -631 631 631 773 773 773 113 113 113 113 113 113 113 113 113 -243 243 243 825 825 825 948 948 948 948 948 948 948 948 948 -215 215 215 755 755 755 848 848 848 848 848 848 848 848 848 -633 633 633 834 834 834 712 712 712 712 712 712 712 712 712 -617 617 617 706 706 706 173 173 173 173 173 173 173 173 173 -235 235 235 625 625 625 210 210 210 210 210 210 210 210 210 -109 109 109 511 511 511 540 540 540 540 540 540 540 540 540 -236 236 236 113 113 113 783 783 783 783 783 783 783 783 783 -622 622 622 173 173 173 112 112 112 112 112 112 112 112 112 -838 838 838 486 486 486 211 211 211 211 211 211 211 211 211 -898 898 898 540 540 540 212 212 212 212 212 212 212 212 212 -237 237 237 628 628 628 239 239 239 239 239 239 239 239 239 -902 902 902 607 607 607 785 785 785 785 785 785 785 785 785 -542 542 542 172 172 172 624 624 624 624 624 624 624 624 624 -114 114 114 539 539 539 213 213 213 213 213 213 213 213 213 -778 778 778 114 114 114 555 555 555 555 555 555 555 555 555 -540 540 540 764 764 764 828 828 828 828 828 828 828 828 828 -620 620 620 763 763 763 619 619 619 619 619 619 619 619 619 -762 762 762 955 955 955 768 768 768 768 768 768 768 768 768 -541 541 541 484 484 484 788 788 788 788 788 788 788 788 788 -624 624 624 844 844 844 539 539 539 539 539 539 539 539 539 -766 766 766 767 767 767 924 924 924 924 924 924 924 924 924 -613 613 613 115 115 115 751 751 751 751 751 751 751 751 751 -712 712 712 631 631 631 609 609 609 609 609 609 609 609 609 -834 834 834 705 705 705 766 766 766 766 766 766 766 766 766 -611 611 611 116 116 116 514 514 514 514 514 514 514 514 514 -172 172 172 212 212 212 780 780 780 780 780 780 780 780 780 -627 627 627 238 238 238 777 777 777 777 777 777 777 777 777 -930 930 930 885 885 885 755 755 755 755 755 755 755 755 755 -107 107 107 762 762 762 108 108 108 108 108 108 108 108 108 -174 174 174 110 110 110 238 238 238 238 238 238 238 238 238 -241 241 241 237 237 237 553 553 553 553 553 553 553 553 553 -774 774 774 954 954 954 559 559 559 559 559 559 559 559 559 -625 625 625 107 107 107 930 930 930 930 930 930 930 930 930 -557 557 557 884 884 884 709 709 709 709 709 709 709 709 709 -931 931 931 624 624 624 975 975 975 975 975 975 975 975 975 -212 212 212 1001 1001 1001 114 114 114 114 114 114 114 114 114 -715 715 715 753 753 753 115 115 115 115 115 115 115 115 115 -929 929 929 760 760 760 884 884 884 884 884 884 884 884 884 -621 621 621 774 774 774 782 782 782 782 782 782 782 782 782 -753 753 753 519 519 519 622 622 622 622 622 622 622 622 622 -608 608 608 843 843 843 760 760 760 760 760 760 760 760 760 -626 626 626 769 769 769 632 632 632 632 632 632 632 632 632 -213 213 213 737 737 737 497 497 497 497 497 497 497 497 497 -487 487 487 1000 1000 1000 517 517 517 517 517 517 517 517 517 -628 628 628 106 106 106 927 927 927 927 927 927 927 927 927 -116 116 116 542 542 542 626 626 626 626 626 626 626 626 626 -555 555 555 925 925 925 773 773 773 773 773 773 773 773 773 -705 705 705 704 704 704 754 754 754 754 754 754 754 754 754 -173 173 173 761 761 761 620 620 620 620 620 620 620 620 620 -234 234 234 952 952 952 623 623 623 623 623 623 623 623 623 -515 515 515 928 928 928 767 767 767 767 767 767 767 767 767 -559 559 559 494 494 494 110 110 110 110 110 110 110 110 110 -716 716 716 109 109 109 116 116 116 116 116 116 116 116 116 -240 240 240 606 606 606 240 240 240 240 240 240 240 240 240 -780 780 780 213 213 213 757 757 757 757 757 757 757 757 757 -781 781 781 779 779 779 759 759 759 759 759 759 759 759 759 -607 607 607 713 713 713 628 628 628 628 628 628 628 628 628 -233 233 233 512 512 512 241 241 241 241 241 241 241 241 241 -118 118 118 926 926 926 715 715 715 715 715 715 715 715 715 -516 516 516 756 756 756 929 929 929 929 929 929 929 929 929 -117 117 117 495 495 495 627 627 627 627 627 627 627 627 627 -606 606 606 559 559 559 752 752 752 752 752 752 752 752 752 -765 765 765 245 245 245 621 621 621 621 621 621 621 621 621 -776 776 776 541 541 541 634 634 634 634 634 634 634 634 634 -946 946 946 958 958 958 237 237 237 237 237 237 237 237 237 -242 242 242 518 518 518 781 781 781 781 781 781 781 781 781 -244 244 244 783 783 783 485 485 485 485 485 485 485 485 485 -543 543 543 629 629 629 925 925 925 925 925 925 925 925 925 -718 718 718 710 710 710 770 770 770 770 770 770 770 770 770 -171 171 171 776 776 776 498 498 498 498 498 498 498 498 498 -757 757 757 105 105 105 926 926 926 926 926 926 926 926 926 -518 518 518 108 108 108 974 974 974 974 974 974 974 974 974 -932 932 932 630 630 630 520 520 520 520 520 520 520 520 520 -754 754 754 605 605 605 111 111 111 111 111 111 111 111 111 -787 787 787 627 627 627 171 171 171 171 171 171 171 171 171 -485 485 485 960 960 960 706 706 706 706 706 706 706 706 706 -492 492 492 241 241 241 932 932 932 932 932 932 932 932 932 -629 629 629 712 712 712 769 769 769 769 769 769 769 769 769 -659 659 659 999 999 999 635 635 635 635 635 635 635 635 635 -777 777 777 946 946 946 787 787 787 787 787 787 787 787 787 -789 789 789 214 214 214 542 542 542 542 542 542 542 542 542 -997 997 997 778 778 778 109 109 109 109 109 109 109 109 109 -719 719 719 927 927 927 933 933 933 933 933 933 933 933 933 -998 998 998 716 716 716 931 931 931 931 931 931 931 931 931 -120 120 120 950 950 950 246 246 246 246 246 246 246 246 246 -989 989 989 118 118 118 630 630 630 630 630 630 630 630 630 -232 232 232 232 232 232 243 243 243 243 243 243 243 243 243 -710 710 710 951 951 951 954 954 954 954 954 954 954 954 954 -106 106 106 751 751 751 629 629 629 629 629 629 629 629 629 -933 933 933 930 930 930 236 236 236 236 236 236 236 236 236 -103 103 103 485 485 485 978 978 978 978 978 978 978 978 978 -517 517 517 101 101 101 496 496 496 496 496 496 496 496 496 -786 786 786 242 242 242 784 784 784 784 784 784 784 784 784 -950 950 950 560 560 560 758 758 758 758 758 758 758 758 758 -751 751 751 664 664 664 245 245 245 245 245 245 245 245 245 -668 668 668 932 932 932 558 558 558 558 558 558 558 558 558 -495 495 495 933 933 933 765 765 765 765 765 765 765 765 765 -214 214 214 752 752 752 608 608 608 608 608 608 608 608 608 -758 758 758 782 782 782 215 215 215 215 215 215 215 215 215 -239 239 239 520 520 520 172 172 172 172 172 172 172 172 172 -704 704 704 234 234 234 519 519 519 519 519 519 519 519 519 -717 717 717 521 521 521 545 545 545 545 545 545 545 545 545 -713 713 713 702 702 702 118 118 118 118 118 118 118 118 118 -709 709 709 244 244 244 544 544 544 544 544 544 544 544 544 -769 769 769 708 708 708 979 979 979 979 979 979 979 979 979 -231 231 231 543 543 543 703 703 703 703 703 703 703 703 703 -245 245 245 788 788 788 771 771 771 771 771 771 771 771 771 -520 520 520 781 781 781 233 233 233 233 233 233 233 233 233 -664 664 664 709 709 709 518 518 518 518 518 518 518 518 518 -105 105 105 104 104 104 522 522 522 522 522 522 522 522 522 -519 519 519 233 233 233 928 928 928 928 928 928 928 928 928 -599 599 599 777 777 777 793 793 793 793 793 793 793 793 793 -119 119 119 103 103 103 234 234 234 234 234 234 234 234 234 -341 341 341 236 236 236 337 337 337 337 337 337 337 337 337 -711 711 711 665 665 665 554 554 554 554 554 554 554 554 554 -558 558 558 786 786 786 607 607 607 607 607 607 607 607 607 -334 334 334 949 949 949 231 231 231 231 231 231 231 231 231 -669 669 669 785 785 785 704 704 704 704 704 704 704 704 704 -708 708 708 523 523 523 214 214 214 214 214 214 214 214 214 -598 598 598 235 235 235 792 792 792 792 792 792 792 792 792 -706 706 706 754 754 754 631 631 631 631 631 631 631 631 631 -121 121 121 707 707 707 107 107 107 107 107 107 107 107 107 -332 332 332 171 171 171 117 117 117 117 117 117 117 117 117 -97 97 97 750 750 750 242 242 242 242 242 242 242 242 242 -947 947 947 780 780 780 951 951 951 951 951 951 951 951 951 -170 170 170 170 170 170 102 102 102 102 102 102 102 102 102 -100 100 100 948 948 948 120 120 120 120 120 120 120 120 120 -951 951 951 998 998 998 779 779 779 779 779 779 779 779 779 -788 788 788 243 243 243 663 663 663 663 663 663 663 663 663 -782 782 782 492 492 492 235 235 235 235 235 235 235 235 235 -779 779 779 516 516 516 750 750 750 750 750 750 750 750 750 -663 663 663 701 701 701 244 244 244 244 244 244 244 244 244 -331 331 331 1002 1002 1002 556 556 556 556 556 556 556 556 556 -523 523 523 487 487 487 486 486 486 486 486 486 486 486 486 -987 987 987 517 517 517 106 106 106 106 106 106 106 106 106 -104 104 104 230 230 230 119 119 119 119 119 119 119 119 119 -790 790 790 670 670 670 103 103 103 103 103 103 103 103 103 -667 667 667 493 493 493 599 599 599 599 599 599 599 599 599 -666 666 666 663 663 663 973 973 973 973 973 973 973 973 973 -488 488 488 119 119 119 790 790 790 790 790 790 790 790 790 -991 991 991 228 228 228 170 170 170 170 170 170 170 170 170 -785 785 785 789 789 789 707 707 707 707 707 707 707 707 707 -750 750 750 102 102 102 662 662 662 662 662 662 662 662 662 -525 525 525 787 787 787 794 794 794 794 794 794 794 794 794 -338 338 338 328 328 328 659 659 659 659 659 659 659 659 659 -521 521 521 215 215 215 105 105 105 105 105 105 105 105 105 -522 522 522 231 231 231 340 340 340 340 340 340 340 340 340 -491 491 491 1003 1003 1003 655 655 655 655 655 655 655 655 655 -665 665 665 121 121 121 334 334 334 334 334 334 334 334 334 -99 99 99 97 97 97 976 976 976 976 976 976 976 976 976 -703 703 703 100 100 100 705 705 705 705 705 705 705 705 705 -699 699 699 120 120 120 230 230 230 230 230 230 230 230 230 -660 660 660 525 525 525 232 232 232 232 232 232 232 232 232 -661 661 661 527 527 527 699 699 699 699 699 699 699 699 699 -227 227 227 978 978 978 955 955 955 955 955 955 955 955 955 -707 707 707 662 662 662 977 977 977 977 977 977 977 977 977 -247 247 247 326 326 326 661 661 661 661 661 661 661 661 661 -560 560 560 330 330 330 324 324 324 324 324 324 324 324 324 -1000 1000 1000 997 997 997 495 495 495 495 495 495 495 495 495 -101 101 101 660 660 660 247 247 247 247 247 247 247 247 247 -990 990 990 524 524 524 493 493 493 493 493 493 493 493 493 -783 783 783 654 654 654 984 984 984 984 984 984 984 984 984 -102 102 102 953 953 953 339 339 339 339 339 339 339 339 339 -999 999 999 333 333 333 763 763 763 763 763 763 763 763 763 -658 658 658 661 661 661 330 330 330 330 330 330 330 330 330 -490 490 490 522 522 522 789 789 789 789 789 789 789 789 789 -246 246 246 598 598 598 660 660 660 660 660 660 660 660 660 -493 493 493 658 658 658 658 658 658 658 658 658 658 658 658 -984 984 984 490 490 490 328 328 328 328 328 328 328 328 328 -988 988 988 169 169 169 791 791 791 791 791 791 791 791 791 -524 524 524 327 327 327 99 99 99 99 99 99 99 99 99 -657 657 657 491 491 491 332 332 332 332 332 332 332 332 332 -656 656 656 332 332 332 657 657 657 657 657 657 657 657 657 -792 792 792 1004 1004 1004 981 981 981 981 981 981 981 981 981 -948 948 948 797 797 797 521 521 521 521 521 521 521 521 521 -672 672 672 982 982 982 492 492 492 492 492 492 492 492 492 -784 784 784 986 986 986 668 668 668 668 668 668 668 668 668 -530 530 530 342 342 342 953 953 953 953 953 953 953 953 953 -662 662 662 698 698 698 983 983 983 983 983 983 983 983 983 -228 228 228 246 246 246 970 970 970 970 970 970 970 970 970 -701 701 701 331 331 331 950 950 950 950 950 950 950 950 950 -526 526 526 489 489 489 494 494 494 494 494 494 494 494 494 -1001 1001 1001 672 672 672 229 229 229 229 229 229 229 229 229 -796 796 796 699 699 699 331 331 331 331 331 331 331 331 331 -229 229 229 697 697 697 491 491 491 491 491 491 491 491 491 -528 528 528 666 666 666 972 972 972 972 972 972 972 972 972 -339 339 339 657 657 657 702 702 702 702 702 702 702 702 702 -333 333 333 668 668 668 797 797 797 797 797 797 797 797 797 -169 169 169 700 700 700 523 523 523 523 523 523 523 523 523 -795 795 795 673 673 673 327 327 327 327 327 327 327 327 327 -95 95 95 334 334 334 952 952 952 952 952 952 952 952 952 -674 674 674 229 229 229 667 667 667 667 667 667 667 667 667 -996 996 996 652 652 652 654 654 654 654 654 654 654 654 654 -1004 1004 1004 669 669 669 795 795 795 795 795 795 795 795 795 -986 986 986 801 801 801 100 100 100 100 100 100 100 100 100 -330 330 330 791 791 791 329 329 329 329 329 329 329 329 329 -793 793 793 337 337 337 666 666 666 666 666 666 666 666 666 -670 670 670 692 692 692 985 985 985 985 985 985 985 985 985 -527 527 527 338 338 338 700 700 700 700 700 700 700 700 700 -93 93 93 526 526 526 525 525 525 525 525 525 525 525 525 -324 324 324 792 792 792 104 104 104 104 104 104 104 104 104 -676 676 676 667 667 667 169 169 169 169 169 169 169 169 169 -985 985 985 325 325 325 527 527 527 527 527 527 527 527 527 -673 673 673 329 329 329 653 653 653 653 653 653 653 653 653 -677 677 677 798 798 798 651 651 651 651 651 651 651 651 651 -791 791 791 996 996 996 326 326 326 326 326 326 326 326 326 -96 96 96 488 488 488 665 665 665 665 665 665 665 665 665 -329 329 329 322 322 322 248 248 248 248 248 248 248 248 248 -335 335 335 671 671 671 338 338 338 338 338 338 338 338 338 -654 654 654 529 529 529 670 670 670 670 670 670 670 670 670 -992 992 992 341 341 341 796 796 796 796 796 796 796 796 796 -98 98 98 659 659 659 336 336 336 336 336 336 336 336 336 -327 327 327 98 98 98 524 524 524 524 524 524 524 524 524 -794 794 794 990 990 990 798 798 798 798 798 798 798 798 798 -799 799 799 653 653 653 701 701 701 701 701 701 701 701 701 -326 326 326 227 227 227 333 333 333 333 333 333 333 333 333 -690 690 690 122 122 122 656 656 656 656 656 656 656 656 656 -322 322 322 335 335 335 96 96 96 96 96 96 96 96 96 -336 336 336 977 977 977 343 343 343 343 343 343 343 343 343 -489 489 489 676 676 676 325 325 325 325 325 325 325 325 325 -328 328 328 983 983 983 122 122 122 122 122 122 122 122 122 -655 655 655 656 656 656 697 697 697 697 697 697 697 697 697 -798 798 798 336 336 336 664 664 664 664 664 664 664 664 664 -230 230 230 528 528 528 101 101 101 101 101 101 101 101 101 -700 700 700 790 790 790 487 487 487 487 487 487 487 487 487 -92 92 92 979 979 979 982 982 982 982 982 982 982 982 982 -797 797 797 99 99 99 228 228 228 228 228 228 228 228 228 -597 597 597 961 961 961 249 249 249 249 249 249 249 249 249 -337 337 337 793 793 793 123 123 123 123 123 123 123 123 123 -91 91 91 694 694 694 121 121 121 121 121 121 121 121 121 -343 343 343 249 249 249 562 562 562 562 562 562 562 562 562 -691 691 691 980 980 980 698 698 698 698 698 698 698 698 698 -954 954 954 800 800 800 956 956 956 956 956 956 956 956 956 -702 702 702 976 976 976 561 561 561 561 561 561 561 561 561 -694 694 694 247 247 247 598 598 598 598 598 598 598 598 598 -342 342 342 248 248 248 968 968 968 968 968 968 968 968 968 -671 671 671 687 687 687 800 800 800 800 800 800 800 800 800 -340 340 340 95 95 95 987 987 987 987 987 987 987 987 987 -646 646 646 655 655 655 799 799 799 799 799 799 799 799 799 -675 675 675 794 794 794 669 669 669 669 669 669 669 669 669 -325 325 325 343 343 343 677 677 677 677 677 677 677 677 677 -686 686 686 650 650 650 344 344 344 344 344 344 344 344 344 -344 344 344 91 91 91 693 693 693 693 693 693 693 693 693 -652 652 652 345 345 345 971 971 971 971 971 971 971 971 971 -696 696 696 649 649 649 94 94 94 94 94 94 94 94 94 -94 94 94 693 693 693 97 97 97 97 97 97 97 97 97 -695 695 695 806 806 806 323 323 323 323 323 323 323 323 323 -952 952 952 795 795 795 341 341 341 341 341 341 341 341 341 -983 983 983 344 344 344 335 335 335 335 335 335 335 335 335 -693 693 693 985 985 985 526 526 526 526 526 526 526 526 526 -1005 1005 1005 799 799 799 560 560 560 560 560 560 560 560 560 -953 953 953 651 651 651 692 692 692 692 692 692 692 692 692 -974 974 974 340 340 340 673 673 673 673 673 673 673 673 673 -692 692 692 696 696 696 801 801 801 801 801 801 801 801 801 -347 347 347 957 957 957 321 321 321 321 321 321 321 321 321 -248 248 248 803 803 803 227 227 227 227 227 227 227 227 227 -683 683 683 339 339 339 696 696 696 696 696 696 696 696 696 -122 122 122 647 647 647 691 691 691 691 691 691 691 691 691 -532 532 532 96 96 96 98 98 98 98 98 98 98 98 98 -698 698 698 991 991 991 528 528 528 528 528 528 528 528 528 -123 123 123 316 316 316 672 672 672 672 672 672 672 672 672 -323 323 323 974 974 974 91 91 91 91 91 91 91 91 91 -529 529 529 691 691 691 490 490 490 490 490 490 490 490 490 -697 697 697 674 674 674 671 671 671 671 671 671 671 671 671 -653 653 653 94 94 94 695 695 695 695 695 695 695 695 695 -687 687 687 323 323 323 320 320 320 320 320 320 320 320 320 -650 650 650 796 796 796 687 687 687 687 687 687 687 687 687 -124 124 124 807 807 807 488 488 488 488 488 488 488 488 488 -689 689 689 89 89 89 805 805 805 805 805 805 805 805 805 -688 688 688 802 802 802 694 694 694 694 694 694 694 694 694 -962 962 962 321 321 321 996 996 996 996 996 996 996 996 996 -808 808 808 677 677 677 689 689 689 689 689 689 689 689 689 -311 311 311 93 93 93 678 678 678 678 678 678 678 678 678 -651 651 651 682 682 682 1006 1006 1006 1006 1006 1006 1006 1006 1006 -679 679 679 689 689 689 251 251 251 251 251 251 251 251 251 -249 249 249 530 530 530 319 319 319 319 319 319 319 319 319 -319 319 319 92 92 92 980 980 980 980 980 980 980 980 980 -801 801 801 324 324 324 802 802 802 802 802 802 802 802 802 -317 317 317 995 995 995 342 342 342 342 342 342 342 342 342 -345 345 345 695 695 695 557 557 557 557 557 557 557 557 557 -318 318 318 679 679 679 675 675 675 675 675 675 675 675 675 -250 250 250 646 646 646 652 652 652 652 652 652 652 652 652 -1002 1002 1002 804 804 804 95 95 95 95 95 95 95 95 95 -982 982 982 686 686 686 688 688 688 688 688 688 688 688 688 -314 314 314 988 988 988 803 803 803 803 803 803 803 803 803 -1003 1003 1003 648 648 648 347 347 347 347 347 347 347 347 347 -321 321 321 681 681 681 489 489 489 489 489 489 489 489 489 -315 315 315 975 975 975 318 318 318 318 318 318 318 318 318 -994 994 994 124 124 124 322 322 322 322 322 322 322 322 322 -949 949 949 320 320 320 986 986 986 986 986 986 986 986 986 -346 346 346 123 123 123 250 250 250 250 250 250 250 250 250 -960 960 960 347 347 347 988 988 988 988 988 988 988 988 988 -348 348 348 1005 1005 1005 345 345 345 345 345 345 345 345 345 -351 351 351 987 987 987 346 346 346 346 346 346 346 346 346 -320 320 320 90 90 90 89 89 89 89 89 89 89 89 89 -90 90 90 348 348 348 317 317 317 317 317 317 317 317 317 -350 350 350 250 250 250 690 690 690 690 690 690 690 690 690 -316 316 316 959 959 959 313 313 313 313 313 313 313 313 313 -310 310 310 981 981 981 90 90 90 90 90 90 90 90 90 -312 312 312 311 311 311 92 92 92 92 92 92 92 92 92 -979 979 979 315 315 315 316 316 316 316 316 316 316 316 316 -89 89 89 318 318 318 93 93 93 93 93 93 93 93 93 -375 375 375 317 317 317 311 311 311 311 311 311 311 311 311 -959 959 959 346 346 346 124 124 124 124 124 124 124 124 124 -277 277 277 125 125 125 991 991 991 991 991 991 991 991 991 -278 278 278 251 251 251 967 967 967 967 967 967 967 967 967 -251 251 251 313 313 313 88 88 88 88 88 88 88 88 88 -279 279 279 378 378 378 1007 1007 1007 1007 1007 1007 1007 1007 1007 -377 377 377 319 319 319 993 993 993 993 993 993 993 993 993 -993 993 993 308 308 308 1010 1010 1010 1010 1010 1010 1010 1010 1010 -977 977 977 984 984 984 990 990 990 990 990 990 990 990 990 -450 450 450 350 350 350 279 279 279 279 279 279 279 279 279 -252 252 252 314 314 314 1008 1008 1008 1008 1008 1008 1008 1008 1008 -309 309 309 956 956 956 1012 1012 1012 1012 1012 1012 1012 1012 1012 -454 454 454 280 280 280 252 252 252 252 252 252 252 252 252 -125 125 125 349 349 349 348 348 348 348 348 348 348 348 348 -373 373 373 306 306 306 309 309 309 309 309 309 309 309 309 -453 453 453 353 353 353 315 315 315 315 315 315 315 315 315 -561 561 561 372 372 372 994 994 994 994 994 994 994 994 994 -349 349 349 309 309 309 989 989 989 989 989 989 989 989 989 -381 381 381 380 380 380 310 310 310 310 310 310 310 310 310 -276 276 276 465 465 465 351 351 351 351 351 351 351 351 351 -995 995 995 597 597 597 969 969 969 969 969 969 969 969 969 -374 374 374 453 453 453 563 563 563 563 563 563 563 563 563 -376 376 376 312 312 312 1009 1009 1009 1009 1009 1009 1009 1009 1009 -380 380 380 275 275 275 995 995 995 995 995 995 995 995 995 -281 281 281 462 462 462 597 597 597 597 597 597 597 597 597 -958 958 958 88 88 88 125 125 125 125 125 125 125 125 125 -976 976 976 993 993 993 997 997 997 997 997 997 997 997 997 -274 274 274 458 458 458 376 376 376 376 376 376 376 376 376 -372 372 372 561 561 561 372 372 372 372 372 372 372 372 372 -957 957 957 253 253 253 350 350 350 350 350 350 350 350 350 -975 975 975 355 355 355 378 378 378 378 378 378 378 378 378 -88 88 88 374 374 374 377 377 377 377 377 377 377 377 377 -352 352 352 373 373 373 1000 1000 1000 1000 1000 1000 1000 1000 1000 -1006 1006 1006 448 448 448 127 127 127 127 127 127 127 127 127 -961 961 961 310 310 310 1003 1003 1003 1003 1003 1003 1003 1003 1003 -379 379 379 351 351 351 314 314 314 314 314 314 314 314 314 -313 313 313 252 252 252 458 458 458 458 458 458 458 458 458 -370 370 370 967 967 967 253 253 253 253 253 253 253 253 253 -280 280 280 964 964 964 349 349 349 349 349 349 349 349 349 -127 127 127 963 963 963 353 353 353 353 353 353 353 353 353 -455 455 455 379 379 379 280 280 280 280 280 280 280 280 280 -254 254 254 973 973 973 379 379 379 379 379 379 379 379 379 -272 272 272 972 972 972 375 375 375 375 375 375 375 375 375 -466 466 466 352 352 352 383 383 383 383 383 383 383 383 383 -367 367 367 279 279 279 312 312 312 312 312 312 312 312 312 -955 955 955 381 381 381 1002 1002 1002 1002 1002 1002 1002 1002 1002 -306 306 306 452 452 452 277 277 277 277 277 277 277 277 277 -980 980 980 278 278 278 308 308 308 308 308 308 308 308 308 -981 981 981 276 276 276 959 959 959 959 959 959 959 959 959 -562 562 562 307 307 307 373 373 373 373 373 373 373 373 373 -1009 1009 1009 450 450 450 126 126 126 126 126 126 126 126 126 -978 978 978 989 989 989 275 275 275 275 275 275 275 275 275 -1011 1011 1011 1006 1006 1006 278 278 278 278 278 278 278 278 278 -956 956 956 562 562 562 463 463 463 463 463 463 463 463 463 -1007 1007 1007 962 962 962 1001 1001 1001 1001 1001 1001 1001 1001 1001 -973 973 973 969 969 969 957 957 957 957 957 957 957 957 957 -563 563 563 968 968 968 1013 1013 1013 1013 1013 1013 1013 1013 1013 -963 963 963 1007 1007 1007 564 564 564 564 564 564 564 564 564 -596 596 596 970 970 970 958 958 958 958 958 958 958 958 958 -564 564 564 965 965 965 963 963 963 963 963 963 963 963 963 -1010 1010 1010 1008 1008 1008 992 992 992 992 992 992 992 992 992 -964 964 964 563 563 563 1011 1011 1011 1011 1011 1011 1011 1011 1011 -1014 1014 1014 994 994 994 961 961 961 961 961 961 961 961 961 -971 971 971 992 992 992 962 962 962 962 962 962 962 962 962 -1012 1012 1012 971 971 971 966 966 966 966 966 966 966 966 966 -1016 1016 1016 966 966 966 1005 1005 1005 1005 1005 1005 1005 1005 1005 -968 968 968 1011 1011 1011 960 960 960 960 960 960 960 960 960 -1013 1013 1013 596 596 596 1016 1016 1016 1016 1016 1016 1016 1016 1016 -970 970 970 1009 1009 1009 965 965 965 965 965 965 965 965 965 -1008 1008 1008 565 565 565 1004 1004 1004 1004 1004 1004 1004 1004 1004 -1015 1015 1015 1010 1010 1010 596 596 596 596 596 596 596 596 596 -972 972 972 595 595 595 998 998 998 998 998 998 998 998 998 -965 965 965 564 564 564 1015 1015 1015 1015 1015 1015 1015 1015 1015 -969 969 969 1012 1012 1012 565 565 565 565 565 565 565 565 565 -966 966 966 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 1014 -967 967 967 1013 1013 1013 964 964 964 964 964 964 964 964 964 -565 565 565 1036 1036 1036 999 999 999 999 999 999 999 999 999 -1034 1034 1034 594 594 594 566 566 566 566 566 566 566 566 566 -1035 1035 1035 1016 1016 1016 1032 1032 1032 1032 1032 1032 1032 1032 1032 -595 595 595 1015 1015 1015 1031 1031 1031 1031 1031 1031 1031 1031 1031 -1039 1039 1039 1037 1037 1037 567 567 567 567 567 567 567 567 567 -1037 1037 1037 566 566 566 1030 1030 1030 1030 1030 1030 1030 1030 1030 -1036 1036 1036 1038 1038 1038 595 595 595 595 595 595 595 595 595 -1038 1038 1038 1034 1034 1034 1033 1033 1033 1033 1033 1033 1033 1033 1033 -1033 1033 1033 593 593 593 1029 1029 1029 1029 1029 1029 1029 1029 1029 -1040 1040 1040 1035 1035 1035 594 594 594 594 594 594 594 594 594 -1032 1032 1032 567 567 567 1036 1036 1036 1036 1036 1036 1036 1036 1036 -594 594 594 1039 1039 1039 1034 1034 1034 1034 1034 1034 1034 1034 1034 -1030 1030 1030 1033 1033 1033 568 568 568 568 568 568 568 568 568 -1031 1031 1031 1032 1032 1032 1035 1035 1035 1035 1035 1035 1035 1035 1035 -566 566 566 568 568 568 593 593 593 593 593 593 593 593 593 -593 593 593 1043 1043 1043 569 569 569 569 569 569 569 569 569 -1041 1041 1041 1044 1044 1044 1037 1037 1037 1037 1037 1037 1037 1037 1037 -1029 1029 1029 1041 1041 1041 1042 1042 1042 1042 1042 1042 1042 1042 1042 -1042 1042 1042 1046 1046 1046 1039 1039 1039 1039 1039 1039 1039 1039 1039 -1043 1043 1043 1031 1031 1031 1038 1038 1038 1038 1038 1038 1038 1038 1038 -567 567 567 1047 1047 1047 1043 1043 1043 1043 1043 1043 1043 1043 1043 -1044 1044 1044 1045 1045 1045 1044 1044 1044 1044 1044 1044 1044 1044 1044 -1045 1045 1045 1040 1040 1040 1041 1041 1041 1041 1041 1041 1041 1041 1041 -1060 1060 1060 1042 1042 1042 1040 1040 1040 1040 1040 1040 1040 1040 1040 -1046 1046 1046 1030 1030 1030 1046 1046 1046 1046 1046 1046 1046 1046 1046 -1058 1058 1058 1048 1048 1048 570 570 570 570 570 570 570 570 570 -1059 1059 1059 1050 1050 1050 1047 1047 1047 1047 1047 1047 1047 1047 1047 -1048 1048 1048 1029 1029 1029 1045 1045 1045 1045 1045 1045 1045 1045 1045 -1056 1056 1056 569 569 569 1051 1051 1051 1051 1051 1051 1051 1051 1051 -1062 1062 1062 1049 1049 1049 1054 1054 1054 1054 1054 1054 1054 1054 1054 -1047 1047 1047 1051 1051 1051 1050 1050 1050 1050 1050 1050 1050 1050 1050 -1061 1061 1061 570 570 570 1053 1053 1053 1053 1053 1053 1053 1053 1053 -1054 1054 1054 1052 1052 1052 1048 1048 1048 1048 1048 1048 1048 1048 1048 -1053 1053 1053 1053 1053 1053 1049 1049 1049 1049 1049 1049 1049 1049 1049 -1049 1049 1049 1054 1054 1054 1055 1055 1055 1055 1055 1055 1055 1055 1055 -1064 1064 1064 1055 1055 1055 1052 1052 1052 1052 1052 1052 1052 1052 1052 -1052 1052 1052 1057 1057 1057 1062 1062 1062 1062 1062 1062 1062 1062 1062 -568 568 568 1059 1059 1059 1063 1063 1063 1063 1063 1063 1063 1063 1063 -1055 1055 1055 1056 1056 1056 1057 1057 1057 1057 1057 1057 1057 1057 1057 -1057 1057 1057 1061 1061 1061 1056 1056 1056 1056 1056 1056 1056 1056 1056 -1050 1050 1050 1058 1058 1058 1060 1060 1060 1060 1060 1060 1060 1060 1060 -1065 1065 1065 1060 1060 1060 1058 1058 1058 1058 1058 1058 1058 1058 1058 -1063 1063 1063 1062 1062 1062 1064 1064 1064 1064 1064 1064 1064 1064 1064 -1051 1051 1051 1063 1063 1063 1059 1059 1059 1059 1059 1059 1059 1059 1059 -569 569 569 1065 1065 1065 1061 1061 1061 1061 1061 1061 1061 1061 1061 -570 570 570 1066 1066 1066 1065 1065 1065 1065 1065 1065 1065 1065 1065 -1067 1067 1067 1064 1064 1064 1068 1068 1068 1068 1068 1068 1068 1068 1068 -1066 1066 1066 1069 1069 1069 1069 1069 1069 1069 1069 1069 1069 1069 1069 -1068 1068 1068 1070 1070 1070 1066 1066 1066 1066 1066 1066 1066 1066 1066 -1071 1071 1071 1079 1079 1079 1070 1070 1070 1070 1070 1070 1070 1070 1070 -1069 1069 1069 1067 1067 1067 1071 1071 1071 1071 1071 1071 1071 1071 1071 -1070 1070 1070 1068 1068 1068 1072 1072 1072 1072 1072 1072 1072 1072 1072 -1072 1072 1072 1071 1071 1071 1067 1067 1067 1067 1067 1067 1067 1067 1067 -1073 1073 1073 1072 1072 1072 1075 1075 1075 1075 1075 1075 1075 1075 1075 -1074 1074 1074 1073 1073 1073 1074 1074 1074 1074 1074 1074 1074 1074 1074 -1078 1078 1078 1074 1074 1074 1073 1073 1073 1073 1073 1073 1073 1073 1073 -1075 1075 1075 1075 1075 1075 1077 1077 1077 1077 1077 1077 1077 1077 1077 -1077 1077 1077 1076 1076 1076 1076 1076 1076 1076 1076 1076 1076 1076 1076 -1079 1079 1079 1077 1077 1077 1079 1079 1079 1079 1079 1079 1079 1079 1079 -1120 1120 1120 1078 1078 1078 1144 1144 1144 1144 1144 1144 1144 1144 1144 -1076 1076 1076 1080 1080 1080 1078 1078 1078 1078 1078 1078 1078 1078 1078 -1080 1080 1080 1081 1081 1081 1080 1080 1080 1080 1080 1080 1080 1080 1080 -1081 1081 1081 1082 1082 1082 1081 1081 1081 1081 1081 1081 1081 1081 1081 -1082 1082 1082 1083 1083 1083 1082 1082 1082 1082 1082 1082 1082 1082 1082 -1083 1083 1083 1084 1084 1084 1083 1083 1083 1083 1083 1083 1083 1083 1083 -1084 1084 1084 1085 1085 1085 1084 1084 1084 1084 1084 1084 1084 1084 1084 -1085 1085 1085 1086 1086 1086 1085 1085 1085 1085 1085 1085 1085 1085 1085 -1086 1086 1086 1087 1087 1087 1086 1086 1086 1086 1086 1086 1086 1086 1086 -1087 1087 1087 1088 1088 1088 1087 1087 1087 1087 1087 1087 1087 1087 1087 -1088 1088 1088 1089 1089 1089 1088 1088 1088 1088 1088 1088 1088 1088 1088 -1089 1089 1089 1090 1090 1090 1089 1089 1089 1089 1089 1089 1089 1089 1089 -1090 1090 1090 1091 1091 1091 1090 1090 1090 1090 1090 1090 1090 1090 1090 -1091 1091 1091 1092 1092 1092 1091 1091 1091 1091 1091 1091 1091 1091 1091 -1092 1092 1092 1093 1093 1093 1092 1092 1092 1092 1092 1092 1092 1092 1092 -1093 1093 1093 1094 1094 1094 1093 1093 1093 1093 1093 1093 1093 1093 1093 -1094 1094 1094 1095 1095 1095 1094 1094 1094 1094 1094 1094 1094 1094 1094 -1095 1095 1095 1096 1096 1096 1095 1095 1095 1095 1095 1095 1095 1095 1095 -1096 1096 1096 1097 1097 1097 1096 1096 1096 1096 1096 1096 1096 1096 1096 -1097 1097 1097 1098 1098 1098 1097 1097 1097 1097 1097 1097 1097 1097 1097 -1098 1098 1098 1099 1099 1099 1098 1098 1098 1098 1098 1098 1098 1098 1098 -1099 1099 1099 1100 1100 1100 1099 1099 1099 1099 1099 1099 1099 1099 1099 -1100 1100 1100 1101 1101 1101 1100 1100 1100 1100 1100 1100 1100 1100 1100 -1101 1101 1101 1102 1102 1102 1101 1101 1101 1101 1101 1101 1101 1101 1101 -1102 1102 1102 1103 1103 1103 1102 1102 1102 1102 1102 1102 1102 1102 1102 -1103 1103 1103 1104 1104 1104 1103 1103 1103 1103 1103 1103 1103 1103 1103 -1104 1104 1104 1105 1105 1105 1104 1104 1104 1104 1104 1104 1104 1104 1104 -1105 1105 1105 1106 1106 1106 1105 1105 1105 1105 1105 1105 1105 1105 1105 -1106 1106 1106 1107 1107 1107 1106 1106 1106 1106 1106 1106 1106 1106 1106 -1107 1107 1107 1108 1108 1108 1107 1107 1107 1107 1107 1107 1107 1107 1107 -1108 1108 1108 1109 1109 1109 1108 1108 1108 1108 1108 1108 1108 1108 1108 -1109 1109 1109 1110 1110 1110 1109 1109 1109 1109 1109 1109 1109 1109 1109 -1110 1110 1110 1111 1111 1111 1110 1110 1110 1110 1110 1110 1110 1110 1110 -1111 1111 1111 1112 1112 1112 1111 1111 1111 1111 1111 1111 1111 1111 1111 -1112 1112 1112 1113 1113 1113 1112 1112 1112 1112 1112 1112 1112 1112 1112 -1113 1113 1113 1114 1114 1114 1113 1113 1113 1113 1113 1113 1113 1113 1113 -1114 1114 1114 1115 1115 1115 1114 1114 1114 1114 1114 1114 1114 1114 1114 -1115 1115 1115 1116 1116 1116 1115 1115 1115 1115 1115 1115 1115 1115 1115 -1116 1116 1116 1117 1117 1117 1116 1116 1116 1116 1116 1116 1116 1116 1116 -1117 1117 1117 1118 1118 1118 1117 1117 1117 1117 1117 1117 1117 1117 1117 -1118 1118 1118 1119 1119 1119 1118 1118 1118 1118 1118 1118 1118 1118 1118 -1119 1119 1119 1120 1120 1120 1119 1119 1119 1119 1119 1119 1119 1119 1119 -1121 1121 1121 1121 1121 1121 1120 1120 1120 1120 1120 1120 1120 1120 1120 -1122 1122 1122 1122 1122 1122 1121 1121 1121 1121 1121 1121 1121 1121 1121 -1123 1123 1123 1123 1123 1123 1122 1122 1122 1122 1122 1122 1122 1122 1122 -1124 1124 1124 1124 1124 1124 1123 1123 1123 1123 1123 1123 1123 1123 1123 -1125 1125 1125 1125 1125 1125 1124 1124 1124 1124 1124 1124 1124 1124 1124 -1126 1126 1126 1126 1126 1126 1125 1125 1125 1125 1125 1125 1125 1125 1125 -1127 1127 1127 1127 1127 1127 1126 1126 1126 1126 1126 1126 1126 1126 1126 -1128 1128 1128 1128 1128 1128 1127 1127 1127 1127 1127 1127 1127 1127 1127 -1129 1129 1129 1129 1129 1129 1128 1128 1128 1128 1128 1128 1128 1128 1128 -1130 1130 1130 1130 1130 1130 1129 1129 1129 1129 1129 1129 1129 1129 1129 -1131 1131 1131 1131 1131 1131 1130 1130 1130 1130 1130 1130 1130 1130 1130 -1132 1132 1132 1132 1132 1132 1131 1131 1131 1131 1131 1131 1131 1131 1131 -1133 1133 1133 1133 1133 1133 1132 1132 1132 1132 1132 1132 1132 1132 1132 -1134 1134 1134 1134 1134 1134 1133 1133 1133 1133 1133 1133 1133 1133 1133 -1135 1135 1135 1135 1135 1135 1134 1134 1134 1134 1134 1134 1134 1134 1134 -1136 1136 1136 1136 1136 1136 1135 1135 1135 1135 1135 1135 1135 1135 1135 -1137 1137 1137 1137 1137 1137 1136 1136 1136 1136 1136 1136 1136 1136 1136 -1138 1138 1138 1138 1138 1138 1137 1137 1137 1137 1137 1137 1137 1137 1137 -1139 1139 1139 1139 1139 1139 1138 1138 1138 1138 1138 1138 1138 1138 1138 -1140 1140 1140 1140 1140 1140 1139 1139 1139 1139 1139 1139 1139 1139 1139 -1141 1141 1141 1141 1141 1141 1140 1140 1140 1140 1140 1140 1140 1140 1140 -1142 1142 1142 1142 1142 1142 1141 1141 1141 1141 1141 1141 1141 1141 1141 -1143 1143 1143 1143 1143 1143 1142 1142 1142 1142 1142 1142 1142 1142 1142 -1144 1144 1144 1144 1144 1144 1143 1143 1143 1143 1143 1143 1143 1143 1143 diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_3_ber_input.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_3_ber_input.data deleted file mode 100644 index 2aa26aecaa..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_3_ber_input.data +++ /dev/null @@ -1,15 +0,0 @@ -113414384937002 131517565524606 129730254963376 -113414384937002 123866299686337 115917804230772 -113414384937002 101151759096365 83691224180787 -112799947274473 115586271416062 116656733257003 -112799947274473 114899680835564 115043361830075 -112799947274473 114104728776259 113602205628177 -113424995683034 121837881481439 121365633139536 -113424995683034 118961749743960 116098064564167 -113424995683034 102037257121101 95624082560989 -113424995683034 101739059890975 95328305658243 -113424995683034 101574718384712 95300126750377 -113424995683034 100165503194647 94496444773102 -113424995683034 99275504663649 94478204760528 -113424995683034 98458947298318 94316832384981 -113424995683034 97452545880935 93624665468982 diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data deleted file mode 100644 index cc0f2949e1..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data +++ /dev/null @@ -1 +0,0 @@ -293 164 89 287 259 242 311 251 211 211 211 213 216 221 227 \ No newline at end of file diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data deleted file mode 100644 index 400885c4cd..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data +++ /dev/null @@ -1,1536 +0,0 @@ -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 6 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 6 6 6 4 4 4 4 4 4 4 4 4 -4 4 4 6 6 6 6 4 4 4 4 4 4 6 6 -4 4 4 6 6 6 6 4 4 4 4 4 4 4 4 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -6 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 -4 4 4 6 4 4 6 4 4 4 4 4 4 4 6 -4 4 4 6 6 6 6 4 4 4 4 4 4 4 6 -4 4 4 6 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 2 2 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -2 2 2 3 3 3 3 2 2 2 3 3 3 3 3 -2 2 2 3 3 3 3 2 2 2 2 2 2 3 3 -2 2 2 3 3 3 3 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 3 2 2 2 2 2 2 2 3 -2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -2 2 2 3 3 3 3 2 2 2 2 2 3 3 3 -2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 -3 3 3 3 3 3 4 3 3 3 3 3 4 4 4 -3 3 3 4 4 4 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 2 3 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 -2 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 -0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 -0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 -0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 2 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 1 1 1 1 2 2 2 2 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 3 2 2 2 2 2 2 2 2 2 -2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 3 3 2 3 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 3 2 2 2 2 2 2 3 3 -2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -2 1 1 2 2 2 2 1 1 1 2 2 2 2 2 -2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 1 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 2 2 2 2 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 1 1 1 1 1 2 2 2 -1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 2 2 2 2 2 2 2 2 2 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 -1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 2 1 1 1 1 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 2 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 2 1 1 1 1 1 2 2 2 -1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 -1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 -1 1 1 2 1 1 2 2 2 2 2 2 2 2 2 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 2 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 -0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data b/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data deleted file mode 100644 index 8299f1b386..0000000000 --- a/cesar/ce/rx/bitloading/test/data/bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data +++ /dev/null @@ -1 +0,0 @@ -164 89 91 259 242 232 251 211 211 211 213 216 221 227 234 \ No newline at end of file diff --git a/cesar/ce/rx/bitloading/test/data/test_content.txt b/cesar/ce/rx/bitloading/test/data/test_content.txt index a00eaa18f3..11c6f91edb 100644 --- a/cesar/ce/rx/bitloading/test/data/test_content.txt +++ b/cesar/ce/rx/bitloading/test/data/test_content.txt @@ -1,30 +1,14 @@ ----------------------------- Script file information ----------------------------- -test generated on = 02-Oct-2012 at 13:3 +test generated on = 12-Oct-2012 at 11:58 test vectors generated using: SubWCRev: 'E:\projet\PLC\DSP_chain_oct_2012\Simu\BitLoading\testVectorGeneration.m' -Last committed at revision 18959 -Updated to revision 18959 +Last committed at revision 19029 +Updated to revision 19029 --------------------------------- bitloading test --------------------------------- SNR = 10 dB tonemap_initial_under_ber_Xdb_nsr_margin_X_XX_ber_margin generated for 0.76 coderate final tonemap code rate is 0.76 -------------------------------- tonemap update test ------------------------------- -fast and slow are in the same side --> lower carriers -fast and slow are in the same side --> lower carriers -both mean BER are under the inf limit --> boost carriers -fast and slow are in the same side --> lower carriers -fast and slow are in the same side --> lower carriers -fast and slow are in the same side --> lower carriers -fast and slow are in the same side --> lower carriers -fast and slow are in the same side --> lower carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers -both mean BER are under the inf limit --> boost carriers ------------------------------------ Pber test ------------------------------------ PB_MEAN_COEF = 6912 NB iterations = 30 diff --git a/cesar/ce/rx/bitloading/test/src/test_bl.c b/cesar/ce/rx/bitloading/test/src/test_bl.c index 68630e26b7..6d3788f3ef 100644 --- a/cesar/ce/rx/bitloading/test/src/test_bl.c +++ b/cesar/ce/rx/bitloading/test/src/test_bl.c @@ -45,13 +45,6 @@ #include "tonemap_initial_3db_nsr_margin_0_00_ber_margin.h" #include "tonemap_initial_3db_nsr_margin_0_01_ber_margin.h" #include "tonemap_initial_under_ber_0db_nsr_margin_0_00_ber_margin.h" -#include "bl_iteratif_opti_table_shift.h" -#include "bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.h" -#include "bl_iteratif_tm_update_new_tm_IN_2_opti_table.h" -#include "bl_iteratif_tm_update_new_tm_IN_3_ber_input.h" -#include "bl_iteratif_tm_update_new_tm_IN_4_cursor_input.h" -#include "bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.h" -#include "bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.h" #include "ber_quantify.h" #include @@ -1264,754 +1257,6 @@ test_suite_ce_rx_bl_tm_configuration (test_t t) test_bl_after_nsr_sound_uninit (&bl); } -static void -test_suite_ce_rx_bl_tm_update (test_t t) -{ - /** - * Test for the number of tones to shift in the optimization table - * depending of a BER target. - */ - test_begin (t, "test the optimization table shift counter") - { - ce_rx_bl_tone_map_update_actions_t out_action; - u16 out; - u64 means[CE_RX_BL_BER_SLIDING_MEAN_NB]; - uint test_cpt = 0; - u64 ber_target = 1000; - - for (test_cpt = 0; test_cpt < 9; test_cpt++) - { - /* - * Each ber means can be in 3 zones: - * (1) Above the ber target. - * (2) Between ber target and 10% of ber target. - * (3) Under 10% of ber target. - * This suppose 3^2=9 different positions. - */ - switch (test_cpt) - { - case 0: - /* Slow (1) and Fast (1). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 1200; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 1200; - break; - case 1: - /* Slow (1) and Fast (2). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 1200; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 999; - break; - case 2: - /* Slow (1) and Fast (3). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 1200; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 42; - break; - case 3: - /* Slow (2) and Fast (1). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 999; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 1200; - break; - case 4: - /* Slow (2) and Fast (2). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 999; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 999; - break; - case 5: - /* Slow (2) and Fast (3). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 999; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 42; - break; - case 6: - /* Slow (3) and Fast (1). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 42; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 1200; - break; - case 7: - /* Slow (3) and Fast (2). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 42; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 999; - break; - case 8: - /* Slow (3) and Fast (3). */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 42; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 42; - break; - } - - /* Compute action to perform. */ - out_action = ce_rx_bl_tone_map_update_action (ber_target, means); - - /* Output of the tested function. */ - out = ce_rx_bl_tone_map_update_count (out_action, - ber_target, - means); - - /* Tests. */ - test_fail_if (out_action == CE_RX_BL_TONE_MAP_UPDATE_NONE - && out != 0); - test_fail_if (out_action == CE_RX_BL_TONE_MAP_UPDATE_MINUS - && out == 0); - test_fail_if (out_action == CE_RX_BL_TONE_MAP_UPDATE_PLUS - && out == 0); - test_fail_if (out_action != CE_RX_BL_TONE_MAP_UPDATE_NONE - && out_action != CE_RX_BL_TONE_MAP_UPDATE_MINUS - && out_action != CE_RX_BL_TONE_MAP_UPDATE_PLUS); - } - } test_end; - - /** - * Test for the number of tones to shift in the optimization table - * depending of a BER target. Data used here come from vector test. - */ - test_begin (t, "test the optimization table shift counter (test vector)") - { - /* Input data from test vector. */ - u64 ber_target; - u64 means[CE_RX_BL_BER_SLIDING_MEAN_NB]; - /* Output data from test vector. */ - u16 shift_count; - ce_rx_bl_tone_map_update_actions_t action; - - u16 t; - - for (t = 0; t < bl_iteratif_opti_table_shift_height; t++) - { - /* Fill with data from test vector. */ - ber_target = bl_iteratif_opti_table_shift[t][0]; - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = bl_iteratif_opti_table_shift[t][1]; - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = bl_iteratif_opti_table_shift[t][2]; - shift_count = bl_iteratif_opti_table_shift[t][3]; - action = bl_iteratif_opti_table_shift[t][4]; - - /* Check the performed action is correct. */ - test_fail_if (action != - ce_rx_bl_tone_map_update_action (ber_target, - means)); - /* Check the shift count is correct. */ - test_fail_if (shift_count != - ce_rx_bl_tone_map_update_count (action, - ber_target, - means)); - } - } test_end; - - /** - * Test to check the tone map update action to perform - * depending of sliding means and ber target. - * Each ber means can be in 3 zones: - * (1) Above the ber target. - * (2) Between ber target and 10% of ber target. - * (3) Under 10% of ber target. - * This suppose 3^2=9 different positions. - */ - test_begin (t, "test update action to perform considering sliding means") - { - ce_rx_bl_tone_map_update_actions_t out; - u64 ber_target = 0; - u64 ber_target_limit = 0; - u64 means[CE_RX_BL_BER_SLIDING_MEAN_NB]; - - lib_rnd_t rand; - lib_rnd_init (&rand, 4251); - uint test_limit = 300; - uint all[9] = {0,0,0,0,0,0,0,0,0}; - u8 test_finished = 0; - u8 cpt, cpt2; - - while (!test_finished) - { - /* Generate random ber means and target. */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = lib_rnd32 (&rand) - + ((u64) lib_rnd32 (&rand) << 32); - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = lib_rnd32 (&rand) - + ((u64) lib_rnd32 (&rand) << 32); - ber_target = ((u64) lib_rnd32 (&rand) << 32) + lib_rnd32 (&rand); - ber_target_limit = ber_target - (u64) (ber_target - / CE_RX_BL_TONE_MAP_UPDATE_MIDDLE_PERCENTAGE); - - /* Get output of the function under test. */ - out = ce_rx_bl_tone_map_update_action (ber_target, - means); - - /* Slow (1) and Fast (1). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] > ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] > ber_target) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_MINUS); - if (all[0] < test_limit) - all[0]++; - } - - /* Slow (1) and Fast (2). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] > ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] >= ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_NONE); - if (all[1] < test_limit) - all[1]++; - } - - /* Slow (1) and Fast (3). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] > ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] < ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_NONE); - if (all[2] < test_limit) - all[2]++; - } - - /* Slow (2) and Fast (1). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] >= ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] > ber_target) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_MINUS); - if (all[3] < test_limit) - all[3]++; - } - - /* Slow (2) and Fast (2). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] >= ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] >= ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_NONE); - if (all[4] < test_limit) - all[4]++; - } - - /* Slow (2) and Fast (3). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] > ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] < ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_NONE); - if (all[5] < test_limit) - all[5]++; - } - - /* Slow (3) and Fast (1). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] < ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] > ber_target) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_MINUS); - if (all[6] < test_limit) - all[6]++; - } - - /* Slow (3) and Fast (2). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] < ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] <= ber_target - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] >= ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_NONE); - if (all[7] < test_limit) - all[7]++; - } - - /* Slow (3) and Fast (3). */ - if (means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] < ber_target_limit - && means[CE_RX_BL_BER_SLIDING_MEAN_FAST] < ber_target_limit) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_PLUS); - if (all[8] < test_limit) - all[8]++; - } - - /* Is this the end ? */ - cpt2 = 0; - for (cpt = 0; cpt < 9; cpt++) - if (all[cpt] >= test_limit) - cpt2++; - else - break; - if (cpt2 == 9) - test_finished = 1; - else - cpt2 = 0; - } - } test_end; - - /** - * Test for creating a new tone map based on old one with some - * adjustments done using the optimization table. - * This test verify that we do not compute a new tone map when we - * we don't need to. - */ - test_begin (t, "Verify that we don't do any thing when we don't need to") - { - ce_rx_bl_tone_map_update_status_t out = 0; - u64 ber_target = 0; - ce_rx_bitloading_t bl; - uint tone_en = 0; - tonemap_t *new_tonemap = NULL; - tonemap_t *tm = NULL; - - tm = tonemap_alloc (); - ber_target = 100; - ce_rx_bitloading_init (&bl); - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 99; - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 98; - bl.opti_table_cursor = 100; - bl.opti_table = blk_table_init (sizeof (u16), PHY_CARRIER_NB); - - out = ce_rx_bl_tone_map_update_compute_new_tonemap (&bl, - ber_target, - tm, - tone_en, - &new_tonemap); - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_STATUS_NOTHING); - test_fail_if (new_tonemap != NULL); - test_fail_if (bl.opti_table_cursor != 100); - tonemap_free (tm); - ce_rx_bitloading_uninit (&bl); - } test_end; - - /** - * Test for creating a new tone map based on old one with some - * adjustments done using the optimization table. - * This test verify that we correctly compute a new tone when we have - * to do a Tone Map +. - */ - test_begin (t, "Verify TM+ in a classic case") - { - ce_rx_bl_tone_map_update_status_t out = 0; - u64 ber_target = 0; - ce_rx_bitloading_t bl; - uint tone_en = 0; - tonemap_t *new_tonemap = NULL; - tonemap_t *tm = NULL; - tonemask_info_t ti; - - uint i = 0; - uint old_opti_cursor = 0; - uint bits_per_symbol = 0; - u16 *tmp; - - /* Preparing input data and supposed output. */ - ti.carrier_nb = tonemask_default (ti.tonemask); - tm = tonemap_alloc (); - tone_en = ti.carrier_nb; - ce_rx_bitloading_init (&bl); - bl.opti_table = blk_table_init (sizeof (u16), tone_en); - uint pos_opti = 0; - uint tone_index_real = 0; -#define TONEMAP_WRITE_OPEN { -#define TONEMAP_WRITE_CLOSE } - TONEMAP_WRITE_BEGIN (tm, ti.tonemask) - { - tmp = (u16 *) blk_table_get (bl.opti_table, pos_opti++); - *tmp = tone_index_real++; - TONEMAP_WRITE_MOD (1); - tm->bits_per_symbol += CE_BIT_PER_MOD[1]; - } - TONEMAP_WRITE_CLOSE - else - TONEMAP_WRITE_OPEN - { - tone_index_real++; - } - TONEMAP_WRITE_END; -#undef TONEMAP_WRITE_OPEN -#undef TONEMAP_WRITE_CLOSE - bl.opti_table_cursor = tone_en / 2; - old_opti_cursor = bl.opti_table_cursor; - /* Produce a TM+ operation. */ - ber_target = 100; - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 40; - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 30; - - /* Test. */ - out = ce_rx_bl_tone_map_update_compute_new_tonemap (&bl, - ber_target, - tm, - tone_en, - &new_tonemap); - - /* Check basic errors. */ - if (ce_rx_bl_tone_map_update_count (CE_RX_BL_TONE_MAP_UPDATE_PLUS, - ber_target, (u64 *) bl.ber_sliding_mean) - + bl.opti_table_cursor <= tone_en) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_STATUS_OK); - test_fail_if (bl.opti_table_cursor != old_opti_cursor - + ce_rx_bl_tone_map_update_count ( - CE_RX_BL_TONE_MAP_UPDATE_PLUS, ber_target, (u64 *) bl.ber_sliding_mean)); - } - else - { - test_fail_if (out != - CE_RX_BL_TONE_MAP_UPDATE_STATUS_OUT_OF_RANGE_MAX); - test_fail_if (bl.opti_table_cursor != tone_en - 1); - } - test_fail_if (new_tonemap == NULL); - - /* Verify updated values in the new tone map */ - for (i = old_opti_cursor; i < bl.opti_table_cursor; i++) - { - u32 *word_ptr_old = NULL; - u32 *word_ptr_new = NULL; - tmp = (u16 *) blk_table_get (bl.opti_table, i); - u8 mod_old = tonemap_get_tone (tm, - *tmp, - &word_ptr_old); - u8 mod_new = tonemap_get_tone (new_tonemap, - *tmp, - &word_ptr_new); - test_fail_if (mod_old != 1); - test_fail_if (mod_new != 2); - - bits_per_symbol += CE_BIT_PER_MOD[mod_new]; - bits_per_symbol -= CE_BIT_PER_MOD[mod_old]; - } - - /* Check that bits per symbol is ok. */ - test_fail_if (tm->bits_per_symbol + bits_per_symbol != - new_tonemap->bits_per_symbol); - - /* Cleanup */ - ce_rx_bitloading_uninit (&bl); - tonemap_free (tm); - tonemap_free (new_tonemap); - } test_end; - - /** - * Test for creating a new tone map based on old one with some - * adjustments done using the optimization table. - * This test verify that we correctly compute a new tone when we have - * to do a Tone Map -. - */ - test_begin (t, "Verify TM- in a classic case") - { - ce_rx_bl_tone_map_update_status_t out = 0; - u64 ber_target = 0; - ce_rx_bitloading_t bl; - uint tone_en = 0; - tonemap_t *new_tonemap = NULL; - tonemap_t *tm = NULL; - tonemask_info_t ti; - - uint i = 0; - uint old_opti_cursor = 0; - uint bits_per_symbol = 0; - u16 *tmp; - - /* Preparing input data and supposed output. */ - ti.carrier_nb = tonemask_default (ti.tonemask); - tm = tonemap_alloc (); - tone_en = ti.carrier_nb; - ce_rx_bitloading_init (&bl); - bl.opti_table = blk_table_init (sizeof (u16), tone_en); - uint pos_opti = 0; - uint tone_index_real = 0; -#define TONEMAP_WRITE_OPEN { -#define TONEMAP_WRITE_CLOSE } - TONEMAP_WRITE_BEGIN (tm, ti.tonemask) - { - tmp = (u16 *) blk_table_get (bl.opti_table, pos_opti++); - *tmp = tone_index_real++; - TONEMAP_WRITE_MOD (1); - tm->bits_per_symbol += CE_BIT_PER_MOD[1]; - } - TONEMAP_WRITE_CLOSE - else - TONEMAP_WRITE_OPEN - { - tone_index_real++; - } - TONEMAP_WRITE_END; -#undef TONEMAP_WRITE_OPEN -#undef TONEMAP_WRITE_CLOSE - bl.opti_table_cursor = tone_en / 2; - old_opti_cursor = bl.opti_table_cursor; - /* Produce a TM- operation. */ - ber_target = 100; - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_FAST] = 120; - bl.ber_sliding_mean[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = 123; - - /* Test. */ - out = ce_rx_bl_tone_map_update_compute_new_tonemap (&bl, - ber_target, - tm, - tone_en, - &new_tonemap); - - /* Check basic errors. */ - if ((int) bl.opti_table_cursor - (int) ce_rx_bl_tone_map_update_count ( - CE_RX_BL_TONE_MAP_UPDATE_MINUS, - ber_target, (u64 *) bl.ber_sliding_mean) >= 0) - { - test_fail_if (out != CE_RX_BL_TONE_MAP_UPDATE_STATUS_OK); - test_fail_if (bl.opti_table_cursor != old_opti_cursor - - ce_rx_bl_tone_map_update_count (CE_RX_BL_TONE_MAP_UPDATE_MINUS - , ber_target, (u64 *) bl.ber_sliding_mean)); - } - else - { - test_fail_if (out != - CE_RX_BL_TONE_MAP_UPDATE_STATUS_OUT_OF_RANGE_MIN); - test_fail_if (bl.opti_table_cursor != tone_en - 1); - } - test_fail_if (new_tonemap == NULL); - - /* Verify updated values in the new tone map */ - for (i = bl.opti_table_cursor; - i < old_opti_cursor; - i++) - { - u32 *word_ptr_old = NULL; - u32 *word_ptr_new = NULL; - tmp = (u16 *) blk_table_get (bl.opti_table, i); - u8 mod_old = tonemap_get_tone (tm, - *tmp, - &word_ptr_old); - u8 mod_new = tonemap_get_tone (new_tonemap, - *tmp, - &word_ptr_new); - - test_fail_if (mod_old != 1); - test_fail_if (mod_new != 0); - - bits_per_symbol += CE_BIT_PER_MOD[mod_new]; - bits_per_symbol -= CE_BIT_PER_MOD[mod_old]; - } - - /* Check that bits per symbol is ok. */ - test_fail_if (tm->bits_per_symbol + bits_per_symbol != - new_tonemap->bits_per_symbol); - - /* Cleanup */ - ce_rx_bitloading_uninit (&bl); - tonemap_free (tm); - tonemap_free (new_tonemap); - } test_end; - - /* - * Test if the computation of a new tone map after a tone map update - * operation is correct. Data used here come from vector test. - */ - test_begin (t, "test tone map creation using tone map update (test vector)") - { - u16 t; - u64 i,j; - /* Preparing data from test vector. */ - /* Tone map input from - * bl_iteratif_tm_update_new_tm_IN_1_tone_map_input.data. */ - tonemap_t *tm_in = tonemap_alloc (); - /* Optimisation table from - * bl_iteratif_tm_update_new_tm_IN_2_opti_table.data. */ - u16 opti[PHY_CARRIER_NB]; - /* Ber target (and sliding means) input from - * bl_iteratif_tm_update_new_tm_IN_3_ber_input.data. */ - u64 ber_target; - u64 means[CE_RX_BL_BER_SLIDING_MEAN_NB]; - /* Cursor input position from - * bl_iteratif_tm_update_new_tm_IN_4_cursor_input.data. */ - uint curs_in; - /* Tone map output from - * bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output.data. */ - tonemap_t *tm_out = tonemap_alloc (); - /* Cursor output position from - * bl_iteratif_tm_update_new_tm_OUT_2_cursor_output.data. */ - uint curs_out; - /* Default tonemask. */ - tonemask_info_t dtmask; - dtmask.carrier_nb = tonemask_default (dtmask.tonemask); - /* Variables to check sanity of test vectors. */ - u16 shift_count; - ce_rx_bl_tone_map_update_actions_t action; - /* Variables to check function output. */ - tonemap_t *computed_tm; - ce_rx_bl_tone_map_update_status_t status; - uint test_curs; - /* The opposite of CE_BIT_PER_MOD. */ - uint ce_mod_per_bit[CE_BIT_PER_MOD[CE_MOD_COUNT - 1]]; - for (i = 0; i < CE_MOD_COUNT; i++) - ce_mod_per_bit[CE_BIT_PER_MOD[i]] = i; - - /* For each tone maps, test the computation of the new tone map based - * on the optimization table and ber parameters. */ - for (t = 0; - t < bl_iteratif_tm_update_new_tm_IN_1_tone_map_input_width; - t++) - { - /* Fill with data from test vector. */ - /* Input tone map. */ - j = 0; -#define TONEMAP_WRITE_OPEN { -#define TONEMAP_WRITE_CLOSE } - TONEMAP_WRITE_BEGIN (tm_in, dtmask.tonemask) - { - TONEMAP_WRITE_MOD ( - ce_mod_per_bit[ - bl_iteratif_tm_update_new_tm_IN_1_tone_map_input[j][t] - ]); - j++; - } - TONEMAP_WRITE_CLOSE - else - TONEMAP_WRITE_OPEN - { - j++; - } - TONEMAP_WRITE_END; -#undef TONEMAP_WRITE_OPEN -#undef TONEMAP_WRITE_CLOSE - /* Optimisation table. */ - for (i = 0; - i < bl_iteratif_tm_update_new_tm_IN_2_opti_table_height; - i++) - /* The first 75 carriers are not considered, look - * documentation of tonemask_default in - * mac/common/src/tonemask.c. The soustracted value is 75 (and - * not 74 because the input data begin at 1 (and not 0). */ - opti[i] = bl_iteratif_tm_update_new_tm_IN_2_opti_table[i][t] - - (PHY_CARRIER_OFFSET + 1); - /* Ber target. */ - ber_target = bl_iteratif_tm_update_new_tm_IN_3_ber_input[t][0]; - /* Slow mean. */ - means[CE_RX_BL_BER_SLIDING_MEAN_SLOW] = - bl_iteratif_tm_update_new_tm_IN_3_ber_input[t][1]; - /* Fast Mean. */ - means[CE_RX_BL_BER_SLIDING_MEAN_FAST] = - bl_iteratif_tm_update_new_tm_IN_3_ber_input[t][2]; - /* Input Cursor. */ - curs_in = bl_iteratif_tm_update_new_tm_IN_4_cursor_input[0][t]; - test_curs = curs_in; - /* Output tone map. */ - j = 0; -#define TONEMAP_WRITE_OPEN { -#define TONEMAP_WRITE_CLOSE } - TONEMAP_WRITE_BEGIN (tm_out, dtmask.tonemask) - { - TONEMAP_WRITE_MOD ( - ce_mod_per_bit[ - bl_iteratif_tm_update_new_tm_OUT_1_tone_map_output[j][t] - ]); - j++; - } - TONEMAP_WRITE_CLOSE - else - TONEMAP_WRITE_OPEN - { - j++; - } - TONEMAP_WRITE_END; -#undef TONEMAP_WRITE_OPEN -#undef TONEMAP_WRITE_CLOSE - /* Output cursor. */ - curs_out = bl_iteratif_tm_update_new_tm_OUT_2_cursor_output[0][t]; - - /* Sanity check: is the shift count is valid ? */ - action = ce_rx_bl_tone_map_update_action (ber_target, - means); - shift_count = MAX (curs_in, curs_out) - MIN (curs_in, curs_out); - test_fail_if (shift_count != - ce_rx_bl_tone_map_update_count (action, - ber_target, - means)); - - /* Sanity check: is the optimization table valid ? - * At the cursor position and after, tones should be strictly - * under a modulation of 10 bits (except the end of the table). - * Below the cursor, tones should > 0. */ - for (i = 0; i < dtmask.carrier_nb; i++) - { - u32 *word_ptr = NULL; - u8 mod = tonemap_get_tone (tm_in, - opti[i], - &word_ptr); - if (i < curs_in) - test_fail_if (mod == 0); - } - - /* Fill input data in ce_rx_bitloading_t structure. */ - ce_rx_bitloading_t bl; - ce_rx_bitloading_init (&bl); - u16 *tmp; - for (i = 0; i < CE_RX_BL_BER_SLIDING_MEAN_NB; i++) - bl.ber_sliding_mean[i] = (s64) means[i]; - bl.opti_table_cursor = test_curs; - bl.opti_table = blk_table_init (sizeof (u16), - bl_iteratif_tm_update_new_tm_IN_2_opti_table_height); - for (i = 0; - i < bl_iteratif_tm_update_new_tm_IN_2_opti_table_height; - i++) - { - tmp = (u16 *) blk_table_get (bl.opti_table, i); - *tmp = opti[i]; - } - - /* Test function. */ - status = ce_rx_bl_tone_map_update_compute_new_tonemap ( - &bl, - ber_target, - tm_in, - dtmask.carrier_nb, - &computed_tm); - - /* Re-import data from ce_rx_bitloading_t and free it. */ - test_curs = bl.opti_table_cursor; - ce_rx_bitloading_uninit (&bl); - - /* Check status. */ - test_fail_if (status == CE_RX_BL_TONE_MAP_UPDATE_STATUS_ERROR); - - /* Check if the new cursor position is well computed. */ - test_fail_if (test_curs != curs_out); - - /* Check if the generated tone map is the same. */ - u32 *word_ptr_out = NULL; - u32 *word_ptr_in = NULL; - u32 *word_ptr_cpt = NULL; - u8 mod_out; - u8 mod_in; - u8 mod_cpt; - for (i = 0; i < dtmask.carrier_nb; i++) - { - mod_out = tonemap_get_tone (tm_out, - opti[i], - &word_ptr_out); - mod_in = tonemap_get_tone (tm_in, - opti[i], - &word_ptr_in); - mod_cpt = tonemap_get_tone (computed_tm, - opti[i], - &word_ptr_cpt); - - if (action == CE_RX_BL_TONE_MAP_UPDATE_MINUS) - { - if (i >= curs_out && i < curs_in) - { - test_fail_if (mod_out != 0 && mod_out != mod_in - 1); - test_fail_if (mod_cpt != mod_out); - } - else - test_fail_if ((mod_out != mod_in) - || (mod_out != mod_cpt)); - } - if (action == CE_RX_BL_TONE_MAP_UPDATE_PLUS) - { - if (i < curs_out && i >= curs_in) - { - test_fail_if (mod_out != CE_MOD_COUNT - 1 - && mod_out != mod_in + 1); - test_fail_if (mod_cpt != mod_out); - } - else - test_fail_if ((mod_out != mod_in) - || (mod_out != mod_cpt)); - } - } - /* Clean. */ - tonemap_free (computed_tm); - } - tonemap_free (tm_in); - tonemap_free (tm_out); - } test_end; -} - int main (int argc, char **argv) { @@ -2071,9 +1316,6 @@ main (int argc, char **argv) /* Test tone map is correctly configure for usage. */ test_suite_ce_rx_bl_tm_configuration (t); - /* Test tone map update */ - test_suite_ce_rx_bl_tm_update (t); - /* Memory check. */ test_case_begin (t, "General"); test_begin (t, "Memory") -- cgit v1.2.3