diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_local_file-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/approximation_snapshots/DataFusionProducer/approx_distinct-validate-datafusion_outcome.txt similarity index 100% rename from substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_local_file-duckdb_outcome.txt rename to substrait_consumer/tests/functional/extension_functions/approximation_snapshots/DataFusionProducer/approx_distinct-validate-datafusion_outcome.txt diff --git a/substrait_consumer/tests/functional/extension_functions/approximation_snapshots/DuckDBProducer/approx_count_distinct-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/approximation_snapshots/DuckDBProducer/approx_count_distinct-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/approximation_snapshots/DuckDBProducer/approx_count_distinct-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/modulus-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/modulus-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/modulus-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_decimal_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/abs-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/abs-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/abs-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/acos-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/acos-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/acos-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/add-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/asin-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/asin-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/asin-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan2-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan2-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/atan2-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/avg-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/cos-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/cos-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/cos-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count_star-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count_star-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/count_star-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/divide-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/exp-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/exp-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/exp-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/factorial-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/factorial-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/factorial-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/max-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/median-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/median-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/median-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/min-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/multiply-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/power-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/power-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/power-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sin-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sin-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sin-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sqrt-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sqrt-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sqrt-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/subtract-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/sum-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/tan-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/tan-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DataFusionProducer/tan-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/abs-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/abs-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/abs-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/acos-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/acos-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/acos-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/asin-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/asin-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/asin-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan2-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan2-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/atan2-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/avg-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/cos-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/cos-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/cos-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count_star-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count_star-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/count_star-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/divide-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/exp-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/exp-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/exp-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/factorial-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/factorial-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/factorial-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/max-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/median-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/median-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/median-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/min-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/mode-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/mode-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/mode-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/modulus-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/multiply-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/negate-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/negate-validate-duckdb_outcome.txt new file mode 100644 index 00000000..33bd0a6a --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/negate-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/power-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/power-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/power-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/product-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/product-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/product-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sign-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sign-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sign-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sin-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sin-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sin-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sqrt-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sqrt-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sqrt-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/std_dev-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/std_dev-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/std_dev-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/sum-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/tan-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/tan-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/tan-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/variance-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/variance-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/DuckDBProducer/variance-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate_plan.json new file mode 100644 index 00000000..7f8352ee --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/abs-validate_plan.json @@ -0,0 +1,99 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "abs:i32" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4, 5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["A", "ABS_A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate_plan.json new file mode 100644 index 00000000..9b0e41b9 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/acos-validate_plan.json @@ -0,0 +1,184 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "acos:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["ACOS_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate_plan.json new file mode 100644 index 00000000..f72e7b98 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/add-validate_plan.json @@ -0,0 +1,127 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "add:i64_i64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6, 7] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "PS_SUPPKEY", "ADD_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate_plan.json new file mode 100644 index 00000000..3fefb53f --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/asin-validate_plan.json @@ -0,0 +1,184 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "asin:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["ASIN_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate_plan.json new file mode 100644 index 00000000..c476870b --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan-validate_plan.json @@ -0,0 +1,184 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "atan:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["ATAN_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate_plan.json new file mode 100644 index 00000000..948d6a12 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/atan2-validate_plan.json @@ -0,0 +1,206 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "atan2:fp64_fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }, { + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["ATAN2_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate_plan.json new file mode 100644 index 00000000..2e964164 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/cos-validate_plan.json @@ -0,0 +1,134 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "cos:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["COS_SUPPLY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate_plan.json new file mode 100644 index 00000000..92d4c105 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count-validate_plan.json @@ -0,0 +1,78 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "names": ["COUNT_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate_plan.json new file mode 100644 index 00000000..c8a266af --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/count_star-validate_plan.json @@ -0,0 +1,78 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate_plan.json new file mode 100644 index 00000000..7196310c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/divide-validate_plan.json @@ -0,0 +1,121 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "divide:i64_i64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "DIVIDE_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate_plan.json new file mode 100644 index 00000000..f2c1c168 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/exp-validate_plan.json @@ -0,0 +1,142 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "exp:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "EXP_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate_plan.json new file mode 100644 index 00000000..ec172312 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/max-validate_plan.json @@ -0,0 +1,112 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "max:dec" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["MAX_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate_plan.json new file mode 100644 index 00000000..570f269a --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/min-validate_plan.json @@ -0,0 +1,112 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "min:dec" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["MIN_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate_plan.json new file mode 100644 index 00000000..59886823 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/modulus-validate_plan.json @@ -0,0 +1,121 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "modulus:i64_i64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "MODULUS_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate_plan.json new file mode 100644 index 00000000..3c3adcf4 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/multiply-validate_plan.json @@ -0,0 +1,121 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "multiply:i64_i64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "MULTIPLY_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate_plan.json new file mode 100644 index 00000000..cd7756ff --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sign-validate_plan.json @@ -0,0 +1,99 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "sign:i32" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4, 5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["A", "SIGN_A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate_plan.json new file mode 100644 index 00000000..214c75be --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sin-validate_plan.json @@ -0,0 +1,134 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "sin:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["SIN_SUPPLY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate_plan.json new file mode 100644 index 00000000..fdfcdb45 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sqrt-validate_plan.json @@ -0,0 +1,162 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "power:fp64_fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }, { + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "decimal": { + "value": "BQAAAAAAAAAAAAAAAAAAAA==", + "precision": 2, + "scale": 1 + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "SQRT_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate_plan.json new file mode 100644 index 00000000..ff9e7673 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/subtract-validate_plan.json @@ -0,0 +1,127 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "subtract:i64_i64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6, 7] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_PARTKEY", "PS_SUPPKEY", "SUBTRACT_KEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate_plan.json new file mode 100644 index 00000000..1538ba19 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/sum-validate_plan.json @@ -0,0 +1,112 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "sum:dec" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["SUM_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate_plan.json new file mode 100644 index 00000000..cb7976c0 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/arithmetic_snapshots/IsthmusProducer/tan-validate_plan.json @@ -0,0 +1,134 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "tan:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "literal": { + "i32": 2 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["TAN_SUPPLY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/and-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/and-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/and-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_and-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_and-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_and-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_or-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_or-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/bool_or-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/not-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/not-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/not-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/or-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/or-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DataFusionProducer/or-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/and-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/and-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/and-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_and-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_and-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_and-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_or-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_or-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/bool_or-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/not-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/not-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/not-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/or-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/or-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/or-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/xor-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/xor-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/DuckDBProducer/xor-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate_plan.json new file mode 100644 index 00000000..1670ed18 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/and-validate_plan.json @@ -0,0 +1,172 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "lt:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4, 5] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 5 + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 1 + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["A", "B"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate_plan.json new file mode 100644 index 00000000..4ce72f2a --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/not-validate_plan.json @@ -0,0 +1,61 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate_plan.json new file mode 100644 index 00000000..9d040d32 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/boolean_snapshots/IsthmusProducer/or-validate_plan.json @@ -0,0 +1,155 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "or:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 5 + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 7 + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/between-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/between-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/between-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/coalesce-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/coalesce-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/coalesce-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/equal-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/equal-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/equal-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_nan-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_nan-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_nan-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_not_distinct_from-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_not_distinct_from-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/is_not_distinct_from-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/not_equal-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/not_equal-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DataFusionProducer/not_equal-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/between-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/between-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/between-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/coalesce-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/coalesce-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/coalesce-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/equal-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/equal-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/equal-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_finite-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_finite-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_finite-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_infinite-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_infinite-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_infinite-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_nan-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_nan-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_nan-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_distinct_from-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_distinct_from-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_distinct_from-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_null-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_null-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_not_null-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_null-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_null-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/is_null-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/not_equal-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/not_equal-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/DuckDBProducer/not_equal-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate_plan.json new file mode 100644 index 00000000..ac9131ab --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/between-validate_plan.json @@ -0,0 +1,182 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "gte:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "lte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 1 + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 5 + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate_plan.json new file mode 100644 index 00000000..00c2a1cc --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/coalesce-validate_plan.json @@ -0,0 +1,58 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [1] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["ZERO"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "virtualTable": { + "values": [{ + "fields": [{ + "i32": 0 + }] + }] + } + } + }, + "expressions": [{ + "cast": { + "type": { + "fixedChar": { + "length": 11, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "input": { + "literal": { + "fixedChar": "test_string" + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate_plan.json new file mode 100644 index 00000000..88edd191 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/equal-validate_plan.json @@ -0,0 +1,127 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["PS_AVAILQTY", "PS_PARTKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate_plan.json new file mode 100644 index 00000000..324c7441 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gt-validate_plan.json @@ -0,0 +1,144 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gt:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 9990 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate_plan.json new file mode 100644 index 00000000..372cebed --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/gte-validate_plan.json @@ -0,0 +1,144 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 9990 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_distinct_from-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_distinct_from-validate-isthmus_outcome.txt new file mode 100644 index 00000000..486a85da --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_distinct_from-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate_plan.json new file mode 100644 index 00000000..6f0cbbbe --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_not_null-validate_plan.json @@ -0,0 +1,99 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "is_not_null:any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate_plan.json new file mode 100644 index 00000000..50901296 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/is_null-validate_plan.json @@ -0,0 +1,99 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "is_null:any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["A", "B", "C", "D"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["T"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["A"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate_plan.json new file mode 100644 index 00000000..3fdd5815 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lt-validate_plan.json @@ -0,0 +1,144 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lt:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate_plan.json new file mode 100644 index 00000000..e9ff0b20 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/lte-validate_plan.json @@ -0,0 +1,144 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate_plan.json new file mode 100644 index 00000000..879826dd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/comparison_snapshots/IsthmusProducer/not_equal-validate_plan.json @@ -0,0 +1,128 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "not:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "string": "CANADA" + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["N_NAME"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/extract-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/extract-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/extract-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gt-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/gte-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lt-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DataFusionProducer/lte-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add_intervals-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add_intervals-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/add_intervals-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/extract-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/extract-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/extract-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gt-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/gte-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lt-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/lte-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/DuckDBProducer/subtract-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate_plan.json new file mode 100644 index 00000000..658e4f51 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/extract-validate_plan.json @@ -0,0 +1,159 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_datetime.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "extract:req_date" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 10 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "enum": "YEAR" + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 10 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_SHIPDATE", "EXPR$1"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate_plan.json new file mode 100644 index 00000000..e5358daa --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gt-validate_plan.json @@ -0,0 +1,179 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_datetime.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gt:date_date" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_COMMITDATE", "L_RECEIPTDATE", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate_plan.json new file mode 100644 index 00000000..63b40a1d --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/gte-validate_plan.json @@ -0,0 +1,179 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_datetime.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gte:date_date" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_COMMITDATE", "L_RECEIPTDATE", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate_plan.json new file mode 100644 index 00000000..1f885f49 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lt-validate_plan.json @@ -0,0 +1,179 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_datetime.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lt:date_date" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_COMMITDATE", "L_RECEIPTDATE", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate_plan.json new file mode 100644 index 00000000..8b7e7301 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/datetime_snapshots/IsthmusProducer/lte-validate_plan.json @@ -0,0 +1,179 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_datetime.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lte:date_date" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_COMMITDATE", "L_RECEIPTDATE", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/ln-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/ln-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/ln-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log10-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log10-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log10-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log2-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log2-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/log2-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/logb-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/logb-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DataFusionProducer/logb-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/ln-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/ln-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/ln-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log10-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log10-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log10-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log2-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log2-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/log2-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/logb-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/logb-validate-duckdb_outcome.txt new file mode 100644 index 00000000..33bd0a6a --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/logarithmic_snapshots/DuckDBProducer/logb-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/ceil-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/ceil-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/ceil-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/floor-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/floor-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/floor-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/round-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/round-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DataFusionProducer/round-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/ceil-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/ceil-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/ceil-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/floor-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/floor-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/floor-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/round-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/round-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/DuckDBProducer/round-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate_plan.json new file mode 100644 index 00000000..42da8a41 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/ceil-validate_plan.json @@ -0,0 +1,117 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "ceil:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "CEIL_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate_plan.json new file mode 100644 index 00000000..e752781e --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/floor-validate_plan.json @@ -0,0 +1,117 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "floor:fp64" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "FLOOR_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate_plan.json new file mode 100644 index 00000000..d11c397d --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/rounding_snapshots/IsthmusProducer/round-validate_plan.json @@ -0,0 +1,173 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_rounding.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "round:fp64_i32" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }, { + "value": { + "literal": { + "i32": 1 + } + } + }] + } + }] + } + }, + "count": "10" + } + }, + "names": ["L_EXTENDEDPRICE", "ROUND_EXTENDEDPRICE"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/bit_length-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/bit_length-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/bit_length-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/char_length-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/char_length-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/char_length-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat_ws-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat_ws-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/concat_ws-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/contains-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/contains-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/contains-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/left-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/left-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/left-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/like-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/like-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/like-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lower-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lower-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lower-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lpad-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lpad-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/lpad-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/ltrim-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/ltrim-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/ltrim-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/repeat-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/repeat-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/repeat-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/replace-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/replace-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/replace-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/reverse-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/reverse-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/reverse-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/right-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/right-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/right-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rpad-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rpad-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rpad-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rtrim-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rtrim-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/rtrim-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/starts_with0-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/starts_with0-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/starts_with0-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/strpos-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/strpos-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/strpos-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/substring0-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/substring0-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/substring0-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/trim-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/trim-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/trim-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/upper-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/upper-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DataFusionProducer/upper-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/bit_length-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/bit_length-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/bit_length-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/char_length-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/char_length-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/char_length-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat_ws-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat_ws-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/concat_ws-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/contains-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/contains-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/contains-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ends_with-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ends_with-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ends_with-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/left-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/left-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/left-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/like-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/like-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/like-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lower-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lower-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lower-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lpad-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lpad-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/lpad-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ltrim-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ltrim-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/ltrim-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/repeat-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/repeat-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/repeat-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/replace-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/replace-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/replace-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/reverse-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/reverse-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/reverse-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/right-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/right-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/right-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rpad-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rpad-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rpad-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rtrim-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rtrim-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/rtrim-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/starts_with1-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/starts_with1-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/starts_with1-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/string_agg-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/string_agg-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/string_agg-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/strpos-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/strpos-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/strpos-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/substring0-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/substring0-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/substring0-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/trim-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/trim-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/trim-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/upper-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/upper-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/DuckDBProducer/upper-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/concat-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/concat-validate-isthmus_outcome.txt new file mode 100644 index 00000000..3f774b33 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/concat-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate_plan.json new file mode 100644 index 00000000..018ebc67 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/like-validate_plan.json @@ -0,0 +1,117 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_string.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "like:str_str" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "fixedChar": "ALGERIA" + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["N_NAME"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate_plan.json b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate_plan.json new file mode 100644 index 00000000..3b3bd5c5 --- /dev/null +++ b/substrait_consumer/tests/functional/extension_functions/string_snapshots/IsthmusProducer/substring1-validate_plan.json @@ -0,0 +1,104 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_string.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "substring:str_i32_i32" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [4, 5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i32": 1 + } + } + }, { + "value": { + "literal": { + "i32": 3 + } + } + }] + } + }] + } + }, + "names": ["N_NAME", "SUBSTR_NAME"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery_plan.json new file mode 100644 index 00000000..e925b072 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_in_subquery_plan.json @@ -0,0 +1,173 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "avg" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "lte" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "right": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "cast": { + "type": { + "decimal": { + "scale": 6, + "precision": 19, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "input": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_INNER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "names": [ + "o_totalprice" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation_plan.json new file mode 100644 index 00000000..1ab22c01 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_computation_plan.json @@ -0,0 +1,118 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "multiply" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "avg" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "decimal": { + "value": "CgAAAAAAAAAAAAAAAAAAAA==", + "precision": 20 + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "avg(orders.o_totalprice) * Int64(10)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_cube-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_cube-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_cube-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_plan.json new file mode 100644 index 00000000..4f016b93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_plan.json @@ -0,0 +1,134 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + ] + } + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "literal": { + "i64": "1" + } + } + } + ] + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_orderkey", + "l_linenumber", + "count(*)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup_plan.json new file mode 100644 index 00000000..79700375 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_group_by_rollup_plan.json @@ -0,0 +1,146 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + ] + }, + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + }, + {} + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "literal": { + "i64": "1" + } + } + } + ] + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_orderkey", + "l_linenumber", + "count(*)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set_plan.json new file mode 100644 index 00000000..dd37730b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/aggregate_with_grouping_set_plan.json @@ -0,0 +1,166 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "sum" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + }, + { + "field": 5 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + ] + }, + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "sum(lineitem.l_extendedprice)", + "l_linenumber", + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates_plan.json new file mode 100644 index 00000000..5a6fe23b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/computation_between_aggregates_plan.json @@ -0,0 +1,143 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "add" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "avg" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 2, + "name": "max" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 2, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "avg(orders.o_totalprice) + MAX(orders.o_totalprice)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate_plan.json new file mode 100644 index 00000000..b1f4d1ad --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/compute_within_aggregate_plan.json @@ -0,0 +1,105 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "multiply" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "avg" + } + } + ], + "relations": [ + { + "root": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "decimal": { + "value": "CgAAAAAAAAAAAAAAAAAAAA==", + "precision": 20 + } + } + } + } + ] + } + } + } + ] + } + } + ] + } + }, + "names": [ + "avg(orders.o_totalprice * Int64(10))" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate_plan.json new file mode 100644 index 00000000..20a81062 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/multiple_measure_aggregate_plan.json @@ -0,0 +1,129 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "min" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "max" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 2, + "name": "avg" + } + } + ], + "relations": [ + { + "root": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 1, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 2, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "MIN(orders.o_totalprice)", + "MAX(orders.o_totalprice)", + "avg(orders.o_totalprice)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate_plan.json new file mode 100644 index 00000000..6c35e688 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DataFusionProducer/single_measure_aggregate_plan.json @@ -0,0 +1,86 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "count(lineitem.l_partkey)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery_plan.json new file mode 100644 index 00000000..a7b5379c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_in_subquery_plan.json @@ -0,0 +1,374 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "avg:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "any_value:fp64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 3, + "name": "lte:fp64_fp64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "right": { + "aggregate": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 2, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "input": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_INNER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "o_totalprice" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation_plan.json new file mode 100644 index 00000000..be85886b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_computation_plan.json @@ -0,0 +1,191 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_arithmetic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "avg:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "multiply:fp64_fp64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "fp64": 10 + } + } + } + ] + } + } + ] + } + }, + "names": [ + "(avg(o_totalprice) * 10.0)" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube_plan.json new file mode 100644 index 00000000..4f656d74 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_cube_plan.json @@ -0,0 +1,269 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_aggregate_generic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_orderkey", + "l_linenumber", + "count_star()" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_plan.json new file mode 100644 index 00000000..4f656d74 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_plan.json @@ -0,0 +1,269 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_aggregate_generic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_orderkey", + "l_linenumber", + "count_star()" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup_plan.json new file mode 100644 index 00000000..4f656d74 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_group_by_rollup_plan.json @@ -0,0 +1,269 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_aggregate_generic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_orderkey", + "l_linenumber", + "count_star()" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set_plan.json new file mode 100644 index 00000000..a013bde1 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/aggregate_with_grouping_set_plan.json @@ -0,0 +1,277 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "sum:decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + }, + {}, + { + "field": 5 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 38, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "sum(l_extendedprice)", + "l_linenumber", + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates_plan.json new file mode 100644 index 00000000..89d0f06c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/computation_between_aggregates_plan.json @@ -0,0 +1,236 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_arithmetic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "avg:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "max:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 3, + "name": "add:fp64_fp64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 2, + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "cast": { + "type": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "input": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "(avg(o_totalprice) + CAST(max(o_totalprice) AS DOUBLE))" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate_plan.json new file mode 100644 index 00000000..5f8c6194 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/compute_within_aggregate_plan.json @@ -0,0 +1,196 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_arithmetic_decimal.yaml" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "multiply:decimal_decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "avg:decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 2, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 18, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "decimal": { + "value": "CgAAAAAAAAAAAAAAAAAAAA==", + "precision": 18 + } + } + } + } + ] + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "avg((o_totalprice * CAST(10 AS DECIMAL(18,0))))" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate_plan.json new file mode 100644 index 00000000..8d9677b6 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/multiple_measure_aggregate_plan.json @@ -0,0 +1,243 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "min:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "max:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 3, + "name": "avg:decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 2, + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + }, + { + "measure": { + "functionReference": 3, + "outputType": { + "fp64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "min(o_totalprice)", + "max(o_totalprice)", + "avg(o_totalprice)" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate_plan.json new file mode 100644 index 00000000..354b2bc5 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/DuckDBProducer/single_measure_aggregate_plan.json @@ -0,0 +1,195 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_aggregate_generic.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "count(l_partkey)" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate_plan.json new file mode 100644 index 00000000..c3ab0ab9 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_in_subquery-validate_plan.json @@ -0,0 +1,251 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 2, + "uri": "/functions_arithmetic_decimal.yaml" + }, { + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lte:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "avg:dec" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "subquery": { + "scalar": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "functionReference": 1, + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + } + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["O_TOTALPRICE"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate_plan.json new file mode 100644 index 00000000..206a9ecb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_computation-validate_plan.json @@ -0,0 +1,185 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "avg:dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "multiply:dec_dec" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [1] + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "expressions": [{ + "scalarFunction": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 19, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate_plan.json new file mode 100644 index 00000000..e9b498b6 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by-validate_plan.json @@ -0,0 +1,211 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["L_ORDERKEY", "L_LINENUMBER", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-isthmus_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-isthmus_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-isthmus_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-validate-isthmus_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube_plan.json new file mode 100644 index 00000000..66516320 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_cube_plan.json @@ -0,0 +1,235 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + }, { + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + }, { + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + }, { + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["L_ORDERKEY", "L_LINENUMBER", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-isthmus_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-isthmus_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-isthmus_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-validate-isthmus_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup_plan.json new file mode 100644 index 00000000..85b334f8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_group_by_rollup_plan.json @@ -0,0 +1,223 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + }, { + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + }, { + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["L_ORDERKEY", "L_LINENUMBER", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate_plan.json new file mode 100644 index 00000000..c3bd95ba --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/aggregate_with_grouping_set-validate_plan.json @@ -0,0 +1,265 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "sum:dec" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [3, 4, 5] + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + }, { + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["EXPR$0", "L_LINENUMBER", "L_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate_plan.json new file mode 100644 index 00000000..e109fa6c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/computation_between_aggregates-validate_plan.json @@ -0,0 +1,210 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "avg:dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "max:dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "add:dec_dec" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [2] + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }, { + "measure": { + "functionReference": 1, + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "expressions": [{ + "scalarFunction": { + "functionReference": 2, + "outputType": { + "decimal": { + "scale": 2, + "precision": 16, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate_plan.json new file mode 100644 index 00000000..7bdad7f1 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/compute_within_aggregate-validate_plan.json @@ -0,0 +1,166 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "multiply:dec_dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "avg:dec" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "scalarFunction": { + "outputType": { + "decimal": { + "scale": 2, + "precision": 19, + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "functionReference": 1, + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 19, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate_plan.json new file mode 100644 index 00000000..3bdf7341 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/multiple_measure_aggregate-validate_plan.json @@ -0,0 +1,190 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "min:dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "max:dec" + } + }, { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "avg:dec" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }, { + "measure": { + "functionReference": 1, + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }, { + "measure": { + "functionReference": 2, + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["EXPR$0", "EXPR$1", "EXPR$2"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate_plan.json b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate_plan.json new file mode 100644 index 00000000..74654709 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/IsthmusProducer/single_measure_aggregate-validate_plan.json @@ -0,0 +1,128 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..d38857f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_in_subquery-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation_result_schema.txt index d0e95c1e..3f9956ce 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_computation_result_schema.txt @@ -1 +1 @@ -(avg(o_totalprice) * 10): double \ No newline at end of file +avg(orders.o_totalprice) * int64(10): double \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-generate-outcome.txt index 210d4ce2..e15e5134 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-datafusion_outcome.txt new file mode 100644 index 00000000..d38857f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube-isthmus-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_data.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_data.txt index 19fe30ab..cdfc7c60 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_data.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_data.txt @@ -4,14 +4,6 @@ 1 1 1 -1 -None -None -None -None -None -None -None 1 2 @@ -19,14 +11,6 @@ None 4 5 6 -None -1 -2 -3 -4 -5 -6 -None 1 1 @@ -34,12 +18,4 @@ None 1 1 1 -6 -1 -1 -1 -1 -1 -1 -6 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_schema.txt index 472d01f6..306d7518 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_cube_result_schema.txt @@ -1,3 +1,3 @@ l_orderkey: int64 l_linenumber: int64 -count_star(): int64 \ No newline at end of file +expr$2: int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_result_schema.txt index 472d01f6..81df4e85 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_result_schema.txt @@ -1,3 +1,3 @@ l_orderkey: int64 l_linenumber: int64 -count_star(): int64 \ No newline at end of file +count(*): int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-generate-outcome.txt index 210d4ce2..e15e5134 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-datafusion_outcome.txt new file mode 100644 index 00000000..d38857f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup-isthmus-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_data.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_data.txt index 8d7f9a4b..cdfc7c60 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_data.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_data.txt @@ -4,8 +4,6 @@ 1 1 1 -1 -None 1 2 @@ -13,8 +11,6 @@ None 4 5 6 -None -None 1 1 @@ -22,6 +18,4 @@ None 1 1 1 -6 -6 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_schema.txt index 472d01f6..306d7518 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_group_by_rollup_result_schema.txt @@ -1,3 +1,3 @@ l_orderkey: int64 l_linenumber: int64 -count_star(): int64 \ No newline at end of file +expr$2: int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-generate-outcome.txt index 210d4ce2..e15e5134 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-isthmus-duckdb_outcome.txt index e15e5134..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-isthmus-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set-isthmus-duckdb_outcome.txt @@ -1 +1 @@ -{'schema': False, 'data': False} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_data.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_data.txt index bf5b4b9a..4f8c294c 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_data.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_data.txt @@ -4,7 +4,6 @@ 25228.00 21624.00 28832.00 -130645.00 1 2 @@ -12,13 +11,11 @@ 4 5 6 -None -None -None -None -None -None -None +1 +1 +1 +1 +1 1 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_schema.txt index cd8dde29..dcad80e2 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/aggregate_with_grouping_set_result_schema.txt @@ -1,3 +1,3 @@ -sum(l_extendedprice): decimal128(38, 2) +sum(lineitem.l_extendedprice): decimal128(38, 2) l_linenumber: int64 l_orderkey: int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates_result_schema.txt index 09dddc88..666e56be 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/computation_between_aggregates_result_schema.txt @@ -1 +1 @@ -(avg(o_totalprice) + max(o_totalprice)): double \ No newline at end of file +avg(orders.o_totalprice) + max(orders.o_totalprice): double \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate_result_schema.txt index 122bba7c..6206a281 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/compute_within_aggregate_result_schema.txt @@ -1 +1 @@ -avg((o_totalprice * 10)): double \ No newline at end of file +avg(orders.o_totalprice * int64(10)): double \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate_result_schema.txt index 4b366962..a999645d 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/multiple_measure_aggregate_result_schema.txt @@ -1,3 +1,3 @@ -min(o_totalprice): decimal128(15, 2) -max(o_totalprice): decimal128(15, 2) -avg(o_totalprice): double \ No newline at end of file +min(orders.o_totalprice): decimal128(15, 2) +max(orders.o_totalprice): decimal128(15, 2) +avg(orders.o_totalprice): double \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-generate-outcome.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate_result_schema.txt b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate_result_schema.txt index 78a48146..4f5e9b8e 100644 --- a/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/aggregate_snapshots/relation_test_results/single_measure_aggregate_result_schema.txt @@ -1 +1 @@ -count(l_partkey): int64 \ No newline at end of file +count(lineitem.l_partkey): int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_column-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_column-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_column-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_table-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_table-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/alter_table-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_or_replace_view-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_or_replace_view-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_or_replace_view-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table_plan.json b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table_plan.json new file mode 100644 index 00000000..0a1354bf --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_table_plan.json @@ -0,0 +1,20 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "struct": {} + }, + "virtualTable": {} + } + } + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_view-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_view-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/create_view-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_column-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_column-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_column-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table_plan.json b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table_plan.json new file mode 100644 index 00000000..0a1354bf --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DataFusionProducer/drop_table_plan.json @@ -0,0 +1,20 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "struct": {} + }, + "virtualTable": {} + } + } + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_column-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_column-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_column-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_table-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_table-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/alter_table-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_or_replace_view-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_or_replace_view-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_or_replace_view-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_table-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_table-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_table-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_view-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_view-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/create_view-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_column-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_column-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_column-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_table-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_table-validate-duckdb_outcome.txt new file mode 100644 index 00000000..e1639a46 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/DuckDBProducer/drop_table-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_column-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_column-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_column-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_table-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_table-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/alter_table-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_or_replace_view-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_or_replace_view-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_or_replace_view-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_table-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_table-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_table-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_view-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_view-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/create_view-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_column-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_column-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_column-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_table-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_table-validate-isthmus_outcome.txt new file mode 100644 index 00000000..edf0a2c6 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/IsthmusProducer/drop_table-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..4ad84245 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-generate-outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-generate-outcome.txt index 210d4ce2..e15e5134 100644 --- a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_data.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_data.txt index ced93821..e69de29b 100644 --- a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_data.txt +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_data.txt @@ -1 +0,0 @@ -(no result) \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_schema.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_schema.txt index ced93821..e69de29b 100644 --- a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/create_table_result_schema.txt @@ -1 +0,0 @@ -(no result) \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..4ad84245 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table_result_data.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table_result_data.txt new file mode 100644 index 00000000..e69de29b diff --git a/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table_result_schema.txt b/substrait_consumer/tests/functional/relations/ddl_snapshots/relation_test_results/drop_table_result_schema.txt new file mode 100644 index 00000000..e69de29b diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_plan.json new file mode 100644 index 00000000..86f3d9ff --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_plan.json @@ -0,0 +1,44 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "names": [ + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset_plan.json new file mode 100644 index 00000000..a91b0159 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DataFusionProducer/fetch_with_offset_plan.json @@ -0,0 +1,50 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "offset": "5", + "count": "-1" + } + }, + "names": [ + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_plan.json new file mode 100644 index 00000000..08a73aae --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_plan.json @@ -0,0 +1,116 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "fetch": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "count": "1" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset_plan.json new file mode 100644 index 00000000..16457434 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/DuckDBProducer/fetch_with_offset_plan.json @@ -0,0 +1,117 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "fetch": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "offset": "5", + "count": "5" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate_plan.json new file mode 100644 index 00000000..ad40eda4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch-validate_plan.json @@ -0,0 +1,91 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "count": "1" + } + }, + "names": ["O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate_plan.json b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate_plan.json new file mode 100644 index 00000000..6d4aee5b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/IsthmusProducer/fetch_with_offset-validate_plan.json @@ -0,0 +1,92 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "offset": "5", + "count": "5" + } + }, + "names": ["O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-generate-outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-generate-outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-acero_outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-acero_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-acero_outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-duckdb_outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch-isthmus-duckdb_outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_result_data.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_result_data.txt index 43bb6bb0..edce17de 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_result_data.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_result_data.txt @@ -1,2 +1,150001 @@ 1 +2 +3 +4 +5 +6 +7 +32 +33 +34 +35 +36 +37 +38 +39 +64 +65 +66 +67 +68 +69 +70 +71 +96 +97 +98 +99 +100 +101 +102 +103 +128 +129 +130 +131 +132 +133 +134 +135 +160 +161 +162 +163 +164 +165 +166 +167 +192 +193 +194 +195 +196 +197 +198 +199 +224 +225 +226 +227 +228 +229 +230 +231 +256 +257 +258 +259 +260 +261 +262 +263 +288 +289 +290 +291 +292 +293 +294 +295 +320 +321 +322 +323 +324 +325 +326 +327 +352 +353 +354 +355 +356 +357 +358 +359 +384 +385 +386 +387 +388 +389 +390 +391 +416 +417 +418 +419 +420 +421 +422 +423 +448 +449 +450 +451 +452 +453 +454 +455 +480 +481 +482 +483 +484 +485 +486 +487 +512 +513 +514 +515 +516 +517 +518 +519 +544 +545 +546 +547 +548 +549 +550 +551 +576 +577 +578 +579 +580 +581 +582 +583 +608 +609 +610 +611 +612 +613 +614 +615 +640 +641 +642 +643 +644 +645 +646 +647 +672 +673 +674 +675 +676 +677 +678 +679 +704 +705 +706 +707 +708 +709 +710 +711 +736 +737 +738 +739 +740 +741 +742 +743 +768 +769 +770 +771 +772 +773 +774 +775 +800 +801 +802 +803 +804 +805 +806 +807 +832 +833 +834 +835 +836 +837 +838 +839 +864 +865 +866 +867 +868 +869 +870 +871 +896 +897 +898 +899 +900 +901 +902 +903 +928 +929 +930 +931 +932 +933 +934 +935 +960 +961 +962 +963 +964 +965 +966 +967 +992 +993 +994 +995 +996 +997 +998 +999 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2880 +2881 +2882 +2883 +2884 +2885 +2886 +2887 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3136 +3137 +3138 +3139 +3140 +3141 +3142 +3143 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3200 +3201 +3202 +3203 +3204 +3205 +3206 +3207 +3232 +3233 +3234 +3235 +3236 +3237 +3238 +3239 +3264 +3265 +3266 +3267 +3268 +3269 +3270 +3271 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3424 +3425 +3426 +3427 +3428 +3429 +3430 +3431 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3904 +3905 +3906 +3907 +3908 +3909 +3910 +3911 +3936 +3937 +3938 +3939 +3940 +3941 +3942 +3943 +3968 +3969 +3970 +3971 +3972 +3973 +3974 +3975 +4000 +4001 +4002 +4003 +4004 +4005 +4006 +4007 +4032 +4033 +4034 +4035 +4036 +4037 +4038 +4039 +4064 +4065 +4066 +4067 +4068 +4069 +4070 +4071 +4096 +4097 +4098 +4099 +4100 +4101 +4102 +4103 +4128 +4129 +4130 +4131 +4132 +4133 +4134 +4135 +4160 +4161 +4162 +4163 +4164 +4165 +4166 +4167 +4192 +4193 +4194 +4195 +4196 +4197 +4198 +4199 +4224 +4225 +4226 +4227 +4228 +4229 +4230 +4231 +4256 +4257 +4258 +4259 +4260 +4261 +4262 +4263 +4288 +4289 +4290 +4291 +4292 +4293 +4294 +4295 +4320 +4321 +4322 +4323 +4324 +4325 +4326 +4327 +4352 +4353 +4354 +4355 +4356 +4357 +4358 +4359 +4384 +4385 +4386 +4387 +4388 +4389 +4390 +4391 +4416 +4417 +4418 +4419 +4420 +4421 +4422 +4423 +4448 +4449 +4450 +4451 +4452 +4453 +4454 +4455 +4480 +4481 +4482 +4483 +4484 +4485 +4486 +4487 +4512 +4513 +4514 +4515 +4516 +4517 +4518 +4519 +4544 +4545 +4546 +4547 +4548 +4549 +4550 +4551 +4576 +4577 +4578 +4579 +4580 +4581 +4582 +4583 +4608 +4609 +4610 +4611 +4612 +4613 +4614 +4615 +4640 +4641 +4642 +4643 +4644 +4645 +4646 +4647 +4672 +4673 +4674 +4675 +4676 +4677 +4678 +4679 +4704 +4705 +4706 +4707 +4708 +4709 +4710 +4711 +4736 +4737 +4738 +4739 +4740 +4741 +4742 +4743 +4768 +4769 +4770 +4771 +4772 +4773 +4774 +4775 +4800 +4801 +4802 +4803 +4804 +4805 +4806 +4807 +4832 +4833 +4834 +4835 +4836 +4837 +4838 +4839 +4864 +4865 +4866 +4867 +4868 +4869 +4870 +4871 +4896 +4897 +4898 +4899 +4900 +4901 +4902 +4903 +4928 +4929 +4930 +4931 +4932 +4933 +4934 +4935 +4960 +4961 +4962 +4963 +4964 +4965 +4966 +4967 +4992 +4993 +4994 +4995 +4996 +4997 +4998 +4999 +5024 +5025 +5026 +5027 +5028 +5029 +5030 +5031 +5056 +5057 +5058 +5059 +5060 +5061 +5062 +5063 +5088 +5089 +5090 +5091 +5092 +5093 +5094 +5095 +5120 +5121 +5122 +5123 +5124 +5125 +5126 +5127 +5152 +5153 +5154 +5155 +5156 +5157 +5158 +5159 +5184 +5185 +5186 +5187 +5188 +5189 +5190 +5191 +5216 +5217 +5218 +5219 +5220 +5221 +5222 +5223 +5248 +5249 +5250 +5251 +5252 +5253 +5254 +5255 +5280 +5281 +5282 +5283 +5284 +5285 +5286 +5287 +5312 +5313 +5314 +5315 +5316 +5317 +5318 +5319 +5344 +5345 +5346 +5347 +5348 +5349 +5350 +5351 +5376 +5377 +5378 +5379 +5380 +5381 +5382 +5383 +5408 +5409 +5410 +5411 +5412 +5413 +5414 +5415 +5440 +5441 +5442 +5443 +5444 +5445 +5446 +5447 +5472 +5473 +5474 +5475 +5476 +5477 +5478 +5479 +5504 +5505 +5506 +5507 +5508 +5509 +5510 +5511 +5536 +5537 +5538 +5539 +5540 +5541 +5542 +5543 +5568 +5569 +5570 +5571 +5572 +5573 +5574 +5575 +5600 +5601 +5602 +5603 +5604 +5605 +5606 +5607 +5632 +5633 +5634 +5635 +5636 +5637 +5638 +5639 +5664 +5665 +5666 +5667 +5668 +5669 +5670 +5671 +5696 +5697 +5698 +5699 +5700 +5701 +5702 +5703 +5728 +5729 +5730 +5731 +5732 +5733 +5734 +5735 +5760 +5761 +5762 +5763 +5764 +5765 +5766 +5767 +5792 +5793 +5794 +5795 +5796 +5797 +5798 +5799 +5824 +5825 +5826 +5827 +5828 +5829 +5830 +5831 +5856 +5857 +5858 +5859 +5860 +5861 +5862 +5863 +5888 +5889 +5890 +5891 +5892 +5893 +5894 +5895 +5920 +5921 +5922 +5923 +5924 +5925 +5926 +5927 +5952 +5953 +5954 +5955 +5956 +5957 +5958 +5959 +5984 +5985 +5986 +5987 +5988 +5989 +5990 +5991 +6016 +6017 +6018 +6019 +6020 +6021 +6022 +6023 +6048 +6049 +6050 +6051 +6052 +6053 +6054 +6055 +6080 +6081 +6082 +6083 +6084 +6085 +6086 +6087 +6112 +6113 +6114 +6115 +6116 +6117 +6118 +6119 +6144 +6145 +6146 +6147 +6148 +6149 +6150 +6151 +6176 +6177 +6178 +6179 +6180 +6181 +6182 +6183 +6208 +6209 +6210 +6211 +6212 +6213 +6214 +6215 +6240 +6241 +6242 +6243 +6244 +6245 +6246 +6247 +6272 +6273 +6274 +6275 +6276 +6277 +6278 +6279 +6304 +6305 +6306 +6307 +6308 +6309 +6310 +6311 +6336 +6337 +6338 +6339 +6340 +6341 +6342 +6343 +6368 +6369 +6370 +6371 +6372 +6373 +6374 +6375 +6400 +6401 +6402 +6403 +6404 +6405 +6406 +6407 +6432 +6433 +6434 +6435 +6436 +6437 +6438 +6439 +6464 +6465 +6466 +6467 +6468 +6469 +6470 +6471 +6496 +6497 +6498 +6499 +6500 +6501 +6502 +6503 +6528 +6529 +6530 +6531 +6532 +6533 +6534 +6535 +6560 +6561 +6562 +6563 +6564 +6565 +6566 +6567 +6592 +6593 +6594 +6595 +6596 +6597 +6598 +6599 +6624 +6625 +6626 +6627 +6628 +6629 +6630 +6631 +6656 +6657 +6658 +6659 +6660 +6661 +6662 +6663 +6688 +6689 +6690 +6691 +6692 +6693 +6694 +6695 +6720 +6721 +6722 +6723 +6724 +6725 +6726 +6727 +6752 +6753 +6754 +6755 +6756 +6757 +6758 +6759 +6784 +6785 +6786 +6787 +6788 +6789 +6790 +6791 +6816 +6817 +6818 +6819 +6820 +6821 +6822 +6823 +6848 +6849 +6850 +6851 +6852 +6853 +6854 +6855 +6880 +6881 +6882 +6883 +6884 +6885 +6886 +6887 +6912 +6913 +6914 +6915 +6916 +6917 +6918 +6919 +6944 +6945 +6946 +6947 +6948 +6949 +6950 +6951 +6976 +6977 +6978 +6979 +6980 +6981 +6982 +6983 +7008 +7009 +7010 +7011 +7012 +7013 +7014 +7015 +7040 +7041 +7042 +7043 +7044 +7045 +7046 +7047 +7072 +7073 +7074 +7075 +7076 +7077 +7078 +7079 +7104 +7105 +7106 +7107 +7108 +7109 +7110 +7111 +7136 +7137 +7138 +7139 +7140 +7141 +7142 +7143 +7168 +7169 +7170 +7171 +7172 +7173 +7174 +7175 +7200 +7201 +7202 +7203 +7204 +7205 +7206 +7207 +7232 +7233 +7234 +7235 +7236 +7237 +7238 +7239 +7264 +7265 +7266 +7267 +7268 +7269 +7270 +7271 +7296 +7297 +7298 +7299 +7300 +7301 +7302 +7303 +7328 +7329 +7330 +7331 +7332 +7333 +7334 +7335 +7360 +7361 +7362 +7363 +7364 +7365 +7366 +7367 +7392 +7393 +7394 +7395 +7396 +7397 +7398 +7399 +7424 +7425 +7426 +7427 +7428 +7429 +7430 +7431 +7456 +7457 +7458 +7459 +7460 +7461 +7462 +7463 +7488 +7489 +7490 +7491 +7492 +7493 +7494 +7495 +7520 +7521 +7522 +7523 +7524 +7525 +7526 +7527 +7552 +7553 +7554 +7555 +7556 +7557 +7558 +7559 +7584 +7585 +7586 +7587 +7588 +7589 +7590 +7591 +7616 +7617 +7618 +7619 +7620 +7621 +7622 +7623 +7648 +7649 +7650 +7651 +7652 +7653 +7654 +7655 +7680 +7681 +7682 +7683 +7684 +7685 +7686 +7687 +7712 +7713 +7714 +7715 +7716 +7717 +7718 +7719 +7744 +7745 +7746 +7747 +7748 +7749 +7750 +7751 +7776 +7777 +7778 +7779 +7780 +7781 +7782 +7783 +7808 +7809 +7810 +7811 +7812 +7813 +7814 +7815 +7840 +7841 +7842 +7843 +7844 +7845 +7846 +7847 +7872 +7873 +7874 +7875 +7876 +7877 +7878 +7879 +7904 +7905 +7906 +7907 +7908 +7909 +7910 +7911 +7936 +7937 +7938 +7939 +7940 +7941 +7942 +7943 +7968 +7969 +7970 +7971 +7972 +7973 +7974 +7975 +8000 +8001 +8002 +8003 +8004 +8005 +8006 +8007 +8032 +8033 +8034 +8035 +8036 +8037 +8038 +8039 +8064 +8065 +8066 +8067 +8068 +8069 +8070 +8071 +8096 +8097 +8098 +8099 +8100 +8101 +8102 +8103 +8128 +8129 +8130 +8131 +8132 +8133 +8134 +8135 +8160 +8161 +8162 +8163 +8164 +8165 +8166 +8167 +8192 +8193 +8194 +8195 +8196 +8197 +8198 +8199 +8224 +8225 +8226 +8227 +8228 +8229 +8230 +8231 +8256 +8257 +8258 +8259 +8260 +8261 +8262 +8263 +8288 +8289 +8290 +8291 +8292 +8293 +8294 +8295 +8320 +8321 +8322 +8323 +8324 +8325 +8326 +8327 +8352 +8353 +8354 +8355 +8356 +8357 +8358 +8359 +8384 +8385 +8386 +8387 +8388 +8389 +8390 +8391 +8416 +8417 +8418 +8419 +8420 +8421 +8422 +8423 +8448 +8449 +8450 +8451 +8452 +8453 +8454 +8455 +8480 +8481 +8482 +8483 +8484 +8485 +8486 +8487 +8512 +8513 +8514 +8515 +8516 +8517 +8518 +8519 +8544 +8545 +8546 +8547 +8548 +8549 +8550 +8551 +8576 +8577 +8578 +8579 +8580 +8581 +8582 +8583 +8608 +8609 +8610 +8611 +8612 +8613 +8614 +8615 +8640 +8641 +8642 +8643 +8644 +8645 +8646 +8647 +8672 +8673 +8674 +8675 +8676 +8677 +8678 +8679 +8704 +8705 +8706 +8707 +8708 +8709 +8710 +8711 +8736 +8737 +8738 +8739 +8740 +8741 +8742 +8743 +8768 +8769 +8770 +8771 +8772 +8773 +8774 +8775 +8800 +8801 +8802 +8803 +8804 +8805 +8806 +8807 +8832 +8833 +8834 +8835 +8836 +8837 +8838 +8839 +8864 +8865 +8866 +8867 +8868 +8869 +8870 +8871 +8896 +8897 +8898 +8899 +8900 +8901 +8902 +8903 +8928 +8929 +8930 +8931 +8932 +8933 +8934 +8935 +8960 +8961 +8962 +8963 +8964 +8965 +8966 +8967 +8992 +8993 +8994 +8995 +8996 +8997 +8998 +8999 +9024 +9025 +9026 +9027 +9028 +9029 +9030 +9031 +9056 +9057 +9058 +9059 +9060 +9061 +9062 +9063 +9088 +9089 +9090 +9091 +9092 +9093 +9094 +9095 +9120 +9121 +9122 +9123 +9124 +9125 +9126 +9127 +9152 +9153 +9154 +9155 +9156 +9157 +9158 +9159 +9184 +9185 +9186 +9187 +9188 +9189 +9190 +9191 +9216 +9217 +9218 +9219 +9220 +9221 +9222 +9223 +9248 +9249 +9250 +9251 +9252 +9253 +9254 +9255 +9280 +9281 +9282 +9283 +9284 +9285 +9286 +9287 +9312 +9313 +9314 +9315 +9316 +9317 +9318 +9319 +9344 +9345 +9346 +9347 +9348 +9349 +9350 +9351 +9376 +9377 +9378 +9379 +9380 +9381 +9382 +9383 +9408 +9409 +9410 +9411 +9412 +9413 +9414 +9415 +9440 +9441 +9442 +9443 +9444 +9445 +9446 +9447 +9472 +9473 +9474 +9475 +9476 +9477 +9478 +9479 +9504 +9505 +9506 +9507 +9508 +9509 +9510 +9511 +9536 +9537 +9538 +9539 +9540 +9541 +9542 +9543 +9568 +9569 +9570 +9571 +9572 +9573 +9574 +9575 +9600 +9601 +9602 +9603 +9604 +9605 +9606 +9607 +9632 +9633 +9634 +9635 +9636 +9637 +9638 +9639 +9664 +9665 +9666 +9667 +9668 +9669 +9670 +9671 +9696 +9697 +9698 +9699 +9700 +9701 +9702 +9703 +9728 +9729 +9730 +9731 +9732 +9733 +9734 +9735 +9760 +9761 +9762 +9763 +9764 +9765 +9766 +9767 +9792 +9793 +9794 +9795 +9796 +9797 +9798 +9799 +9824 +9825 +9826 +9827 +9828 +9829 +9830 +9831 +9856 +9857 +9858 +9859 +9860 +9861 +9862 +9863 +9888 +9889 +9890 +9891 +9892 +9893 +9894 +9895 +9920 +9921 +9922 +9923 +9924 +9925 +9926 +9927 +9952 +9953 +9954 +9955 +9956 +9957 +9958 +9959 +9984 +9985 +9986 +9987 +9988 +9989 +9990 +9991 +10016 +10017 +10018 +10019 +10020 +10021 +10022 +10023 +10048 +10049 +10050 +10051 +10052 +10053 +10054 +10055 +10080 +10081 +10082 +10083 +10084 +10085 +10086 +10087 +10112 +10113 +10114 +10115 +10116 +10117 +10118 +10119 +10144 +10145 +10146 +10147 +10148 +10149 +10150 +10151 +10176 +10177 +10178 +10179 +10180 +10181 +10182 +10183 +10208 +10209 +10210 +10211 +10212 +10213 +10214 +10215 +10240 +10241 +10242 +10243 +10244 +10245 +10246 +10247 +10272 +10273 +10274 +10275 +10276 +10277 +10278 +10279 +10304 +10305 +10306 +10307 +10308 +10309 +10310 +10311 +10336 +10337 +10338 +10339 +10340 +10341 +10342 +10343 +10368 +10369 +10370 +10371 +10372 +10373 +10374 +10375 +10400 +10401 +10402 +10403 +10404 +10405 +10406 +10407 +10432 +10433 +10434 +10435 +10436 +10437 +10438 +10439 +10464 +10465 +10466 +10467 +10468 +10469 +10470 +10471 +10496 +10497 +10498 +10499 +10500 +10501 +10502 +10503 +10528 +10529 +10530 +10531 +10532 +10533 +10534 +10535 +10560 +10561 +10562 +10563 +10564 +10565 +10566 +10567 +10592 +10593 +10594 +10595 +10596 +10597 +10598 +10599 +10624 +10625 +10626 +10627 +10628 +10629 +10630 +10631 +10656 +10657 +10658 +10659 +10660 +10661 +10662 +10663 +10688 +10689 +10690 +10691 +10692 +10693 +10694 +10695 +10720 +10721 +10722 +10723 +10724 +10725 +10726 +10727 +10752 +10753 +10754 +10755 +10756 +10757 +10758 +10759 +10784 +10785 +10786 +10787 +10788 +10789 +10790 +10791 +10816 +10817 +10818 +10819 +10820 +10821 +10822 +10823 +10848 +10849 +10850 +10851 +10852 +10853 +10854 +10855 +10880 +10881 +10882 +10883 +10884 +10885 +10886 +10887 +10912 +10913 +10914 +10915 +10916 +10917 +10918 +10919 +10944 +10945 +10946 +10947 +10948 +10949 +10950 +10951 +10976 +10977 +10978 +10979 +10980 +10981 +10982 +10983 +11008 +11009 +11010 +11011 +11012 +11013 +11014 +11015 +11040 +11041 +11042 +11043 +11044 +11045 +11046 +11047 +11072 +11073 +11074 +11075 +11076 +11077 +11078 +11079 +11104 +11105 +11106 +11107 +11108 +11109 +11110 +11111 +11136 +11137 +11138 +11139 +11140 +11141 +11142 +11143 +11168 +11169 +11170 +11171 +11172 +11173 +11174 +11175 +11200 +11201 +11202 +11203 +11204 +11205 +11206 +11207 +11232 +11233 +11234 +11235 +11236 +11237 +11238 +11239 +11264 +11265 +11266 +11267 +11268 +11269 +11270 +11271 +11296 +11297 +11298 +11299 +11300 +11301 +11302 +11303 +11328 +11329 +11330 +11331 +11332 +11333 +11334 +11335 +11360 +11361 +11362 +11363 +11364 +11365 +11366 +11367 +11392 +11393 +11394 +11395 +11396 +11397 +11398 +11399 +11424 +11425 +11426 +11427 +11428 +11429 +11430 +11431 +11456 +11457 +11458 +11459 +11460 +11461 +11462 +11463 +11488 +11489 +11490 +11491 +11492 +11493 +11494 +11495 +11520 +11521 +11522 +11523 +11524 +11525 +11526 +11527 +11552 +11553 +11554 +11555 +11556 +11557 +11558 +11559 +11584 +11585 +11586 +11587 +11588 +11589 +11590 +11591 +11616 +11617 +11618 +11619 +11620 +11621 +11622 +11623 +11648 +11649 +11650 +11651 +11652 +11653 +11654 +11655 +11680 +11681 +11682 +11683 +11684 +11685 +11686 +11687 +11712 +11713 +11714 +11715 +11716 +11717 +11718 +11719 +11744 +11745 +11746 +11747 +11748 +11749 +11750 +11751 +11776 +11777 +11778 +11779 +11780 +11781 +11782 +11783 +11808 +11809 +11810 +11811 +11812 +11813 +11814 +11815 +11840 +11841 +11842 +11843 +11844 +11845 +11846 +11847 +11872 +11873 +11874 +11875 +11876 +11877 +11878 +11879 +11904 +11905 +11906 +11907 +11908 +11909 +11910 +11911 +11936 +11937 +11938 +11939 +11940 +11941 +11942 +11943 +11968 +11969 +11970 +11971 +11972 +11973 +11974 +11975 +12000 +12001 +12002 +12003 +12004 +12005 +12006 +12007 +12032 +12033 +12034 +12035 +12036 +12037 +12038 +12039 +12064 +12065 +12066 +12067 +12068 +12069 +12070 +12071 +12096 +12097 +12098 +12099 +12100 +12101 +12102 +12103 +12128 +12129 +12130 +12131 +12132 +12133 +12134 +12135 +12160 +12161 +12162 +12163 +12164 +12165 +12166 +12167 +12192 +12193 +12194 +12195 +12196 +12197 +12198 +12199 +12224 +12225 +12226 +12227 +12228 +12229 +12230 +12231 +12256 +12257 +12258 +12259 +12260 +12261 +12262 +12263 +12288 +12289 +12290 +12291 +12292 +12293 +12294 +12295 +12320 +12321 +12322 +12323 +12324 +12325 +12326 +12327 +12352 +12353 +12354 +12355 +12356 +12357 +12358 +12359 +12384 +12385 +12386 +12387 +12388 +12389 +12390 +12391 +12416 +12417 +12418 +12419 +12420 +12421 +12422 +12423 +12448 +12449 +12450 +12451 +12452 +12453 +12454 +12455 +12480 +12481 +12482 +12483 +12484 +12485 +12486 +12487 +12512 +12513 +12514 +12515 +12516 +12517 +12518 +12519 +12544 +12545 +12546 +12547 +12548 +12549 +12550 +12551 +12576 +12577 +12578 +12579 +12580 +12581 +12582 +12583 +12608 +12609 +12610 +12611 +12612 +12613 +12614 +12615 +12640 +12641 +12642 +12643 +12644 +12645 +12646 +12647 +12672 +12673 +12674 +12675 +12676 +12677 +12678 +12679 +12704 +12705 +12706 +12707 +12708 +12709 +12710 +12711 +12736 +12737 +12738 +12739 +12740 +12741 +12742 +12743 +12768 +12769 +12770 +12771 +12772 +12773 +12774 +12775 +12800 +12801 +12802 +12803 +12804 +12805 +12806 +12807 +12832 +12833 +12834 +12835 +12836 +12837 +12838 +12839 +12864 +12865 +12866 +12867 +12868 +12869 +12870 +12871 +12896 +12897 +12898 +12899 +12900 +12901 +12902 +12903 +12928 +12929 +12930 +12931 +12932 +12933 +12934 +12935 +12960 +12961 +12962 +12963 +12964 +12965 +12966 +12967 +12992 +12993 +12994 +12995 +12996 +12997 +12998 +12999 +13024 +13025 +13026 +13027 +13028 +13029 +13030 +13031 +13056 +13057 +13058 +13059 +13060 +13061 +13062 +13063 +13088 +13089 +13090 +13091 +13092 +13093 +13094 +13095 +13120 +13121 +13122 +13123 +13124 +13125 +13126 +13127 +13152 +13153 +13154 +13155 +13156 +13157 +13158 +13159 +13184 +13185 +13186 +13187 +13188 +13189 +13190 +13191 +13216 +13217 +13218 +13219 +13220 +13221 +13222 +13223 +13248 +13249 +13250 +13251 +13252 +13253 +13254 +13255 +13280 +13281 +13282 +13283 +13284 +13285 +13286 +13287 +13312 +13313 +13314 +13315 +13316 +13317 +13318 +13319 +13344 +13345 +13346 +13347 +13348 +13349 +13350 +13351 +13376 +13377 +13378 +13379 +13380 +13381 +13382 +13383 +13408 +13409 +13410 +13411 +13412 +13413 +13414 +13415 +13440 +13441 +13442 +13443 +13444 +13445 +13446 +13447 +13472 +13473 +13474 +13475 +13476 +13477 +13478 +13479 +13504 +13505 +13506 +13507 +13508 +13509 +13510 +13511 +13536 +13537 +13538 +13539 +13540 +13541 +13542 +13543 +13568 +13569 +13570 +13571 +13572 +13573 +13574 +13575 +13600 +13601 +13602 +13603 +13604 +13605 +13606 +13607 +13632 +13633 +13634 +13635 +13636 +13637 +13638 +13639 +13664 +13665 +13666 +13667 +13668 +13669 +13670 +13671 +13696 +13697 +13698 +13699 +13700 +13701 +13702 +13703 +13728 +13729 +13730 +13731 +13732 +13733 +13734 +13735 +13760 +13761 +13762 +13763 +13764 +13765 +13766 +13767 +13792 +13793 +13794 +13795 +13796 +13797 +13798 +13799 +13824 +13825 +13826 +13827 +13828 +13829 +13830 +13831 +13856 +13857 +13858 +13859 +13860 +13861 +13862 +13863 +13888 +13889 +13890 +13891 +13892 +13893 +13894 +13895 +13920 +13921 +13922 +13923 +13924 +13925 +13926 +13927 +13952 +13953 +13954 +13955 +13956 +13957 +13958 +13959 +13984 +13985 +13986 +13987 +13988 +13989 +13990 +13991 +14016 +14017 +14018 +14019 +14020 +14021 +14022 +14023 +14048 +14049 +14050 +14051 +14052 +14053 +14054 +14055 +14080 +14081 +14082 +14083 +14084 +14085 +14086 +14087 +14112 +14113 +14114 +14115 +14116 +14117 +14118 +14119 +14144 +14145 +14146 +14147 +14148 +14149 +14150 +14151 +14176 +14177 +14178 +14179 +14180 +14181 +14182 +14183 +14208 +14209 +14210 +14211 +14212 +14213 +14214 +14215 +14240 +14241 +14242 +14243 +14244 +14245 +14246 +14247 +14272 +14273 +14274 +14275 +14276 +14277 +14278 +14279 +14304 +14305 +14306 +14307 +14308 +14309 +14310 +14311 +14336 +14337 +14338 +14339 +14340 +14341 +14342 +14343 +14368 +14369 +14370 +14371 +14372 +14373 +14374 +14375 +14400 +14401 +14402 +14403 +14404 +14405 +14406 +14407 +14432 +14433 +14434 +14435 +14436 +14437 +14438 +14439 +14464 +14465 +14466 +14467 +14468 +14469 +14470 +14471 +14496 +14497 +14498 +14499 +14500 +14501 +14502 +14503 +14528 +14529 +14530 +14531 +14532 +14533 +14534 +14535 +14560 +14561 +14562 +14563 +14564 +14565 +14566 +14567 +14592 +14593 +14594 +14595 +14596 +14597 +14598 +14599 +14624 +14625 +14626 +14627 +14628 +14629 +14630 +14631 +14656 +14657 +14658 +14659 +14660 +14661 +14662 +14663 +14688 +14689 +14690 +14691 +14692 +14693 +14694 +14695 +14720 +14721 +14722 +14723 +14724 +14725 +14726 +14727 +14752 +14753 +14754 +14755 +14756 +14757 +14758 +14759 +14784 +14785 +14786 +14787 +14788 +14789 +14790 +14791 +14816 +14817 +14818 +14819 +14820 +14821 +14822 +14823 +14848 +14849 +14850 +14851 +14852 +14853 +14854 +14855 +14880 +14881 +14882 +14883 +14884 +14885 +14886 +14887 +14912 +14913 +14914 +14915 +14916 +14917 +14918 +14919 +14944 +14945 +14946 +14947 +14948 +14949 +14950 +14951 +14976 +14977 +14978 +14979 +14980 +14981 +14982 +14983 +15008 +15009 +15010 +15011 +15012 +15013 +15014 +15015 +15040 +15041 +15042 +15043 +15044 +15045 +15046 +15047 +15072 +15073 +15074 +15075 +15076 +15077 +15078 +15079 +15104 +15105 +15106 +15107 +15108 +15109 +15110 +15111 +15136 +15137 +15138 +15139 +15140 +15141 +15142 +15143 +15168 +15169 +15170 +15171 +15172 +15173 +15174 +15175 +15200 +15201 +15202 +15203 +15204 +15205 +15206 +15207 +15232 +15233 +15234 +15235 +15236 +15237 +15238 +15239 +15264 +15265 +15266 +15267 +15268 +15269 +15270 +15271 +15296 +15297 +15298 +15299 +15300 +15301 +15302 +15303 +15328 +15329 +15330 +15331 +15332 +15333 +15334 +15335 +15360 +15361 +15362 +15363 +15364 +15365 +15366 +15367 +15392 +15393 +15394 +15395 +15396 +15397 +15398 +15399 +15424 +15425 +15426 +15427 +15428 +15429 +15430 +15431 +15456 +15457 +15458 +15459 +15460 +15461 +15462 +15463 +15488 +15489 +15490 +15491 +15492 +15493 +15494 +15495 +15520 +15521 +15522 +15523 +15524 +15525 +15526 +15527 +15552 +15553 +15554 +15555 +15556 +15557 +15558 +15559 +15584 +15585 +15586 +15587 +15588 +15589 +15590 +15591 +15616 +15617 +15618 +15619 +15620 +15621 +15622 +15623 +15648 +15649 +15650 +15651 +15652 +15653 +15654 +15655 +15680 +15681 +15682 +15683 +15684 +15685 +15686 +15687 +15712 +15713 +15714 +15715 +15716 +15717 +15718 +15719 +15744 +15745 +15746 +15747 +15748 +15749 +15750 +15751 +15776 +15777 +15778 +15779 +15780 +15781 +15782 +15783 +15808 +15809 +15810 +15811 +15812 +15813 +15814 +15815 +15840 +15841 +15842 +15843 +15844 +15845 +15846 +15847 +15872 +15873 +15874 +15875 +15876 +15877 +15878 +15879 +15904 +15905 +15906 +15907 +15908 +15909 +15910 +15911 +15936 +15937 +15938 +15939 +15940 +15941 +15942 +15943 +15968 +15969 +15970 +15971 +15972 +15973 +15974 +15975 +16000 +16001 +16002 +16003 +16004 +16005 +16006 +16007 +16032 +16033 +16034 +16035 +16036 +16037 +16038 +16039 +16064 +16065 +16066 +16067 +16068 +16069 +16070 +16071 +16096 +16097 +16098 +16099 +16100 +16101 +16102 +16103 +16128 +16129 +16130 +16131 +16132 +16133 +16134 +16135 +16160 +16161 +16162 +16163 +16164 +16165 +16166 +16167 +16192 +16193 +16194 +16195 +16196 +16197 +16198 +16199 +16224 +16225 +16226 +16227 +16228 +16229 +16230 +16231 +16256 +16257 +16258 +16259 +16260 +16261 +16262 +16263 +16288 +16289 +16290 +16291 +16292 +16293 +16294 +16295 +16320 +16321 +16322 +16323 +16324 +16325 +16326 +16327 +16352 +16353 +16354 +16355 +16356 +16357 +16358 +16359 +16384 +16385 +16386 +16387 +16388 +16389 +16390 +16391 +16416 +16417 +16418 +16419 +16420 +16421 +16422 +16423 +16448 +16449 +16450 +16451 +16452 +16453 +16454 +16455 +16480 +16481 +16482 +16483 +16484 +16485 +16486 +16487 +16512 +16513 +16514 +16515 +16516 +16517 +16518 +16519 +16544 +16545 +16546 +16547 +16548 +16549 +16550 +16551 +16576 +16577 +16578 +16579 +16580 +16581 +16582 +16583 +16608 +16609 +16610 +16611 +16612 +16613 +16614 +16615 +16640 +16641 +16642 +16643 +16644 +16645 +16646 +16647 +16672 +16673 +16674 +16675 +16676 +16677 +16678 +16679 +16704 +16705 +16706 +16707 +16708 +16709 +16710 +16711 +16736 +16737 +16738 +16739 +16740 +16741 +16742 +16743 +16768 +16769 +16770 +16771 +16772 +16773 +16774 +16775 +16800 +16801 +16802 +16803 +16804 +16805 +16806 +16807 +16832 +16833 +16834 +16835 +16836 +16837 +16838 +16839 +16864 +16865 +16866 +16867 +16868 +16869 +16870 +16871 +16896 +16897 +16898 +16899 +16900 +16901 +16902 +16903 +16928 +16929 +16930 +16931 +16932 +16933 +16934 +16935 +16960 +16961 +16962 +16963 +16964 +16965 +16966 +16967 +16992 +16993 +16994 +16995 +16996 +16997 +16998 +16999 +17024 +17025 +17026 +17027 +17028 +17029 +17030 +17031 +17056 +17057 +17058 +17059 +17060 +17061 +17062 +17063 +17088 +17089 +17090 +17091 +17092 +17093 +17094 +17095 +17120 +17121 +17122 +17123 +17124 +17125 +17126 +17127 +17152 +17153 +17154 +17155 +17156 +17157 +17158 +17159 +17184 +17185 +17186 +17187 +17188 +17189 +17190 +17191 +17216 +17217 +17218 +17219 +17220 +17221 +17222 +17223 +17248 +17249 +17250 +17251 +17252 +17253 +17254 +17255 +17280 +17281 +17282 +17283 +17284 +17285 +17286 +17287 +17312 +17313 +17314 +17315 +17316 +17317 +17318 +17319 +17344 +17345 +17346 +17347 +17348 +17349 +17350 +17351 +17376 +17377 +17378 +17379 +17380 +17381 +17382 +17383 +17408 +17409 +17410 +17411 +17412 +17413 +17414 +17415 +17440 +17441 +17442 +17443 +17444 +17445 +17446 +17447 +17472 +17473 +17474 +17475 +17476 +17477 +17478 +17479 +17504 +17505 +17506 +17507 +17508 +17509 +17510 +17511 +17536 +17537 +17538 +17539 +17540 +17541 +17542 +17543 +17568 +17569 +17570 +17571 +17572 +17573 +17574 +17575 +17600 +17601 +17602 +17603 +17604 +17605 +17606 +17607 +17632 +17633 +17634 +17635 +17636 +17637 +17638 +17639 +17664 +17665 +17666 +17667 +17668 +17669 +17670 +17671 +17696 +17697 +17698 +17699 +17700 +17701 +17702 +17703 +17728 +17729 +17730 +17731 +17732 +17733 +17734 +17735 +17760 +17761 +17762 +17763 +17764 +17765 +17766 +17767 +17792 +17793 +17794 +17795 +17796 +17797 +17798 +17799 +17824 +17825 +17826 +17827 +17828 +17829 +17830 +17831 +17856 +17857 +17858 +17859 +17860 +17861 +17862 +17863 +17888 +17889 +17890 +17891 +17892 +17893 +17894 +17895 +17920 +17921 +17922 +17923 +17924 +17925 +17926 +17927 +17952 +17953 +17954 +17955 +17956 +17957 +17958 +17959 +17984 +17985 +17986 +17987 +17988 +17989 +17990 +17991 +18016 +18017 +18018 +18019 +18020 +18021 +18022 +18023 +18048 +18049 +18050 +18051 +18052 +18053 +18054 +18055 +18080 +18081 +18082 +18083 +18084 +18085 +18086 +18087 +18112 +18113 +18114 +18115 +18116 +18117 +18118 +18119 +18144 +18145 +18146 +18147 +18148 +18149 +18150 +18151 +18176 +18177 +18178 +18179 +18180 +18181 +18182 +18183 +18208 +18209 +18210 +18211 +18212 +18213 +18214 +18215 +18240 +18241 +18242 +18243 +18244 +18245 +18246 +18247 +18272 +18273 +18274 +18275 +18276 +18277 +18278 +18279 +18304 +18305 +18306 +18307 +18308 +18309 +18310 +18311 +18336 +18337 +18338 +18339 +18340 +18341 +18342 +18343 +18368 +18369 +18370 +18371 +18372 +18373 +18374 +18375 +18400 +18401 +18402 +18403 +18404 +18405 +18406 +18407 +18432 +18433 +18434 +18435 +18436 +18437 +18438 +18439 +18464 +18465 +18466 +18467 +18468 +18469 +18470 +18471 +18496 +18497 +18498 +18499 +18500 +18501 +18502 +18503 +18528 +18529 +18530 +18531 +18532 +18533 +18534 +18535 +18560 +18561 +18562 +18563 +18564 +18565 +18566 +18567 +18592 +18593 +18594 +18595 +18596 +18597 +18598 +18599 +18624 +18625 +18626 +18627 +18628 +18629 +18630 +18631 +18656 +18657 +18658 +18659 +18660 +18661 +18662 +18663 +18688 +18689 +18690 +18691 +18692 +18693 +18694 +18695 +18720 +18721 +18722 +18723 +18724 +18725 +18726 +18727 +18752 +18753 +18754 +18755 +18756 +18757 +18758 +18759 +18784 +18785 +18786 +18787 +18788 +18789 +18790 +18791 +18816 +18817 +18818 +18819 +18820 +18821 +18822 +18823 +18848 +18849 +18850 +18851 +18852 +18853 +18854 +18855 +18880 +18881 +18882 +18883 +18884 +18885 +18886 +18887 +18912 +18913 +18914 +18915 +18916 +18917 +18918 +18919 +18944 +18945 +18946 +18947 +18948 +18949 +18950 +18951 +18976 +18977 +18978 +18979 +18980 +18981 +18982 +18983 +19008 +19009 +19010 +19011 +19012 +19013 +19014 +19015 +19040 +19041 +19042 +19043 +19044 +19045 +19046 +19047 +19072 +19073 +19074 +19075 +19076 +19077 +19078 +19079 +19104 +19105 +19106 +19107 +19108 +19109 +19110 +19111 +19136 +19137 +19138 +19139 +19140 +19141 +19142 +19143 +19168 +19169 +19170 +19171 +19172 +19173 +19174 +19175 +19200 +19201 +19202 +19203 +19204 +19205 +19206 +19207 +19232 +19233 +19234 +19235 +19236 +19237 +19238 +19239 +19264 +19265 +19266 +19267 +19268 +19269 +19270 +19271 +19296 +19297 +19298 +19299 +19300 +19301 +19302 +19303 +19328 +19329 +19330 +19331 +19332 +19333 +19334 +19335 +19360 +19361 +19362 +19363 +19364 +19365 +19366 +19367 +19392 +19393 +19394 +19395 +19396 +19397 +19398 +19399 +19424 +19425 +19426 +19427 +19428 +19429 +19430 +19431 +19456 +19457 +19458 +19459 +19460 +19461 +19462 +19463 +19488 +19489 +19490 +19491 +19492 +19493 +19494 +19495 +19520 +19521 +19522 +19523 +19524 +19525 +19526 +19527 +19552 +19553 +19554 +19555 +19556 +19557 +19558 +19559 +19584 +19585 +19586 +19587 +19588 +19589 +19590 +19591 +19616 +19617 +19618 +19619 +19620 +19621 +19622 +19623 +19648 +19649 +19650 +19651 +19652 +19653 +19654 +19655 +19680 +19681 +19682 +19683 +19684 +19685 +19686 +19687 +19712 +19713 +19714 +19715 +19716 +19717 +19718 +19719 +19744 +19745 +19746 +19747 +19748 +19749 +19750 +19751 +19776 +19777 +19778 +19779 +19780 +19781 +19782 +19783 +19808 +19809 +19810 +19811 +19812 +19813 +19814 +19815 +19840 +19841 +19842 +19843 +19844 +19845 +19846 +19847 +19872 +19873 +19874 +19875 +19876 +19877 +19878 +19879 +19904 +19905 +19906 +19907 +19908 +19909 +19910 +19911 +19936 +19937 +19938 +19939 +19940 +19941 +19942 +19943 +19968 +19969 +19970 +19971 +19972 +19973 +19974 +19975 +20000 +20001 +20002 +20003 +20004 +20005 +20006 +20007 +20032 +20033 +20034 +20035 +20036 +20037 +20038 +20039 +20064 +20065 +20066 +20067 +20068 +20069 +20070 +20071 +20096 +20097 +20098 +20099 +20100 +20101 +20102 +20103 +20128 +20129 +20130 +20131 +20132 +20133 +20134 +20135 +20160 +20161 +20162 +20163 +20164 +20165 +20166 +20167 +20192 +20193 +20194 +20195 +20196 +20197 +20198 +20199 +20224 +20225 +20226 +20227 +20228 +20229 +20230 +20231 +20256 +20257 +20258 +20259 +20260 +20261 +20262 +20263 +20288 +20289 +20290 +20291 +20292 +20293 +20294 +20295 +20320 +20321 +20322 +20323 +20324 +20325 +20326 +20327 +20352 +20353 +20354 +20355 +20356 +20357 +20358 +20359 +20384 +20385 +20386 +20387 +20388 +20389 +20390 +20391 +20416 +20417 +20418 +20419 +20420 +20421 +20422 +20423 +20448 +20449 +20450 +20451 +20452 +20453 +20454 +20455 +20480 +20481 +20482 +20483 +20484 +20485 +20486 +20487 +20512 +20513 +20514 +20515 +20516 +20517 +20518 +20519 +20544 +20545 +20546 +20547 +20548 +20549 +20550 +20551 +20576 +20577 +20578 +20579 +20580 +20581 +20582 +20583 +20608 +20609 +20610 +20611 +20612 +20613 +20614 +20615 +20640 +20641 +20642 +20643 +20644 +20645 +20646 +20647 +20672 +20673 +20674 +20675 +20676 +20677 +20678 +20679 +20704 +20705 +20706 +20707 +20708 +20709 +20710 +20711 +20736 +20737 +20738 +20739 +20740 +20741 +20742 +20743 +20768 +20769 +20770 +20771 +20772 +20773 +20774 +20775 +20800 +20801 +20802 +20803 +20804 +20805 +20806 +20807 +20832 +20833 +20834 +20835 +20836 +20837 +20838 +20839 +20864 +20865 +20866 +20867 +20868 +20869 +20870 +20871 +20896 +20897 +20898 +20899 +20900 +20901 +20902 +20903 +20928 +20929 +20930 +20931 +20932 +20933 +20934 +20935 +20960 +20961 +20962 +20963 +20964 +20965 +20966 +20967 +20992 +20993 +20994 +20995 +20996 +20997 +20998 +20999 +21024 +21025 +21026 +21027 +21028 +21029 +21030 +21031 +21056 +21057 +21058 +21059 +21060 +21061 +21062 +21063 +21088 +21089 +21090 +21091 +21092 +21093 +21094 +21095 +21120 +21121 +21122 +21123 +21124 +21125 +21126 +21127 +21152 +21153 +21154 +21155 +21156 +21157 +21158 +21159 +21184 +21185 +21186 +21187 +21188 +21189 +21190 +21191 +21216 +21217 +21218 +21219 +21220 +21221 +21222 +21223 +21248 +21249 +21250 +21251 +21252 +21253 +21254 +21255 +21280 +21281 +21282 +21283 +21284 +21285 +21286 +21287 +21312 +21313 +21314 +21315 +21316 +21317 +21318 +21319 +21344 +21345 +21346 +21347 +21348 +21349 +21350 +21351 +21376 +21377 +21378 +21379 +21380 +21381 +21382 +21383 +21408 +21409 +21410 +21411 +21412 +21413 +21414 +21415 +21440 +21441 +21442 +21443 +21444 +21445 +21446 +21447 +21472 +21473 +21474 +21475 +21476 +21477 +21478 +21479 +21504 +21505 +21506 +21507 +21508 +21509 +21510 +21511 +21536 +21537 +21538 +21539 +21540 +21541 +21542 +21543 +21568 +21569 +21570 +21571 +21572 +21573 +21574 +21575 +21600 +21601 +21602 +21603 +21604 +21605 +21606 +21607 +21632 +21633 +21634 +21635 +21636 +21637 +21638 +21639 +21664 +21665 +21666 +21667 +21668 +21669 +21670 +21671 +21696 +21697 +21698 +21699 +21700 +21701 +21702 +21703 +21728 +21729 +21730 +21731 +21732 +21733 +21734 +21735 +21760 +21761 +21762 +21763 +21764 +21765 +21766 +21767 +21792 +21793 +21794 +21795 +21796 +21797 +21798 +21799 +21824 +21825 +21826 +21827 +21828 +21829 +21830 +21831 +21856 +21857 +21858 +21859 +21860 +21861 +21862 +21863 +21888 +21889 +21890 +21891 +21892 +21893 +21894 +21895 +21920 +21921 +21922 +21923 +21924 +21925 +21926 +21927 +21952 +21953 +21954 +21955 +21956 +21957 +21958 +21959 +21984 +21985 +21986 +21987 +21988 +21989 +21990 +21991 +22016 +22017 +22018 +22019 +22020 +22021 +22022 +22023 +22048 +22049 +22050 +22051 +22052 +22053 +22054 +22055 +22080 +22081 +22082 +22083 +22084 +22085 +22086 +22087 +22112 +22113 +22114 +22115 +22116 +22117 +22118 +22119 +22144 +22145 +22146 +22147 +22148 +22149 +22150 +22151 +22176 +22177 +22178 +22179 +22180 +22181 +22182 +22183 +22208 +22209 +22210 +22211 +22212 +22213 +22214 +22215 +22240 +22241 +22242 +22243 +22244 +22245 +22246 +22247 +22272 +22273 +22274 +22275 +22276 +22277 +22278 +22279 +22304 +22305 +22306 +22307 +22308 +22309 +22310 +22311 +22336 +22337 +22338 +22339 +22340 +22341 +22342 +22343 +22368 +22369 +22370 +22371 +22372 +22373 +22374 +22375 +22400 +22401 +22402 +22403 +22404 +22405 +22406 +22407 +22432 +22433 +22434 +22435 +22436 +22437 +22438 +22439 +22464 +22465 +22466 +22467 +22468 +22469 +22470 +22471 +22496 +22497 +22498 +22499 +22500 +22501 +22502 +22503 +22528 +22529 +22530 +22531 +22532 +22533 +22534 +22535 +22560 +22561 +22562 +22563 +22564 +22565 +22566 +22567 +22592 +22593 +22594 +22595 +22596 +22597 +22598 +22599 +22624 +22625 +22626 +22627 +22628 +22629 +22630 +22631 +22656 +22657 +22658 +22659 +22660 +22661 +22662 +22663 +22688 +22689 +22690 +22691 +22692 +22693 +22694 +22695 +22720 +22721 +22722 +22723 +22724 +22725 +22726 +22727 +22752 +22753 +22754 +22755 +22756 +22757 +22758 +22759 +22784 +22785 +22786 +22787 +22788 +22789 +22790 +22791 +22816 +22817 +22818 +22819 +22820 +22821 +22822 +22823 +22848 +22849 +22850 +22851 +22852 +22853 +22854 +22855 +22880 +22881 +22882 +22883 +22884 +22885 +22886 +22887 +22912 +22913 +22914 +22915 +22916 +22917 +22918 +22919 +22944 +22945 +22946 +22947 +22948 +22949 +22950 +22951 +22976 +22977 +22978 +22979 +22980 +22981 +22982 +22983 +23008 +23009 +23010 +23011 +23012 +23013 +23014 +23015 +23040 +23041 +23042 +23043 +23044 +23045 +23046 +23047 +23072 +23073 +23074 +23075 +23076 +23077 +23078 +23079 +23104 +23105 +23106 +23107 +23108 +23109 +23110 +23111 +23136 +23137 +23138 +23139 +23140 +23141 +23142 +23143 +23168 +23169 +23170 +23171 +23172 +23173 +23174 +23175 +23200 +23201 +23202 +23203 +23204 +23205 +23206 +23207 +23232 +23233 +23234 +23235 +23236 +23237 +23238 +23239 +23264 +23265 +23266 +23267 +23268 +23269 +23270 +23271 +23296 +23297 +23298 +23299 +23300 +23301 +23302 +23303 +23328 +23329 +23330 +23331 +23332 +23333 +23334 +23335 +23360 +23361 +23362 +23363 +23364 +23365 +23366 +23367 +23392 +23393 +23394 +23395 +23396 +23397 +23398 +23399 +23424 +23425 +23426 +23427 +23428 +23429 +23430 +23431 +23456 +23457 +23458 +23459 +23460 +23461 +23462 +23463 +23488 +23489 +23490 +23491 +23492 +23493 +23494 +23495 +23520 +23521 +23522 +23523 +23524 +23525 +23526 +23527 +23552 +23553 +23554 +23555 +23556 +23557 +23558 +23559 +23584 +23585 +23586 +23587 +23588 +23589 +23590 +23591 +23616 +23617 +23618 +23619 +23620 +23621 +23622 +23623 +23648 +23649 +23650 +23651 +23652 +23653 +23654 +23655 +23680 +23681 +23682 +23683 +23684 +23685 +23686 +23687 +23712 +23713 +23714 +23715 +23716 +23717 +23718 +23719 +23744 +23745 +23746 +23747 +23748 +23749 +23750 +23751 +23776 +23777 +23778 +23779 +23780 +23781 +23782 +23783 +23808 +23809 +23810 +23811 +23812 +23813 +23814 +23815 +23840 +23841 +23842 +23843 +23844 +23845 +23846 +23847 +23872 +23873 +23874 +23875 +23876 +23877 +23878 +23879 +23904 +23905 +23906 +23907 +23908 +23909 +23910 +23911 +23936 +23937 +23938 +23939 +23940 +23941 +23942 +23943 +23968 +23969 +23970 +23971 +23972 +23973 +23974 +23975 +24000 +24001 +24002 +24003 +24004 +24005 +24006 +24007 +24032 +24033 +24034 +24035 +24036 +24037 +24038 +24039 +24064 +24065 +24066 +24067 +24068 +24069 +24070 +24071 +24096 +24097 +24098 +24099 +24100 +24101 +24102 +24103 +24128 +24129 +24130 +24131 +24132 +24133 +24134 +24135 +24160 +24161 +24162 +24163 +24164 +24165 +24166 +24167 +24192 +24193 +24194 +24195 +24196 +24197 +24198 +24199 +24224 +24225 +24226 +24227 +24228 +24229 +24230 +24231 +24256 +24257 +24258 +24259 +24260 +24261 +24262 +24263 +24288 +24289 +24290 +24291 +24292 +24293 +24294 +24295 +24320 +24321 +24322 +24323 +24324 +24325 +24326 +24327 +24352 +24353 +24354 +24355 +24356 +24357 +24358 +24359 +24384 +24385 +24386 +24387 +24388 +24389 +24390 +24391 +24416 +24417 +24418 +24419 +24420 +24421 +24422 +24423 +24448 +24449 +24450 +24451 +24452 +24453 +24454 +24455 +24480 +24481 +24482 +24483 +24484 +24485 +24486 +24487 +24512 +24513 +24514 +24515 +24516 +24517 +24518 +24519 +24544 +24545 +24546 +24547 +24548 +24549 +24550 +24551 +24576 +24577 +24578 +24579 +24580 +24581 +24582 +24583 +24608 +24609 +24610 +24611 +24612 +24613 +24614 +24615 +24640 +24641 +24642 +24643 +24644 +24645 +24646 +24647 +24672 +24673 +24674 +24675 +24676 +24677 +24678 +24679 +24704 +24705 +24706 +24707 +24708 +24709 +24710 +24711 +24736 +24737 +24738 +24739 +24740 +24741 +24742 +24743 +24768 +24769 +24770 +24771 +24772 +24773 +24774 +24775 +24800 +24801 +24802 +24803 +24804 +24805 +24806 +24807 +24832 +24833 +24834 +24835 +24836 +24837 +24838 +24839 +24864 +24865 +24866 +24867 +24868 +24869 +24870 +24871 +24896 +24897 +24898 +24899 +24900 +24901 +24902 +24903 +24928 +24929 +24930 +24931 +24932 +24933 +24934 +24935 +24960 +24961 +24962 +24963 +24964 +24965 +24966 +24967 +24992 +24993 +24994 +24995 +24996 +24997 +24998 +24999 +25024 +25025 +25026 +25027 +25028 +25029 +25030 +25031 +25056 +25057 +25058 +25059 +25060 +25061 +25062 +25063 +25088 +25089 +25090 +25091 +25092 +25093 +25094 +25095 +25120 +25121 +25122 +25123 +25124 +25125 +25126 +25127 +25152 +25153 +25154 +25155 +25156 +25157 +25158 +25159 +25184 +25185 +25186 +25187 +25188 +25189 +25190 +25191 +25216 +25217 +25218 +25219 +25220 +25221 +25222 +25223 +25248 +25249 +25250 +25251 +25252 +25253 +25254 +25255 +25280 +25281 +25282 +25283 +25284 +25285 +25286 +25287 +25312 +25313 +25314 +25315 +25316 +25317 +25318 +25319 +25344 +25345 +25346 +25347 +25348 +25349 +25350 +25351 +25376 +25377 +25378 +25379 +25380 +25381 +25382 +25383 +25408 +25409 +25410 +25411 +25412 +25413 +25414 +25415 +25440 +25441 +25442 +25443 +25444 +25445 +25446 +25447 +25472 +25473 +25474 +25475 +25476 +25477 +25478 +25479 +25504 +25505 +25506 +25507 +25508 +25509 +25510 +25511 +25536 +25537 +25538 +25539 +25540 +25541 +25542 +25543 +25568 +25569 +25570 +25571 +25572 +25573 +25574 +25575 +25600 +25601 +25602 +25603 +25604 +25605 +25606 +25607 +25632 +25633 +25634 +25635 +25636 +25637 +25638 +25639 +25664 +25665 +25666 +25667 +25668 +25669 +25670 +25671 +25696 +25697 +25698 +25699 +25700 +25701 +25702 +25703 +25728 +25729 +25730 +25731 +25732 +25733 +25734 +25735 +25760 +25761 +25762 +25763 +25764 +25765 +25766 +25767 +25792 +25793 +25794 +25795 +25796 +25797 +25798 +25799 +25824 +25825 +25826 +25827 +25828 +25829 +25830 +25831 +25856 +25857 +25858 +25859 +25860 +25861 +25862 +25863 +25888 +25889 +25890 +25891 +25892 +25893 +25894 +25895 +25920 +25921 +25922 +25923 +25924 +25925 +25926 +25927 +25952 +25953 +25954 +25955 +25956 +25957 +25958 +25959 +25984 +25985 +25986 +25987 +25988 +25989 +25990 +25991 +26016 +26017 +26018 +26019 +26020 +26021 +26022 +26023 +26048 +26049 +26050 +26051 +26052 +26053 +26054 +26055 +26080 +26081 +26082 +26083 +26084 +26085 +26086 +26087 +26112 +26113 +26114 +26115 +26116 +26117 +26118 +26119 +26144 +26145 +26146 +26147 +26148 +26149 +26150 +26151 +26176 +26177 +26178 +26179 +26180 +26181 +26182 +26183 +26208 +26209 +26210 +26211 +26212 +26213 +26214 +26215 +26240 +26241 +26242 +26243 +26244 +26245 +26246 +26247 +26272 +26273 +26274 +26275 +26276 +26277 +26278 +26279 +26304 +26305 +26306 +26307 +26308 +26309 +26310 +26311 +26336 +26337 +26338 +26339 +26340 +26341 +26342 +26343 +26368 +26369 +26370 +26371 +26372 +26373 +26374 +26375 +26400 +26401 +26402 +26403 +26404 +26405 +26406 +26407 +26432 +26433 +26434 +26435 +26436 +26437 +26438 +26439 +26464 +26465 +26466 +26467 +26468 +26469 +26470 +26471 +26496 +26497 +26498 +26499 +26500 +26501 +26502 +26503 +26528 +26529 +26530 +26531 +26532 +26533 +26534 +26535 +26560 +26561 +26562 +26563 +26564 +26565 +26566 +26567 +26592 +26593 +26594 +26595 +26596 +26597 +26598 +26599 +26624 +26625 +26626 +26627 +26628 +26629 +26630 +26631 +26656 +26657 +26658 +26659 +26660 +26661 +26662 +26663 +26688 +26689 +26690 +26691 +26692 +26693 +26694 +26695 +26720 +26721 +26722 +26723 +26724 +26725 +26726 +26727 +26752 +26753 +26754 +26755 +26756 +26757 +26758 +26759 +26784 +26785 +26786 +26787 +26788 +26789 +26790 +26791 +26816 +26817 +26818 +26819 +26820 +26821 +26822 +26823 +26848 +26849 +26850 +26851 +26852 +26853 +26854 +26855 +26880 +26881 +26882 +26883 +26884 +26885 +26886 +26887 +26912 +26913 +26914 +26915 +26916 +26917 +26918 +26919 +26944 +26945 +26946 +26947 +26948 +26949 +26950 +26951 +26976 +26977 +26978 +26979 +26980 +26981 +26982 +26983 +27008 +27009 +27010 +27011 +27012 +27013 +27014 +27015 +27040 +27041 +27042 +27043 +27044 +27045 +27046 +27047 +27072 +27073 +27074 +27075 +27076 +27077 +27078 +27079 +27104 +27105 +27106 +27107 +27108 +27109 +27110 +27111 +27136 +27137 +27138 +27139 +27140 +27141 +27142 +27143 +27168 +27169 +27170 +27171 +27172 +27173 +27174 +27175 +27200 +27201 +27202 +27203 +27204 +27205 +27206 +27207 +27232 +27233 +27234 +27235 +27236 +27237 +27238 +27239 +27264 +27265 +27266 +27267 +27268 +27269 +27270 +27271 +27296 +27297 +27298 +27299 +27300 +27301 +27302 +27303 +27328 +27329 +27330 +27331 +27332 +27333 +27334 +27335 +27360 +27361 +27362 +27363 +27364 +27365 +27366 +27367 +27392 +27393 +27394 +27395 +27396 +27397 +27398 +27399 +27424 +27425 +27426 +27427 +27428 +27429 +27430 +27431 +27456 +27457 +27458 +27459 +27460 +27461 +27462 +27463 +27488 +27489 +27490 +27491 +27492 +27493 +27494 +27495 +27520 +27521 +27522 +27523 +27524 +27525 +27526 +27527 +27552 +27553 +27554 +27555 +27556 +27557 +27558 +27559 +27584 +27585 +27586 +27587 +27588 +27589 +27590 +27591 +27616 +27617 +27618 +27619 +27620 +27621 +27622 +27623 +27648 +27649 +27650 +27651 +27652 +27653 +27654 +27655 +27680 +27681 +27682 +27683 +27684 +27685 +27686 +27687 +27712 +27713 +27714 +27715 +27716 +27717 +27718 +27719 +27744 +27745 +27746 +27747 +27748 +27749 +27750 +27751 +27776 +27777 +27778 +27779 +27780 +27781 +27782 +27783 +27808 +27809 +27810 +27811 +27812 +27813 +27814 +27815 +27840 +27841 +27842 +27843 +27844 +27845 +27846 +27847 +27872 +27873 +27874 +27875 +27876 +27877 +27878 +27879 +27904 +27905 +27906 +27907 +27908 +27909 +27910 +27911 +27936 +27937 +27938 +27939 +27940 +27941 +27942 +27943 +27968 +27969 +27970 +27971 +27972 +27973 +27974 +27975 +28000 +28001 +28002 +28003 +28004 +28005 +28006 +28007 +28032 +28033 +28034 +28035 +28036 +28037 +28038 +28039 +28064 +28065 +28066 +28067 +28068 +28069 +28070 +28071 +28096 +28097 +28098 +28099 +28100 +28101 +28102 +28103 +28128 +28129 +28130 +28131 +28132 +28133 +28134 +28135 +28160 +28161 +28162 +28163 +28164 +28165 +28166 +28167 +28192 +28193 +28194 +28195 +28196 +28197 +28198 +28199 +28224 +28225 +28226 +28227 +28228 +28229 +28230 +28231 +28256 +28257 +28258 +28259 +28260 +28261 +28262 +28263 +28288 +28289 +28290 +28291 +28292 +28293 +28294 +28295 +28320 +28321 +28322 +28323 +28324 +28325 +28326 +28327 +28352 +28353 +28354 +28355 +28356 +28357 +28358 +28359 +28384 +28385 +28386 +28387 +28388 +28389 +28390 +28391 +28416 +28417 +28418 +28419 +28420 +28421 +28422 +28423 +28448 +28449 +28450 +28451 +28452 +28453 +28454 +28455 +28480 +28481 +28482 +28483 +28484 +28485 +28486 +28487 +28512 +28513 +28514 +28515 +28516 +28517 +28518 +28519 +28544 +28545 +28546 +28547 +28548 +28549 +28550 +28551 +28576 +28577 +28578 +28579 +28580 +28581 +28582 +28583 +28608 +28609 +28610 +28611 +28612 +28613 +28614 +28615 +28640 +28641 +28642 +28643 +28644 +28645 +28646 +28647 +28672 +28673 +28674 +28675 +28676 +28677 +28678 +28679 +28704 +28705 +28706 +28707 +28708 +28709 +28710 +28711 +28736 +28737 +28738 +28739 +28740 +28741 +28742 +28743 +28768 +28769 +28770 +28771 +28772 +28773 +28774 +28775 +28800 +28801 +28802 +28803 +28804 +28805 +28806 +28807 +28832 +28833 +28834 +28835 +28836 +28837 +28838 +28839 +28864 +28865 +28866 +28867 +28868 +28869 +28870 +28871 +28896 +28897 +28898 +28899 +28900 +28901 +28902 +28903 +28928 +28929 +28930 +28931 +28932 +28933 +28934 +28935 +28960 +28961 +28962 +28963 +28964 +28965 +28966 +28967 +28992 +28993 +28994 +28995 +28996 +28997 +28998 +28999 +29024 +29025 +29026 +29027 +29028 +29029 +29030 +29031 +29056 +29057 +29058 +29059 +29060 +29061 +29062 +29063 +29088 +29089 +29090 +29091 +29092 +29093 +29094 +29095 +29120 +29121 +29122 +29123 +29124 +29125 +29126 +29127 +29152 +29153 +29154 +29155 +29156 +29157 +29158 +29159 +29184 +29185 +29186 +29187 +29188 +29189 +29190 +29191 +29216 +29217 +29218 +29219 +29220 +29221 +29222 +29223 +29248 +29249 +29250 +29251 +29252 +29253 +29254 +29255 +29280 +29281 +29282 +29283 +29284 +29285 +29286 +29287 +29312 +29313 +29314 +29315 +29316 +29317 +29318 +29319 +29344 +29345 +29346 +29347 +29348 +29349 +29350 +29351 +29376 +29377 +29378 +29379 +29380 +29381 +29382 +29383 +29408 +29409 +29410 +29411 +29412 +29413 +29414 +29415 +29440 +29441 +29442 +29443 +29444 +29445 +29446 +29447 +29472 +29473 +29474 +29475 +29476 +29477 +29478 +29479 +29504 +29505 +29506 +29507 +29508 +29509 +29510 +29511 +29536 +29537 +29538 +29539 +29540 +29541 +29542 +29543 +29568 +29569 +29570 +29571 +29572 +29573 +29574 +29575 +29600 +29601 +29602 +29603 +29604 +29605 +29606 +29607 +29632 +29633 +29634 +29635 +29636 +29637 +29638 +29639 +29664 +29665 +29666 +29667 +29668 +29669 +29670 +29671 +29696 +29697 +29698 +29699 +29700 +29701 +29702 +29703 +29728 +29729 +29730 +29731 +29732 +29733 +29734 +29735 +29760 +29761 +29762 +29763 +29764 +29765 +29766 +29767 +29792 +29793 +29794 +29795 +29796 +29797 +29798 +29799 +29824 +29825 +29826 +29827 +29828 +29829 +29830 +29831 +29856 +29857 +29858 +29859 +29860 +29861 +29862 +29863 +29888 +29889 +29890 +29891 +29892 +29893 +29894 +29895 +29920 +29921 +29922 +29923 +29924 +29925 +29926 +29927 +29952 +29953 +29954 +29955 +29956 +29957 +29958 +29959 +29984 +29985 +29986 +29987 +29988 +29989 +29990 +29991 +30016 +30017 +30018 +30019 +30020 +30021 +30022 +30023 +30048 +30049 +30050 +30051 +30052 +30053 +30054 +30055 +30080 +30081 +30082 +30083 +30084 +30085 +30086 +30087 +30112 +30113 +30114 +30115 +30116 +30117 +30118 +30119 +30144 +30145 +30146 +30147 +30148 +30149 +30150 +30151 +30176 +30177 +30178 +30179 +30180 +30181 +30182 +30183 +30208 +30209 +30210 +30211 +30212 +30213 +30214 +30215 +30240 +30241 +30242 +30243 +30244 +30245 +30246 +30247 +30272 +30273 +30274 +30275 +30276 +30277 +30278 +30279 +30304 +30305 +30306 +30307 +30308 +30309 +30310 +30311 +30336 +30337 +30338 +30339 +30340 +30341 +30342 +30343 +30368 +30369 +30370 +30371 +30372 +30373 +30374 +30375 +30400 +30401 +30402 +30403 +30404 +30405 +30406 +30407 +30432 +30433 +30434 +30435 +30436 +30437 +30438 +30439 +30464 +30465 +30466 +30467 +30468 +30469 +30470 +30471 +30496 +30497 +30498 +30499 +30500 +30501 +30502 +30503 +30528 +30529 +30530 +30531 +30532 +30533 +30534 +30535 +30560 +30561 +30562 +30563 +30564 +30565 +30566 +30567 +30592 +30593 +30594 +30595 +30596 +30597 +30598 +30599 +30624 +30625 +30626 +30627 +30628 +30629 +30630 +30631 +30656 +30657 +30658 +30659 +30660 +30661 +30662 +30663 +30688 +30689 +30690 +30691 +30692 +30693 +30694 +30695 +30720 +30721 +30722 +30723 +30724 +30725 +30726 +30727 +30752 +30753 +30754 +30755 +30756 +30757 +30758 +30759 +30784 +30785 +30786 +30787 +30788 +30789 +30790 +30791 +30816 +30817 +30818 +30819 +30820 +30821 +30822 +30823 +30848 +30849 +30850 +30851 +30852 +30853 +30854 +30855 +30880 +30881 +30882 +30883 +30884 +30885 +30886 +30887 +30912 +30913 +30914 +30915 +30916 +30917 +30918 +30919 +30944 +30945 +30946 +30947 +30948 +30949 +30950 +30951 +30976 +30977 +30978 +30979 +30980 +30981 +30982 +30983 +31008 +31009 +31010 +31011 +31012 +31013 +31014 +31015 +31040 +31041 +31042 +31043 +31044 +31045 +31046 +31047 +31072 +31073 +31074 +31075 +31076 +31077 +31078 +31079 +31104 +31105 +31106 +31107 +31108 +31109 +31110 +31111 +31136 +31137 +31138 +31139 +31140 +31141 +31142 +31143 +31168 +31169 +31170 +31171 +31172 +31173 +31174 +31175 +31200 +31201 +31202 +31203 +31204 +31205 +31206 +31207 +31232 +31233 +31234 +31235 +31236 +31237 +31238 +31239 +31264 +31265 +31266 +31267 +31268 +31269 +31270 +31271 +31296 +31297 +31298 +31299 +31300 +31301 +31302 +31303 +31328 +31329 +31330 +31331 +31332 +31333 +31334 +31335 +31360 +31361 +31362 +31363 +31364 +31365 +31366 +31367 +31392 +31393 +31394 +31395 +31396 +31397 +31398 +31399 +31424 +31425 +31426 +31427 +31428 +31429 +31430 +31431 +31456 +31457 +31458 +31459 +31460 +31461 +31462 +31463 +31488 +31489 +31490 +31491 +31492 +31493 +31494 +31495 +31520 +31521 +31522 +31523 +31524 +31525 +31526 +31527 +31552 +31553 +31554 +31555 +31556 +31557 +31558 +31559 +31584 +31585 +31586 +31587 +31588 +31589 +31590 +31591 +31616 +31617 +31618 +31619 +31620 +31621 +31622 +31623 +31648 +31649 +31650 +31651 +31652 +31653 +31654 +31655 +31680 +31681 +31682 +31683 +31684 +31685 +31686 +31687 +31712 +31713 +31714 +31715 +31716 +31717 +31718 +31719 +31744 +31745 +31746 +31747 +31748 +31749 +31750 +31751 +31776 +31777 +31778 +31779 +31780 +31781 +31782 +31783 +31808 +31809 +31810 +31811 +31812 +31813 +31814 +31815 +31840 +31841 +31842 +31843 +31844 +31845 +31846 +31847 +31872 +31873 +31874 +31875 +31876 +31877 +31878 +31879 +31904 +31905 +31906 +31907 +31908 +31909 +31910 +31911 +31936 +31937 +31938 +31939 +31940 +31941 +31942 +31943 +31968 +31969 +31970 +31971 +31972 +31973 +31974 +31975 +32000 +32001 +32002 +32003 +32004 +32005 +32006 +32007 +32032 +32033 +32034 +32035 +32036 +32037 +32038 +32039 +32064 +32065 +32066 +32067 +32068 +32069 +32070 +32071 +32096 +32097 +32098 +32099 +32100 +32101 +32102 +32103 +32128 +32129 +32130 +32131 +32132 +32133 +32134 +32135 +32160 +32161 +32162 +32163 +32164 +32165 +32166 +32167 +32192 +32193 +32194 +32195 +32196 +32197 +32198 +32199 +32224 +32225 +32226 +32227 +32228 +32229 +32230 +32231 +32256 +32257 +32258 +32259 +32260 +32261 +32262 +32263 +32288 +32289 +32290 +32291 +32292 +32293 +32294 +32295 +32320 +32321 +32322 +32323 +32324 +32325 +32326 +32327 +32352 +32353 +32354 +32355 +32356 +32357 +32358 +32359 +32384 +32385 +32386 +32387 +32388 +32389 +32390 +32391 +32416 +32417 +32418 +32419 +32420 +32421 +32422 +32423 +32448 +32449 +32450 +32451 +32452 +32453 +32454 +32455 +32480 +32481 +32482 +32483 +32484 +32485 +32486 +32487 +32512 +32513 +32514 +32515 +32516 +32517 +32518 +32519 +32544 +32545 +32546 +32547 +32548 +32549 +32550 +32551 +32576 +32577 +32578 +32579 +32580 +32581 +32582 +32583 +32608 +32609 +32610 +32611 +32612 +32613 +32614 +32615 +32640 +32641 +32642 +32643 +32644 +32645 +32646 +32647 +32672 +32673 +32674 +32675 +32676 +32677 +32678 +32679 +32704 +32705 +32706 +32707 +32708 +32709 +32710 +32711 +32736 +32737 +32738 +32739 +32740 +32741 +32742 +32743 +32768 +32769 +32770 +32771 +32772 +32773 +32774 +32775 +32800 +32801 +32802 +32803 +32804 +32805 +32806 +32807 +32832 +32833 +32834 +32835 +32836 +32837 +32838 +32839 +32864 +32865 +32866 +32867 +32868 +32869 +32870 +32871 +32896 +32897 +32898 +32899 +32900 +32901 +32902 +32903 +32928 +32929 +32930 +32931 +32932 +32933 +32934 +32935 +32960 +32961 +32962 +32963 +32964 +32965 +32966 +32967 +32992 +32993 +32994 +32995 +32996 +32997 +32998 +32999 +33024 +33025 +33026 +33027 +33028 +33029 +33030 +33031 +33056 +33057 +33058 +33059 +33060 +33061 +33062 +33063 +33088 +33089 +33090 +33091 +33092 +33093 +33094 +33095 +33120 +33121 +33122 +33123 +33124 +33125 +33126 +33127 +33152 +33153 +33154 +33155 +33156 +33157 +33158 +33159 +33184 +33185 +33186 +33187 +33188 +33189 +33190 +33191 +33216 +33217 +33218 +33219 +33220 +33221 +33222 +33223 +33248 +33249 +33250 +33251 +33252 +33253 +33254 +33255 +33280 +33281 +33282 +33283 +33284 +33285 +33286 +33287 +33312 +33313 +33314 +33315 +33316 +33317 +33318 +33319 +33344 +33345 +33346 +33347 +33348 +33349 +33350 +33351 +33376 +33377 +33378 +33379 +33380 +33381 +33382 +33383 +33408 +33409 +33410 +33411 +33412 +33413 +33414 +33415 +33440 +33441 +33442 +33443 +33444 +33445 +33446 +33447 +33472 +33473 +33474 +33475 +33476 +33477 +33478 +33479 +33504 +33505 +33506 +33507 +33508 +33509 +33510 +33511 +33536 +33537 +33538 +33539 +33540 +33541 +33542 +33543 +33568 +33569 +33570 +33571 +33572 +33573 +33574 +33575 +33600 +33601 +33602 +33603 +33604 +33605 +33606 +33607 +33632 +33633 +33634 +33635 +33636 +33637 +33638 +33639 +33664 +33665 +33666 +33667 +33668 +33669 +33670 +33671 +33696 +33697 +33698 +33699 +33700 +33701 +33702 +33703 +33728 +33729 +33730 +33731 +33732 +33733 +33734 +33735 +33760 +33761 +33762 +33763 +33764 +33765 +33766 +33767 +33792 +33793 +33794 +33795 +33796 +33797 +33798 +33799 +33824 +33825 +33826 +33827 +33828 +33829 +33830 +33831 +33856 +33857 +33858 +33859 +33860 +33861 +33862 +33863 +33888 +33889 +33890 +33891 +33892 +33893 +33894 +33895 +33920 +33921 +33922 +33923 +33924 +33925 +33926 +33927 +33952 +33953 +33954 +33955 +33956 +33957 +33958 +33959 +33984 +33985 +33986 +33987 +33988 +33989 +33990 +33991 +34016 +34017 +34018 +34019 +34020 +34021 +34022 +34023 +34048 +34049 +34050 +34051 +34052 +34053 +34054 +34055 +34080 +34081 +34082 +34083 +34084 +34085 +34086 +34087 +34112 +34113 +34114 +34115 +34116 +34117 +34118 +34119 +34144 +34145 +34146 +34147 +34148 +34149 +34150 +34151 +34176 +34177 +34178 +34179 +34180 +34181 +34182 +34183 +34208 +34209 +34210 +34211 +34212 +34213 +34214 +34215 +34240 +34241 +34242 +34243 +34244 +34245 +34246 +34247 +34272 +34273 +34274 +34275 +34276 +34277 +34278 +34279 +34304 +34305 +34306 +34307 +34308 +34309 +34310 +34311 +34336 +34337 +34338 +34339 +34340 +34341 +34342 +34343 +34368 +34369 +34370 +34371 +34372 +34373 +34374 +34375 +34400 +34401 +34402 +34403 +34404 +34405 +34406 +34407 +34432 +34433 +34434 +34435 +34436 +34437 +34438 +34439 +34464 +34465 +34466 +34467 +34468 +34469 +34470 +34471 +34496 +34497 +34498 +34499 +34500 +34501 +34502 +34503 +34528 +34529 +34530 +34531 +34532 +34533 +34534 +34535 +34560 +34561 +34562 +34563 +34564 +34565 +34566 +34567 +34592 +34593 +34594 +34595 +34596 +34597 +34598 +34599 +34624 +34625 +34626 +34627 +34628 +34629 +34630 +34631 +34656 +34657 +34658 +34659 +34660 +34661 +34662 +34663 +34688 +34689 +34690 +34691 +34692 +34693 +34694 +34695 +34720 +34721 +34722 +34723 +34724 +34725 +34726 +34727 +34752 +34753 +34754 +34755 +34756 +34757 +34758 +34759 +34784 +34785 +34786 +34787 +34788 +34789 +34790 +34791 +34816 +34817 +34818 +34819 +34820 +34821 +34822 +34823 +34848 +34849 +34850 +34851 +34852 +34853 +34854 +34855 +34880 +34881 +34882 +34883 +34884 +34885 +34886 +34887 +34912 +34913 +34914 +34915 +34916 +34917 +34918 +34919 +34944 +34945 +34946 +34947 +34948 +34949 +34950 +34951 +34976 +34977 +34978 +34979 +34980 +34981 +34982 +34983 +35008 +35009 +35010 +35011 +35012 +35013 +35014 +35015 +35040 +35041 +35042 +35043 +35044 +35045 +35046 +35047 +35072 +35073 +35074 +35075 +35076 +35077 +35078 +35079 +35104 +35105 +35106 +35107 +35108 +35109 +35110 +35111 +35136 +35137 +35138 +35139 +35140 +35141 +35142 +35143 +35168 +35169 +35170 +35171 +35172 +35173 +35174 +35175 +35200 +35201 +35202 +35203 +35204 +35205 +35206 +35207 +35232 +35233 +35234 +35235 +35236 +35237 +35238 +35239 +35264 +35265 +35266 +35267 +35268 +35269 +35270 +35271 +35296 +35297 +35298 +35299 +35300 +35301 +35302 +35303 +35328 +35329 +35330 +35331 +35332 +35333 +35334 +35335 +35360 +35361 +35362 +35363 +35364 +35365 +35366 +35367 +35392 +35393 +35394 +35395 +35396 +35397 +35398 +35399 +35424 +35425 +35426 +35427 +35428 +35429 +35430 +35431 +35456 +35457 +35458 +35459 +35460 +35461 +35462 +35463 +35488 +35489 +35490 +35491 +35492 +35493 +35494 +35495 +35520 +35521 +35522 +35523 +35524 +35525 +35526 +35527 +35552 +35553 +35554 +35555 +35556 +35557 +35558 +35559 +35584 +35585 +35586 +35587 +35588 +35589 +35590 +35591 +35616 +35617 +35618 +35619 +35620 +35621 +35622 +35623 +35648 +35649 +35650 +35651 +35652 +35653 +35654 +35655 +35680 +35681 +35682 +35683 +35684 +35685 +35686 +35687 +35712 +35713 +35714 +35715 +35716 +35717 +35718 +35719 +35744 +35745 +35746 +35747 +35748 +35749 +35750 +35751 +35776 +35777 +35778 +35779 +35780 +35781 +35782 +35783 +35808 +35809 +35810 +35811 +35812 +35813 +35814 +35815 +35840 +35841 +35842 +35843 +35844 +35845 +35846 +35847 +35872 +35873 +35874 +35875 +35876 +35877 +35878 +35879 +35904 +35905 +35906 +35907 +35908 +35909 +35910 +35911 +35936 +35937 +35938 +35939 +35940 +35941 +35942 +35943 +35968 +35969 +35970 +35971 +35972 +35973 +35974 +35975 +36000 +36001 +36002 +36003 +36004 +36005 +36006 +36007 +36032 +36033 +36034 +36035 +36036 +36037 +36038 +36039 +36064 +36065 +36066 +36067 +36068 +36069 +36070 +36071 +36096 +36097 +36098 +36099 +36100 +36101 +36102 +36103 +36128 +36129 +36130 +36131 +36132 +36133 +36134 +36135 +36160 +36161 +36162 +36163 +36164 +36165 +36166 +36167 +36192 +36193 +36194 +36195 +36196 +36197 +36198 +36199 +36224 +36225 +36226 +36227 +36228 +36229 +36230 +36231 +36256 +36257 +36258 +36259 +36260 +36261 +36262 +36263 +36288 +36289 +36290 +36291 +36292 +36293 +36294 +36295 +36320 +36321 +36322 +36323 +36324 +36325 +36326 +36327 +36352 +36353 +36354 +36355 +36356 +36357 +36358 +36359 +36384 +36385 +36386 +36387 +36388 +36389 +36390 +36391 +36416 +36417 +36418 +36419 +36420 +36421 +36422 +36423 +36448 +36449 +36450 +36451 +36452 +36453 +36454 +36455 +36480 +36481 +36482 +36483 +36484 +36485 +36486 +36487 +36512 +36513 +36514 +36515 +36516 +36517 +36518 +36519 +36544 +36545 +36546 +36547 +36548 +36549 +36550 +36551 +36576 +36577 +36578 +36579 +36580 +36581 +36582 +36583 +36608 +36609 +36610 +36611 +36612 +36613 +36614 +36615 +36640 +36641 +36642 +36643 +36644 +36645 +36646 +36647 +36672 +36673 +36674 +36675 +36676 +36677 +36678 +36679 +36704 +36705 +36706 +36707 +36708 +36709 +36710 +36711 +36736 +36737 +36738 +36739 +36740 +36741 +36742 +36743 +36768 +36769 +36770 +36771 +36772 +36773 +36774 +36775 +36800 +36801 +36802 +36803 +36804 +36805 +36806 +36807 +36832 +36833 +36834 +36835 +36836 +36837 +36838 +36839 +36864 +36865 +36866 +36867 +36868 +36869 +36870 +36871 +36896 +36897 +36898 +36899 +36900 +36901 +36902 +36903 +36928 +36929 +36930 +36931 +36932 +36933 +36934 +36935 +36960 +36961 +36962 +36963 +36964 +36965 +36966 +36967 +36992 +36993 +36994 +36995 +36996 +36997 +36998 +36999 +37024 +37025 +37026 +37027 +37028 +37029 +37030 +37031 +37056 +37057 +37058 +37059 +37060 +37061 +37062 +37063 +37088 +37089 +37090 +37091 +37092 +37093 +37094 +37095 +37120 +37121 +37122 +37123 +37124 +37125 +37126 +37127 +37152 +37153 +37154 +37155 +37156 +37157 +37158 +37159 +37184 +37185 +37186 +37187 +37188 +37189 +37190 +37191 +37216 +37217 +37218 +37219 +37220 +37221 +37222 +37223 +37248 +37249 +37250 +37251 +37252 +37253 +37254 +37255 +37280 +37281 +37282 +37283 +37284 +37285 +37286 +37287 +37312 +37313 +37314 +37315 +37316 +37317 +37318 +37319 +37344 +37345 +37346 +37347 +37348 +37349 +37350 +37351 +37376 +37377 +37378 +37379 +37380 +37381 +37382 +37383 +37408 +37409 +37410 +37411 +37412 +37413 +37414 +37415 +37440 +37441 +37442 +37443 +37444 +37445 +37446 +37447 +37472 +37473 +37474 +37475 +37476 +37477 +37478 +37479 +37504 +37505 +37506 +37507 +37508 +37509 +37510 +37511 +37536 +37537 +37538 +37539 +37540 +37541 +37542 +37543 +37568 +37569 +37570 +37571 +37572 +37573 +37574 +37575 +37600 +37601 +37602 +37603 +37604 +37605 +37606 +37607 +37632 +37633 +37634 +37635 +37636 +37637 +37638 +37639 +37664 +37665 +37666 +37667 +37668 +37669 +37670 +37671 +37696 +37697 +37698 +37699 +37700 +37701 +37702 +37703 +37728 +37729 +37730 +37731 +37732 +37733 +37734 +37735 +37760 +37761 +37762 +37763 +37764 +37765 +37766 +37767 +37792 +37793 +37794 +37795 +37796 +37797 +37798 +37799 +37824 +37825 +37826 +37827 +37828 +37829 +37830 +37831 +37856 +37857 +37858 +37859 +37860 +37861 +37862 +37863 +37888 +37889 +37890 +37891 +37892 +37893 +37894 +37895 +37920 +37921 +37922 +37923 +37924 +37925 +37926 +37927 +37952 +37953 +37954 +37955 +37956 +37957 +37958 +37959 +37984 +37985 +37986 +37987 +37988 +37989 +37990 +37991 +38016 +38017 +38018 +38019 +38020 +38021 +38022 +38023 +38048 +38049 +38050 +38051 +38052 +38053 +38054 +38055 +38080 +38081 +38082 +38083 +38084 +38085 +38086 +38087 +38112 +38113 +38114 +38115 +38116 +38117 +38118 +38119 +38144 +38145 +38146 +38147 +38148 +38149 +38150 +38151 +38176 +38177 +38178 +38179 +38180 +38181 +38182 +38183 +38208 +38209 +38210 +38211 +38212 +38213 +38214 +38215 +38240 +38241 +38242 +38243 +38244 +38245 +38246 +38247 +38272 +38273 +38274 +38275 +38276 +38277 +38278 +38279 +38304 +38305 +38306 +38307 +38308 +38309 +38310 +38311 +38336 +38337 +38338 +38339 +38340 +38341 +38342 +38343 +38368 +38369 +38370 +38371 +38372 +38373 +38374 +38375 +38400 +38401 +38402 +38403 +38404 +38405 +38406 +38407 +38432 +38433 +38434 +38435 +38436 +38437 +38438 +38439 +38464 +38465 +38466 +38467 +38468 +38469 +38470 +38471 +38496 +38497 +38498 +38499 +38500 +38501 +38502 +38503 +38528 +38529 +38530 +38531 +38532 +38533 +38534 +38535 +38560 +38561 +38562 +38563 +38564 +38565 +38566 +38567 +38592 +38593 +38594 +38595 +38596 +38597 +38598 +38599 +38624 +38625 +38626 +38627 +38628 +38629 +38630 +38631 +38656 +38657 +38658 +38659 +38660 +38661 +38662 +38663 +38688 +38689 +38690 +38691 +38692 +38693 +38694 +38695 +38720 +38721 +38722 +38723 +38724 +38725 +38726 +38727 +38752 +38753 +38754 +38755 +38756 +38757 +38758 +38759 +38784 +38785 +38786 +38787 +38788 +38789 +38790 +38791 +38816 +38817 +38818 +38819 +38820 +38821 +38822 +38823 +38848 +38849 +38850 +38851 +38852 +38853 +38854 +38855 +38880 +38881 +38882 +38883 +38884 +38885 +38886 +38887 +38912 +38913 +38914 +38915 +38916 +38917 +38918 +38919 +38944 +38945 +38946 +38947 +38948 +38949 +38950 +38951 +38976 +38977 +38978 +38979 +38980 +38981 +38982 +38983 +39008 +39009 +39010 +39011 +39012 +39013 +39014 +39015 +39040 +39041 +39042 +39043 +39044 +39045 +39046 +39047 +39072 +39073 +39074 +39075 +39076 +39077 +39078 +39079 +39104 +39105 +39106 +39107 +39108 +39109 +39110 +39111 +39136 +39137 +39138 +39139 +39140 +39141 +39142 +39143 +39168 +39169 +39170 +39171 +39172 +39173 +39174 +39175 +39200 +39201 +39202 +39203 +39204 +39205 +39206 +39207 +39232 +39233 +39234 +39235 +39236 +39237 +39238 +39239 +39264 +39265 +39266 +39267 +39268 +39269 +39270 +39271 +39296 +39297 +39298 +39299 +39300 +39301 +39302 +39303 +39328 +39329 +39330 +39331 +39332 +39333 +39334 +39335 +39360 +39361 +39362 +39363 +39364 +39365 +39366 +39367 +39392 +39393 +39394 +39395 +39396 +39397 +39398 +39399 +39424 +39425 +39426 +39427 +39428 +39429 +39430 +39431 +39456 +39457 +39458 +39459 +39460 +39461 +39462 +39463 +39488 +39489 +39490 +39491 +39492 +39493 +39494 +39495 +39520 +39521 +39522 +39523 +39524 +39525 +39526 +39527 +39552 +39553 +39554 +39555 +39556 +39557 +39558 +39559 +39584 +39585 +39586 +39587 +39588 +39589 +39590 +39591 +39616 +39617 +39618 +39619 +39620 +39621 +39622 +39623 +39648 +39649 +39650 +39651 +39652 +39653 +39654 +39655 +39680 +39681 +39682 +39683 +39684 +39685 +39686 +39687 +39712 +39713 +39714 +39715 +39716 +39717 +39718 +39719 +39744 +39745 +39746 +39747 +39748 +39749 +39750 +39751 +39776 +39777 +39778 +39779 +39780 +39781 +39782 +39783 +39808 +39809 +39810 +39811 +39812 +39813 +39814 +39815 +39840 +39841 +39842 +39843 +39844 +39845 +39846 +39847 +39872 +39873 +39874 +39875 +39876 +39877 +39878 +39879 +39904 +39905 +39906 +39907 +39908 +39909 +39910 +39911 +39936 +39937 +39938 +39939 +39940 +39941 +39942 +39943 +39968 +39969 +39970 +39971 +39972 +39973 +39974 +39975 +40000 +40001 +40002 +40003 +40004 +40005 +40006 +40007 +40032 +40033 +40034 +40035 +40036 +40037 +40038 +40039 +40064 +40065 +40066 +40067 +40068 +40069 +40070 +40071 +40096 +40097 +40098 +40099 +40100 +40101 +40102 +40103 +40128 +40129 +40130 +40131 +40132 +40133 +40134 +40135 +40160 +40161 +40162 +40163 +40164 +40165 +40166 +40167 +40192 +40193 +40194 +40195 +40196 +40197 +40198 +40199 +40224 +40225 +40226 +40227 +40228 +40229 +40230 +40231 +40256 +40257 +40258 +40259 +40260 +40261 +40262 +40263 +40288 +40289 +40290 +40291 +40292 +40293 +40294 +40295 +40320 +40321 +40322 +40323 +40324 +40325 +40326 +40327 +40352 +40353 +40354 +40355 +40356 +40357 +40358 +40359 +40384 +40385 +40386 +40387 +40388 +40389 +40390 +40391 +40416 +40417 +40418 +40419 +40420 +40421 +40422 +40423 +40448 +40449 +40450 +40451 +40452 +40453 +40454 +40455 +40480 +40481 +40482 +40483 +40484 +40485 +40486 +40487 +40512 +40513 +40514 +40515 +40516 +40517 +40518 +40519 +40544 +40545 +40546 +40547 +40548 +40549 +40550 +40551 +40576 +40577 +40578 +40579 +40580 +40581 +40582 +40583 +40608 +40609 +40610 +40611 +40612 +40613 +40614 +40615 +40640 +40641 +40642 +40643 +40644 +40645 +40646 +40647 +40672 +40673 +40674 +40675 +40676 +40677 +40678 +40679 +40704 +40705 +40706 +40707 +40708 +40709 +40710 +40711 +40736 +40737 +40738 +40739 +40740 +40741 +40742 +40743 +40768 +40769 +40770 +40771 +40772 +40773 +40774 +40775 +40800 +40801 +40802 +40803 +40804 +40805 +40806 +40807 +40832 +40833 +40834 +40835 +40836 +40837 +40838 +40839 +40864 +40865 +40866 +40867 +40868 +40869 +40870 +40871 +40896 +40897 +40898 +40899 +40900 +40901 +40902 +40903 +40928 +40929 +40930 +40931 +40932 +40933 +40934 +40935 +40960 +40961 +40962 +40963 +40964 +40965 +40966 +40967 +40992 +40993 +40994 +40995 +40996 +40997 +40998 +40999 +41024 +41025 +41026 +41027 +41028 +41029 +41030 +41031 +41056 +41057 +41058 +41059 +41060 +41061 +41062 +41063 +41088 +41089 +41090 +41091 +41092 +41093 +41094 +41095 +41120 +41121 +41122 +41123 +41124 +41125 +41126 +41127 +41152 +41153 +41154 +41155 +41156 +41157 +41158 +41159 +41184 +41185 +41186 +41187 +41188 +41189 +41190 +41191 +41216 +41217 +41218 +41219 +41220 +41221 +41222 +41223 +41248 +41249 +41250 +41251 +41252 +41253 +41254 +41255 +41280 +41281 +41282 +41283 +41284 +41285 +41286 +41287 +41312 +41313 +41314 +41315 +41316 +41317 +41318 +41319 +41344 +41345 +41346 +41347 +41348 +41349 +41350 +41351 +41376 +41377 +41378 +41379 +41380 +41381 +41382 +41383 +41408 +41409 +41410 +41411 +41412 +41413 +41414 +41415 +41440 +41441 +41442 +41443 +41444 +41445 +41446 +41447 +41472 +41473 +41474 +41475 +41476 +41477 +41478 +41479 +41504 +41505 +41506 +41507 +41508 +41509 +41510 +41511 +41536 +41537 +41538 +41539 +41540 +41541 +41542 +41543 +41568 +41569 +41570 +41571 +41572 +41573 +41574 +41575 +41600 +41601 +41602 +41603 +41604 +41605 +41606 +41607 +41632 +41633 +41634 +41635 +41636 +41637 +41638 +41639 +41664 +41665 +41666 +41667 +41668 +41669 +41670 +41671 +41696 +41697 +41698 +41699 +41700 +41701 +41702 +41703 +41728 +41729 +41730 +41731 +41732 +41733 +41734 +41735 +41760 +41761 +41762 +41763 +41764 +41765 +41766 +41767 +41792 +41793 +41794 +41795 +41796 +41797 +41798 +41799 +41824 +41825 +41826 +41827 +41828 +41829 +41830 +41831 +41856 +41857 +41858 +41859 +41860 +41861 +41862 +41863 +41888 +41889 +41890 +41891 +41892 +41893 +41894 +41895 +41920 +41921 +41922 +41923 +41924 +41925 +41926 +41927 +41952 +41953 +41954 +41955 +41956 +41957 +41958 +41959 +41984 +41985 +41986 +41987 +41988 +41989 +41990 +41991 +42016 +42017 +42018 +42019 +42020 +42021 +42022 +42023 +42048 +42049 +42050 +42051 +42052 +42053 +42054 +42055 +42080 +42081 +42082 +42083 +42084 +42085 +42086 +42087 +42112 +42113 +42114 +42115 +42116 +42117 +42118 +42119 +42144 +42145 +42146 +42147 +42148 +42149 +42150 +42151 +42176 +42177 +42178 +42179 +42180 +42181 +42182 +42183 +42208 +42209 +42210 +42211 +42212 +42213 +42214 +42215 +42240 +42241 +42242 +42243 +42244 +42245 +42246 +42247 +42272 +42273 +42274 +42275 +42276 +42277 +42278 +42279 +42304 +42305 +42306 +42307 +42308 +42309 +42310 +42311 +42336 +42337 +42338 +42339 +42340 +42341 +42342 +42343 +42368 +42369 +42370 +42371 +42372 +42373 +42374 +42375 +42400 +42401 +42402 +42403 +42404 +42405 +42406 +42407 +42432 +42433 +42434 +42435 +42436 +42437 +42438 +42439 +42464 +42465 +42466 +42467 +42468 +42469 +42470 +42471 +42496 +42497 +42498 +42499 +42500 +42501 +42502 +42503 +42528 +42529 +42530 +42531 +42532 +42533 +42534 +42535 +42560 +42561 +42562 +42563 +42564 +42565 +42566 +42567 +42592 +42593 +42594 +42595 +42596 +42597 +42598 +42599 +42624 +42625 +42626 +42627 +42628 +42629 +42630 +42631 +42656 +42657 +42658 +42659 +42660 +42661 +42662 +42663 +42688 +42689 +42690 +42691 +42692 +42693 +42694 +42695 +42720 +42721 +42722 +42723 +42724 +42725 +42726 +42727 +42752 +42753 +42754 +42755 +42756 +42757 +42758 +42759 +42784 +42785 +42786 +42787 +42788 +42789 +42790 +42791 +42816 +42817 +42818 +42819 +42820 +42821 +42822 +42823 +42848 +42849 +42850 +42851 +42852 +42853 +42854 +42855 +42880 +42881 +42882 +42883 +42884 +42885 +42886 +42887 +42912 +42913 +42914 +42915 +42916 +42917 +42918 +42919 +42944 +42945 +42946 +42947 +42948 +42949 +42950 +42951 +42976 +42977 +42978 +42979 +42980 +42981 +42982 +42983 +43008 +43009 +43010 +43011 +43012 +43013 +43014 +43015 +43040 +43041 +43042 +43043 +43044 +43045 +43046 +43047 +43072 +43073 +43074 +43075 +43076 +43077 +43078 +43079 +43104 +43105 +43106 +43107 +43108 +43109 +43110 +43111 +43136 +43137 +43138 +43139 +43140 +43141 +43142 +43143 +43168 +43169 +43170 +43171 +43172 +43173 +43174 +43175 +43200 +43201 +43202 +43203 +43204 +43205 +43206 +43207 +43232 +43233 +43234 +43235 +43236 +43237 +43238 +43239 +43264 +43265 +43266 +43267 +43268 +43269 +43270 +43271 +43296 +43297 +43298 +43299 +43300 +43301 +43302 +43303 +43328 +43329 +43330 +43331 +43332 +43333 +43334 +43335 +43360 +43361 +43362 +43363 +43364 +43365 +43366 +43367 +43392 +43393 +43394 +43395 +43396 +43397 +43398 +43399 +43424 +43425 +43426 +43427 +43428 +43429 +43430 +43431 +43456 +43457 +43458 +43459 +43460 +43461 +43462 +43463 +43488 +43489 +43490 +43491 +43492 +43493 +43494 +43495 +43520 +43521 +43522 +43523 +43524 +43525 +43526 +43527 +43552 +43553 +43554 +43555 +43556 +43557 +43558 +43559 +43584 +43585 +43586 +43587 +43588 +43589 +43590 +43591 +43616 +43617 +43618 +43619 +43620 +43621 +43622 +43623 +43648 +43649 +43650 +43651 +43652 +43653 +43654 +43655 +43680 +43681 +43682 +43683 +43684 +43685 +43686 +43687 +43712 +43713 +43714 +43715 +43716 +43717 +43718 +43719 +43744 +43745 +43746 +43747 +43748 +43749 +43750 +43751 +43776 +43777 +43778 +43779 +43780 +43781 +43782 +43783 +43808 +43809 +43810 +43811 +43812 +43813 +43814 +43815 +43840 +43841 +43842 +43843 +43844 +43845 +43846 +43847 +43872 +43873 +43874 +43875 +43876 +43877 +43878 +43879 +43904 +43905 +43906 +43907 +43908 +43909 +43910 +43911 +43936 +43937 +43938 +43939 +43940 +43941 +43942 +43943 +43968 +43969 +43970 +43971 +43972 +43973 +43974 +43975 +44000 +44001 +44002 +44003 +44004 +44005 +44006 +44007 +44032 +44033 +44034 +44035 +44036 +44037 +44038 +44039 +44064 +44065 +44066 +44067 +44068 +44069 +44070 +44071 +44096 +44097 +44098 +44099 +44100 +44101 +44102 +44103 +44128 +44129 +44130 +44131 +44132 +44133 +44134 +44135 +44160 +44161 +44162 +44163 +44164 +44165 +44166 +44167 +44192 +44193 +44194 +44195 +44196 +44197 +44198 +44199 +44224 +44225 +44226 +44227 +44228 +44229 +44230 +44231 +44256 +44257 +44258 +44259 +44260 +44261 +44262 +44263 +44288 +44289 +44290 +44291 +44292 +44293 +44294 +44295 +44320 +44321 +44322 +44323 +44324 +44325 +44326 +44327 +44352 +44353 +44354 +44355 +44356 +44357 +44358 +44359 +44384 +44385 +44386 +44387 +44388 +44389 +44390 +44391 +44416 +44417 +44418 +44419 +44420 +44421 +44422 +44423 +44448 +44449 +44450 +44451 +44452 +44453 +44454 +44455 +44480 +44481 +44482 +44483 +44484 +44485 +44486 +44487 +44512 +44513 +44514 +44515 +44516 +44517 +44518 +44519 +44544 +44545 +44546 +44547 +44548 +44549 +44550 +44551 +44576 +44577 +44578 +44579 +44580 +44581 +44582 +44583 +44608 +44609 +44610 +44611 +44612 +44613 +44614 +44615 +44640 +44641 +44642 +44643 +44644 +44645 +44646 +44647 +44672 +44673 +44674 +44675 +44676 +44677 +44678 +44679 +44704 +44705 +44706 +44707 +44708 +44709 +44710 +44711 +44736 +44737 +44738 +44739 +44740 +44741 +44742 +44743 +44768 +44769 +44770 +44771 +44772 +44773 +44774 +44775 +44800 +44801 +44802 +44803 +44804 +44805 +44806 +44807 +44832 +44833 +44834 +44835 +44836 +44837 +44838 +44839 +44864 +44865 +44866 +44867 +44868 +44869 +44870 +44871 +44896 +44897 +44898 +44899 +44900 +44901 +44902 +44903 +44928 +44929 +44930 +44931 +44932 +44933 +44934 +44935 +44960 +44961 +44962 +44963 +44964 +44965 +44966 +44967 +44992 +44993 +44994 +44995 +44996 +44997 +44998 +44999 +45024 +45025 +45026 +45027 +45028 +45029 +45030 +45031 +45056 +45057 +45058 +45059 +45060 +45061 +45062 +45063 +45088 +45089 +45090 +45091 +45092 +45093 +45094 +45095 +45120 +45121 +45122 +45123 +45124 +45125 +45126 +45127 +45152 +45153 +45154 +45155 +45156 +45157 +45158 +45159 +45184 +45185 +45186 +45187 +45188 +45189 +45190 +45191 +45216 +45217 +45218 +45219 +45220 +45221 +45222 +45223 +45248 +45249 +45250 +45251 +45252 +45253 +45254 +45255 +45280 +45281 +45282 +45283 +45284 +45285 +45286 +45287 +45312 +45313 +45314 +45315 +45316 +45317 +45318 +45319 +45344 +45345 +45346 +45347 +45348 +45349 +45350 +45351 +45376 +45377 +45378 +45379 +45380 +45381 +45382 +45383 +45408 +45409 +45410 +45411 +45412 +45413 +45414 +45415 +45440 +45441 +45442 +45443 +45444 +45445 +45446 +45447 +45472 +45473 +45474 +45475 +45476 +45477 +45478 +45479 +45504 +45505 +45506 +45507 +45508 +45509 +45510 +45511 +45536 +45537 +45538 +45539 +45540 +45541 +45542 +45543 +45568 +45569 +45570 +45571 +45572 +45573 +45574 +45575 +45600 +45601 +45602 +45603 +45604 +45605 +45606 +45607 +45632 +45633 +45634 +45635 +45636 +45637 +45638 +45639 +45664 +45665 +45666 +45667 +45668 +45669 +45670 +45671 +45696 +45697 +45698 +45699 +45700 +45701 +45702 +45703 +45728 +45729 +45730 +45731 +45732 +45733 +45734 +45735 +45760 +45761 +45762 +45763 +45764 +45765 +45766 +45767 +45792 +45793 +45794 +45795 +45796 +45797 +45798 +45799 +45824 +45825 +45826 +45827 +45828 +45829 +45830 +45831 +45856 +45857 +45858 +45859 +45860 +45861 +45862 +45863 +45888 +45889 +45890 +45891 +45892 +45893 +45894 +45895 +45920 +45921 +45922 +45923 +45924 +45925 +45926 +45927 +45952 +45953 +45954 +45955 +45956 +45957 +45958 +45959 +45984 +45985 +45986 +45987 +45988 +45989 +45990 +45991 +46016 +46017 +46018 +46019 +46020 +46021 +46022 +46023 +46048 +46049 +46050 +46051 +46052 +46053 +46054 +46055 +46080 +46081 +46082 +46083 +46084 +46085 +46086 +46087 +46112 +46113 +46114 +46115 +46116 +46117 +46118 +46119 +46144 +46145 +46146 +46147 +46148 +46149 +46150 +46151 +46176 +46177 +46178 +46179 +46180 +46181 +46182 +46183 +46208 +46209 +46210 +46211 +46212 +46213 +46214 +46215 +46240 +46241 +46242 +46243 +46244 +46245 +46246 +46247 +46272 +46273 +46274 +46275 +46276 +46277 +46278 +46279 +46304 +46305 +46306 +46307 +46308 +46309 +46310 +46311 +46336 +46337 +46338 +46339 +46340 +46341 +46342 +46343 +46368 +46369 +46370 +46371 +46372 +46373 +46374 +46375 +46400 +46401 +46402 +46403 +46404 +46405 +46406 +46407 +46432 +46433 +46434 +46435 +46436 +46437 +46438 +46439 +46464 +46465 +46466 +46467 +46468 +46469 +46470 +46471 +46496 +46497 +46498 +46499 +46500 +46501 +46502 +46503 +46528 +46529 +46530 +46531 +46532 +46533 +46534 +46535 +46560 +46561 +46562 +46563 +46564 +46565 +46566 +46567 +46592 +46593 +46594 +46595 +46596 +46597 +46598 +46599 +46624 +46625 +46626 +46627 +46628 +46629 +46630 +46631 +46656 +46657 +46658 +46659 +46660 +46661 +46662 +46663 +46688 +46689 +46690 +46691 +46692 +46693 +46694 +46695 +46720 +46721 +46722 +46723 +46724 +46725 +46726 +46727 +46752 +46753 +46754 +46755 +46756 +46757 +46758 +46759 +46784 +46785 +46786 +46787 +46788 +46789 +46790 +46791 +46816 +46817 +46818 +46819 +46820 +46821 +46822 +46823 +46848 +46849 +46850 +46851 +46852 +46853 +46854 +46855 +46880 +46881 +46882 +46883 +46884 +46885 +46886 +46887 +46912 +46913 +46914 +46915 +46916 +46917 +46918 +46919 +46944 +46945 +46946 +46947 +46948 +46949 +46950 +46951 +46976 +46977 +46978 +46979 +46980 +46981 +46982 +46983 +47008 +47009 +47010 +47011 +47012 +47013 +47014 +47015 +47040 +47041 +47042 +47043 +47044 +47045 +47046 +47047 +47072 +47073 +47074 +47075 +47076 +47077 +47078 +47079 +47104 +47105 +47106 +47107 +47108 +47109 +47110 +47111 +47136 +47137 +47138 +47139 +47140 +47141 +47142 +47143 +47168 +47169 +47170 +47171 +47172 +47173 +47174 +47175 +47200 +47201 +47202 +47203 +47204 +47205 +47206 +47207 +47232 +47233 +47234 +47235 +47236 +47237 +47238 +47239 +47264 +47265 +47266 +47267 +47268 +47269 +47270 +47271 +47296 +47297 +47298 +47299 +47300 +47301 +47302 +47303 +47328 +47329 +47330 +47331 +47332 +47333 +47334 +47335 +47360 +47361 +47362 +47363 +47364 +47365 +47366 +47367 +47392 +47393 +47394 +47395 +47396 +47397 +47398 +47399 +47424 +47425 +47426 +47427 +47428 +47429 +47430 +47431 +47456 +47457 +47458 +47459 +47460 +47461 +47462 +47463 +47488 +47489 +47490 +47491 +47492 +47493 +47494 +47495 +47520 +47521 +47522 +47523 +47524 +47525 +47526 +47527 +47552 +47553 +47554 +47555 +47556 +47557 +47558 +47559 +47584 +47585 +47586 +47587 +47588 +47589 +47590 +47591 +47616 +47617 +47618 +47619 +47620 +47621 +47622 +47623 +47648 +47649 +47650 +47651 +47652 +47653 +47654 +47655 +47680 +47681 +47682 +47683 +47684 +47685 +47686 +47687 +47712 +47713 +47714 +47715 +47716 +47717 +47718 +47719 +47744 +47745 +47746 +47747 +47748 +47749 +47750 +47751 +47776 +47777 +47778 +47779 +47780 +47781 +47782 +47783 +47808 +47809 +47810 +47811 +47812 +47813 +47814 +47815 +47840 +47841 +47842 +47843 +47844 +47845 +47846 +47847 +47872 +47873 +47874 +47875 +47876 +47877 +47878 +47879 +47904 +47905 +47906 +47907 +47908 +47909 +47910 +47911 +47936 +47937 +47938 +47939 +47940 +47941 +47942 +47943 +47968 +47969 +47970 +47971 +47972 +47973 +47974 +47975 +48000 +48001 +48002 +48003 +48004 +48005 +48006 +48007 +48032 +48033 +48034 +48035 +48036 +48037 +48038 +48039 +48064 +48065 +48066 +48067 +48068 +48069 +48070 +48071 +48096 +48097 +48098 +48099 +48100 +48101 +48102 +48103 +48128 +48129 +48130 +48131 +48132 +48133 +48134 +48135 +48160 +48161 +48162 +48163 +48164 +48165 +48166 +48167 +48192 +48193 +48194 +48195 +48196 +48197 +48198 +48199 +48224 +48225 +48226 +48227 +48228 +48229 +48230 +48231 +48256 +48257 +48258 +48259 +48260 +48261 +48262 +48263 +48288 +48289 +48290 +48291 +48292 +48293 +48294 +48295 +48320 +48321 +48322 +48323 +48324 +48325 +48326 +48327 +48352 +48353 +48354 +48355 +48356 +48357 +48358 +48359 +48384 +48385 +48386 +48387 +48388 +48389 +48390 +48391 +48416 +48417 +48418 +48419 +48420 +48421 +48422 +48423 +48448 +48449 +48450 +48451 +48452 +48453 +48454 +48455 +48480 +48481 +48482 +48483 +48484 +48485 +48486 +48487 +48512 +48513 +48514 +48515 +48516 +48517 +48518 +48519 +48544 +48545 +48546 +48547 +48548 +48549 +48550 +48551 +48576 +48577 +48578 +48579 +48580 +48581 +48582 +48583 +48608 +48609 +48610 +48611 +48612 +48613 +48614 +48615 +48640 +48641 +48642 +48643 +48644 +48645 +48646 +48647 +48672 +48673 +48674 +48675 +48676 +48677 +48678 +48679 +48704 +48705 +48706 +48707 +48708 +48709 +48710 +48711 +48736 +48737 +48738 +48739 +48740 +48741 +48742 +48743 +48768 +48769 +48770 +48771 +48772 +48773 +48774 +48775 +48800 +48801 +48802 +48803 +48804 +48805 +48806 +48807 +48832 +48833 +48834 +48835 +48836 +48837 +48838 +48839 +48864 +48865 +48866 +48867 +48868 +48869 +48870 +48871 +48896 +48897 +48898 +48899 +48900 +48901 +48902 +48903 +48928 +48929 +48930 +48931 +48932 +48933 +48934 +48935 +48960 +48961 +48962 +48963 +48964 +48965 +48966 +48967 +48992 +48993 +48994 +48995 +48996 +48997 +48998 +48999 +49024 +49025 +49026 +49027 +49028 +49029 +49030 +49031 +49056 +49057 +49058 +49059 +49060 +49061 +49062 +49063 +49088 +49089 +49090 +49091 +49092 +49093 +49094 +49095 +49120 +49121 +49122 +49123 +49124 +49125 +49126 +49127 +49152 +49153 +49154 +49155 +49156 +49157 +49158 +49159 +49184 +49185 +49186 +49187 +49188 +49189 +49190 +49191 +49216 +49217 +49218 +49219 +49220 +49221 +49222 +49223 +49248 +49249 +49250 +49251 +49252 +49253 +49254 +49255 +49280 +49281 +49282 +49283 +49284 +49285 +49286 +49287 +49312 +49313 +49314 +49315 +49316 +49317 +49318 +49319 +49344 +49345 +49346 +49347 +49348 +49349 +49350 +49351 +49376 +49377 +49378 +49379 +49380 +49381 +49382 +49383 +49408 +49409 +49410 +49411 +49412 +49413 +49414 +49415 +49440 +49441 +49442 +49443 +49444 +49445 +49446 +49447 +49472 +49473 +49474 +49475 +49476 +49477 +49478 +49479 +49504 +49505 +49506 +49507 +49508 +49509 +49510 +49511 +49536 +49537 +49538 +49539 +49540 +49541 +49542 +49543 +49568 +49569 +49570 +49571 +49572 +49573 +49574 +49575 +49600 +49601 +49602 +49603 +49604 +49605 +49606 +49607 +49632 +49633 +49634 +49635 +49636 +49637 +49638 +49639 +49664 +49665 +49666 +49667 +49668 +49669 +49670 +49671 +49696 +49697 +49698 +49699 +49700 +49701 +49702 +49703 +49728 +49729 +49730 +49731 +49732 +49733 +49734 +49735 +49760 +49761 +49762 +49763 +49764 +49765 +49766 +49767 +49792 +49793 +49794 +49795 +49796 +49797 +49798 +49799 +49824 +49825 +49826 +49827 +49828 +49829 +49830 +49831 +49856 +49857 +49858 +49859 +49860 +49861 +49862 +49863 +49888 +49889 +49890 +49891 +49892 +49893 +49894 +49895 +49920 +49921 +49922 +49923 +49924 +49925 +49926 +49927 +49952 +49953 +49954 +49955 +49956 +49957 +49958 +49959 +49984 +49985 +49986 +49987 +49988 +49989 +49990 +49991 +50016 +50017 +50018 +50019 +50020 +50021 +50022 +50023 +50048 +50049 +50050 +50051 +50052 +50053 +50054 +50055 +50080 +50081 +50082 +50083 +50084 +50085 +50086 +50087 +50112 +50113 +50114 +50115 +50116 +50117 +50118 +50119 +50144 +50145 +50146 +50147 +50148 +50149 +50150 +50151 +50176 +50177 +50178 +50179 +50180 +50181 +50182 +50183 +50208 +50209 +50210 +50211 +50212 +50213 +50214 +50215 +50240 +50241 +50242 +50243 +50244 +50245 +50246 +50247 +50272 +50273 +50274 +50275 +50276 +50277 +50278 +50279 +50304 +50305 +50306 +50307 +50308 +50309 +50310 +50311 +50336 +50337 +50338 +50339 +50340 +50341 +50342 +50343 +50368 +50369 +50370 +50371 +50372 +50373 +50374 +50375 +50400 +50401 +50402 +50403 +50404 +50405 +50406 +50407 +50432 +50433 +50434 +50435 +50436 +50437 +50438 +50439 +50464 +50465 +50466 +50467 +50468 +50469 +50470 +50471 +50496 +50497 +50498 +50499 +50500 +50501 +50502 +50503 +50528 +50529 +50530 +50531 +50532 +50533 +50534 +50535 +50560 +50561 +50562 +50563 +50564 +50565 +50566 +50567 +50592 +50593 +50594 +50595 +50596 +50597 +50598 +50599 +50624 +50625 +50626 +50627 +50628 +50629 +50630 +50631 +50656 +50657 +50658 +50659 +50660 +50661 +50662 +50663 +50688 +50689 +50690 +50691 +50692 +50693 +50694 +50695 +50720 +50721 +50722 +50723 +50724 +50725 +50726 +50727 +50752 +50753 +50754 +50755 +50756 +50757 +50758 +50759 +50784 +50785 +50786 +50787 +50788 +50789 +50790 +50791 +50816 +50817 +50818 +50819 +50820 +50821 +50822 +50823 +50848 +50849 +50850 +50851 +50852 +50853 +50854 +50855 +50880 +50881 +50882 +50883 +50884 +50885 +50886 +50887 +50912 +50913 +50914 +50915 +50916 +50917 +50918 +50919 +50944 +50945 +50946 +50947 +50948 +50949 +50950 +50951 +50976 +50977 +50978 +50979 +50980 +50981 +50982 +50983 +51008 +51009 +51010 +51011 +51012 +51013 +51014 +51015 +51040 +51041 +51042 +51043 +51044 +51045 +51046 +51047 +51072 +51073 +51074 +51075 +51076 +51077 +51078 +51079 +51104 +51105 +51106 +51107 +51108 +51109 +51110 +51111 +51136 +51137 +51138 +51139 +51140 +51141 +51142 +51143 +51168 +51169 +51170 +51171 +51172 +51173 +51174 +51175 +51200 +51201 +51202 +51203 +51204 +51205 +51206 +51207 +51232 +51233 +51234 +51235 +51236 +51237 +51238 +51239 +51264 +51265 +51266 +51267 +51268 +51269 +51270 +51271 +51296 +51297 +51298 +51299 +51300 +51301 +51302 +51303 +51328 +51329 +51330 +51331 +51332 +51333 +51334 +51335 +51360 +51361 +51362 +51363 +51364 +51365 +51366 +51367 +51392 +51393 +51394 +51395 +51396 +51397 +51398 +51399 +51424 +51425 +51426 +51427 +51428 +51429 +51430 +51431 +51456 +51457 +51458 +51459 +51460 +51461 +51462 +51463 +51488 +51489 +51490 +51491 +51492 +51493 +51494 +51495 +51520 +51521 +51522 +51523 +51524 +51525 +51526 +51527 +51552 +51553 +51554 +51555 +51556 +51557 +51558 +51559 +51584 +51585 +51586 +51587 +51588 +51589 +51590 +51591 +51616 +51617 +51618 +51619 +51620 +51621 +51622 +51623 +51648 +51649 +51650 +51651 +51652 +51653 +51654 +51655 +51680 +51681 +51682 +51683 +51684 +51685 +51686 +51687 +51712 +51713 +51714 +51715 +51716 +51717 +51718 +51719 +51744 +51745 +51746 +51747 +51748 +51749 +51750 +51751 +51776 +51777 +51778 +51779 +51780 +51781 +51782 +51783 +51808 +51809 +51810 +51811 +51812 +51813 +51814 +51815 +51840 +51841 +51842 +51843 +51844 +51845 +51846 +51847 +51872 +51873 +51874 +51875 +51876 +51877 +51878 +51879 +51904 +51905 +51906 +51907 +51908 +51909 +51910 +51911 +51936 +51937 +51938 +51939 +51940 +51941 +51942 +51943 +51968 +51969 +51970 +51971 +51972 +51973 +51974 +51975 +52000 +52001 +52002 +52003 +52004 +52005 +52006 +52007 +52032 +52033 +52034 +52035 +52036 +52037 +52038 +52039 +52064 +52065 +52066 +52067 +52068 +52069 +52070 +52071 +52096 +52097 +52098 +52099 +52100 +52101 +52102 +52103 +52128 +52129 +52130 +52131 +52132 +52133 +52134 +52135 +52160 +52161 +52162 +52163 +52164 +52165 +52166 +52167 +52192 +52193 +52194 +52195 +52196 +52197 +52198 +52199 +52224 +52225 +52226 +52227 +52228 +52229 +52230 +52231 +52256 +52257 +52258 +52259 +52260 +52261 +52262 +52263 +52288 +52289 +52290 +52291 +52292 +52293 +52294 +52295 +52320 +52321 +52322 +52323 +52324 +52325 +52326 +52327 +52352 +52353 +52354 +52355 +52356 +52357 +52358 +52359 +52384 +52385 +52386 +52387 +52388 +52389 +52390 +52391 +52416 +52417 +52418 +52419 +52420 +52421 +52422 +52423 +52448 +52449 +52450 +52451 +52452 +52453 +52454 +52455 +52480 +52481 +52482 +52483 +52484 +52485 +52486 +52487 +52512 +52513 +52514 +52515 +52516 +52517 +52518 +52519 +52544 +52545 +52546 +52547 +52548 +52549 +52550 +52551 +52576 +52577 +52578 +52579 +52580 +52581 +52582 +52583 +52608 +52609 +52610 +52611 +52612 +52613 +52614 +52615 +52640 +52641 +52642 +52643 +52644 +52645 +52646 +52647 +52672 +52673 +52674 +52675 +52676 +52677 +52678 +52679 +52704 +52705 +52706 +52707 +52708 +52709 +52710 +52711 +52736 +52737 +52738 +52739 +52740 +52741 +52742 +52743 +52768 +52769 +52770 +52771 +52772 +52773 +52774 +52775 +52800 +52801 +52802 +52803 +52804 +52805 +52806 +52807 +52832 +52833 +52834 +52835 +52836 +52837 +52838 +52839 +52864 +52865 +52866 +52867 +52868 +52869 +52870 +52871 +52896 +52897 +52898 +52899 +52900 +52901 +52902 +52903 +52928 +52929 +52930 +52931 +52932 +52933 +52934 +52935 +52960 +52961 +52962 +52963 +52964 +52965 +52966 +52967 +52992 +52993 +52994 +52995 +52996 +52997 +52998 +52999 +53024 +53025 +53026 +53027 +53028 +53029 +53030 +53031 +53056 +53057 +53058 +53059 +53060 +53061 +53062 +53063 +53088 +53089 +53090 +53091 +53092 +53093 +53094 +53095 +53120 +53121 +53122 +53123 +53124 +53125 +53126 +53127 +53152 +53153 +53154 +53155 +53156 +53157 +53158 +53159 +53184 +53185 +53186 +53187 +53188 +53189 +53190 +53191 +53216 +53217 +53218 +53219 +53220 +53221 +53222 +53223 +53248 +53249 +53250 +53251 +53252 +53253 +53254 +53255 +53280 +53281 +53282 +53283 +53284 +53285 +53286 +53287 +53312 +53313 +53314 +53315 +53316 +53317 +53318 +53319 +53344 +53345 +53346 +53347 +53348 +53349 +53350 +53351 +53376 +53377 +53378 +53379 +53380 +53381 +53382 +53383 +53408 +53409 +53410 +53411 +53412 +53413 +53414 +53415 +53440 +53441 +53442 +53443 +53444 +53445 +53446 +53447 +53472 +53473 +53474 +53475 +53476 +53477 +53478 +53479 +53504 +53505 +53506 +53507 +53508 +53509 +53510 +53511 +53536 +53537 +53538 +53539 +53540 +53541 +53542 +53543 +53568 +53569 +53570 +53571 +53572 +53573 +53574 +53575 +53600 +53601 +53602 +53603 +53604 +53605 +53606 +53607 +53632 +53633 +53634 +53635 +53636 +53637 +53638 +53639 +53664 +53665 +53666 +53667 +53668 +53669 +53670 +53671 +53696 +53697 +53698 +53699 +53700 +53701 +53702 +53703 +53728 +53729 +53730 +53731 +53732 +53733 +53734 +53735 +53760 +53761 +53762 +53763 +53764 +53765 +53766 +53767 +53792 +53793 +53794 +53795 +53796 +53797 +53798 +53799 +53824 +53825 +53826 +53827 +53828 +53829 +53830 +53831 +53856 +53857 +53858 +53859 +53860 +53861 +53862 +53863 +53888 +53889 +53890 +53891 +53892 +53893 +53894 +53895 +53920 +53921 +53922 +53923 +53924 +53925 +53926 +53927 +53952 +53953 +53954 +53955 +53956 +53957 +53958 +53959 +53984 +53985 +53986 +53987 +53988 +53989 +53990 +53991 +54016 +54017 +54018 +54019 +54020 +54021 +54022 +54023 +54048 +54049 +54050 +54051 +54052 +54053 +54054 +54055 +54080 +54081 +54082 +54083 +54084 +54085 +54086 +54087 +54112 +54113 +54114 +54115 +54116 +54117 +54118 +54119 +54144 +54145 +54146 +54147 +54148 +54149 +54150 +54151 +54176 +54177 +54178 +54179 +54180 +54181 +54182 +54183 +54208 +54209 +54210 +54211 +54212 +54213 +54214 +54215 +54240 +54241 +54242 +54243 +54244 +54245 +54246 +54247 +54272 +54273 +54274 +54275 +54276 +54277 +54278 +54279 +54304 +54305 +54306 +54307 +54308 +54309 +54310 +54311 +54336 +54337 +54338 +54339 +54340 +54341 +54342 +54343 +54368 +54369 +54370 +54371 +54372 +54373 +54374 +54375 +54400 +54401 +54402 +54403 +54404 +54405 +54406 +54407 +54432 +54433 +54434 +54435 +54436 +54437 +54438 +54439 +54464 +54465 +54466 +54467 +54468 +54469 +54470 +54471 +54496 +54497 +54498 +54499 +54500 +54501 +54502 +54503 +54528 +54529 +54530 +54531 +54532 +54533 +54534 +54535 +54560 +54561 +54562 +54563 +54564 +54565 +54566 +54567 +54592 +54593 +54594 +54595 +54596 +54597 +54598 +54599 +54624 +54625 +54626 +54627 +54628 +54629 +54630 +54631 +54656 +54657 +54658 +54659 +54660 +54661 +54662 +54663 +54688 +54689 +54690 +54691 +54692 +54693 +54694 +54695 +54720 +54721 +54722 +54723 +54724 +54725 +54726 +54727 +54752 +54753 +54754 +54755 +54756 +54757 +54758 +54759 +54784 +54785 +54786 +54787 +54788 +54789 +54790 +54791 +54816 +54817 +54818 +54819 +54820 +54821 +54822 +54823 +54848 +54849 +54850 +54851 +54852 +54853 +54854 +54855 +54880 +54881 +54882 +54883 +54884 +54885 +54886 +54887 +54912 +54913 +54914 +54915 +54916 +54917 +54918 +54919 +54944 +54945 +54946 +54947 +54948 +54949 +54950 +54951 +54976 +54977 +54978 +54979 +54980 +54981 +54982 +54983 +55008 +55009 +55010 +55011 +55012 +55013 +55014 +55015 +55040 +55041 +55042 +55043 +55044 +55045 +55046 +55047 +55072 +55073 +55074 +55075 +55076 +55077 +55078 +55079 +55104 +55105 +55106 +55107 +55108 +55109 +55110 +55111 +55136 +55137 +55138 +55139 +55140 +55141 +55142 +55143 +55168 +55169 +55170 +55171 +55172 +55173 +55174 +55175 +55200 +55201 +55202 +55203 +55204 +55205 +55206 +55207 +55232 +55233 +55234 +55235 +55236 +55237 +55238 +55239 +55264 +55265 +55266 +55267 +55268 +55269 +55270 +55271 +55296 +55297 +55298 +55299 +55300 +55301 +55302 +55303 +55328 +55329 +55330 +55331 +55332 +55333 +55334 +55335 +55360 +55361 +55362 +55363 +55364 +55365 +55366 +55367 +55392 +55393 +55394 +55395 +55396 +55397 +55398 +55399 +55424 +55425 +55426 +55427 +55428 +55429 +55430 +55431 +55456 +55457 +55458 +55459 +55460 +55461 +55462 +55463 +55488 +55489 +55490 +55491 +55492 +55493 +55494 +55495 +55520 +55521 +55522 +55523 +55524 +55525 +55526 +55527 +55552 +55553 +55554 +55555 +55556 +55557 +55558 +55559 +55584 +55585 +55586 +55587 +55588 +55589 +55590 +55591 +55616 +55617 +55618 +55619 +55620 +55621 +55622 +55623 +55648 +55649 +55650 +55651 +55652 +55653 +55654 +55655 +55680 +55681 +55682 +55683 +55684 +55685 +55686 +55687 +55712 +55713 +55714 +55715 +55716 +55717 +55718 +55719 +55744 +55745 +55746 +55747 +55748 +55749 +55750 +55751 +55776 +55777 +55778 +55779 +55780 +55781 +55782 +55783 +55808 +55809 +55810 +55811 +55812 +55813 +55814 +55815 +55840 +55841 +55842 +55843 +55844 +55845 +55846 +55847 +55872 +55873 +55874 +55875 +55876 +55877 +55878 +55879 +55904 +55905 +55906 +55907 +55908 +55909 +55910 +55911 +55936 +55937 +55938 +55939 +55940 +55941 +55942 +55943 +55968 +55969 +55970 +55971 +55972 +55973 +55974 +55975 +56000 +56001 +56002 +56003 +56004 +56005 +56006 +56007 +56032 +56033 +56034 +56035 +56036 +56037 +56038 +56039 +56064 +56065 +56066 +56067 +56068 +56069 +56070 +56071 +56096 +56097 +56098 +56099 +56100 +56101 +56102 +56103 +56128 +56129 +56130 +56131 +56132 +56133 +56134 +56135 +56160 +56161 +56162 +56163 +56164 +56165 +56166 +56167 +56192 +56193 +56194 +56195 +56196 +56197 +56198 +56199 +56224 +56225 +56226 +56227 +56228 +56229 +56230 +56231 +56256 +56257 +56258 +56259 +56260 +56261 +56262 +56263 +56288 +56289 +56290 +56291 +56292 +56293 +56294 +56295 +56320 +56321 +56322 +56323 +56324 +56325 +56326 +56327 +56352 +56353 +56354 +56355 +56356 +56357 +56358 +56359 +56384 +56385 +56386 +56387 +56388 +56389 +56390 +56391 +56416 +56417 +56418 +56419 +56420 +56421 +56422 +56423 +56448 +56449 +56450 +56451 +56452 +56453 +56454 +56455 +56480 +56481 +56482 +56483 +56484 +56485 +56486 +56487 +56512 +56513 +56514 +56515 +56516 +56517 +56518 +56519 +56544 +56545 +56546 +56547 +56548 +56549 +56550 +56551 +56576 +56577 +56578 +56579 +56580 +56581 +56582 +56583 +56608 +56609 +56610 +56611 +56612 +56613 +56614 +56615 +56640 +56641 +56642 +56643 +56644 +56645 +56646 +56647 +56672 +56673 +56674 +56675 +56676 +56677 +56678 +56679 +56704 +56705 +56706 +56707 +56708 +56709 +56710 +56711 +56736 +56737 +56738 +56739 +56740 +56741 +56742 +56743 +56768 +56769 +56770 +56771 +56772 +56773 +56774 +56775 +56800 +56801 +56802 +56803 +56804 +56805 +56806 +56807 +56832 +56833 +56834 +56835 +56836 +56837 +56838 +56839 +56864 +56865 +56866 +56867 +56868 +56869 +56870 +56871 +56896 +56897 +56898 +56899 +56900 +56901 +56902 +56903 +56928 +56929 +56930 +56931 +56932 +56933 +56934 +56935 +56960 +56961 +56962 +56963 +56964 +56965 +56966 +56967 +56992 +56993 +56994 +56995 +56996 +56997 +56998 +56999 +57024 +57025 +57026 +57027 +57028 +57029 +57030 +57031 +57056 +57057 +57058 +57059 +57060 +57061 +57062 +57063 +57088 +57089 +57090 +57091 +57092 +57093 +57094 +57095 +57120 +57121 +57122 +57123 +57124 +57125 +57126 +57127 +57152 +57153 +57154 +57155 +57156 +57157 +57158 +57159 +57184 +57185 +57186 +57187 +57188 +57189 +57190 +57191 +57216 +57217 +57218 +57219 +57220 +57221 +57222 +57223 +57248 +57249 +57250 +57251 +57252 +57253 +57254 +57255 +57280 +57281 +57282 +57283 +57284 +57285 +57286 +57287 +57312 +57313 +57314 +57315 +57316 +57317 +57318 +57319 +57344 +57345 +57346 +57347 +57348 +57349 +57350 +57351 +57376 +57377 +57378 +57379 +57380 +57381 +57382 +57383 +57408 +57409 +57410 +57411 +57412 +57413 +57414 +57415 +57440 +57441 +57442 +57443 +57444 +57445 +57446 +57447 +57472 +57473 +57474 +57475 +57476 +57477 +57478 +57479 +57504 +57505 +57506 +57507 +57508 +57509 +57510 +57511 +57536 +57537 +57538 +57539 +57540 +57541 +57542 +57543 +57568 +57569 +57570 +57571 +57572 +57573 +57574 +57575 +57600 +57601 +57602 +57603 +57604 +57605 +57606 +57607 +57632 +57633 +57634 +57635 +57636 +57637 +57638 +57639 +57664 +57665 +57666 +57667 +57668 +57669 +57670 +57671 +57696 +57697 +57698 +57699 +57700 +57701 +57702 +57703 +57728 +57729 +57730 +57731 +57732 +57733 +57734 +57735 +57760 +57761 +57762 +57763 +57764 +57765 +57766 +57767 +57792 +57793 +57794 +57795 +57796 +57797 +57798 +57799 +57824 +57825 +57826 +57827 +57828 +57829 +57830 +57831 +57856 +57857 +57858 +57859 +57860 +57861 +57862 +57863 +57888 +57889 +57890 +57891 +57892 +57893 +57894 +57895 +57920 +57921 +57922 +57923 +57924 +57925 +57926 +57927 +57952 +57953 +57954 +57955 +57956 +57957 +57958 +57959 +57984 +57985 +57986 +57987 +57988 +57989 +57990 +57991 +58016 +58017 +58018 +58019 +58020 +58021 +58022 +58023 +58048 +58049 +58050 +58051 +58052 +58053 +58054 +58055 +58080 +58081 +58082 +58083 +58084 +58085 +58086 +58087 +58112 +58113 +58114 +58115 +58116 +58117 +58118 +58119 +58144 +58145 +58146 +58147 +58148 +58149 +58150 +58151 +58176 +58177 +58178 +58179 +58180 +58181 +58182 +58183 +58208 +58209 +58210 +58211 +58212 +58213 +58214 +58215 +58240 +58241 +58242 +58243 +58244 +58245 +58246 +58247 +58272 +58273 +58274 +58275 +58276 +58277 +58278 +58279 +58304 +58305 +58306 +58307 +58308 +58309 +58310 +58311 +58336 +58337 +58338 +58339 +58340 +58341 +58342 +58343 +58368 +58369 +58370 +58371 +58372 +58373 +58374 +58375 +58400 +58401 +58402 +58403 +58404 +58405 +58406 +58407 +58432 +58433 +58434 +58435 +58436 +58437 +58438 +58439 +58464 +58465 +58466 +58467 +58468 +58469 +58470 +58471 +58496 +58497 +58498 +58499 +58500 +58501 +58502 +58503 +58528 +58529 +58530 +58531 +58532 +58533 +58534 +58535 +58560 +58561 +58562 +58563 +58564 +58565 +58566 +58567 +58592 +58593 +58594 +58595 +58596 +58597 +58598 +58599 +58624 +58625 +58626 +58627 +58628 +58629 +58630 +58631 +58656 +58657 +58658 +58659 +58660 +58661 +58662 +58663 +58688 +58689 +58690 +58691 +58692 +58693 +58694 +58695 +58720 +58721 +58722 +58723 +58724 +58725 +58726 +58727 +58752 +58753 +58754 +58755 +58756 +58757 +58758 +58759 +58784 +58785 +58786 +58787 +58788 +58789 +58790 +58791 +58816 +58817 +58818 +58819 +58820 +58821 +58822 +58823 +58848 +58849 +58850 +58851 +58852 +58853 +58854 +58855 +58880 +58881 +58882 +58883 +58884 +58885 +58886 +58887 +58912 +58913 +58914 +58915 +58916 +58917 +58918 +58919 +58944 +58945 +58946 +58947 +58948 +58949 +58950 +58951 +58976 +58977 +58978 +58979 +58980 +58981 +58982 +58983 +59008 +59009 +59010 +59011 +59012 +59013 +59014 +59015 +59040 +59041 +59042 +59043 +59044 +59045 +59046 +59047 +59072 +59073 +59074 +59075 +59076 +59077 +59078 +59079 +59104 +59105 +59106 +59107 +59108 +59109 +59110 +59111 +59136 +59137 +59138 +59139 +59140 +59141 +59142 +59143 +59168 +59169 +59170 +59171 +59172 +59173 +59174 +59175 +59200 +59201 +59202 +59203 +59204 +59205 +59206 +59207 +59232 +59233 +59234 +59235 +59236 +59237 +59238 +59239 +59264 +59265 +59266 +59267 +59268 +59269 +59270 +59271 +59296 +59297 +59298 +59299 +59300 +59301 +59302 +59303 +59328 +59329 +59330 +59331 +59332 +59333 +59334 +59335 +59360 +59361 +59362 +59363 +59364 +59365 +59366 +59367 +59392 +59393 +59394 +59395 +59396 +59397 +59398 +59399 +59424 +59425 +59426 +59427 +59428 +59429 +59430 +59431 +59456 +59457 +59458 +59459 +59460 +59461 +59462 +59463 +59488 +59489 +59490 +59491 +59492 +59493 +59494 +59495 +59520 +59521 +59522 +59523 +59524 +59525 +59526 +59527 +59552 +59553 +59554 +59555 +59556 +59557 +59558 +59559 +59584 +59585 +59586 +59587 +59588 +59589 +59590 +59591 +59616 +59617 +59618 +59619 +59620 +59621 +59622 +59623 +59648 +59649 +59650 +59651 +59652 +59653 +59654 +59655 +59680 +59681 +59682 +59683 +59684 +59685 +59686 +59687 +59712 +59713 +59714 +59715 +59716 +59717 +59718 +59719 +59744 +59745 +59746 +59747 +59748 +59749 +59750 +59751 +59776 +59777 +59778 +59779 +59780 +59781 +59782 +59783 +59808 +59809 +59810 +59811 +59812 +59813 +59814 +59815 +59840 +59841 +59842 +59843 +59844 +59845 +59846 +59847 +59872 +59873 +59874 +59875 +59876 +59877 +59878 +59879 +59904 +59905 +59906 +59907 +59908 +59909 +59910 +59911 +59936 +59937 +59938 +59939 +59940 +59941 +59942 +59943 +59968 +59969 +59970 +59971 +59972 +59973 +59974 +59975 +60000 +60001 +60002 +60003 +60004 +60005 +60006 +60007 +60032 +60033 +60034 +60035 +60036 +60037 +60038 +60039 +60064 +60065 +60066 +60067 +60068 +60069 +60070 +60071 +60096 +60097 +60098 +60099 +60100 +60101 +60102 +60103 +60128 +60129 +60130 +60131 +60132 +60133 +60134 +60135 +60160 +60161 +60162 +60163 +60164 +60165 +60166 +60167 +60192 +60193 +60194 +60195 +60196 +60197 +60198 +60199 +60224 +60225 +60226 +60227 +60228 +60229 +60230 +60231 +60256 +60257 +60258 +60259 +60260 +60261 +60262 +60263 +60288 +60289 +60290 +60291 +60292 +60293 +60294 +60295 +60320 +60321 +60322 +60323 +60324 +60325 +60326 +60327 +60352 +60353 +60354 +60355 +60356 +60357 +60358 +60359 +60384 +60385 +60386 +60387 +60388 +60389 +60390 +60391 +60416 +60417 +60418 +60419 +60420 +60421 +60422 +60423 +60448 +60449 +60450 +60451 +60452 +60453 +60454 +60455 +60480 +60481 +60482 +60483 +60484 +60485 +60486 +60487 +60512 +60513 +60514 +60515 +60516 +60517 +60518 +60519 +60544 +60545 +60546 +60547 +60548 +60549 +60550 +60551 +60576 +60577 +60578 +60579 +60580 +60581 +60582 +60583 +60608 +60609 +60610 +60611 +60612 +60613 +60614 +60615 +60640 +60641 +60642 +60643 +60644 +60645 +60646 +60647 +60672 +60673 +60674 +60675 +60676 +60677 +60678 +60679 +60704 +60705 +60706 +60707 +60708 +60709 +60710 +60711 +60736 +60737 +60738 +60739 +60740 +60741 +60742 +60743 +60768 +60769 +60770 +60771 +60772 +60773 +60774 +60775 +60800 +60801 +60802 +60803 +60804 +60805 +60806 +60807 +60832 +60833 +60834 +60835 +60836 +60837 +60838 +60839 +60864 +60865 +60866 +60867 +60868 +60869 +60870 +60871 +60896 +60897 +60898 +60899 +60900 +60901 +60902 +60903 +60928 +60929 +60930 +60931 +60932 +60933 +60934 +60935 +60960 +60961 +60962 +60963 +60964 +60965 +60966 +60967 +60992 +60993 +60994 +60995 +60996 +60997 +60998 +60999 +61024 +61025 +61026 +61027 +61028 +61029 +61030 +61031 +61056 +61057 +61058 +61059 +61060 +61061 +61062 +61063 +61088 +61089 +61090 +61091 +61092 +61093 +61094 +61095 +61120 +61121 +61122 +61123 +61124 +61125 +61126 +61127 +61152 +61153 +61154 +61155 +61156 +61157 +61158 +61159 +61184 +61185 +61186 +61187 +61188 +61189 +61190 +61191 +61216 +61217 +61218 +61219 +61220 +61221 +61222 +61223 +61248 +61249 +61250 +61251 +61252 +61253 +61254 +61255 +61280 +61281 +61282 +61283 +61284 +61285 +61286 +61287 +61312 +61313 +61314 +61315 +61316 +61317 +61318 +61319 +61344 +61345 +61346 +61347 +61348 +61349 +61350 +61351 +61376 +61377 +61378 +61379 +61380 +61381 +61382 +61383 +61408 +61409 +61410 +61411 +61412 +61413 +61414 +61415 +61440 +61441 +61442 +61443 +61444 +61445 +61446 +61447 +61472 +61473 +61474 +61475 +61476 +61477 +61478 +61479 +61504 +61505 +61506 +61507 +61508 +61509 +61510 +61511 +61536 +61537 +61538 +61539 +61540 +61541 +61542 +61543 +61568 +61569 +61570 +61571 +61572 +61573 +61574 +61575 +61600 +61601 +61602 +61603 +61604 +61605 +61606 +61607 +61632 +61633 +61634 +61635 +61636 +61637 +61638 +61639 +61664 +61665 +61666 +61667 +61668 +61669 +61670 +61671 +61696 +61697 +61698 +61699 +61700 +61701 +61702 +61703 +61728 +61729 +61730 +61731 +61732 +61733 +61734 +61735 +61760 +61761 +61762 +61763 +61764 +61765 +61766 +61767 +61792 +61793 +61794 +61795 +61796 +61797 +61798 +61799 +61824 +61825 +61826 +61827 +61828 +61829 +61830 +61831 +61856 +61857 +61858 +61859 +61860 +61861 +61862 +61863 +61888 +61889 +61890 +61891 +61892 +61893 +61894 +61895 +61920 +61921 +61922 +61923 +61924 +61925 +61926 +61927 +61952 +61953 +61954 +61955 +61956 +61957 +61958 +61959 +61984 +61985 +61986 +61987 +61988 +61989 +61990 +61991 +62016 +62017 +62018 +62019 +62020 +62021 +62022 +62023 +62048 +62049 +62050 +62051 +62052 +62053 +62054 +62055 +62080 +62081 +62082 +62083 +62084 +62085 +62086 +62087 +62112 +62113 +62114 +62115 +62116 +62117 +62118 +62119 +62144 +62145 +62146 +62147 +62148 +62149 +62150 +62151 +62176 +62177 +62178 +62179 +62180 +62181 +62182 +62183 +62208 +62209 +62210 +62211 +62212 +62213 +62214 +62215 +62240 +62241 +62242 +62243 +62244 +62245 +62246 +62247 +62272 +62273 +62274 +62275 +62276 +62277 +62278 +62279 +62304 +62305 +62306 +62307 +62308 +62309 +62310 +62311 +62336 +62337 +62338 +62339 +62340 +62341 +62342 +62343 +62368 +62369 +62370 +62371 +62372 +62373 +62374 +62375 +62400 +62401 +62402 +62403 +62404 +62405 +62406 +62407 +62432 +62433 +62434 +62435 +62436 +62437 +62438 +62439 +62464 +62465 +62466 +62467 +62468 +62469 +62470 +62471 +62496 +62497 +62498 +62499 +62500 +62501 +62502 +62503 +62528 +62529 +62530 +62531 +62532 +62533 +62534 +62535 +62560 +62561 +62562 +62563 +62564 +62565 +62566 +62567 +62592 +62593 +62594 +62595 +62596 +62597 +62598 +62599 +62624 +62625 +62626 +62627 +62628 +62629 +62630 +62631 +62656 +62657 +62658 +62659 +62660 +62661 +62662 +62663 +62688 +62689 +62690 +62691 +62692 +62693 +62694 +62695 +62720 +62721 +62722 +62723 +62724 +62725 +62726 +62727 +62752 +62753 +62754 +62755 +62756 +62757 +62758 +62759 +62784 +62785 +62786 +62787 +62788 +62789 +62790 +62791 +62816 +62817 +62818 +62819 +62820 +62821 +62822 +62823 +62848 +62849 +62850 +62851 +62852 +62853 +62854 +62855 +62880 +62881 +62882 +62883 +62884 +62885 +62886 +62887 +62912 +62913 +62914 +62915 +62916 +62917 +62918 +62919 +62944 +62945 +62946 +62947 +62948 +62949 +62950 +62951 +62976 +62977 +62978 +62979 +62980 +62981 +62982 +62983 +63008 +63009 +63010 +63011 +63012 +63013 +63014 +63015 +63040 +63041 +63042 +63043 +63044 +63045 +63046 +63047 +63072 +63073 +63074 +63075 +63076 +63077 +63078 +63079 +63104 +63105 +63106 +63107 +63108 +63109 +63110 +63111 +63136 +63137 +63138 +63139 +63140 +63141 +63142 +63143 +63168 +63169 +63170 +63171 +63172 +63173 +63174 +63175 +63200 +63201 +63202 +63203 +63204 +63205 +63206 +63207 +63232 +63233 +63234 +63235 +63236 +63237 +63238 +63239 +63264 +63265 +63266 +63267 +63268 +63269 +63270 +63271 +63296 +63297 +63298 +63299 +63300 +63301 +63302 +63303 +63328 +63329 +63330 +63331 +63332 +63333 +63334 +63335 +63360 +63361 +63362 +63363 +63364 +63365 +63366 +63367 +63392 +63393 +63394 +63395 +63396 +63397 +63398 +63399 +63424 +63425 +63426 +63427 +63428 +63429 +63430 +63431 +63456 +63457 +63458 +63459 +63460 +63461 +63462 +63463 +63488 +63489 +63490 +63491 +63492 +63493 +63494 +63495 +63520 +63521 +63522 +63523 +63524 +63525 +63526 +63527 +63552 +63553 +63554 +63555 +63556 +63557 +63558 +63559 +63584 +63585 +63586 +63587 +63588 +63589 +63590 +63591 +63616 +63617 +63618 +63619 +63620 +63621 +63622 +63623 +63648 +63649 +63650 +63651 +63652 +63653 +63654 +63655 +63680 +63681 +63682 +63683 +63684 +63685 +63686 +63687 +63712 +63713 +63714 +63715 +63716 +63717 +63718 +63719 +63744 +63745 +63746 +63747 +63748 +63749 +63750 +63751 +63776 +63777 +63778 +63779 +63780 +63781 +63782 +63783 +63808 +63809 +63810 +63811 +63812 +63813 +63814 +63815 +63840 +63841 +63842 +63843 +63844 +63845 +63846 +63847 +63872 +63873 +63874 +63875 +63876 +63877 +63878 +63879 +63904 +63905 +63906 +63907 +63908 +63909 +63910 +63911 +63936 +63937 +63938 +63939 +63940 +63941 +63942 +63943 +63968 +63969 +63970 +63971 +63972 +63973 +63974 +63975 +64000 +64001 +64002 +64003 +64004 +64005 +64006 +64007 +64032 +64033 +64034 +64035 +64036 +64037 +64038 +64039 +64064 +64065 +64066 +64067 +64068 +64069 +64070 +64071 +64096 +64097 +64098 +64099 +64100 +64101 +64102 +64103 +64128 +64129 +64130 +64131 +64132 +64133 +64134 +64135 +64160 +64161 +64162 +64163 +64164 +64165 +64166 +64167 +64192 +64193 +64194 +64195 +64196 +64197 +64198 +64199 +64224 +64225 +64226 +64227 +64228 +64229 +64230 +64231 +64256 +64257 +64258 +64259 +64260 +64261 +64262 +64263 +64288 +64289 +64290 +64291 +64292 +64293 +64294 +64295 +64320 +64321 +64322 +64323 +64324 +64325 +64326 +64327 +64352 +64353 +64354 +64355 +64356 +64357 +64358 +64359 +64384 +64385 +64386 +64387 +64388 +64389 +64390 +64391 +64416 +64417 +64418 +64419 +64420 +64421 +64422 +64423 +64448 +64449 +64450 +64451 +64452 +64453 +64454 +64455 +64480 +64481 +64482 +64483 +64484 +64485 +64486 +64487 +64512 +64513 +64514 +64515 +64516 +64517 +64518 +64519 +64544 +64545 +64546 +64547 +64548 +64549 +64550 +64551 +64576 +64577 +64578 +64579 +64580 +64581 +64582 +64583 +64608 +64609 +64610 +64611 +64612 +64613 +64614 +64615 +64640 +64641 +64642 +64643 +64644 +64645 +64646 +64647 +64672 +64673 +64674 +64675 +64676 +64677 +64678 +64679 +64704 +64705 +64706 +64707 +64708 +64709 +64710 +64711 +64736 +64737 +64738 +64739 +64740 +64741 +64742 +64743 +64768 +64769 +64770 +64771 +64772 +64773 +64774 +64775 +64800 +64801 +64802 +64803 +64804 +64805 +64806 +64807 +64832 +64833 +64834 +64835 +64836 +64837 +64838 +64839 +64864 +64865 +64866 +64867 +64868 +64869 +64870 +64871 +64896 +64897 +64898 +64899 +64900 +64901 +64902 +64903 +64928 +64929 +64930 +64931 +64932 +64933 +64934 +64935 +64960 +64961 +64962 +64963 +64964 +64965 +64966 +64967 +64992 +64993 +64994 +64995 +64996 +64997 +64998 +64999 +65024 +65025 +65026 +65027 +65028 +65029 +65030 +65031 +65056 +65057 +65058 +65059 +65060 +65061 +65062 +65063 +65088 +65089 +65090 +65091 +65092 +65093 +65094 +65095 +65120 +65121 +65122 +65123 +65124 +65125 +65126 +65127 +65152 +65153 +65154 +65155 +65156 +65157 +65158 +65159 +65184 +65185 +65186 +65187 +65188 +65189 +65190 +65191 +65216 +65217 +65218 +65219 +65220 +65221 +65222 +65223 +65248 +65249 +65250 +65251 +65252 +65253 +65254 +65255 +65280 +65281 +65282 +65283 +65284 +65285 +65286 +65287 +65312 +65313 +65314 +65315 +65316 +65317 +65318 +65319 +65344 +65345 +65346 +65347 +65348 +65349 +65350 +65351 +65376 +65377 +65378 +65379 +65380 +65381 +65382 +65383 +65408 +65409 +65410 +65411 +65412 +65413 +65414 +65415 +65440 +65441 +65442 +65443 +65444 +65445 +65446 +65447 +65472 +65473 +65474 +65475 +65476 +65477 +65478 +65479 +65504 +65505 +65506 +65507 +65508 +65509 +65510 +65511 +65536 +65537 +65538 +65539 +65540 +65541 +65542 +65543 +65568 +65569 +65570 +65571 +65572 +65573 +65574 +65575 +65600 +65601 +65602 +65603 +65604 +65605 +65606 +65607 +65632 +65633 +65634 +65635 +65636 +65637 +65638 +65639 +65664 +65665 +65666 +65667 +65668 +65669 +65670 +65671 +65696 +65697 +65698 +65699 +65700 +65701 +65702 +65703 +65728 +65729 +65730 +65731 +65732 +65733 +65734 +65735 +65760 +65761 +65762 +65763 +65764 +65765 +65766 +65767 +65792 +65793 +65794 +65795 +65796 +65797 +65798 +65799 +65824 +65825 +65826 +65827 +65828 +65829 +65830 +65831 +65856 +65857 +65858 +65859 +65860 +65861 +65862 +65863 +65888 +65889 +65890 +65891 +65892 +65893 +65894 +65895 +65920 +65921 +65922 +65923 +65924 +65925 +65926 +65927 +65952 +65953 +65954 +65955 +65956 +65957 +65958 +65959 +65984 +65985 +65986 +65987 +65988 +65989 +65990 +65991 +66016 +66017 +66018 +66019 +66020 +66021 +66022 +66023 +66048 +66049 +66050 +66051 +66052 +66053 +66054 +66055 +66080 +66081 +66082 +66083 +66084 +66085 +66086 +66087 +66112 +66113 +66114 +66115 +66116 +66117 +66118 +66119 +66144 +66145 +66146 +66147 +66148 +66149 +66150 +66151 +66176 +66177 +66178 +66179 +66180 +66181 +66182 +66183 +66208 +66209 +66210 +66211 +66212 +66213 +66214 +66215 +66240 +66241 +66242 +66243 +66244 +66245 +66246 +66247 +66272 +66273 +66274 +66275 +66276 +66277 +66278 +66279 +66304 +66305 +66306 +66307 +66308 +66309 +66310 +66311 +66336 +66337 +66338 +66339 +66340 +66341 +66342 +66343 +66368 +66369 +66370 +66371 +66372 +66373 +66374 +66375 +66400 +66401 +66402 +66403 +66404 +66405 +66406 +66407 +66432 +66433 +66434 +66435 +66436 +66437 +66438 +66439 +66464 +66465 +66466 +66467 +66468 +66469 +66470 +66471 +66496 +66497 +66498 +66499 +66500 +66501 +66502 +66503 +66528 +66529 +66530 +66531 +66532 +66533 +66534 +66535 +66560 +66561 +66562 +66563 +66564 +66565 +66566 +66567 +66592 +66593 +66594 +66595 +66596 +66597 +66598 +66599 +66624 +66625 +66626 +66627 +66628 +66629 +66630 +66631 +66656 +66657 +66658 +66659 +66660 +66661 +66662 +66663 +66688 +66689 +66690 +66691 +66692 +66693 +66694 +66695 +66720 +66721 +66722 +66723 +66724 +66725 +66726 +66727 +66752 +66753 +66754 +66755 +66756 +66757 +66758 +66759 +66784 +66785 +66786 +66787 +66788 +66789 +66790 +66791 +66816 +66817 +66818 +66819 +66820 +66821 +66822 +66823 +66848 +66849 +66850 +66851 +66852 +66853 +66854 +66855 +66880 +66881 +66882 +66883 +66884 +66885 +66886 +66887 +66912 +66913 +66914 +66915 +66916 +66917 +66918 +66919 +66944 +66945 +66946 +66947 +66948 +66949 +66950 +66951 +66976 +66977 +66978 +66979 +66980 +66981 +66982 +66983 +67008 +67009 +67010 +67011 +67012 +67013 +67014 +67015 +67040 +67041 +67042 +67043 +67044 +67045 +67046 +67047 +67072 +67073 +67074 +67075 +67076 +67077 +67078 +67079 +67104 +67105 +67106 +67107 +67108 +67109 +67110 +67111 +67136 +67137 +67138 +67139 +67140 +67141 +67142 +67143 +67168 +67169 +67170 +67171 +67172 +67173 +67174 +67175 +67200 +67201 +67202 +67203 +67204 +67205 +67206 +67207 +67232 +67233 +67234 +67235 +67236 +67237 +67238 +67239 +67264 +67265 +67266 +67267 +67268 +67269 +67270 +67271 +67296 +67297 +67298 +67299 +67300 +67301 +67302 +67303 +67328 +67329 +67330 +67331 +67332 +67333 +67334 +67335 +67360 +67361 +67362 +67363 +67364 +67365 +67366 +67367 +67392 +67393 +67394 +67395 +67396 +67397 +67398 +67399 +67424 +67425 +67426 +67427 +67428 +67429 +67430 +67431 +67456 +67457 +67458 +67459 +67460 +67461 +67462 +67463 +67488 +67489 +67490 +67491 +67492 +67493 +67494 +67495 +67520 +67521 +67522 +67523 +67524 +67525 +67526 +67527 +67552 +67553 +67554 +67555 +67556 +67557 +67558 +67559 +67584 +67585 +67586 +67587 +67588 +67589 +67590 +67591 +67616 +67617 +67618 +67619 +67620 +67621 +67622 +67623 +67648 +67649 +67650 +67651 +67652 +67653 +67654 +67655 +67680 +67681 +67682 +67683 +67684 +67685 +67686 +67687 +67712 +67713 +67714 +67715 +67716 +67717 +67718 +67719 +67744 +67745 +67746 +67747 +67748 +67749 +67750 +67751 +67776 +67777 +67778 +67779 +67780 +67781 +67782 +67783 +67808 +67809 +67810 +67811 +67812 +67813 +67814 +67815 +67840 +67841 +67842 +67843 +67844 +67845 +67846 +67847 +67872 +67873 +67874 +67875 +67876 +67877 +67878 +67879 +67904 +67905 +67906 +67907 +67908 +67909 +67910 +67911 +67936 +67937 +67938 +67939 +67940 +67941 +67942 +67943 +67968 +67969 +67970 +67971 +67972 +67973 +67974 +67975 +68000 +68001 +68002 +68003 +68004 +68005 +68006 +68007 +68032 +68033 +68034 +68035 +68036 +68037 +68038 +68039 +68064 +68065 +68066 +68067 +68068 +68069 +68070 +68071 +68096 +68097 +68098 +68099 +68100 +68101 +68102 +68103 +68128 +68129 +68130 +68131 +68132 +68133 +68134 +68135 +68160 +68161 +68162 +68163 +68164 +68165 +68166 +68167 +68192 +68193 +68194 +68195 +68196 +68197 +68198 +68199 +68224 +68225 +68226 +68227 +68228 +68229 +68230 +68231 +68256 +68257 +68258 +68259 +68260 +68261 +68262 +68263 +68288 +68289 +68290 +68291 +68292 +68293 +68294 +68295 +68320 +68321 +68322 +68323 +68324 +68325 +68326 +68327 +68352 +68353 +68354 +68355 +68356 +68357 +68358 +68359 +68384 +68385 +68386 +68387 +68388 +68389 +68390 +68391 +68416 +68417 +68418 +68419 +68420 +68421 +68422 +68423 +68448 +68449 +68450 +68451 +68452 +68453 +68454 +68455 +68480 +68481 +68482 +68483 +68484 +68485 +68486 +68487 +68512 +68513 +68514 +68515 +68516 +68517 +68518 +68519 +68544 +68545 +68546 +68547 +68548 +68549 +68550 +68551 +68576 +68577 +68578 +68579 +68580 +68581 +68582 +68583 +68608 +68609 +68610 +68611 +68612 +68613 +68614 +68615 +68640 +68641 +68642 +68643 +68644 +68645 +68646 +68647 +68672 +68673 +68674 +68675 +68676 +68677 +68678 +68679 +68704 +68705 +68706 +68707 +68708 +68709 +68710 +68711 +68736 +68737 +68738 +68739 +68740 +68741 +68742 +68743 +68768 +68769 +68770 +68771 +68772 +68773 +68774 +68775 +68800 +68801 +68802 +68803 +68804 +68805 +68806 +68807 +68832 +68833 +68834 +68835 +68836 +68837 +68838 +68839 +68864 +68865 +68866 +68867 +68868 +68869 +68870 +68871 +68896 +68897 +68898 +68899 +68900 +68901 +68902 +68903 +68928 +68929 +68930 +68931 +68932 +68933 +68934 +68935 +68960 +68961 +68962 +68963 +68964 +68965 +68966 +68967 +68992 +68993 +68994 +68995 +68996 +68997 +68998 +68999 +69024 +69025 +69026 +69027 +69028 +69029 +69030 +69031 +69056 +69057 +69058 +69059 +69060 +69061 +69062 +69063 +69088 +69089 +69090 +69091 +69092 +69093 +69094 +69095 +69120 +69121 +69122 +69123 +69124 +69125 +69126 +69127 +69152 +69153 +69154 +69155 +69156 +69157 +69158 +69159 +69184 +69185 +69186 +69187 +69188 +69189 +69190 +69191 +69216 +69217 +69218 +69219 +69220 +69221 +69222 +69223 +69248 +69249 +69250 +69251 +69252 +69253 +69254 +69255 +69280 +69281 +69282 +69283 +69284 +69285 +69286 +69287 +69312 +69313 +69314 +69315 +69316 +69317 +69318 +69319 +69344 +69345 +69346 +69347 +69348 +69349 +69350 +69351 +69376 +69377 +69378 +69379 +69380 +69381 +69382 +69383 +69408 +69409 +69410 +69411 +69412 +69413 +69414 +69415 +69440 +69441 +69442 +69443 +69444 +69445 +69446 +69447 +69472 +69473 +69474 +69475 +69476 +69477 +69478 +69479 +69504 +69505 +69506 +69507 +69508 +69509 +69510 +69511 +69536 +69537 +69538 +69539 +69540 +69541 +69542 +69543 +69568 +69569 +69570 +69571 +69572 +69573 +69574 +69575 +69600 +69601 +69602 +69603 +69604 +69605 +69606 +69607 +69632 +69633 +69634 +69635 +69636 +69637 +69638 +69639 +69664 +69665 +69666 +69667 +69668 +69669 +69670 +69671 +69696 +69697 +69698 +69699 +69700 +69701 +69702 +69703 +69728 +69729 +69730 +69731 +69732 +69733 +69734 +69735 +69760 +69761 +69762 +69763 +69764 +69765 +69766 +69767 +69792 +69793 +69794 +69795 +69796 +69797 +69798 +69799 +69824 +69825 +69826 +69827 +69828 +69829 +69830 +69831 +69856 +69857 +69858 +69859 +69860 +69861 +69862 +69863 +69888 +69889 +69890 +69891 +69892 +69893 +69894 +69895 +69920 +69921 +69922 +69923 +69924 +69925 +69926 +69927 +69952 +69953 +69954 +69955 +69956 +69957 +69958 +69959 +69984 +69985 +69986 +69987 +69988 +69989 +69990 +69991 +70016 +70017 +70018 +70019 +70020 +70021 +70022 +70023 +70048 +70049 +70050 +70051 +70052 +70053 +70054 +70055 +70080 +70081 +70082 +70083 +70084 +70085 +70086 +70087 +70112 +70113 +70114 +70115 +70116 +70117 +70118 +70119 +70144 +70145 +70146 +70147 +70148 +70149 +70150 +70151 +70176 +70177 +70178 +70179 +70180 +70181 +70182 +70183 +70208 +70209 +70210 +70211 +70212 +70213 +70214 +70215 +70240 +70241 +70242 +70243 +70244 +70245 +70246 +70247 +70272 +70273 +70274 +70275 +70276 +70277 +70278 +70279 +70304 +70305 +70306 +70307 +70308 +70309 +70310 +70311 +70336 +70337 +70338 +70339 +70340 +70341 +70342 +70343 +70368 +70369 +70370 +70371 +70372 +70373 +70374 +70375 +70400 +70401 +70402 +70403 +70404 +70405 +70406 +70407 +70432 +70433 +70434 +70435 +70436 +70437 +70438 +70439 +70464 +70465 +70466 +70467 +70468 +70469 +70470 +70471 +70496 +70497 +70498 +70499 +70500 +70501 +70502 +70503 +70528 +70529 +70530 +70531 +70532 +70533 +70534 +70535 +70560 +70561 +70562 +70563 +70564 +70565 +70566 +70567 +70592 +70593 +70594 +70595 +70596 +70597 +70598 +70599 +70624 +70625 +70626 +70627 +70628 +70629 +70630 +70631 +70656 +70657 +70658 +70659 +70660 +70661 +70662 +70663 +70688 +70689 +70690 +70691 +70692 +70693 +70694 +70695 +70720 +70721 +70722 +70723 +70724 +70725 +70726 +70727 +70752 +70753 +70754 +70755 +70756 +70757 +70758 +70759 +70784 +70785 +70786 +70787 +70788 +70789 +70790 +70791 +70816 +70817 +70818 +70819 +70820 +70821 +70822 +70823 +70848 +70849 +70850 +70851 +70852 +70853 +70854 +70855 +70880 +70881 +70882 +70883 +70884 +70885 +70886 +70887 +70912 +70913 +70914 +70915 +70916 +70917 +70918 +70919 +70944 +70945 +70946 +70947 +70948 +70949 +70950 +70951 +70976 +70977 +70978 +70979 +70980 +70981 +70982 +70983 +71008 +71009 +71010 +71011 +71012 +71013 +71014 +71015 +71040 +71041 +71042 +71043 +71044 +71045 +71046 +71047 +71072 +71073 +71074 +71075 +71076 +71077 +71078 +71079 +71104 +71105 +71106 +71107 +71108 +71109 +71110 +71111 +71136 +71137 +71138 +71139 +71140 +71141 +71142 +71143 +71168 +71169 +71170 +71171 +71172 +71173 +71174 +71175 +71200 +71201 +71202 +71203 +71204 +71205 +71206 +71207 +71232 +71233 +71234 +71235 +71236 +71237 +71238 +71239 +71264 +71265 +71266 +71267 +71268 +71269 +71270 +71271 +71296 +71297 +71298 +71299 +71300 +71301 +71302 +71303 +71328 +71329 +71330 +71331 +71332 +71333 +71334 +71335 +71360 +71361 +71362 +71363 +71364 +71365 +71366 +71367 +71392 +71393 +71394 +71395 +71396 +71397 +71398 +71399 +71424 +71425 +71426 +71427 +71428 +71429 +71430 +71431 +71456 +71457 +71458 +71459 +71460 +71461 +71462 +71463 +71488 +71489 +71490 +71491 +71492 +71493 +71494 +71495 +71520 +71521 +71522 +71523 +71524 +71525 +71526 +71527 +71552 +71553 +71554 +71555 +71556 +71557 +71558 +71559 +71584 +71585 +71586 +71587 +71588 +71589 +71590 +71591 +71616 +71617 +71618 +71619 +71620 +71621 +71622 +71623 +71648 +71649 +71650 +71651 +71652 +71653 +71654 +71655 +71680 +71681 +71682 +71683 +71684 +71685 +71686 +71687 +71712 +71713 +71714 +71715 +71716 +71717 +71718 +71719 +71744 +71745 +71746 +71747 +71748 +71749 +71750 +71751 +71776 +71777 +71778 +71779 +71780 +71781 +71782 +71783 +71808 +71809 +71810 +71811 +71812 +71813 +71814 +71815 +71840 +71841 +71842 +71843 +71844 +71845 +71846 +71847 +71872 +71873 +71874 +71875 +71876 +71877 +71878 +71879 +71904 +71905 +71906 +71907 +71908 +71909 +71910 +71911 +71936 +71937 +71938 +71939 +71940 +71941 +71942 +71943 +71968 +71969 +71970 +71971 +71972 +71973 +71974 +71975 +72000 +72001 +72002 +72003 +72004 +72005 +72006 +72007 +72032 +72033 +72034 +72035 +72036 +72037 +72038 +72039 +72064 +72065 +72066 +72067 +72068 +72069 +72070 +72071 +72096 +72097 +72098 +72099 +72100 +72101 +72102 +72103 +72128 +72129 +72130 +72131 +72132 +72133 +72134 +72135 +72160 +72161 +72162 +72163 +72164 +72165 +72166 +72167 +72192 +72193 +72194 +72195 +72196 +72197 +72198 +72199 +72224 +72225 +72226 +72227 +72228 +72229 +72230 +72231 +72256 +72257 +72258 +72259 +72260 +72261 +72262 +72263 +72288 +72289 +72290 +72291 +72292 +72293 +72294 +72295 +72320 +72321 +72322 +72323 +72324 +72325 +72326 +72327 +72352 +72353 +72354 +72355 +72356 +72357 +72358 +72359 +72384 +72385 +72386 +72387 +72388 +72389 +72390 +72391 +72416 +72417 +72418 +72419 +72420 +72421 +72422 +72423 +72448 +72449 +72450 +72451 +72452 +72453 +72454 +72455 +72480 +72481 +72482 +72483 +72484 +72485 +72486 +72487 +72512 +72513 +72514 +72515 +72516 +72517 +72518 +72519 +72544 +72545 +72546 +72547 +72548 +72549 +72550 +72551 +72576 +72577 +72578 +72579 +72580 +72581 +72582 +72583 +72608 +72609 +72610 +72611 +72612 +72613 +72614 +72615 +72640 +72641 +72642 +72643 +72644 +72645 +72646 +72647 +72672 +72673 +72674 +72675 +72676 +72677 +72678 +72679 +72704 +72705 +72706 +72707 +72708 +72709 +72710 +72711 +72736 +72737 +72738 +72739 +72740 +72741 +72742 +72743 +72768 +72769 +72770 +72771 +72772 +72773 +72774 +72775 +72800 +72801 +72802 +72803 +72804 +72805 +72806 +72807 +72832 +72833 +72834 +72835 +72836 +72837 +72838 +72839 +72864 +72865 +72866 +72867 +72868 +72869 +72870 +72871 +72896 +72897 +72898 +72899 +72900 +72901 +72902 +72903 +72928 +72929 +72930 +72931 +72932 +72933 +72934 +72935 +72960 +72961 +72962 +72963 +72964 +72965 +72966 +72967 +72992 +72993 +72994 +72995 +72996 +72997 +72998 +72999 +73024 +73025 +73026 +73027 +73028 +73029 +73030 +73031 +73056 +73057 +73058 +73059 +73060 +73061 +73062 +73063 +73088 +73089 +73090 +73091 +73092 +73093 +73094 +73095 +73120 +73121 +73122 +73123 +73124 +73125 +73126 +73127 +73152 +73153 +73154 +73155 +73156 +73157 +73158 +73159 +73184 +73185 +73186 +73187 +73188 +73189 +73190 +73191 +73216 +73217 +73218 +73219 +73220 +73221 +73222 +73223 +73248 +73249 +73250 +73251 +73252 +73253 +73254 +73255 +73280 +73281 +73282 +73283 +73284 +73285 +73286 +73287 +73312 +73313 +73314 +73315 +73316 +73317 +73318 +73319 +73344 +73345 +73346 +73347 +73348 +73349 +73350 +73351 +73376 +73377 +73378 +73379 +73380 +73381 +73382 +73383 +73408 +73409 +73410 +73411 +73412 +73413 +73414 +73415 +73440 +73441 +73442 +73443 +73444 +73445 +73446 +73447 +73472 +73473 +73474 +73475 +73476 +73477 +73478 +73479 +73504 +73505 +73506 +73507 +73508 +73509 +73510 +73511 +73536 +73537 +73538 +73539 +73540 +73541 +73542 +73543 +73568 +73569 +73570 +73571 +73572 +73573 +73574 +73575 +73600 +73601 +73602 +73603 +73604 +73605 +73606 +73607 +73632 +73633 +73634 +73635 +73636 +73637 +73638 +73639 +73664 +73665 +73666 +73667 +73668 +73669 +73670 +73671 +73696 +73697 +73698 +73699 +73700 +73701 +73702 +73703 +73728 +73729 +73730 +73731 +73732 +73733 +73734 +73735 +73760 +73761 +73762 +73763 +73764 +73765 +73766 +73767 +73792 +73793 +73794 +73795 +73796 +73797 +73798 +73799 +73824 +73825 +73826 +73827 +73828 +73829 +73830 +73831 +73856 +73857 +73858 +73859 +73860 +73861 +73862 +73863 +73888 +73889 +73890 +73891 +73892 +73893 +73894 +73895 +73920 +73921 +73922 +73923 +73924 +73925 +73926 +73927 +73952 +73953 +73954 +73955 +73956 +73957 +73958 +73959 +73984 +73985 +73986 +73987 +73988 +73989 +73990 +73991 +74016 +74017 +74018 +74019 +74020 +74021 +74022 +74023 +74048 +74049 +74050 +74051 +74052 +74053 +74054 +74055 +74080 +74081 +74082 +74083 +74084 +74085 +74086 +74087 +74112 +74113 +74114 +74115 +74116 +74117 +74118 +74119 +74144 +74145 +74146 +74147 +74148 +74149 +74150 +74151 +74176 +74177 +74178 +74179 +74180 +74181 +74182 +74183 +74208 +74209 +74210 +74211 +74212 +74213 +74214 +74215 +74240 +74241 +74242 +74243 +74244 +74245 +74246 +74247 +74272 +74273 +74274 +74275 +74276 +74277 +74278 +74279 +74304 +74305 +74306 +74307 +74308 +74309 +74310 +74311 +74336 +74337 +74338 +74339 +74340 +74341 +74342 +74343 +74368 +74369 +74370 +74371 +74372 +74373 +74374 +74375 +74400 +74401 +74402 +74403 +74404 +74405 +74406 +74407 +74432 +74433 +74434 +74435 +74436 +74437 +74438 +74439 +74464 +74465 +74466 +74467 +74468 +74469 +74470 +74471 +74496 +74497 +74498 +74499 +74500 +74501 +74502 +74503 +74528 +74529 +74530 +74531 +74532 +74533 +74534 +74535 +74560 +74561 +74562 +74563 +74564 +74565 +74566 +74567 +74592 +74593 +74594 +74595 +74596 +74597 +74598 +74599 +74624 +74625 +74626 +74627 +74628 +74629 +74630 +74631 +74656 +74657 +74658 +74659 +74660 +74661 +74662 +74663 +74688 +74689 +74690 +74691 +74692 +74693 +74694 +74695 +74720 +74721 +74722 +74723 +74724 +74725 +74726 +74727 +74752 +74753 +74754 +74755 +74756 +74757 +74758 +74759 +74784 +74785 +74786 +74787 +74788 +74789 +74790 +74791 +74816 +74817 +74818 +74819 +74820 +74821 +74822 +74823 +74848 +74849 +74850 +74851 +74852 +74853 +74854 +74855 +74880 +74881 +74882 +74883 +74884 +74885 +74886 +74887 +74912 +74913 +74914 +74915 +74916 +74917 +74918 +74919 +74944 +74945 +74946 +74947 +74948 +74949 +74950 +74951 +74976 +74977 +74978 +74979 +74980 +74981 +74982 +74983 +75008 +75009 +75010 +75011 +75012 +75013 +75014 +75015 +75040 +75041 +75042 +75043 +75044 +75045 +75046 +75047 +75072 +75073 +75074 +75075 +75076 +75077 +75078 +75079 +75104 +75105 +75106 +75107 +75108 +75109 +75110 +75111 +75136 +75137 +75138 +75139 +75140 +75141 +75142 +75143 +75168 +75169 +75170 +75171 +75172 +75173 +75174 +75175 +75200 +75201 +75202 +75203 +75204 +75205 +75206 +75207 +75232 +75233 +75234 +75235 +75236 +75237 +75238 +75239 +75264 +75265 +75266 +75267 +75268 +75269 +75270 +75271 +75296 +75297 +75298 +75299 +75300 +75301 +75302 +75303 +75328 +75329 +75330 +75331 +75332 +75333 +75334 +75335 +75360 +75361 +75362 +75363 +75364 +75365 +75366 +75367 +75392 +75393 +75394 +75395 +75396 +75397 +75398 +75399 +75424 +75425 +75426 +75427 +75428 +75429 +75430 +75431 +75456 +75457 +75458 +75459 +75460 +75461 +75462 +75463 +75488 +75489 +75490 +75491 +75492 +75493 +75494 +75495 +75520 +75521 +75522 +75523 +75524 +75525 +75526 +75527 +75552 +75553 +75554 +75555 +75556 +75557 +75558 +75559 +75584 +75585 +75586 +75587 +75588 +75589 +75590 +75591 +75616 +75617 +75618 +75619 +75620 +75621 +75622 +75623 +75648 +75649 +75650 +75651 +75652 +75653 +75654 +75655 +75680 +75681 +75682 +75683 +75684 +75685 +75686 +75687 +75712 +75713 +75714 +75715 +75716 +75717 +75718 +75719 +75744 +75745 +75746 +75747 +75748 +75749 +75750 +75751 +75776 +75777 +75778 +75779 +75780 +75781 +75782 +75783 +75808 +75809 +75810 +75811 +75812 +75813 +75814 +75815 +75840 +75841 +75842 +75843 +75844 +75845 +75846 +75847 +75872 +75873 +75874 +75875 +75876 +75877 +75878 +75879 +75904 +75905 +75906 +75907 +75908 +75909 +75910 +75911 +75936 +75937 +75938 +75939 +75940 +75941 +75942 +75943 +75968 +75969 +75970 +75971 +75972 +75973 +75974 +75975 +76000 +76001 +76002 +76003 +76004 +76005 +76006 +76007 +76032 +76033 +76034 +76035 +76036 +76037 +76038 +76039 +76064 +76065 +76066 +76067 +76068 +76069 +76070 +76071 +76096 +76097 +76098 +76099 +76100 +76101 +76102 +76103 +76128 +76129 +76130 +76131 +76132 +76133 +76134 +76135 +76160 +76161 +76162 +76163 +76164 +76165 +76166 +76167 +76192 +76193 +76194 +76195 +76196 +76197 +76198 +76199 +76224 +76225 +76226 +76227 +76228 +76229 +76230 +76231 +76256 +76257 +76258 +76259 +76260 +76261 +76262 +76263 +76288 +76289 +76290 +76291 +76292 +76293 +76294 +76295 +76320 +76321 +76322 +76323 +76324 +76325 +76326 +76327 +76352 +76353 +76354 +76355 +76356 +76357 +76358 +76359 +76384 +76385 +76386 +76387 +76388 +76389 +76390 +76391 +76416 +76417 +76418 +76419 +76420 +76421 +76422 +76423 +76448 +76449 +76450 +76451 +76452 +76453 +76454 +76455 +76480 +76481 +76482 +76483 +76484 +76485 +76486 +76487 +76512 +76513 +76514 +76515 +76516 +76517 +76518 +76519 +76544 +76545 +76546 +76547 +76548 +76549 +76550 +76551 +76576 +76577 +76578 +76579 +76580 +76581 +76582 +76583 +76608 +76609 +76610 +76611 +76612 +76613 +76614 +76615 +76640 +76641 +76642 +76643 +76644 +76645 +76646 +76647 +76672 +76673 +76674 +76675 +76676 +76677 +76678 +76679 +76704 +76705 +76706 +76707 +76708 +76709 +76710 +76711 +76736 +76737 +76738 +76739 +76740 +76741 +76742 +76743 +76768 +76769 +76770 +76771 +76772 +76773 +76774 +76775 +76800 +76801 +76802 +76803 +76804 +76805 +76806 +76807 +76832 +76833 +76834 +76835 +76836 +76837 +76838 +76839 +76864 +76865 +76866 +76867 +76868 +76869 +76870 +76871 +76896 +76897 +76898 +76899 +76900 +76901 +76902 +76903 +76928 +76929 +76930 +76931 +76932 +76933 +76934 +76935 +76960 +76961 +76962 +76963 +76964 +76965 +76966 +76967 +76992 +76993 +76994 +76995 +76996 +76997 +76998 +76999 +77024 +77025 +77026 +77027 +77028 +77029 +77030 +77031 +77056 +77057 +77058 +77059 +77060 +77061 +77062 +77063 +77088 +77089 +77090 +77091 +77092 +77093 +77094 +77095 +77120 +77121 +77122 +77123 +77124 +77125 +77126 +77127 +77152 +77153 +77154 +77155 +77156 +77157 +77158 +77159 +77184 +77185 +77186 +77187 +77188 +77189 +77190 +77191 +77216 +77217 +77218 +77219 +77220 +77221 +77222 +77223 +77248 +77249 +77250 +77251 +77252 +77253 +77254 +77255 +77280 +77281 +77282 +77283 +77284 +77285 +77286 +77287 +77312 +77313 +77314 +77315 +77316 +77317 +77318 +77319 +77344 +77345 +77346 +77347 +77348 +77349 +77350 +77351 +77376 +77377 +77378 +77379 +77380 +77381 +77382 +77383 +77408 +77409 +77410 +77411 +77412 +77413 +77414 +77415 +77440 +77441 +77442 +77443 +77444 +77445 +77446 +77447 +77472 +77473 +77474 +77475 +77476 +77477 +77478 +77479 +77504 +77505 +77506 +77507 +77508 +77509 +77510 +77511 +77536 +77537 +77538 +77539 +77540 +77541 +77542 +77543 +77568 +77569 +77570 +77571 +77572 +77573 +77574 +77575 +77600 +77601 +77602 +77603 +77604 +77605 +77606 +77607 +77632 +77633 +77634 +77635 +77636 +77637 +77638 +77639 +77664 +77665 +77666 +77667 +77668 +77669 +77670 +77671 +77696 +77697 +77698 +77699 +77700 +77701 +77702 +77703 +77728 +77729 +77730 +77731 +77732 +77733 +77734 +77735 +77760 +77761 +77762 +77763 +77764 +77765 +77766 +77767 +77792 +77793 +77794 +77795 +77796 +77797 +77798 +77799 +77824 +77825 +77826 +77827 +77828 +77829 +77830 +77831 +77856 +77857 +77858 +77859 +77860 +77861 +77862 +77863 +77888 +77889 +77890 +77891 +77892 +77893 +77894 +77895 +77920 +77921 +77922 +77923 +77924 +77925 +77926 +77927 +77952 +77953 +77954 +77955 +77956 +77957 +77958 +77959 +77984 +77985 +77986 +77987 +77988 +77989 +77990 +77991 +78016 +78017 +78018 +78019 +78020 +78021 +78022 +78023 +78048 +78049 +78050 +78051 +78052 +78053 +78054 +78055 +78080 +78081 +78082 +78083 +78084 +78085 +78086 +78087 +78112 +78113 +78114 +78115 +78116 +78117 +78118 +78119 +78144 +78145 +78146 +78147 +78148 +78149 +78150 +78151 +78176 +78177 +78178 +78179 +78180 +78181 +78182 +78183 +78208 +78209 +78210 +78211 +78212 +78213 +78214 +78215 +78240 +78241 +78242 +78243 +78244 +78245 +78246 +78247 +78272 +78273 +78274 +78275 +78276 +78277 +78278 +78279 +78304 +78305 +78306 +78307 +78308 +78309 +78310 +78311 +78336 +78337 +78338 +78339 +78340 +78341 +78342 +78343 +78368 +78369 +78370 +78371 +78372 +78373 +78374 +78375 +78400 +78401 +78402 +78403 +78404 +78405 +78406 +78407 +78432 +78433 +78434 +78435 +78436 +78437 +78438 +78439 +78464 +78465 +78466 +78467 +78468 +78469 +78470 +78471 +78496 +78497 +78498 +78499 +78500 +78501 +78502 +78503 +78528 +78529 +78530 +78531 +78532 +78533 +78534 +78535 +78560 +78561 +78562 +78563 +78564 +78565 +78566 +78567 +78592 +78593 +78594 +78595 +78596 +78597 +78598 +78599 +78624 +78625 +78626 +78627 +78628 +78629 +78630 +78631 +78656 +78657 +78658 +78659 +78660 +78661 +78662 +78663 +78688 +78689 +78690 +78691 +78692 +78693 +78694 +78695 +78720 +78721 +78722 +78723 +78724 +78725 +78726 +78727 +78752 +78753 +78754 +78755 +78756 +78757 +78758 +78759 +78784 +78785 +78786 +78787 +78788 +78789 +78790 +78791 +78816 +78817 +78818 +78819 +78820 +78821 +78822 +78823 +78848 +78849 +78850 +78851 +78852 +78853 +78854 +78855 +78880 +78881 +78882 +78883 +78884 +78885 +78886 +78887 +78912 +78913 +78914 +78915 +78916 +78917 +78918 +78919 +78944 +78945 +78946 +78947 +78948 +78949 +78950 +78951 +78976 +78977 +78978 +78979 +78980 +78981 +78982 +78983 +79008 +79009 +79010 +79011 +79012 +79013 +79014 +79015 +79040 +79041 +79042 +79043 +79044 +79045 +79046 +79047 +79072 +79073 +79074 +79075 +79076 +79077 +79078 +79079 +79104 +79105 +79106 +79107 +79108 +79109 +79110 +79111 +79136 +79137 +79138 +79139 +79140 +79141 +79142 +79143 +79168 +79169 +79170 +79171 +79172 +79173 +79174 +79175 +79200 +79201 +79202 +79203 +79204 +79205 +79206 +79207 +79232 +79233 +79234 +79235 +79236 +79237 +79238 +79239 +79264 +79265 +79266 +79267 +79268 +79269 +79270 +79271 +79296 +79297 +79298 +79299 +79300 +79301 +79302 +79303 +79328 +79329 +79330 +79331 +79332 +79333 +79334 +79335 +79360 +79361 +79362 +79363 +79364 +79365 +79366 +79367 +79392 +79393 +79394 +79395 +79396 +79397 +79398 +79399 +79424 +79425 +79426 +79427 +79428 +79429 +79430 +79431 +79456 +79457 +79458 +79459 +79460 +79461 +79462 +79463 +79488 +79489 +79490 +79491 +79492 +79493 +79494 +79495 +79520 +79521 +79522 +79523 +79524 +79525 +79526 +79527 +79552 +79553 +79554 +79555 +79556 +79557 +79558 +79559 +79584 +79585 +79586 +79587 +79588 +79589 +79590 +79591 +79616 +79617 +79618 +79619 +79620 +79621 +79622 +79623 +79648 +79649 +79650 +79651 +79652 +79653 +79654 +79655 +79680 +79681 +79682 +79683 +79684 +79685 +79686 +79687 +79712 +79713 +79714 +79715 +79716 +79717 +79718 +79719 +79744 +79745 +79746 +79747 +79748 +79749 +79750 +79751 +79776 +79777 +79778 +79779 +79780 +79781 +79782 +79783 +79808 +79809 +79810 +79811 +79812 +79813 +79814 +79815 +79840 +79841 +79842 +79843 +79844 +79845 +79846 +79847 +79872 +79873 +79874 +79875 +79876 +79877 +79878 +79879 +79904 +79905 +79906 +79907 +79908 +79909 +79910 +79911 +79936 +79937 +79938 +79939 +79940 +79941 +79942 +79943 +79968 +79969 +79970 +79971 +79972 +79973 +79974 +79975 +80000 +80001 +80002 +80003 +80004 +80005 +80006 +80007 +80032 +80033 +80034 +80035 +80036 +80037 +80038 +80039 +80064 +80065 +80066 +80067 +80068 +80069 +80070 +80071 +80096 +80097 +80098 +80099 +80100 +80101 +80102 +80103 +80128 +80129 +80130 +80131 +80132 +80133 +80134 +80135 +80160 +80161 +80162 +80163 +80164 +80165 +80166 +80167 +80192 +80193 +80194 +80195 +80196 +80197 +80198 +80199 +80224 +80225 +80226 +80227 +80228 +80229 +80230 +80231 +80256 +80257 +80258 +80259 +80260 +80261 +80262 +80263 +80288 +80289 +80290 +80291 +80292 +80293 +80294 +80295 +80320 +80321 +80322 +80323 +80324 +80325 +80326 +80327 +80352 +80353 +80354 +80355 +80356 +80357 +80358 +80359 +80384 +80385 +80386 +80387 +80388 +80389 +80390 +80391 +80416 +80417 +80418 +80419 +80420 +80421 +80422 +80423 +80448 +80449 +80450 +80451 +80452 +80453 +80454 +80455 +80480 +80481 +80482 +80483 +80484 +80485 +80486 +80487 +80512 +80513 +80514 +80515 +80516 +80517 +80518 +80519 +80544 +80545 +80546 +80547 +80548 +80549 +80550 +80551 +80576 +80577 +80578 +80579 +80580 +80581 +80582 +80583 +80608 +80609 +80610 +80611 +80612 +80613 +80614 +80615 +80640 +80641 +80642 +80643 +80644 +80645 +80646 +80647 +80672 +80673 +80674 +80675 +80676 +80677 +80678 +80679 +80704 +80705 +80706 +80707 +80708 +80709 +80710 +80711 +80736 +80737 +80738 +80739 +80740 +80741 +80742 +80743 +80768 +80769 +80770 +80771 +80772 +80773 +80774 +80775 +80800 +80801 +80802 +80803 +80804 +80805 +80806 +80807 +80832 +80833 +80834 +80835 +80836 +80837 +80838 +80839 +80864 +80865 +80866 +80867 +80868 +80869 +80870 +80871 +80896 +80897 +80898 +80899 +80900 +80901 +80902 +80903 +80928 +80929 +80930 +80931 +80932 +80933 +80934 +80935 +80960 +80961 +80962 +80963 +80964 +80965 +80966 +80967 +80992 +80993 +80994 +80995 +80996 +80997 +80998 +80999 +81024 +81025 +81026 +81027 +81028 +81029 +81030 +81031 +81056 +81057 +81058 +81059 +81060 +81061 +81062 +81063 +81088 +81089 +81090 +81091 +81092 +81093 +81094 +81095 +81120 +81121 +81122 +81123 +81124 +81125 +81126 +81127 +81152 +81153 +81154 +81155 +81156 +81157 +81158 +81159 +81184 +81185 +81186 +81187 +81188 +81189 +81190 +81191 +81216 +81217 +81218 +81219 +81220 +81221 +81222 +81223 +81248 +81249 +81250 +81251 +81252 +81253 +81254 +81255 +81280 +81281 +81282 +81283 +81284 +81285 +81286 +81287 +81312 +81313 +81314 +81315 +81316 +81317 +81318 +81319 +81344 +81345 +81346 +81347 +81348 +81349 +81350 +81351 +81376 +81377 +81378 +81379 +81380 +81381 +81382 +81383 +81408 +81409 +81410 +81411 +81412 +81413 +81414 +81415 +81440 +81441 +81442 +81443 +81444 +81445 +81446 +81447 +81472 +81473 +81474 +81475 +81476 +81477 +81478 +81479 +81504 +81505 +81506 +81507 +81508 +81509 +81510 +81511 +81536 +81537 +81538 +81539 +81540 +81541 +81542 +81543 +81568 +81569 +81570 +81571 +81572 +81573 +81574 +81575 +81600 +81601 +81602 +81603 +81604 +81605 +81606 +81607 +81632 +81633 +81634 +81635 +81636 +81637 +81638 +81639 +81664 +81665 +81666 +81667 +81668 +81669 +81670 +81671 +81696 +81697 +81698 +81699 +81700 +81701 +81702 +81703 +81728 +81729 +81730 +81731 +81732 +81733 +81734 +81735 +81760 +81761 +81762 +81763 +81764 +81765 +81766 +81767 +81792 +81793 +81794 +81795 +81796 +81797 +81798 +81799 +81824 +81825 +81826 +81827 +81828 +81829 +81830 +81831 +81856 +81857 +81858 +81859 +81860 +81861 +81862 +81863 +81888 +81889 +81890 +81891 +81892 +81893 +81894 +81895 +81920 +81921 +81922 +81923 +81924 +81925 +81926 +81927 +81952 +81953 +81954 +81955 +81956 +81957 +81958 +81959 +81984 +81985 +81986 +81987 +81988 +81989 +81990 +81991 +82016 +82017 +82018 +82019 +82020 +82021 +82022 +82023 +82048 +82049 +82050 +82051 +82052 +82053 +82054 +82055 +82080 +82081 +82082 +82083 +82084 +82085 +82086 +82087 +82112 +82113 +82114 +82115 +82116 +82117 +82118 +82119 +82144 +82145 +82146 +82147 +82148 +82149 +82150 +82151 +82176 +82177 +82178 +82179 +82180 +82181 +82182 +82183 +82208 +82209 +82210 +82211 +82212 +82213 +82214 +82215 +82240 +82241 +82242 +82243 +82244 +82245 +82246 +82247 +82272 +82273 +82274 +82275 +82276 +82277 +82278 +82279 +82304 +82305 +82306 +82307 +82308 +82309 +82310 +82311 +82336 +82337 +82338 +82339 +82340 +82341 +82342 +82343 +82368 +82369 +82370 +82371 +82372 +82373 +82374 +82375 +82400 +82401 +82402 +82403 +82404 +82405 +82406 +82407 +82432 +82433 +82434 +82435 +82436 +82437 +82438 +82439 +82464 +82465 +82466 +82467 +82468 +82469 +82470 +82471 +82496 +82497 +82498 +82499 +82500 +82501 +82502 +82503 +82528 +82529 +82530 +82531 +82532 +82533 +82534 +82535 +82560 +82561 +82562 +82563 +82564 +82565 +82566 +82567 +82592 +82593 +82594 +82595 +82596 +82597 +82598 +82599 +82624 +82625 +82626 +82627 +82628 +82629 +82630 +82631 +82656 +82657 +82658 +82659 +82660 +82661 +82662 +82663 +82688 +82689 +82690 +82691 +82692 +82693 +82694 +82695 +82720 +82721 +82722 +82723 +82724 +82725 +82726 +82727 +82752 +82753 +82754 +82755 +82756 +82757 +82758 +82759 +82784 +82785 +82786 +82787 +82788 +82789 +82790 +82791 +82816 +82817 +82818 +82819 +82820 +82821 +82822 +82823 +82848 +82849 +82850 +82851 +82852 +82853 +82854 +82855 +82880 +82881 +82882 +82883 +82884 +82885 +82886 +82887 +82912 +82913 +82914 +82915 +82916 +82917 +82918 +82919 +82944 +82945 +82946 +82947 +82948 +82949 +82950 +82951 +82976 +82977 +82978 +82979 +82980 +82981 +82982 +82983 +83008 +83009 +83010 +83011 +83012 +83013 +83014 +83015 +83040 +83041 +83042 +83043 +83044 +83045 +83046 +83047 +83072 +83073 +83074 +83075 +83076 +83077 +83078 +83079 +83104 +83105 +83106 +83107 +83108 +83109 +83110 +83111 +83136 +83137 +83138 +83139 +83140 +83141 +83142 +83143 +83168 +83169 +83170 +83171 +83172 +83173 +83174 +83175 +83200 +83201 +83202 +83203 +83204 +83205 +83206 +83207 +83232 +83233 +83234 +83235 +83236 +83237 +83238 +83239 +83264 +83265 +83266 +83267 +83268 +83269 +83270 +83271 +83296 +83297 +83298 +83299 +83300 +83301 +83302 +83303 +83328 +83329 +83330 +83331 +83332 +83333 +83334 +83335 +83360 +83361 +83362 +83363 +83364 +83365 +83366 +83367 +83392 +83393 +83394 +83395 +83396 +83397 +83398 +83399 +83424 +83425 +83426 +83427 +83428 +83429 +83430 +83431 +83456 +83457 +83458 +83459 +83460 +83461 +83462 +83463 +83488 +83489 +83490 +83491 +83492 +83493 +83494 +83495 +83520 +83521 +83522 +83523 +83524 +83525 +83526 +83527 +83552 +83553 +83554 +83555 +83556 +83557 +83558 +83559 +83584 +83585 +83586 +83587 +83588 +83589 +83590 +83591 +83616 +83617 +83618 +83619 +83620 +83621 +83622 +83623 +83648 +83649 +83650 +83651 +83652 +83653 +83654 +83655 +83680 +83681 +83682 +83683 +83684 +83685 +83686 +83687 +83712 +83713 +83714 +83715 +83716 +83717 +83718 +83719 +83744 +83745 +83746 +83747 +83748 +83749 +83750 +83751 +83776 +83777 +83778 +83779 +83780 +83781 +83782 +83783 +83808 +83809 +83810 +83811 +83812 +83813 +83814 +83815 +83840 +83841 +83842 +83843 +83844 +83845 +83846 +83847 +83872 +83873 +83874 +83875 +83876 +83877 +83878 +83879 +83904 +83905 +83906 +83907 +83908 +83909 +83910 +83911 +83936 +83937 +83938 +83939 +83940 +83941 +83942 +83943 +83968 +83969 +83970 +83971 +83972 +83973 +83974 +83975 +84000 +84001 +84002 +84003 +84004 +84005 +84006 +84007 +84032 +84033 +84034 +84035 +84036 +84037 +84038 +84039 +84064 +84065 +84066 +84067 +84068 +84069 +84070 +84071 +84096 +84097 +84098 +84099 +84100 +84101 +84102 +84103 +84128 +84129 +84130 +84131 +84132 +84133 +84134 +84135 +84160 +84161 +84162 +84163 +84164 +84165 +84166 +84167 +84192 +84193 +84194 +84195 +84196 +84197 +84198 +84199 +84224 +84225 +84226 +84227 +84228 +84229 +84230 +84231 +84256 +84257 +84258 +84259 +84260 +84261 +84262 +84263 +84288 +84289 +84290 +84291 +84292 +84293 +84294 +84295 +84320 +84321 +84322 +84323 +84324 +84325 +84326 +84327 +84352 +84353 +84354 +84355 +84356 +84357 +84358 +84359 +84384 +84385 +84386 +84387 +84388 +84389 +84390 +84391 +84416 +84417 +84418 +84419 +84420 +84421 +84422 +84423 +84448 +84449 +84450 +84451 +84452 +84453 +84454 +84455 +84480 +84481 +84482 +84483 +84484 +84485 +84486 +84487 +84512 +84513 +84514 +84515 +84516 +84517 +84518 +84519 +84544 +84545 +84546 +84547 +84548 +84549 +84550 +84551 +84576 +84577 +84578 +84579 +84580 +84581 +84582 +84583 +84608 +84609 +84610 +84611 +84612 +84613 +84614 +84615 +84640 +84641 +84642 +84643 +84644 +84645 +84646 +84647 +84672 +84673 +84674 +84675 +84676 +84677 +84678 +84679 +84704 +84705 +84706 +84707 +84708 +84709 +84710 +84711 +84736 +84737 +84738 +84739 +84740 +84741 +84742 +84743 +84768 +84769 +84770 +84771 +84772 +84773 +84774 +84775 +84800 +84801 +84802 +84803 +84804 +84805 +84806 +84807 +84832 +84833 +84834 +84835 +84836 +84837 +84838 +84839 +84864 +84865 +84866 +84867 +84868 +84869 +84870 +84871 +84896 +84897 +84898 +84899 +84900 +84901 +84902 +84903 +84928 +84929 +84930 +84931 +84932 +84933 +84934 +84935 +84960 +84961 +84962 +84963 +84964 +84965 +84966 +84967 +84992 +84993 +84994 +84995 +84996 +84997 +84998 +84999 +85024 +85025 +85026 +85027 +85028 +85029 +85030 +85031 +85056 +85057 +85058 +85059 +85060 +85061 +85062 +85063 +85088 +85089 +85090 +85091 +85092 +85093 +85094 +85095 +85120 +85121 +85122 +85123 +85124 +85125 +85126 +85127 +85152 +85153 +85154 +85155 +85156 +85157 +85158 +85159 +85184 +85185 +85186 +85187 +85188 +85189 +85190 +85191 +85216 +85217 +85218 +85219 +85220 +85221 +85222 +85223 +85248 +85249 +85250 +85251 +85252 +85253 +85254 +85255 +85280 +85281 +85282 +85283 +85284 +85285 +85286 +85287 +85312 +85313 +85314 +85315 +85316 +85317 +85318 +85319 +85344 +85345 +85346 +85347 +85348 +85349 +85350 +85351 +85376 +85377 +85378 +85379 +85380 +85381 +85382 +85383 +85408 +85409 +85410 +85411 +85412 +85413 +85414 +85415 +85440 +85441 +85442 +85443 +85444 +85445 +85446 +85447 +85472 +85473 +85474 +85475 +85476 +85477 +85478 +85479 +85504 +85505 +85506 +85507 +85508 +85509 +85510 +85511 +85536 +85537 +85538 +85539 +85540 +85541 +85542 +85543 +85568 +85569 +85570 +85571 +85572 +85573 +85574 +85575 +85600 +85601 +85602 +85603 +85604 +85605 +85606 +85607 +85632 +85633 +85634 +85635 +85636 +85637 +85638 +85639 +85664 +85665 +85666 +85667 +85668 +85669 +85670 +85671 +85696 +85697 +85698 +85699 +85700 +85701 +85702 +85703 +85728 +85729 +85730 +85731 +85732 +85733 +85734 +85735 +85760 +85761 +85762 +85763 +85764 +85765 +85766 +85767 +85792 +85793 +85794 +85795 +85796 +85797 +85798 +85799 +85824 +85825 +85826 +85827 +85828 +85829 +85830 +85831 +85856 +85857 +85858 +85859 +85860 +85861 +85862 +85863 +85888 +85889 +85890 +85891 +85892 +85893 +85894 +85895 +85920 +85921 +85922 +85923 +85924 +85925 +85926 +85927 +85952 +85953 +85954 +85955 +85956 +85957 +85958 +85959 +85984 +85985 +85986 +85987 +85988 +85989 +85990 +85991 +86016 +86017 +86018 +86019 +86020 +86021 +86022 +86023 +86048 +86049 +86050 +86051 +86052 +86053 +86054 +86055 +86080 +86081 +86082 +86083 +86084 +86085 +86086 +86087 +86112 +86113 +86114 +86115 +86116 +86117 +86118 +86119 +86144 +86145 +86146 +86147 +86148 +86149 +86150 +86151 +86176 +86177 +86178 +86179 +86180 +86181 +86182 +86183 +86208 +86209 +86210 +86211 +86212 +86213 +86214 +86215 +86240 +86241 +86242 +86243 +86244 +86245 +86246 +86247 +86272 +86273 +86274 +86275 +86276 +86277 +86278 +86279 +86304 +86305 +86306 +86307 +86308 +86309 +86310 +86311 +86336 +86337 +86338 +86339 +86340 +86341 +86342 +86343 +86368 +86369 +86370 +86371 +86372 +86373 +86374 +86375 +86400 +86401 +86402 +86403 +86404 +86405 +86406 +86407 +86432 +86433 +86434 +86435 +86436 +86437 +86438 +86439 +86464 +86465 +86466 +86467 +86468 +86469 +86470 +86471 +86496 +86497 +86498 +86499 +86500 +86501 +86502 +86503 +86528 +86529 +86530 +86531 +86532 +86533 +86534 +86535 +86560 +86561 +86562 +86563 +86564 +86565 +86566 +86567 +86592 +86593 +86594 +86595 +86596 +86597 +86598 +86599 +86624 +86625 +86626 +86627 +86628 +86629 +86630 +86631 +86656 +86657 +86658 +86659 +86660 +86661 +86662 +86663 +86688 +86689 +86690 +86691 +86692 +86693 +86694 +86695 +86720 +86721 +86722 +86723 +86724 +86725 +86726 +86727 +86752 +86753 +86754 +86755 +86756 +86757 +86758 +86759 +86784 +86785 +86786 +86787 +86788 +86789 +86790 +86791 +86816 +86817 +86818 +86819 +86820 +86821 +86822 +86823 +86848 +86849 +86850 +86851 +86852 +86853 +86854 +86855 +86880 +86881 +86882 +86883 +86884 +86885 +86886 +86887 +86912 +86913 +86914 +86915 +86916 +86917 +86918 +86919 +86944 +86945 +86946 +86947 +86948 +86949 +86950 +86951 +86976 +86977 +86978 +86979 +86980 +86981 +86982 +86983 +87008 +87009 +87010 +87011 +87012 +87013 +87014 +87015 +87040 +87041 +87042 +87043 +87044 +87045 +87046 +87047 +87072 +87073 +87074 +87075 +87076 +87077 +87078 +87079 +87104 +87105 +87106 +87107 +87108 +87109 +87110 +87111 +87136 +87137 +87138 +87139 +87140 +87141 +87142 +87143 +87168 +87169 +87170 +87171 +87172 +87173 +87174 +87175 +87200 +87201 +87202 +87203 +87204 +87205 +87206 +87207 +87232 +87233 +87234 +87235 +87236 +87237 +87238 +87239 +87264 +87265 +87266 +87267 +87268 +87269 +87270 +87271 +87296 +87297 +87298 +87299 +87300 +87301 +87302 +87303 +87328 +87329 +87330 +87331 +87332 +87333 +87334 +87335 +87360 +87361 +87362 +87363 +87364 +87365 +87366 +87367 +87392 +87393 +87394 +87395 +87396 +87397 +87398 +87399 +87424 +87425 +87426 +87427 +87428 +87429 +87430 +87431 +87456 +87457 +87458 +87459 +87460 +87461 +87462 +87463 +87488 +87489 +87490 +87491 +87492 +87493 +87494 +87495 +87520 +87521 +87522 +87523 +87524 +87525 +87526 +87527 +87552 +87553 +87554 +87555 +87556 +87557 +87558 +87559 +87584 +87585 +87586 +87587 +87588 +87589 +87590 +87591 +87616 +87617 +87618 +87619 +87620 +87621 +87622 +87623 +87648 +87649 +87650 +87651 +87652 +87653 +87654 +87655 +87680 +87681 +87682 +87683 +87684 +87685 +87686 +87687 +87712 +87713 +87714 +87715 +87716 +87717 +87718 +87719 +87744 +87745 +87746 +87747 +87748 +87749 +87750 +87751 +87776 +87777 +87778 +87779 +87780 +87781 +87782 +87783 +87808 +87809 +87810 +87811 +87812 +87813 +87814 +87815 +87840 +87841 +87842 +87843 +87844 +87845 +87846 +87847 +87872 +87873 +87874 +87875 +87876 +87877 +87878 +87879 +87904 +87905 +87906 +87907 +87908 +87909 +87910 +87911 +87936 +87937 +87938 +87939 +87940 +87941 +87942 +87943 +87968 +87969 +87970 +87971 +87972 +87973 +87974 +87975 +88000 +88001 +88002 +88003 +88004 +88005 +88006 +88007 +88032 +88033 +88034 +88035 +88036 +88037 +88038 +88039 +88064 +88065 +88066 +88067 +88068 +88069 +88070 +88071 +88096 +88097 +88098 +88099 +88100 +88101 +88102 +88103 +88128 +88129 +88130 +88131 +88132 +88133 +88134 +88135 +88160 +88161 +88162 +88163 +88164 +88165 +88166 +88167 +88192 +88193 +88194 +88195 +88196 +88197 +88198 +88199 +88224 +88225 +88226 +88227 +88228 +88229 +88230 +88231 +88256 +88257 +88258 +88259 +88260 +88261 +88262 +88263 +88288 +88289 +88290 +88291 +88292 +88293 +88294 +88295 +88320 +88321 +88322 +88323 +88324 +88325 +88326 +88327 +88352 +88353 +88354 +88355 +88356 +88357 +88358 +88359 +88384 +88385 +88386 +88387 +88388 +88389 +88390 +88391 +88416 +88417 +88418 +88419 +88420 +88421 +88422 +88423 +88448 +88449 +88450 +88451 +88452 +88453 +88454 +88455 +88480 +88481 +88482 +88483 +88484 +88485 +88486 +88487 +88512 +88513 +88514 +88515 +88516 +88517 +88518 +88519 +88544 +88545 +88546 +88547 +88548 +88549 +88550 +88551 +88576 +88577 +88578 +88579 +88580 +88581 +88582 +88583 +88608 +88609 +88610 +88611 +88612 +88613 +88614 +88615 +88640 +88641 +88642 +88643 +88644 +88645 +88646 +88647 +88672 +88673 +88674 +88675 +88676 +88677 +88678 +88679 +88704 +88705 +88706 +88707 +88708 +88709 +88710 +88711 +88736 +88737 +88738 +88739 +88740 +88741 +88742 +88743 +88768 +88769 +88770 +88771 +88772 +88773 +88774 +88775 +88800 +88801 +88802 +88803 +88804 +88805 +88806 +88807 +88832 +88833 +88834 +88835 +88836 +88837 +88838 +88839 +88864 +88865 +88866 +88867 +88868 +88869 +88870 +88871 +88896 +88897 +88898 +88899 +88900 +88901 +88902 +88903 +88928 +88929 +88930 +88931 +88932 +88933 +88934 +88935 +88960 +88961 +88962 +88963 +88964 +88965 +88966 +88967 +88992 +88993 +88994 +88995 +88996 +88997 +88998 +88999 +89024 +89025 +89026 +89027 +89028 +89029 +89030 +89031 +89056 +89057 +89058 +89059 +89060 +89061 +89062 +89063 +89088 +89089 +89090 +89091 +89092 +89093 +89094 +89095 +89120 +89121 +89122 +89123 +89124 +89125 +89126 +89127 +89152 +89153 +89154 +89155 +89156 +89157 +89158 +89159 +89184 +89185 +89186 +89187 +89188 +89189 +89190 +89191 +89216 +89217 +89218 +89219 +89220 +89221 +89222 +89223 +89248 +89249 +89250 +89251 +89252 +89253 +89254 +89255 +89280 +89281 +89282 +89283 +89284 +89285 +89286 +89287 +89312 +89313 +89314 +89315 +89316 +89317 +89318 +89319 +89344 +89345 +89346 +89347 +89348 +89349 +89350 +89351 +89376 +89377 +89378 +89379 +89380 +89381 +89382 +89383 +89408 +89409 +89410 +89411 +89412 +89413 +89414 +89415 +89440 +89441 +89442 +89443 +89444 +89445 +89446 +89447 +89472 +89473 +89474 +89475 +89476 +89477 +89478 +89479 +89504 +89505 +89506 +89507 +89508 +89509 +89510 +89511 +89536 +89537 +89538 +89539 +89540 +89541 +89542 +89543 +89568 +89569 +89570 +89571 +89572 +89573 +89574 +89575 +89600 +89601 +89602 +89603 +89604 +89605 +89606 +89607 +89632 +89633 +89634 +89635 +89636 +89637 +89638 +89639 +89664 +89665 +89666 +89667 +89668 +89669 +89670 +89671 +89696 +89697 +89698 +89699 +89700 +89701 +89702 +89703 +89728 +89729 +89730 +89731 +89732 +89733 +89734 +89735 +89760 +89761 +89762 +89763 +89764 +89765 +89766 +89767 +89792 +89793 +89794 +89795 +89796 +89797 +89798 +89799 +89824 +89825 +89826 +89827 +89828 +89829 +89830 +89831 +89856 +89857 +89858 +89859 +89860 +89861 +89862 +89863 +89888 +89889 +89890 +89891 +89892 +89893 +89894 +89895 +89920 +89921 +89922 +89923 +89924 +89925 +89926 +89927 +89952 +89953 +89954 +89955 +89956 +89957 +89958 +89959 +89984 +89985 +89986 +89987 +89988 +89989 +89990 +89991 +90016 +90017 +90018 +90019 +90020 +90021 +90022 +90023 +90048 +90049 +90050 +90051 +90052 +90053 +90054 +90055 +90080 +90081 +90082 +90083 +90084 +90085 +90086 +90087 +90112 +90113 +90114 +90115 +90116 +90117 +90118 +90119 +90144 +90145 +90146 +90147 +90148 +90149 +90150 +90151 +90176 +90177 +90178 +90179 +90180 +90181 +90182 +90183 +90208 +90209 +90210 +90211 +90212 +90213 +90214 +90215 +90240 +90241 +90242 +90243 +90244 +90245 +90246 +90247 +90272 +90273 +90274 +90275 +90276 +90277 +90278 +90279 +90304 +90305 +90306 +90307 +90308 +90309 +90310 +90311 +90336 +90337 +90338 +90339 +90340 +90341 +90342 +90343 +90368 +90369 +90370 +90371 +90372 +90373 +90374 +90375 +90400 +90401 +90402 +90403 +90404 +90405 +90406 +90407 +90432 +90433 +90434 +90435 +90436 +90437 +90438 +90439 +90464 +90465 +90466 +90467 +90468 +90469 +90470 +90471 +90496 +90497 +90498 +90499 +90500 +90501 +90502 +90503 +90528 +90529 +90530 +90531 +90532 +90533 +90534 +90535 +90560 +90561 +90562 +90563 +90564 +90565 +90566 +90567 +90592 +90593 +90594 +90595 +90596 +90597 +90598 +90599 +90624 +90625 +90626 +90627 +90628 +90629 +90630 +90631 +90656 +90657 +90658 +90659 +90660 +90661 +90662 +90663 +90688 +90689 +90690 +90691 +90692 +90693 +90694 +90695 +90720 +90721 +90722 +90723 +90724 +90725 +90726 +90727 +90752 +90753 +90754 +90755 +90756 +90757 +90758 +90759 +90784 +90785 +90786 +90787 +90788 +90789 +90790 +90791 +90816 +90817 +90818 +90819 +90820 +90821 +90822 +90823 +90848 +90849 +90850 +90851 +90852 +90853 +90854 +90855 +90880 +90881 +90882 +90883 +90884 +90885 +90886 +90887 +90912 +90913 +90914 +90915 +90916 +90917 +90918 +90919 +90944 +90945 +90946 +90947 +90948 +90949 +90950 +90951 +90976 +90977 +90978 +90979 +90980 +90981 +90982 +90983 +91008 +91009 +91010 +91011 +91012 +91013 +91014 +91015 +91040 +91041 +91042 +91043 +91044 +91045 +91046 +91047 +91072 +91073 +91074 +91075 +91076 +91077 +91078 +91079 +91104 +91105 +91106 +91107 +91108 +91109 +91110 +91111 +91136 +91137 +91138 +91139 +91140 +91141 +91142 +91143 +91168 +91169 +91170 +91171 +91172 +91173 +91174 +91175 +91200 +91201 +91202 +91203 +91204 +91205 +91206 +91207 +91232 +91233 +91234 +91235 +91236 +91237 +91238 +91239 +91264 +91265 +91266 +91267 +91268 +91269 +91270 +91271 +91296 +91297 +91298 +91299 +91300 +91301 +91302 +91303 +91328 +91329 +91330 +91331 +91332 +91333 +91334 +91335 +91360 +91361 +91362 +91363 +91364 +91365 +91366 +91367 +91392 +91393 +91394 +91395 +91396 +91397 +91398 +91399 +91424 +91425 +91426 +91427 +91428 +91429 +91430 +91431 +91456 +91457 +91458 +91459 +91460 +91461 +91462 +91463 +91488 +91489 +91490 +91491 +91492 +91493 +91494 +91495 +91520 +91521 +91522 +91523 +91524 +91525 +91526 +91527 +91552 +91553 +91554 +91555 +91556 +91557 +91558 +91559 +91584 +91585 +91586 +91587 +91588 +91589 +91590 +91591 +91616 +91617 +91618 +91619 +91620 +91621 +91622 +91623 +91648 +91649 +91650 +91651 +91652 +91653 +91654 +91655 +91680 +91681 +91682 +91683 +91684 +91685 +91686 +91687 +91712 +91713 +91714 +91715 +91716 +91717 +91718 +91719 +91744 +91745 +91746 +91747 +91748 +91749 +91750 +91751 +91776 +91777 +91778 +91779 +91780 +91781 +91782 +91783 +91808 +91809 +91810 +91811 +91812 +91813 +91814 +91815 +91840 +91841 +91842 +91843 +91844 +91845 +91846 +91847 +91872 +91873 +91874 +91875 +91876 +91877 +91878 +91879 +91904 +91905 +91906 +91907 +91908 +91909 +91910 +91911 +91936 +91937 +91938 +91939 +91940 +91941 +91942 +91943 +91968 +91969 +91970 +91971 +91972 +91973 +91974 +91975 +92000 +92001 +92002 +92003 +92004 +92005 +92006 +92007 +92032 +92033 +92034 +92035 +92036 +92037 +92038 +92039 +92064 +92065 +92066 +92067 +92068 +92069 +92070 +92071 +92096 +92097 +92098 +92099 +92100 +92101 +92102 +92103 +92128 +92129 +92130 +92131 +92132 +92133 +92134 +92135 +92160 +92161 +92162 +92163 +92164 +92165 +92166 +92167 +92192 +92193 +92194 +92195 +92196 +92197 +92198 +92199 +92224 +92225 +92226 +92227 +92228 +92229 +92230 +92231 +92256 +92257 +92258 +92259 +92260 +92261 +92262 +92263 +92288 +92289 +92290 +92291 +92292 +92293 +92294 +92295 +92320 +92321 +92322 +92323 +92324 +92325 +92326 +92327 +92352 +92353 +92354 +92355 +92356 +92357 +92358 +92359 +92384 +92385 +92386 +92387 +92388 +92389 +92390 +92391 +92416 +92417 +92418 +92419 +92420 +92421 +92422 +92423 +92448 +92449 +92450 +92451 +92452 +92453 +92454 +92455 +92480 +92481 +92482 +92483 +92484 +92485 +92486 +92487 +92512 +92513 +92514 +92515 +92516 +92517 +92518 +92519 +92544 +92545 +92546 +92547 +92548 +92549 +92550 +92551 +92576 +92577 +92578 +92579 +92580 +92581 +92582 +92583 +92608 +92609 +92610 +92611 +92612 +92613 +92614 +92615 +92640 +92641 +92642 +92643 +92644 +92645 +92646 +92647 +92672 +92673 +92674 +92675 +92676 +92677 +92678 +92679 +92704 +92705 +92706 +92707 +92708 +92709 +92710 +92711 +92736 +92737 +92738 +92739 +92740 +92741 +92742 +92743 +92768 +92769 +92770 +92771 +92772 +92773 +92774 +92775 +92800 +92801 +92802 +92803 +92804 +92805 +92806 +92807 +92832 +92833 +92834 +92835 +92836 +92837 +92838 +92839 +92864 +92865 +92866 +92867 +92868 +92869 +92870 +92871 +92896 +92897 +92898 +92899 +92900 +92901 +92902 +92903 +92928 +92929 +92930 +92931 +92932 +92933 +92934 +92935 +92960 +92961 +92962 +92963 +92964 +92965 +92966 +92967 +92992 +92993 +92994 +92995 +92996 +92997 +92998 +92999 +93024 +93025 +93026 +93027 +93028 +93029 +93030 +93031 +93056 +93057 +93058 +93059 +93060 +93061 +93062 +93063 +93088 +93089 +93090 +93091 +93092 +93093 +93094 +93095 +93120 +93121 +93122 +93123 +93124 +93125 +93126 +93127 +93152 +93153 +93154 +93155 +93156 +93157 +93158 +93159 +93184 +93185 +93186 +93187 +93188 +93189 +93190 +93191 +93216 +93217 +93218 +93219 +93220 +93221 +93222 +93223 +93248 +93249 +93250 +93251 +93252 +93253 +93254 +93255 +93280 +93281 +93282 +93283 +93284 +93285 +93286 +93287 +93312 +93313 +93314 +93315 +93316 +93317 +93318 +93319 +93344 +93345 +93346 +93347 +93348 +93349 +93350 +93351 +93376 +93377 +93378 +93379 +93380 +93381 +93382 +93383 +93408 +93409 +93410 +93411 +93412 +93413 +93414 +93415 +93440 +93441 +93442 +93443 +93444 +93445 +93446 +93447 +93472 +93473 +93474 +93475 +93476 +93477 +93478 +93479 +93504 +93505 +93506 +93507 +93508 +93509 +93510 +93511 +93536 +93537 +93538 +93539 +93540 +93541 +93542 +93543 +93568 +93569 +93570 +93571 +93572 +93573 +93574 +93575 +93600 +93601 +93602 +93603 +93604 +93605 +93606 +93607 +93632 +93633 +93634 +93635 +93636 +93637 +93638 +93639 +93664 +93665 +93666 +93667 +93668 +93669 +93670 +93671 +93696 +93697 +93698 +93699 +93700 +93701 +93702 +93703 +93728 +93729 +93730 +93731 +93732 +93733 +93734 +93735 +93760 +93761 +93762 +93763 +93764 +93765 +93766 +93767 +93792 +93793 +93794 +93795 +93796 +93797 +93798 +93799 +93824 +93825 +93826 +93827 +93828 +93829 +93830 +93831 +93856 +93857 +93858 +93859 +93860 +93861 +93862 +93863 +93888 +93889 +93890 +93891 +93892 +93893 +93894 +93895 +93920 +93921 +93922 +93923 +93924 +93925 +93926 +93927 +93952 +93953 +93954 +93955 +93956 +93957 +93958 +93959 +93984 +93985 +93986 +93987 +93988 +93989 +93990 +93991 +94016 +94017 +94018 +94019 +94020 +94021 +94022 +94023 +94048 +94049 +94050 +94051 +94052 +94053 +94054 +94055 +94080 +94081 +94082 +94083 +94084 +94085 +94086 +94087 +94112 +94113 +94114 +94115 +94116 +94117 +94118 +94119 +94144 +94145 +94146 +94147 +94148 +94149 +94150 +94151 +94176 +94177 +94178 +94179 +94180 +94181 +94182 +94183 +94208 +94209 +94210 +94211 +94212 +94213 +94214 +94215 +94240 +94241 +94242 +94243 +94244 +94245 +94246 +94247 +94272 +94273 +94274 +94275 +94276 +94277 +94278 +94279 +94304 +94305 +94306 +94307 +94308 +94309 +94310 +94311 +94336 +94337 +94338 +94339 +94340 +94341 +94342 +94343 +94368 +94369 +94370 +94371 +94372 +94373 +94374 +94375 +94400 +94401 +94402 +94403 +94404 +94405 +94406 +94407 +94432 +94433 +94434 +94435 +94436 +94437 +94438 +94439 +94464 +94465 +94466 +94467 +94468 +94469 +94470 +94471 +94496 +94497 +94498 +94499 +94500 +94501 +94502 +94503 +94528 +94529 +94530 +94531 +94532 +94533 +94534 +94535 +94560 +94561 +94562 +94563 +94564 +94565 +94566 +94567 +94592 +94593 +94594 +94595 +94596 +94597 +94598 +94599 +94624 +94625 +94626 +94627 +94628 +94629 +94630 +94631 +94656 +94657 +94658 +94659 +94660 +94661 +94662 +94663 +94688 +94689 +94690 +94691 +94692 +94693 +94694 +94695 +94720 +94721 +94722 +94723 +94724 +94725 +94726 +94727 +94752 +94753 +94754 +94755 +94756 +94757 +94758 +94759 +94784 +94785 +94786 +94787 +94788 +94789 +94790 +94791 +94816 +94817 +94818 +94819 +94820 +94821 +94822 +94823 +94848 +94849 +94850 +94851 +94852 +94853 +94854 +94855 +94880 +94881 +94882 +94883 +94884 +94885 +94886 +94887 +94912 +94913 +94914 +94915 +94916 +94917 +94918 +94919 +94944 +94945 +94946 +94947 +94948 +94949 +94950 +94951 +94976 +94977 +94978 +94979 +94980 +94981 +94982 +94983 +95008 +95009 +95010 +95011 +95012 +95013 +95014 +95015 +95040 +95041 +95042 +95043 +95044 +95045 +95046 +95047 +95072 +95073 +95074 +95075 +95076 +95077 +95078 +95079 +95104 +95105 +95106 +95107 +95108 +95109 +95110 +95111 +95136 +95137 +95138 +95139 +95140 +95141 +95142 +95143 +95168 +95169 +95170 +95171 +95172 +95173 +95174 +95175 +95200 +95201 +95202 +95203 +95204 +95205 +95206 +95207 +95232 +95233 +95234 +95235 +95236 +95237 +95238 +95239 +95264 +95265 +95266 +95267 +95268 +95269 +95270 +95271 +95296 +95297 +95298 +95299 +95300 +95301 +95302 +95303 +95328 +95329 +95330 +95331 +95332 +95333 +95334 +95335 +95360 +95361 +95362 +95363 +95364 +95365 +95366 +95367 +95392 +95393 +95394 +95395 +95396 +95397 +95398 +95399 +95424 +95425 +95426 +95427 +95428 +95429 +95430 +95431 +95456 +95457 +95458 +95459 +95460 +95461 +95462 +95463 +95488 +95489 +95490 +95491 +95492 +95493 +95494 +95495 +95520 +95521 +95522 +95523 +95524 +95525 +95526 +95527 +95552 +95553 +95554 +95555 +95556 +95557 +95558 +95559 +95584 +95585 +95586 +95587 +95588 +95589 +95590 +95591 +95616 +95617 +95618 +95619 +95620 +95621 +95622 +95623 +95648 +95649 +95650 +95651 +95652 +95653 +95654 +95655 +95680 +95681 +95682 +95683 +95684 +95685 +95686 +95687 +95712 +95713 +95714 +95715 +95716 +95717 +95718 +95719 +95744 +95745 +95746 +95747 +95748 +95749 +95750 +95751 +95776 +95777 +95778 +95779 +95780 +95781 +95782 +95783 +95808 +95809 +95810 +95811 +95812 +95813 +95814 +95815 +95840 +95841 +95842 +95843 +95844 +95845 +95846 +95847 +95872 +95873 +95874 +95875 +95876 +95877 +95878 +95879 +95904 +95905 +95906 +95907 +95908 +95909 +95910 +95911 +95936 +95937 +95938 +95939 +95940 +95941 +95942 +95943 +95968 +95969 +95970 +95971 +95972 +95973 +95974 +95975 +96000 +96001 +96002 +96003 +96004 +96005 +96006 +96007 +96032 +96033 +96034 +96035 +96036 +96037 +96038 +96039 +96064 +96065 +96066 +96067 +96068 +96069 +96070 +96071 +96096 +96097 +96098 +96099 +96100 +96101 +96102 +96103 +96128 +96129 +96130 +96131 +96132 +96133 +96134 +96135 +96160 +96161 +96162 +96163 +96164 +96165 +96166 +96167 +96192 +96193 +96194 +96195 +96196 +96197 +96198 +96199 +96224 +96225 +96226 +96227 +96228 +96229 +96230 +96231 +96256 +96257 +96258 +96259 +96260 +96261 +96262 +96263 +96288 +96289 +96290 +96291 +96292 +96293 +96294 +96295 +96320 +96321 +96322 +96323 +96324 +96325 +96326 +96327 +96352 +96353 +96354 +96355 +96356 +96357 +96358 +96359 +96384 +96385 +96386 +96387 +96388 +96389 +96390 +96391 +96416 +96417 +96418 +96419 +96420 +96421 +96422 +96423 +96448 +96449 +96450 +96451 +96452 +96453 +96454 +96455 +96480 +96481 +96482 +96483 +96484 +96485 +96486 +96487 +96512 +96513 +96514 +96515 +96516 +96517 +96518 +96519 +96544 +96545 +96546 +96547 +96548 +96549 +96550 +96551 +96576 +96577 +96578 +96579 +96580 +96581 +96582 +96583 +96608 +96609 +96610 +96611 +96612 +96613 +96614 +96615 +96640 +96641 +96642 +96643 +96644 +96645 +96646 +96647 +96672 +96673 +96674 +96675 +96676 +96677 +96678 +96679 +96704 +96705 +96706 +96707 +96708 +96709 +96710 +96711 +96736 +96737 +96738 +96739 +96740 +96741 +96742 +96743 +96768 +96769 +96770 +96771 +96772 +96773 +96774 +96775 +96800 +96801 +96802 +96803 +96804 +96805 +96806 +96807 +96832 +96833 +96834 +96835 +96836 +96837 +96838 +96839 +96864 +96865 +96866 +96867 +96868 +96869 +96870 +96871 +96896 +96897 +96898 +96899 +96900 +96901 +96902 +96903 +96928 +96929 +96930 +96931 +96932 +96933 +96934 +96935 +96960 +96961 +96962 +96963 +96964 +96965 +96966 +96967 +96992 +96993 +96994 +96995 +96996 +96997 +96998 +96999 +97024 +97025 +97026 +97027 +97028 +97029 +97030 +97031 +97056 +97057 +97058 +97059 +97060 +97061 +97062 +97063 +97088 +97089 +97090 +97091 +97092 +97093 +97094 +97095 +97120 +97121 +97122 +97123 +97124 +97125 +97126 +97127 +97152 +97153 +97154 +97155 +97156 +97157 +97158 +97159 +97184 +97185 +97186 +97187 +97188 +97189 +97190 +97191 +97216 +97217 +97218 +97219 +97220 +97221 +97222 +97223 +97248 +97249 +97250 +97251 +97252 +97253 +97254 +97255 +97280 +97281 +97282 +97283 +97284 +97285 +97286 +97287 +97312 +97313 +97314 +97315 +97316 +97317 +97318 +97319 +97344 +97345 +97346 +97347 +97348 +97349 +97350 +97351 +97376 +97377 +97378 +97379 +97380 +97381 +97382 +97383 +97408 +97409 +97410 +97411 +97412 +97413 +97414 +97415 +97440 +97441 +97442 +97443 +97444 +97445 +97446 +97447 +97472 +97473 +97474 +97475 +97476 +97477 +97478 +97479 +97504 +97505 +97506 +97507 +97508 +97509 +97510 +97511 +97536 +97537 +97538 +97539 +97540 +97541 +97542 +97543 +97568 +97569 +97570 +97571 +97572 +97573 +97574 +97575 +97600 +97601 +97602 +97603 +97604 +97605 +97606 +97607 +97632 +97633 +97634 +97635 +97636 +97637 +97638 +97639 +97664 +97665 +97666 +97667 +97668 +97669 +97670 +97671 +97696 +97697 +97698 +97699 +97700 +97701 +97702 +97703 +97728 +97729 +97730 +97731 +97732 +97733 +97734 +97735 +97760 +97761 +97762 +97763 +97764 +97765 +97766 +97767 +97792 +97793 +97794 +97795 +97796 +97797 +97798 +97799 +97824 +97825 +97826 +97827 +97828 +97829 +97830 +97831 +97856 +97857 +97858 +97859 +97860 +97861 +97862 +97863 +97888 +97889 +97890 +97891 +97892 +97893 +97894 +97895 +97920 +97921 +97922 +97923 +97924 +97925 +97926 +97927 +97952 +97953 +97954 +97955 +97956 +97957 +97958 +97959 +97984 +97985 +97986 +97987 +97988 +97989 +97990 +97991 +98016 +98017 +98018 +98019 +98020 +98021 +98022 +98023 +98048 +98049 +98050 +98051 +98052 +98053 +98054 +98055 +98080 +98081 +98082 +98083 +98084 +98085 +98086 +98087 +98112 +98113 +98114 +98115 +98116 +98117 +98118 +98119 +98144 +98145 +98146 +98147 +98148 +98149 +98150 +98151 +98176 +98177 +98178 +98179 +98180 +98181 +98182 +98183 +98208 +98209 +98210 +98211 +98212 +98213 +98214 +98215 +98240 +98241 +98242 +98243 +98244 +98245 +98246 +98247 +98272 +98273 +98274 +98275 +98276 +98277 +98278 +98279 +98304 +98305 +98306 +98307 +98308 +98309 +98310 +98311 +98336 +98337 +98338 +98339 +98340 +98341 +98342 +98343 +98368 +98369 +98370 +98371 +98372 +98373 +98374 +98375 +98400 +98401 +98402 +98403 +98404 +98405 +98406 +98407 +98432 +98433 +98434 +98435 +98436 +98437 +98438 +98439 +98464 +98465 +98466 +98467 +98468 +98469 +98470 +98471 +98496 +98497 +98498 +98499 +98500 +98501 +98502 +98503 +98528 +98529 +98530 +98531 +98532 +98533 +98534 +98535 +98560 +98561 +98562 +98563 +98564 +98565 +98566 +98567 +98592 +98593 +98594 +98595 +98596 +98597 +98598 +98599 +98624 +98625 +98626 +98627 +98628 +98629 +98630 +98631 +98656 +98657 +98658 +98659 +98660 +98661 +98662 +98663 +98688 +98689 +98690 +98691 +98692 +98693 +98694 +98695 +98720 +98721 +98722 +98723 +98724 +98725 +98726 +98727 +98752 +98753 +98754 +98755 +98756 +98757 +98758 +98759 +98784 +98785 +98786 +98787 +98788 +98789 +98790 +98791 +98816 +98817 +98818 +98819 +98820 +98821 +98822 +98823 +98848 +98849 +98850 +98851 +98852 +98853 +98854 +98855 +98880 +98881 +98882 +98883 +98884 +98885 +98886 +98887 +98912 +98913 +98914 +98915 +98916 +98917 +98918 +98919 +98944 +98945 +98946 +98947 +98948 +98949 +98950 +98951 +98976 +98977 +98978 +98979 +98980 +98981 +98982 +98983 +99008 +99009 +99010 +99011 +99012 +99013 +99014 +99015 +99040 +99041 +99042 +99043 +99044 +99045 +99046 +99047 +99072 +99073 +99074 +99075 +99076 +99077 +99078 +99079 +99104 +99105 +99106 +99107 +99108 +99109 +99110 +99111 +99136 +99137 +99138 +99139 +99140 +99141 +99142 +99143 +99168 +99169 +99170 +99171 +99172 +99173 +99174 +99175 +99200 +99201 +99202 +99203 +99204 +99205 +99206 +99207 +99232 +99233 +99234 +99235 +99236 +99237 +99238 +99239 +99264 +99265 +99266 +99267 +99268 +99269 +99270 +99271 +99296 +99297 +99298 +99299 +99300 +99301 +99302 +99303 +99328 +99329 +99330 +99331 +99332 +99333 +99334 +99335 +99360 +99361 +99362 +99363 +99364 +99365 +99366 +99367 +99392 +99393 +99394 +99395 +99396 +99397 +99398 +99399 +99424 +99425 +99426 +99427 +99428 +99429 +99430 +99431 +99456 +99457 +99458 +99459 +99460 +99461 +99462 +99463 +99488 +99489 +99490 +99491 +99492 +99493 +99494 +99495 +99520 +99521 +99522 +99523 +99524 +99525 +99526 +99527 +99552 +99553 +99554 +99555 +99556 +99557 +99558 +99559 +99584 +99585 +99586 +99587 +99588 +99589 +99590 +99591 +99616 +99617 +99618 +99619 +99620 +99621 +99622 +99623 +99648 +99649 +99650 +99651 +99652 +99653 +99654 +99655 +99680 +99681 +99682 +99683 +99684 +99685 +99686 +99687 +99712 +99713 +99714 +99715 +99716 +99717 +99718 +99719 +99744 +99745 +99746 +99747 +99748 +99749 +99750 +99751 +99776 +99777 +99778 +99779 +99780 +99781 +99782 +99783 +99808 +99809 +99810 +99811 +99812 +99813 +99814 +99815 +99840 +99841 +99842 +99843 +99844 +99845 +99846 +99847 +99872 +99873 +99874 +99875 +99876 +99877 +99878 +99879 +99904 +99905 +99906 +99907 +99908 +99909 +99910 +99911 +99936 +99937 +99938 +99939 +99940 +99941 +99942 +99943 +99968 +99969 +99970 +99971 +99972 +99973 +99974 +99975 +100000 +100001 +100002 +100003 +100004 +100005 +100006 +100007 +100032 +100033 +100034 +100035 +100036 +100037 +100038 +100039 +100064 +100065 +100066 +100067 +100068 +100069 +100070 +100071 +100096 +100097 +100098 +100099 +100100 +100101 +100102 +100103 +100128 +100129 +100130 +100131 +100132 +100133 +100134 +100135 +100160 +100161 +100162 +100163 +100164 +100165 +100166 +100167 +100192 +100193 +100194 +100195 +100196 +100197 +100198 +100199 +100224 +100225 +100226 +100227 +100228 +100229 +100230 +100231 +100256 +100257 +100258 +100259 +100260 +100261 +100262 +100263 +100288 +100289 +100290 +100291 +100292 +100293 +100294 +100295 +100320 +100321 +100322 +100323 +100324 +100325 +100326 +100327 +100352 +100353 +100354 +100355 +100356 +100357 +100358 +100359 +100384 +100385 +100386 +100387 +100388 +100389 +100390 +100391 +100416 +100417 +100418 +100419 +100420 +100421 +100422 +100423 +100448 +100449 +100450 +100451 +100452 +100453 +100454 +100455 +100480 +100481 +100482 +100483 +100484 +100485 +100486 +100487 +100512 +100513 +100514 +100515 +100516 +100517 +100518 +100519 +100544 +100545 +100546 +100547 +100548 +100549 +100550 +100551 +100576 +100577 +100578 +100579 +100580 +100581 +100582 +100583 +100608 +100609 +100610 +100611 +100612 +100613 +100614 +100615 +100640 +100641 +100642 +100643 +100644 +100645 +100646 +100647 +100672 +100673 +100674 +100675 +100676 +100677 +100678 +100679 +100704 +100705 +100706 +100707 +100708 +100709 +100710 +100711 +100736 +100737 +100738 +100739 +100740 +100741 +100742 +100743 +100768 +100769 +100770 +100771 +100772 +100773 +100774 +100775 +100800 +100801 +100802 +100803 +100804 +100805 +100806 +100807 +100832 +100833 +100834 +100835 +100836 +100837 +100838 +100839 +100864 +100865 +100866 +100867 +100868 +100869 +100870 +100871 +100896 +100897 +100898 +100899 +100900 +100901 +100902 +100903 +100928 +100929 +100930 +100931 +100932 +100933 +100934 +100935 +100960 +100961 +100962 +100963 +100964 +100965 +100966 +100967 +100992 +100993 +100994 +100995 +100996 +100997 +100998 +100999 +101024 +101025 +101026 +101027 +101028 +101029 +101030 +101031 +101056 +101057 +101058 +101059 +101060 +101061 +101062 +101063 +101088 +101089 +101090 +101091 +101092 +101093 +101094 +101095 +101120 +101121 +101122 +101123 +101124 +101125 +101126 +101127 +101152 +101153 +101154 +101155 +101156 +101157 +101158 +101159 +101184 +101185 +101186 +101187 +101188 +101189 +101190 +101191 +101216 +101217 +101218 +101219 +101220 +101221 +101222 +101223 +101248 +101249 +101250 +101251 +101252 +101253 +101254 +101255 +101280 +101281 +101282 +101283 +101284 +101285 +101286 +101287 +101312 +101313 +101314 +101315 +101316 +101317 +101318 +101319 +101344 +101345 +101346 +101347 +101348 +101349 +101350 +101351 +101376 +101377 +101378 +101379 +101380 +101381 +101382 +101383 +101408 +101409 +101410 +101411 +101412 +101413 +101414 +101415 +101440 +101441 +101442 +101443 +101444 +101445 +101446 +101447 +101472 +101473 +101474 +101475 +101476 +101477 +101478 +101479 +101504 +101505 +101506 +101507 +101508 +101509 +101510 +101511 +101536 +101537 +101538 +101539 +101540 +101541 +101542 +101543 +101568 +101569 +101570 +101571 +101572 +101573 +101574 +101575 +101600 +101601 +101602 +101603 +101604 +101605 +101606 +101607 +101632 +101633 +101634 +101635 +101636 +101637 +101638 +101639 +101664 +101665 +101666 +101667 +101668 +101669 +101670 +101671 +101696 +101697 +101698 +101699 +101700 +101701 +101702 +101703 +101728 +101729 +101730 +101731 +101732 +101733 +101734 +101735 +101760 +101761 +101762 +101763 +101764 +101765 +101766 +101767 +101792 +101793 +101794 +101795 +101796 +101797 +101798 +101799 +101824 +101825 +101826 +101827 +101828 +101829 +101830 +101831 +101856 +101857 +101858 +101859 +101860 +101861 +101862 +101863 +101888 +101889 +101890 +101891 +101892 +101893 +101894 +101895 +101920 +101921 +101922 +101923 +101924 +101925 +101926 +101927 +101952 +101953 +101954 +101955 +101956 +101957 +101958 +101959 +101984 +101985 +101986 +101987 +101988 +101989 +101990 +101991 +102016 +102017 +102018 +102019 +102020 +102021 +102022 +102023 +102048 +102049 +102050 +102051 +102052 +102053 +102054 +102055 +102080 +102081 +102082 +102083 +102084 +102085 +102086 +102087 +102112 +102113 +102114 +102115 +102116 +102117 +102118 +102119 +102144 +102145 +102146 +102147 +102148 +102149 +102150 +102151 +102176 +102177 +102178 +102179 +102180 +102181 +102182 +102183 +102208 +102209 +102210 +102211 +102212 +102213 +102214 +102215 +102240 +102241 +102242 +102243 +102244 +102245 +102246 +102247 +102272 +102273 +102274 +102275 +102276 +102277 +102278 +102279 +102304 +102305 +102306 +102307 +102308 +102309 +102310 +102311 +102336 +102337 +102338 +102339 +102340 +102341 +102342 +102343 +102368 +102369 +102370 +102371 +102372 +102373 +102374 +102375 +102400 +102401 +102402 +102403 +102404 +102405 +102406 +102407 +102432 +102433 +102434 +102435 +102436 +102437 +102438 +102439 +102464 +102465 +102466 +102467 +102468 +102469 +102470 +102471 +102496 +102497 +102498 +102499 +102500 +102501 +102502 +102503 +102528 +102529 +102530 +102531 +102532 +102533 +102534 +102535 +102560 +102561 +102562 +102563 +102564 +102565 +102566 +102567 +102592 +102593 +102594 +102595 +102596 +102597 +102598 +102599 +102624 +102625 +102626 +102627 +102628 +102629 +102630 +102631 +102656 +102657 +102658 +102659 +102660 +102661 +102662 +102663 +102688 +102689 +102690 +102691 +102692 +102693 +102694 +102695 +102720 +102721 +102722 +102723 +102724 +102725 +102726 +102727 +102752 +102753 +102754 +102755 +102756 +102757 +102758 +102759 +102784 +102785 +102786 +102787 +102788 +102789 +102790 +102791 +102816 +102817 +102818 +102819 +102820 +102821 +102822 +102823 +102848 +102849 +102850 +102851 +102852 +102853 +102854 +102855 +102880 +102881 +102882 +102883 +102884 +102885 +102886 +102887 +102912 +102913 +102914 +102915 +102916 +102917 +102918 +102919 +102944 +102945 +102946 +102947 +102948 +102949 +102950 +102951 +102976 +102977 +102978 +102979 +102980 +102981 +102982 +102983 +103008 +103009 +103010 +103011 +103012 +103013 +103014 +103015 +103040 +103041 +103042 +103043 +103044 +103045 +103046 +103047 +103072 +103073 +103074 +103075 +103076 +103077 +103078 +103079 +103104 +103105 +103106 +103107 +103108 +103109 +103110 +103111 +103136 +103137 +103138 +103139 +103140 +103141 +103142 +103143 +103168 +103169 +103170 +103171 +103172 +103173 +103174 +103175 +103200 +103201 +103202 +103203 +103204 +103205 +103206 +103207 +103232 +103233 +103234 +103235 +103236 +103237 +103238 +103239 +103264 +103265 +103266 +103267 +103268 +103269 +103270 +103271 +103296 +103297 +103298 +103299 +103300 +103301 +103302 +103303 +103328 +103329 +103330 +103331 +103332 +103333 +103334 +103335 +103360 +103361 +103362 +103363 +103364 +103365 +103366 +103367 +103392 +103393 +103394 +103395 +103396 +103397 +103398 +103399 +103424 +103425 +103426 +103427 +103428 +103429 +103430 +103431 +103456 +103457 +103458 +103459 +103460 +103461 +103462 +103463 +103488 +103489 +103490 +103491 +103492 +103493 +103494 +103495 +103520 +103521 +103522 +103523 +103524 +103525 +103526 +103527 +103552 +103553 +103554 +103555 +103556 +103557 +103558 +103559 +103584 +103585 +103586 +103587 +103588 +103589 +103590 +103591 +103616 +103617 +103618 +103619 +103620 +103621 +103622 +103623 +103648 +103649 +103650 +103651 +103652 +103653 +103654 +103655 +103680 +103681 +103682 +103683 +103684 +103685 +103686 +103687 +103712 +103713 +103714 +103715 +103716 +103717 +103718 +103719 +103744 +103745 +103746 +103747 +103748 +103749 +103750 +103751 +103776 +103777 +103778 +103779 +103780 +103781 +103782 +103783 +103808 +103809 +103810 +103811 +103812 +103813 +103814 +103815 +103840 +103841 +103842 +103843 +103844 +103845 +103846 +103847 +103872 +103873 +103874 +103875 +103876 +103877 +103878 +103879 +103904 +103905 +103906 +103907 +103908 +103909 +103910 +103911 +103936 +103937 +103938 +103939 +103940 +103941 +103942 +103943 +103968 +103969 +103970 +103971 +103972 +103973 +103974 +103975 +104000 +104001 +104002 +104003 +104004 +104005 +104006 +104007 +104032 +104033 +104034 +104035 +104036 +104037 +104038 +104039 +104064 +104065 +104066 +104067 +104068 +104069 +104070 +104071 +104096 +104097 +104098 +104099 +104100 +104101 +104102 +104103 +104128 +104129 +104130 +104131 +104132 +104133 +104134 +104135 +104160 +104161 +104162 +104163 +104164 +104165 +104166 +104167 +104192 +104193 +104194 +104195 +104196 +104197 +104198 +104199 +104224 +104225 +104226 +104227 +104228 +104229 +104230 +104231 +104256 +104257 +104258 +104259 +104260 +104261 +104262 +104263 +104288 +104289 +104290 +104291 +104292 +104293 +104294 +104295 +104320 +104321 +104322 +104323 +104324 +104325 +104326 +104327 +104352 +104353 +104354 +104355 +104356 +104357 +104358 +104359 +104384 +104385 +104386 +104387 +104388 +104389 +104390 +104391 +104416 +104417 +104418 +104419 +104420 +104421 +104422 +104423 +104448 +104449 +104450 +104451 +104452 +104453 +104454 +104455 +104480 +104481 +104482 +104483 +104484 +104485 +104486 +104487 +104512 +104513 +104514 +104515 +104516 +104517 +104518 +104519 +104544 +104545 +104546 +104547 +104548 +104549 +104550 +104551 +104576 +104577 +104578 +104579 +104580 +104581 +104582 +104583 +104608 +104609 +104610 +104611 +104612 +104613 +104614 +104615 +104640 +104641 +104642 +104643 +104644 +104645 +104646 +104647 +104672 +104673 +104674 +104675 +104676 +104677 +104678 +104679 +104704 +104705 +104706 +104707 +104708 +104709 +104710 +104711 +104736 +104737 +104738 +104739 +104740 +104741 +104742 +104743 +104768 +104769 +104770 +104771 +104772 +104773 +104774 +104775 +104800 +104801 +104802 +104803 +104804 +104805 +104806 +104807 +104832 +104833 +104834 +104835 +104836 +104837 +104838 +104839 +104864 +104865 +104866 +104867 +104868 +104869 +104870 +104871 +104896 +104897 +104898 +104899 +104900 +104901 +104902 +104903 +104928 +104929 +104930 +104931 +104932 +104933 +104934 +104935 +104960 +104961 +104962 +104963 +104964 +104965 +104966 +104967 +104992 +104993 +104994 +104995 +104996 +104997 +104998 +104999 +105024 +105025 +105026 +105027 +105028 +105029 +105030 +105031 +105056 +105057 +105058 +105059 +105060 +105061 +105062 +105063 +105088 +105089 +105090 +105091 +105092 +105093 +105094 +105095 +105120 +105121 +105122 +105123 +105124 +105125 +105126 +105127 +105152 +105153 +105154 +105155 +105156 +105157 +105158 +105159 +105184 +105185 +105186 +105187 +105188 +105189 +105190 +105191 +105216 +105217 +105218 +105219 +105220 +105221 +105222 +105223 +105248 +105249 +105250 +105251 +105252 +105253 +105254 +105255 +105280 +105281 +105282 +105283 +105284 +105285 +105286 +105287 +105312 +105313 +105314 +105315 +105316 +105317 +105318 +105319 +105344 +105345 +105346 +105347 +105348 +105349 +105350 +105351 +105376 +105377 +105378 +105379 +105380 +105381 +105382 +105383 +105408 +105409 +105410 +105411 +105412 +105413 +105414 +105415 +105440 +105441 +105442 +105443 +105444 +105445 +105446 +105447 +105472 +105473 +105474 +105475 +105476 +105477 +105478 +105479 +105504 +105505 +105506 +105507 +105508 +105509 +105510 +105511 +105536 +105537 +105538 +105539 +105540 +105541 +105542 +105543 +105568 +105569 +105570 +105571 +105572 +105573 +105574 +105575 +105600 +105601 +105602 +105603 +105604 +105605 +105606 +105607 +105632 +105633 +105634 +105635 +105636 +105637 +105638 +105639 +105664 +105665 +105666 +105667 +105668 +105669 +105670 +105671 +105696 +105697 +105698 +105699 +105700 +105701 +105702 +105703 +105728 +105729 +105730 +105731 +105732 +105733 +105734 +105735 +105760 +105761 +105762 +105763 +105764 +105765 +105766 +105767 +105792 +105793 +105794 +105795 +105796 +105797 +105798 +105799 +105824 +105825 +105826 +105827 +105828 +105829 +105830 +105831 +105856 +105857 +105858 +105859 +105860 +105861 +105862 +105863 +105888 +105889 +105890 +105891 +105892 +105893 +105894 +105895 +105920 +105921 +105922 +105923 +105924 +105925 +105926 +105927 +105952 +105953 +105954 +105955 +105956 +105957 +105958 +105959 +105984 +105985 +105986 +105987 +105988 +105989 +105990 +105991 +106016 +106017 +106018 +106019 +106020 +106021 +106022 +106023 +106048 +106049 +106050 +106051 +106052 +106053 +106054 +106055 +106080 +106081 +106082 +106083 +106084 +106085 +106086 +106087 +106112 +106113 +106114 +106115 +106116 +106117 +106118 +106119 +106144 +106145 +106146 +106147 +106148 +106149 +106150 +106151 +106176 +106177 +106178 +106179 +106180 +106181 +106182 +106183 +106208 +106209 +106210 +106211 +106212 +106213 +106214 +106215 +106240 +106241 +106242 +106243 +106244 +106245 +106246 +106247 +106272 +106273 +106274 +106275 +106276 +106277 +106278 +106279 +106304 +106305 +106306 +106307 +106308 +106309 +106310 +106311 +106336 +106337 +106338 +106339 +106340 +106341 +106342 +106343 +106368 +106369 +106370 +106371 +106372 +106373 +106374 +106375 +106400 +106401 +106402 +106403 +106404 +106405 +106406 +106407 +106432 +106433 +106434 +106435 +106436 +106437 +106438 +106439 +106464 +106465 +106466 +106467 +106468 +106469 +106470 +106471 +106496 +106497 +106498 +106499 +106500 +106501 +106502 +106503 +106528 +106529 +106530 +106531 +106532 +106533 +106534 +106535 +106560 +106561 +106562 +106563 +106564 +106565 +106566 +106567 +106592 +106593 +106594 +106595 +106596 +106597 +106598 +106599 +106624 +106625 +106626 +106627 +106628 +106629 +106630 +106631 +106656 +106657 +106658 +106659 +106660 +106661 +106662 +106663 +106688 +106689 +106690 +106691 +106692 +106693 +106694 +106695 +106720 +106721 +106722 +106723 +106724 +106725 +106726 +106727 +106752 +106753 +106754 +106755 +106756 +106757 +106758 +106759 +106784 +106785 +106786 +106787 +106788 +106789 +106790 +106791 +106816 +106817 +106818 +106819 +106820 +106821 +106822 +106823 +106848 +106849 +106850 +106851 +106852 +106853 +106854 +106855 +106880 +106881 +106882 +106883 +106884 +106885 +106886 +106887 +106912 +106913 +106914 +106915 +106916 +106917 +106918 +106919 +106944 +106945 +106946 +106947 +106948 +106949 +106950 +106951 +106976 +106977 +106978 +106979 +106980 +106981 +106982 +106983 +107008 +107009 +107010 +107011 +107012 +107013 +107014 +107015 +107040 +107041 +107042 +107043 +107044 +107045 +107046 +107047 +107072 +107073 +107074 +107075 +107076 +107077 +107078 +107079 +107104 +107105 +107106 +107107 +107108 +107109 +107110 +107111 +107136 +107137 +107138 +107139 +107140 +107141 +107142 +107143 +107168 +107169 +107170 +107171 +107172 +107173 +107174 +107175 +107200 +107201 +107202 +107203 +107204 +107205 +107206 +107207 +107232 +107233 +107234 +107235 +107236 +107237 +107238 +107239 +107264 +107265 +107266 +107267 +107268 +107269 +107270 +107271 +107296 +107297 +107298 +107299 +107300 +107301 +107302 +107303 +107328 +107329 +107330 +107331 +107332 +107333 +107334 +107335 +107360 +107361 +107362 +107363 +107364 +107365 +107366 +107367 +107392 +107393 +107394 +107395 +107396 +107397 +107398 +107399 +107424 +107425 +107426 +107427 +107428 +107429 +107430 +107431 +107456 +107457 +107458 +107459 +107460 +107461 +107462 +107463 +107488 +107489 +107490 +107491 +107492 +107493 +107494 +107495 +107520 +107521 +107522 +107523 +107524 +107525 +107526 +107527 +107552 +107553 +107554 +107555 +107556 +107557 +107558 +107559 +107584 +107585 +107586 +107587 +107588 +107589 +107590 +107591 +107616 +107617 +107618 +107619 +107620 +107621 +107622 +107623 +107648 +107649 +107650 +107651 +107652 +107653 +107654 +107655 +107680 +107681 +107682 +107683 +107684 +107685 +107686 +107687 +107712 +107713 +107714 +107715 +107716 +107717 +107718 +107719 +107744 +107745 +107746 +107747 +107748 +107749 +107750 +107751 +107776 +107777 +107778 +107779 +107780 +107781 +107782 +107783 +107808 +107809 +107810 +107811 +107812 +107813 +107814 +107815 +107840 +107841 +107842 +107843 +107844 +107845 +107846 +107847 +107872 +107873 +107874 +107875 +107876 +107877 +107878 +107879 +107904 +107905 +107906 +107907 +107908 +107909 +107910 +107911 +107936 +107937 +107938 +107939 +107940 +107941 +107942 +107943 +107968 +107969 +107970 +107971 +107972 +107973 +107974 +107975 +108000 +108001 +108002 +108003 +108004 +108005 +108006 +108007 +108032 +108033 +108034 +108035 +108036 +108037 +108038 +108039 +108064 +108065 +108066 +108067 +108068 +108069 +108070 +108071 +108096 +108097 +108098 +108099 +108100 +108101 +108102 +108103 +108128 +108129 +108130 +108131 +108132 +108133 +108134 +108135 +108160 +108161 +108162 +108163 +108164 +108165 +108166 +108167 +108192 +108193 +108194 +108195 +108196 +108197 +108198 +108199 +108224 +108225 +108226 +108227 +108228 +108229 +108230 +108231 +108256 +108257 +108258 +108259 +108260 +108261 +108262 +108263 +108288 +108289 +108290 +108291 +108292 +108293 +108294 +108295 +108320 +108321 +108322 +108323 +108324 +108325 +108326 +108327 +108352 +108353 +108354 +108355 +108356 +108357 +108358 +108359 +108384 +108385 +108386 +108387 +108388 +108389 +108390 +108391 +108416 +108417 +108418 +108419 +108420 +108421 +108422 +108423 +108448 +108449 +108450 +108451 +108452 +108453 +108454 +108455 +108480 +108481 +108482 +108483 +108484 +108485 +108486 +108487 +108512 +108513 +108514 +108515 +108516 +108517 +108518 +108519 +108544 +108545 +108546 +108547 +108548 +108549 +108550 +108551 +108576 +108577 +108578 +108579 +108580 +108581 +108582 +108583 +108608 +108609 +108610 +108611 +108612 +108613 +108614 +108615 +108640 +108641 +108642 +108643 +108644 +108645 +108646 +108647 +108672 +108673 +108674 +108675 +108676 +108677 +108678 +108679 +108704 +108705 +108706 +108707 +108708 +108709 +108710 +108711 +108736 +108737 +108738 +108739 +108740 +108741 +108742 +108743 +108768 +108769 +108770 +108771 +108772 +108773 +108774 +108775 +108800 +108801 +108802 +108803 +108804 +108805 +108806 +108807 +108832 +108833 +108834 +108835 +108836 +108837 +108838 +108839 +108864 +108865 +108866 +108867 +108868 +108869 +108870 +108871 +108896 +108897 +108898 +108899 +108900 +108901 +108902 +108903 +108928 +108929 +108930 +108931 +108932 +108933 +108934 +108935 +108960 +108961 +108962 +108963 +108964 +108965 +108966 +108967 +108992 +108993 +108994 +108995 +108996 +108997 +108998 +108999 +109024 +109025 +109026 +109027 +109028 +109029 +109030 +109031 +109056 +109057 +109058 +109059 +109060 +109061 +109062 +109063 +109088 +109089 +109090 +109091 +109092 +109093 +109094 +109095 +109120 +109121 +109122 +109123 +109124 +109125 +109126 +109127 +109152 +109153 +109154 +109155 +109156 +109157 +109158 +109159 +109184 +109185 +109186 +109187 +109188 +109189 +109190 +109191 +109216 +109217 +109218 +109219 +109220 +109221 +109222 +109223 +109248 +109249 +109250 +109251 +109252 +109253 +109254 +109255 +109280 +109281 +109282 +109283 +109284 +109285 +109286 +109287 +109312 +109313 +109314 +109315 +109316 +109317 +109318 +109319 +109344 +109345 +109346 +109347 +109348 +109349 +109350 +109351 +109376 +109377 +109378 +109379 +109380 +109381 +109382 +109383 +109408 +109409 +109410 +109411 +109412 +109413 +109414 +109415 +109440 +109441 +109442 +109443 +109444 +109445 +109446 +109447 +109472 +109473 +109474 +109475 +109476 +109477 +109478 +109479 +109504 +109505 +109506 +109507 +109508 +109509 +109510 +109511 +109536 +109537 +109538 +109539 +109540 +109541 +109542 +109543 +109568 +109569 +109570 +109571 +109572 +109573 +109574 +109575 +109600 +109601 +109602 +109603 +109604 +109605 +109606 +109607 +109632 +109633 +109634 +109635 +109636 +109637 +109638 +109639 +109664 +109665 +109666 +109667 +109668 +109669 +109670 +109671 +109696 +109697 +109698 +109699 +109700 +109701 +109702 +109703 +109728 +109729 +109730 +109731 +109732 +109733 +109734 +109735 +109760 +109761 +109762 +109763 +109764 +109765 +109766 +109767 +109792 +109793 +109794 +109795 +109796 +109797 +109798 +109799 +109824 +109825 +109826 +109827 +109828 +109829 +109830 +109831 +109856 +109857 +109858 +109859 +109860 +109861 +109862 +109863 +109888 +109889 +109890 +109891 +109892 +109893 +109894 +109895 +109920 +109921 +109922 +109923 +109924 +109925 +109926 +109927 +109952 +109953 +109954 +109955 +109956 +109957 +109958 +109959 +109984 +109985 +109986 +109987 +109988 +109989 +109990 +109991 +110016 +110017 +110018 +110019 +110020 +110021 +110022 +110023 +110048 +110049 +110050 +110051 +110052 +110053 +110054 +110055 +110080 +110081 +110082 +110083 +110084 +110085 +110086 +110087 +110112 +110113 +110114 +110115 +110116 +110117 +110118 +110119 +110144 +110145 +110146 +110147 +110148 +110149 +110150 +110151 +110176 +110177 +110178 +110179 +110180 +110181 +110182 +110183 +110208 +110209 +110210 +110211 +110212 +110213 +110214 +110215 +110240 +110241 +110242 +110243 +110244 +110245 +110246 +110247 +110272 +110273 +110274 +110275 +110276 +110277 +110278 +110279 +110304 +110305 +110306 +110307 +110308 +110309 +110310 +110311 +110336 +110337 +110338 +110339 +110340 +110341 +110342 +110343 +110368 +110369 +110370 +110371 +110372 +110373 +110374 +110375 +110400 +110401 +110402 +110403 +110404 +110405 +110406 +110407 +110432 +110433 +110434 +110435 +110436 +110437 +110438 +110439 +110464 +110465 +110466 +110467 +110468 +110469 +110470 +110471 +110496 +110497 +110498 +110499 +110500 +110501 +110502 +110503 +110528 +110529 +110530 +110531 +110532 +110533 +110534 +110535 +110560 +110561 +110562 +110563 +110564 +110565 +110566 +110567 +110592 +110593 +110594 +110595 +110596 +110597 +110598 +110599 +110624 +110625 +110626 +110627 +110628 +110629 +110630 +110631 +110656 +110657 +110658 +110659 +110660 +110661 +110662 +110663 +110688 +110689 +110690 +110691 +110692 +110693 +110694 +110695 +110720 +110721 +110722 +110723 +110724 +110725 +110726 +110727 +110752 +110753 +110754 +110755 +110756 +110757 +110758 +110759 +110784 +110785 +110786 +110787 +110788 +110789 +110790 +110791 +110816 +110817 +110818 +110819 +110820 +110821 +110822 +110823 +110848 +110849 +110850 +110851 +110852 +110853 +110854 +110855 +110880 +110881 +110882 +110883 +110884 +110885 +110886 +110887 +110912 +110913 +110914 +110915 +110916 +110917 +110918 +110919 +110944 +110945 +110946 +110947 +110948 +110949 +110950 +110951 +110976 +110977 +110978 +110979 +110980 +110981 +110982 +110983 +111008 +111009 +111010 +111011 +111012 +111013 +111014 +111015 +111040 +111041 +111042 +111043 +111044 +111045 +111046 +111047 +111072 +111073 +111074 +111075 +111076 +111077 +111078 +111079 +111104 +111105 +111106 +111107 +111108 +111109 +111110 +111111 +111136 +111137 +111138 +111139 +111140 +111141 +111142 +111143 +111168 +111169 +111170 +111171 +111172 +111173 +111174 +111175 +111200 +111201 +111202 +111203 +111204 +111205 +111206 +111207 +111232 +111233 +111234 +111235 +111236 +111237 +111238 +111239 +111264 +111265 +111266 +111267 +111268 +111269 +111270 +111271 +111296 +111297 +111298 +111299 +111300 +111301 +111302 +111303 +111328 +111329 +111330 +111331 +111332 +111333 +111334 +111335 +111360 +111361 +111362 +111363 +111364 +111365 +111366 +111367 +111392 +111393 +111394 +111395 +111396 +111397 +111398 +111399 +111424 +111425 +111426 +111427 +111428 +111429 +111430 +111431 +111456 +111457 +111458 +111459 +111460 +111461 +111462 +111463 +111488 +111489 +111490 +111491 +111492 +111493 +111494 +111495 +111520 +111521 +111522 +111523 +111524 +111525 +111526 +111527 +111552 +111553 +111554 +111555 +111556 +111557 +111558 +111559 +111584 +111585 +111586 +111587 +111588 +111589 +111590 +111591 +111616 +111617 +111618 +111619 +111620 +111621 +111622 +111623 +111648 +111649 +111650 +111651 +111652 +111653 +111654 +111655 +111680 +111681 +111682 +111683 +111684 +111685 +111686 +111687 +111712 +111713 +111714 +111715 +111716 +111717 +111718 +111719 +111744 +111745 +111746 +111747 +111748 +111749 +111750 +111751 +111776 +111777 +111778 +111779 +111780 +111781 +111782 +111783 +111808 +111809 +111810 +111811 +111812 +111813 +111814 +111815 +111840 +111841 +111842 +111843 +111844 +111845 +111846 +111847 +111872 +111873 +111874 +111875 +111876 +111877 +111878 +111879 +111904 +111905 +111906 +111907 +111908 +111909 +111910 +111911 +111936 +111937 +111938 +111939 +111940 +111941 +111942 +111943 +111968 +111969 +111970 +111971 +111972 +111973 +111974 +111975 +112000 +112001 +112002 +112003 +112004 +112005 +112006 +112007 +112032 +112033 +112034 +112035 +112036 +112037 +112038 +112039 +112064 +112065 +112066 +112067 +112068 +112069 +112070 +112071 +112096 +112097 +112098 +112099 +112100 +112101 +112102 +112103 +112128 +112129 +112130 +112131 +112132 +112133 +112134 +112135 +112160 +112161 +112162 +112163 +112164 +112165 +112166 +112167 +112192 +112193 +112194 +112195 +112196 +112197 +112198 +112199 +112224 +112225 +112226 +112227 +112228 +112229 +112230 +112231 +112256 +112257 +112258 +112259 +112260 +112261 +112262 +112263 +112288 +112289 +112290 +112291 +112292 +112293 +112294 +112295 +112320 +112321 +112322 +112323 +112324 +112325 +112326 +112327 +112352 +112353 +112354 +112355 +112356 +112357 +112358 +112359 +112384 +112385 +112386 +112387 +112388 +112389 +112390 +112391 +112416 +112417 +112418 +112419 +112420 +112421 +112422 +112423 +112448 +112449 +112450 +112451 +112452 +112453 +112454 +112455 +112480 +112481 +112482 +112483 +112484 +112485 +112486 +112487 +112512 +112513 +112514 +112515 +112516 +112517 +112518 +112519 +112544 +112545 +112546 +112547 +112548 +112549 +112550 +112551 +112576 +112577 +112578 +112579 +112580 +112581 +112582 +112583 +112608 +112609 +112610 +112611 +112612 +112613 +112614 +112615 +112640 +112641 +112642 +112643 +112644 +112645 +112646 +112647 +112672 +112673 +112674 +112675 +112676 +112677 +112678 +112679 +112704 +112705 +112706 +112707 +112708 +112709 +112710 +112711 +112736 +112737 +112738 +112739 +112740 +112741 +112742 +112743 +112768 +112769 +112770 +112771 +112772 +112773 +112774 +112775 +112800 +112801 +112802 +112803 +112804 +112805 +112806 +112807 +112832 +112833 +112834 +112835 +112836 +112837 +112838 +112839 +112864 +112865 +112866 +112867 +112868 +112869 +112870 +112871 +112896 +112897 +112898 +112899 +112900 +112901 +112902 +112903 +112928 +112929 +112930 +112931 +112932 +112933 +112934 +112935 +112960 +112961 +112962 +112963 +112964 +112965 +112966 +112967 +112992 +112993 +112994 +112995 +112996 +112997 +112998 +112999 +113024 +113025 +113026 +113027 +113028 +113029 +113030 +113031 +113056 +113057 +113058 +113059 +113060 +113061 +113062 +113063 +113088 +113089 +113090 +113091 +113092 +113093 +113094 +113095 +113120 +113121 +113122 +113123 +113124 +113125 +113126 +113127 +113152 +113153 +113154 +113155 +113156 +113157 +113158 +113159 +113184 +113185 +113186 +113187 +113188 +113189 +113190 +113191 +113216 +113217 +113218 +113219 +113220 +113221 +113222 +113223 +113248 +113249 +113250 +113251 +113252 +113253 +113254 +113255 +113280 +113281 +113282 +113283 +113284 +113285 +113286 +113287 +113312 +113313 +113314 +113315 +113316 +113317 +113318 +113319 +113344 +113345 +113346 +113347 +113348 +113349 +113350 +113351 +113376 +113377 +113378 +113379 +113380 +113381 +113382 +113383 +113408 +113409 +113410 +113411 +113412 +113413 +113414 +113415 +113440 +113441 +113442 +113443 +113444 +113445 +113446 +113447 +113472 +113473 +113474 +113475 +113476 +113477 +113478 +113479 +113504 +113505 +113506 +113507 +113508 +113509 +113510 +113511 +113536 +113537 +113538 +113539 +113540 +113541 +113542 +113543 +113568 +113569 +113570 +113571 +113572 +113573 +113574 +113575 +113600 +113601 +113602 +113603 +113604 +113605 +113606 +113607 +113632 +113633 +113634 +113635 +113636 +113637 +113638 +113639 +113664 +113665 +113666 +113667 +113668 +113669 +113670 +113671 +113696 +113697 +113698 +113699 +113700 +113701 +113702 +113703 +113728 +113729 +113730 +113731 +113732 +113733 +113734 +113735 +113760 +113761 +113762 +113763 +113764 +113765 +113766 +113767 +113792 +113793 +113794 +113795 +113796 +113797 +113798 +113799 +113824 +113825 +113826 +113827 +113828 +113829 +113830 +113831 +113856 +113857 +113858 +113859 +113860 +113861 +113862 +113863 +113888 +113889 +113890 +113891 +113892 +113893 +113894 +113895 +113920 +113921 +113922 +113923 +113924 +113925 +113926 +113927 +113952 +113953 +113954 +113955 +113956 +113957 +113958 +113959 +113984 +113985 +113986 +113987 +113988 +113989 +113990 +113991 +114016 +114017 +114018 +114019 +114020 +114021 +114022 +114023 +114048 +114049 +114050 +114051 +114052 +114053 +114054 +114055 +114080 +114081 +114082 +114083 +114084 +114085 +114086 +114087 +114112 +114113 +114114 +114115 +114116 +114117 +114118 +114119 +114144 +114145 +114146 +114147 +114148 +114149 +114150 +114151 +114176 +114177 +114178 +114179 +114180 +114181 +114182 +114183 +114208 +114209 +114210 +114211 +114212 +114213 +114214 +114215 +114240 +114241 +114242 +114243 +114244 +114245 +114246 +114247 +114272 +114273 +114274 +114275 +114276 +114277 +114278 +114279 +114304 +114305 +114306 +114307 +114308 +114309 +114310 +114311 +114336 +114337 +114338 +114339 +114340 +114341 +114342 +114343 +114368 +114369 +114370 +114371 +114372 +114373 +114374 +114375 +114400 +114401 +114402 +114403 +114404 +114405 +114406 +114407 +114432 +114433 +114434 +114435 +114436 +114437 +114438 +114439 +114464 +114465 +114466 +114467 +114468 +114469 +114470 +114471 +114496 +114497 +114498 +114499 +114500 +114501 +114502 +114503 +114528 +114529 +114530 +114531 +114532 +114533 +114534 +114535 +114560 +114561 +114562 +114563 +114564 +114565 +114566 +114567 +114592 +114593 +114594 +114595 +114596 +114597 +114598 +114599 +114624 +114625 +114626 +114627 +114628 +114629 +114630 +114631 +114656 +114657 +114658 +114659 +114660 +114661 +114662 +114663 +114688 +114689 +114690 +114691 +114692 +114693 +114694 +114695 +114720 +114721 +114722 +114723 +114724 +114725 +114726 +114727 +114752 +114753 +114754 +114755 +114756 +114757 +114758 +114759 +114784 +114785 +114786 +114787 +114788 +114789 +114790 +114791 +114816 +114817 +114818 +114819 +114820 +114821 +114822 +114823 +114848 +114849 +114850 +114851 +114852 +114853 +114854 +114855 +114880 +114881 +114882 +114883 +114884 +114885 +114886 +114887 +114912 +114913 +114914 +114915 +114916 +114917 +114918 +114919 +114944 +114945 +114946 +114947 +114948 +114949 +114950 +114951 +114976 +114977 +114978 +114979 +114980 +114981 +114982 +114983 +115008 +115009 +115010 +115011 +115012 +115013 +115014 +115015 +115040 +115041 +115042 +115043 +115044 +115045 +115046 +115047 +115072 +115073 +115074 +115075 +115076 +115077 +115078 +115079 +115104 +115105 +115106 +115107 +115108 +115109 +115110 +115111 +115136 +115137 +115138 +115139 +115140 +115141 +115142 +115143 +115168 +115169 +115170 +115171 +115172 +115173 +115174 +115175 +115200 +115201 +115202 +115203 +115204 +115205 +115206 +115207 +115232 +115233 +115234 +115235 +115236 +115237 +115238 +115239 +115264 +115265 +115266 +115267 +115268 +115269 +115270 +115271 +115296 +115297 +115298 +115299 +115300 +115301 +115302 +115303 +115328 +115329 +115330 +115331 +115332 +115333 +115334 +115335 +115360 +115361 +115362 +115363 +115364 +115365 +115366 +115367 +115392 +115393 +115394 +115395 +115396 +115397 +115398 +115399 +115424 +115425 +115426 +115427 +115428 +115429 +115430 +115431 +115456 +115457 +115458 +115459 +115460 +115461 +115462 +115463 +115488 +115489 +115490 +115491 +115492 +115493 +115494 +115495 +115520 +115521 +115522 +115523 +115524 +115525 +115526 +115527 +115552 +115553 +115554 +115555 +115556 +115557 +115558 +115559 +115584 +115585 +115586 +115587 +115588 +115589 +115590 +115591 +115616 +115617 +115618 +115619 +115620 +115621 +115622 +115623 +115648 +115649 +115650 +115651 +115652 +115653 +115654 +115655 +115680 +115681 +115682 +115683 +115684 +115685 +115686 +115687 +115712 +115713 +115714 +115715 +115716 +115717 +115718 +115719 +115744 +115745 +115746 +115747 +115748 +115749 +115750 +115751 +115776 +115777 +115778 +115779 +115780 +115781 +115782 +115783 +115808 +115809 +115810 +115811 +115812 +115813 +115814 +115815 +115840 +115841 +115842 +115843 +115844 +115845 +115846 +115847 +115872 +115873 +115874 +115875 +115876 +115877 +115878 +115879 +115904 +115905 +115906 +115907 +115908 +115909 +115910 +115911 +115936 +115937 +115938 +115939 +115940 +115941 +115942 +115943 +115968 +115969 +115970 +115971 +115972 +115973 +115974 +115975 +116000 +116001 +116002 +116003 +116004 +116005 +116006 +116007 +116032 +116033 +116034 +116035 +116036 +116037 +116038 +116039 +116064 +116065 +116066 +116067 +116068 +116069 +116070 +116071 +116096 +116097 +116098 +116099 +116100 +116101 +116102 +116103 +116128 +116129 +116130 +116131 +116132 +116133 +116134 +116135 +116160 +116161 +116162 +116163 +116164 +116165 +116166 +116167 +116192 +116193 +116194 +116195 +116196 +116197 +116198 +116199 +116224 +116225 +116226 +116227 +116228 +116229 +116230 +116231 +116256 +116257 +116258 +116259 +116260 +116261 +116262 +116263 +116288 +116289 +116290 +116291 +116292 +116293 +116294 +116295 +116320 +116321 +116322 +116323 +116324 +116325 +116326 +116327 +116352 +116353 +116354 +116355 +116356 +116357 +116358 +116359 +116384 +116385 +116386 +116387 +116388 +116389 +116390 +116391 +116416 +116417 +116418 +116419 +116420 +116421 +116422 +116423 +116448 +116449 +116450 +116451 +116452 +116453 +116454 +116455 +116480 +116481 +116482 +116483 +116484 +116485 +116486 +116487 +116512 +116513 +116514 +116515 +116516 +116517 +116518 +116519 +116544 +116545 +116546 +116547 +116548 +116549 +116550 +116551 +116576 +116577 +116578 +116579 +116580 +116581 +116582 +116583 +116608 +116609 +116610 +116611 +116612 +116613 +116614 +116615 +116640 +116641 +116642 +116643 +116644 +116645 +116646 +116647 +116672 +116673 +116674 +116675 +116676 +116677 +116678 +116679 +116704 +116705 +116706 +116707 +116708 +116709 +116710 +116711 +116736 +116737 +116738 +116739 +116740 +116741 +116742 +116743 +116768 +116769 +116770 +116771 +116772 +116773 +116774 +116775 +116800 +116801 +116802 +116803 +116804 +116805 +116806 +116807 +116832 +116833 +116834 +116835 +116836 +116837 +116838 +116839 +116864 +116865 +116866 +116867 +116868 +116869 +116870 +116871 +116896 +116897 +116898 +116899 +116900 +116901 +116902 +116903 +116928 +116929 +116930 +116931 +116932 +116933 +116934 +116935 +116960 +116961 +116962 +116963 +116964 +116965 +116966 +116967 +116992 +116993 +116994 +116995 +116996 +116997 +116998 +116999 +117024 +117025 +117026 +117027 +117028 +117029 +117030 +117031 +117056 +117057 +117058 +117059 +117060 +117061 +117062 +117063 +117088 +117089 +117090 +117091 +117092 +117093 +117094 +117095 +117120 +117121 +117122 +117123 +117124 +117125 +117126 +117127 +117152 +117153 +117154 +117155 +117156 +117157 +117158 +117159 +117184 +117185 +117186 +117187 +117188 +117189 +117190 +117191 +117216 +117217 +117218 +117219 +117220 +117221 +117222 +117223 +117248 +117249 +117250 +117251 +117252 +117253 +117254 +117255 +117280 +117281 +117282 +117283 +117284 +117285 +117286 +117287 +117312 +117313 +117314 +117315 +117316 +117317 +117318 +117319 +117344 +117345 +117346 +117347 +117348 +117349 +117350 +117351 +117376 +117377 +117378 +117379 +117380 +117381 +117382 +117383 +117408 +117409 +117410 +117411 +117412 +117413 +117414 +117415 +117440 +117441 +117442 +117443 +117444 +117445 +117446 +117447 +117472 +117473 +117474 +117475 +117476 +117477 +117478 +117479 +117504 +117505 +117506 +117507 +117508 +117509 +117510 +117511 +117536 +117537 +117538 +117539 +117540 +117541 +117542 +117543 +117568 +117569 +117570 +117571 +117572 +117573 +117574 +117575 +117600 +117601 +117602 +117603 +117604 +117605 +117606 +117607 +117632 +117633 +117634 +117635 +117636 +117637 +117638 +117639 +117664 +117665 +117666 +117667 +117668 +117669 +117670 +117671 +117696 +117697 +117698 +117699 +117700 +117701 +117702 +117703 +117728 +117729 +117730 +117731 +117732 +117733 +117734 +117735 +117760 +117761 +117762 +117763 +117764 +117765 +117766 +117767 +117792 +117793 +117794 +117795 +117796 +117797 +117798 +117799 +117824 +117825 +117826 +117827 +117828 +117829 +117830 +117831 +117856 +117857 +117858 +117859 +117860 +117861 +117862 +117863 +117888 +117889 +117890 +117891 +117892 +117893 +117894 +117895 +117920 +117921 +117922 +117923 +117924 +117925 +117926 +117927 +117952 +117953 +117954 +117955 +117956 +117957 +117958 +117959 +117984 +117985 +117986 +117987 +117988 +117989 +117990 +117991 +118016 +118017 +118018 +118019 +118020 +118021 +118022 +118023 +118048 +118049 +118050 +118051 +118052 +118053 +118054 +118055 +118080 +118081 +118082 +118083 +118084 +118085 +118086 +118087 +118112 +118113 +118114 +118115 +118116 +118117 +118118 +118119 +118144 +118145 +118146 +118147 +118148 +118149 +118150 +118151 +118176 +118177 +118178 +118179 +118180 +118181 +118182 +118183 +118208 +118209 +118210 +118211 +118212 +118213 +118214 +118215 +118240 +118241 +118242 +118243 +118244 +118245 +118246 +118247 +118272 +118273 +118274 +118275 +118276 +118277 +118278 +118279 +118304 +118305 +118306 +118307 +118308 +118309 +118310 +118311 +118336 +118337 +118338 +118339 +118340 +118341 +118342 +118343 +118368 +118369 +118370 +118371 +118372 +118373 +118374 +118375 +118400 +118401 +118402 +118403 +118404 +118405 +118406 +118407 +118432 +118433 +118434 +118435 +118436 +118437 +118438 +118439 +118464 +118465 +118466 +118467 +118468 +118469 +118470 +118471 +118496 +118497 +118498 +118499 +118500 +118501 +118502 +118503 +118528 +118529 +118530 +118531 +118532 +118533 +118534 +118535 +118560 +118561 +118562 +118563 +118564 +118565 +118566 +118567 +118592 +118593 +118594 +118595 +118596 +118597 +118598 +118599 +118624 +118625 +118626 +118627 +118628 +118629 +118630 +118631 +118656 +118657 +118658 +118659 +118660 +118661 +118662 +118663 +118688 +118689 +118690 +118691 +118692 +118693 +118694 +118695 +118720 +118721 +118722 +118723 +118724 +118725 +118726 +118727 +118752 +118753 +118754 +118755 +118756 +118757 +118758 +118759 +118784 +118785 +118786 +118787 +118788 +118789 +118790 +118791 +118816 +118817 +118818 +118819 +118820 +118821 +118822 +118823 +118848 +118849 +118850 +118851 +118852 +118853 +118854 +118855 +118880 +118881 +118882 +118883 +118884 +118885 +118886 +118887 +118912 +118913 +118914 +118915 +118916 +118917 +118918 +118919 +118944 +118945 +118946 +118947 +118948 +118949 +118950 +118951 +118976 +118977 +118978 +118979 +118980 +118981 +118982 +118983 +119008 +119009 +119010 +119011 +119012 +119013 +119014 +119015 +119040 +119041 +119042 +119043 +119044 +119045 +119046 +119047 +119072 +119073 +119074 +119075 +119076 +119077 +119078 +119079 +119104 +119105 +119106 +119107 +119108 +119109 +119110 +119111 +119136 +119137 +119138 +119139 +119140 +119141 +119142 +119143 +119168 +119169 +119170 +119171 +119172 +119173 +119174 +119175 +119200 +119201 +119202 +119203 +119204 +119205 +119206 +119207 +119232 +119233 +119234 +119235 +119236 +119237 +119238 +119239 +119264 +119265 +119266 +119267 +119268 +119269 +119270 +119271 +119296 +119297 +119298 +119299 +119300 +119301 +119302 +119303 +119328 +119329 +119330 +119331 +119332 +119333 +119334 +119335 +119360 +119361 +119362 +119363 +119364 +119365 +119366 +119367 +119392 +119393 +119394 +119395 +119396 +119397 +119398 +119399 +119424 +119425 +119426 +119427 +119428 +119429 +119430 +119431 +119456 +119457 +119458 +119459 +119460 +119461 +119462 +119463 +119488 +119489 +119490 +119491 +119492 +119493 +119494 +119495 +119520 +119521 +119522 +119523 +119524 +119525 +119526 +119527 +119552 +119553 +119554 +119555 +119556 +119557 +119558 +119559 +119584 +119585 +119586 +119587 +119588 +119589 +119590 +119591 +119616 +119617 +119618 +119619 +119620 +119621 +119622 +119623 +119648 +119649 +119650 +119651 +119652 +119653 +119654 +119655 +119680 +119681 +119682 +119683 +119684 +119685 +119686 +119687 +119712 +119713 +119714 +119715 +119716 +119717 +119718 +119719 +119744 +119745 +119746 +119747 +119748 +119749 +119750 +119751 +119776 +119777 +119778 +119779 +119780 +119781 +119782 +119783 +119808 +119809 +119810 +119811 +119812 +119813 +119814 +119815 +119840 +119841 +119842 +119843 +119844 +119845 +119846 +119847 +119872 +119873 +119874 +119875 +119876 +119877 +119878 +119879 +119904 +119905 +119906 +119907 +119908 +119909 +119910 +119911 +119936 +119937 +119938 +119939 +119940 +119941 +119942 +119943 +119968 +119969 +119970 +119971 +119972 +119973 +119974 +119975 +120000 +120001 +120002 +120003 +120004 +120005 +120006 +120007 +120032 +120033 +120034 +120035 +120036 +120037 +120038 +120039 +120064 +120065 +120066 +120067 +120068 +120069 +120070 +120071 +120096 +120097 +120098 +120099 +120100 +120101 +120102 +120103 +120128 +120129 +120130 +120131 +120132 +120133 +120134 +120135 +120160 +120161 +120162 +120163 +120164 +120165 +120166 +120167 +120192 +120193 +120194 +120195 +120196 +120197 +120198 +120199 +120224 +120225 +120226 +120227 +120228 +120229 +120230 +120231 +120256 +120257 +120258 +120259 +120260 +120261 +120262 +120263 +120288 +120289 +120290 +120291 +120292 +120293 +120294 +120295 +120320 +120321 +120322 +120323 +120324 +120325 +120326 +120327 +120352 +120353 +120354 +120355 +120356 +120357 +120358 +120359 +120384 +120385 +120386 +120387 +120388 +120389 +120390 +120391 +120416 +120417 +120418 +120419 +120420 +120421 +120422 +120423 +120448 +120449 +120450 +120451 +120452 +120453 +120454 +120455 +120480 +120481 +120482 +120483 +120484 +120485 +120486 +120487 +120512 +120513 +120514 +120515 +120516 +120517 +120518 +120519 +120544 +120545 +120546 +120547 +120548 +120549 +120550 +120551 +120576 +120577 +120578 +120579 +120580 +120581 +120582 +120583 +120608 +120609 +120610 +120611 +120612 +120613 +120614 +120615 +120640 +120641 +120642 +120643 +120644 +120645 +120646 +120647 +120672 +120673 +120674 +120675 +120676 +120677 +120678 +120679 +120704 +120705 +120706 +120707 +120708 +120709 +120710 +120711 +120736 +120737 +120738 +120739 +120740 +120741 +120742 +120743 +120768 +120769 +120770 +120771 +120772 +120773 +120774 +120775 +120800 +120801 +120802 +120803 +120804 +120805 +120806 +120807 +120832 +120833 +120834 +120835 +120836 +120837 +120838 +120839 +120864 +120865 +120866 +120867 +120868 +120869 +120870 +120871 +120896 +120897 +120898 +120899 +120900 +120901 +120902 +120903 +120928 +120929 +120930 +120931 +120932 +120933 +120934 +120935 +120960 +120961 +120962 +120963 +120964 +120965 +120966 +120967 +120992 +120993 +120994 +120995 +120996 +120997 +120998 +120999 +121024 +121025 +121026 +121027 +121028 +121029 +121030 +121031 +121056 +121057 +121058 +121059 +121060 +121061 +121062 +121063 +121088 +121089 +121090 +121091 +121092 +121093 +121094 +121095 +121120 +121121 +121122 +121123 +121124 +121125 +121126 +121127 +121152 +121153 +121154 +121155 +121156 +121157 +121158 +121159 +121184 +121185 +121186 +121187 +121188 +121189 +121190 +121191 +121216 +121217 +121218 +121219 +121220 +121221 +121222 +121223 +121248 +121249 +121250 +121251 +121252 +121253 +121254 +121255 +121280 +121281 +121282 +121283 +121284 +121285 +121286 +121287 +121312 +121313 +121314 +121315 +121316 +121317 +121318 +121319 +121344 +121345 +121346 +121347 +121348 +121349 +121350 +121351 +121376 +121377 +121378 +121379 +121380 +121381 +121382 +121383 +121408 +121409 +121410 +121411 +121412 +121413 +121414 +121415 +121440 +121441 +121442 +121443 +121444 +121445 +121446 +121447 +121472 +121473 +121474 +121475 +121476 +121477 +121478 +121479 +121504 +121505 +121506 +121507 +121508 +121509 +121510 +121511 +121536 +121537 +121538 +121539 +121540 +121541 +121542 +121543 +121568 +121569 +121570 +121571 +121572 +121573 +121574 +121575 +121600 +121601 +121602 +121603 +121604 +121605 +121606 +121607 +121632 +121633 +121634 +121635 +121636 +121637 +121638 +121639 +121664 +121665 +121666 +121667 +121668 +121669 +121670 +121671 +121696 +121697 +121698 +121699 +121700 +121701 +121702 +121703 +121728 +121729 +121730 +121731 +121732 +121733 +121734 +121735 +121760 +121761 +121762 +121763 +121764 +121765 +121766 +121767 +121792 +121793 +121794 +121795 +121796 +121797 +121798 +121799 +121824 +121825 +121826 +121827 +121828 +121829 +121830 +121831 +121856 +121857 +121858 +121859 +121860 +121861 +121862 +121863 +121888 +121889 +121890 +121891 +121892 +121893 +121894 +121895 +121920 +121921 +121922 +121923 +121924 +121925 +121926 +121927 +121952 +121953 +121954 +121955 +121956 +121957 +121958 +121959 +121984 +121985 +121986 +121987 +121988 +121989 +121990 +121991 +122016 +122017 +122018 +122019 +122020 +122021 +122022 +122023 +122048 +122049 +122050 +122051 +122052 +122053 +122054 +122055 +122080 +122081 +122082 +122083 +122084 +122085 +122086 +122087 +122112 +122113 +122114 +122115 +122116 +122117 +122118 +122119 +122144 +122145 +122146 +122147 +122148 +122149 +122150 +122151 +122176 +122177 +122178 +122179 +122180 +122181 +122182 +122183 +122208 +122209 +122210 +122211 +122212 +122213 +122214 +122215 +122240 +122241 +122242 +122243 +122244 +122245 +122246 +122247 +122272 +122273 +122274 +122275 +122276 +122277 +122278 +122279 +122304 +122305 +122306 +122307 +122308 +122309 +122310 +122311 +122336 +122337 +122338 +122339 +122340 +122341 +122342 +122343 +122368 +122369 +122370 +122371 +122372 +122373 +122374 +122375 +122400 +122401 +122402 +122403 +122404 +122405 +122406 +122407 +122432 +122433 +122434 +122435 +122436 +122437 +122438 +122439 +122464 +122465 +122466 +122467 +122468 +122469 +122470 +122471 +122496 +122497 +122498 +122499 +122500 +122501 +122502 +122503 +122528 +122529 +122530 +122531 +122532 +122533 +122534 +122535 +122560 +122561 +122562 +122563 +122564 +122565 +122566 +122567 +122592 +122593 +122594 +122595 +122596 +122597 +122598 +122599 +122624 +122625 +122626 +122627 +122628 +122629 +122630 +122631 +122656 +122657 +122658 +122659 +122660 +122661 +122662 +122663 +122688 +122689 +122690 +122691 +122692 +122693 +122694 +122695 +122720 +122721 +122722 +122723 +122724 +122725 +122726 +122727 +122752 +122753 +122754 +122755 +122756 +122757 +122758 +122759 +122784 +122785 +122786 +122787 +122788 +122789 +122790 +122791 +122816 +122817 +122818 +122819 +122820 +122821 +122822 +122823 +122848 +122849 +122850 +122851 +122852 +122853 +122854 +122855 +122880 +122881 +122882 +122883 +122884 +122885 +122886 +122887 +122912 +122913 +122914 +122915 +122916 +122917 +122918 +122919 +122944 +122945 +122946 +122947 +122948 +122949 +122950 +122951 +122976 +122977 +122978 +122979 +122980 +122981 +122982 +122983 +123008 +123009 +123010 +123011 +123012 +123013 +123014 +123015 +123040 +123041 +123042 +123043 +123044 +123045 +123046 +123047 +123072 +123073 +123074 +123075 +123076 +123077 +123078 +123079 +123104 +123105 +123106 +123107 +123108 +123109 +123110 +123111 +123136 +123137 +123138 +123139 +123140 +123141 +123142 +123143 +123168 +123169 +123170 +123171 +123172 +123173 +123174 +123175 +123200 +123201 +123202 +123203 +123204 +123205 +123206 +123207 +123232 +123233 +123234 +123235 +123236 +123237 +123238 +123239 +123264 +123265 +123266 +123267 +123268 +123269 +123270 +123271 +123296 +123297 +123298 +123299 +123300 +123301 +123302 +123303 +123328 +123329 +123330 +123331 +123332 +123333 +123334 +123335 +123360 +123361 +123362 +123363 +123364 +123365 +123366 +123367 +123392 +123393 +123394 +123395 +123396 +123397 +123398 +123399 +123424 +123425 +123426 +123427 +123428 +123429 +123430 +123431 +123456 +123457 +123458 +123459 +123460 +123461 +123462 +123463 +123488 +123489 +123490 +123491 +123492 +123493 +123494 +123495 +123520 +123521 +123522 +123523 +123524 +123525 +123526 +123527 +123552 +123553 +123554 +123555 +123556 +123557 +123558 +123559 +123584 +123585 +123586 +123587 +123588 +123589 +123590 +123591 +123616 +123617 +123618 +123619 +123620 +123621 +123622 +123623 +123648 +123649 +123650 +123651 +123652 +123653 +123654 +123655 +123680 +123681 +123682 +123683 +123684 +123685 +123686 +123687 +123712 +123713 +123714 +123715 +123716 +123717 +123718 +123719 +123744 +123745 +123746 +123747 +123748 +123749 +123750 +123751 +123776 +123777 +123778 +123779 +123780 +123781 +123782 +123783 +123808 +123809 +123810 +123811 +123812 +123813 +123814 +123815 +123840 +123841 +123842 +123843 +123844 +123845 +123846 +123847 +123872 +123873 +123874 +123875 +123876 +123877 +123878 +123879 +123904 +123905 +123906 +123907 +123908 +123909 +123910 +123911 +123936 +123937 +123938 +123939 +123940 +123941 +123942 +123943 +123968 +123969 +123970 +123971 +123972 +123973 +123974 +123975 +124000 +124001 +124002 +124003 +124004 +124005 +124006 +124007 +124032 +124033 +124034 +124035 +124036 +124037 +124038 +124039 +124064 +124065 +124066 +124067 +124068 +124069 +124070 +124071 +124096 +124097 +124098 +124099 +124100 +124101 +124102 +124103 +124128 +124129 +124130 +124131 +124132 +124133 +124134 +124135 +124160 +124161 +124162 +124163 +124164 +124165 +124166 +124167 +124192 +124193 +124194 +124195 +124196 +124197 +124198 +124199 +124224 +124225 +124226 +124227 +124228 +124229 +124230 +124231 +124256 +124257 +124258 +124259 +124260 +124261 +124262 +124263 +124288 +124289 +124290 +124291 +124292 +124293 +124294 +124295 +124320 +124321 +124322 +124323 +124324 +124325 +124326 +124327 +124352 +124353 +124354 +124355 +124356 +124357 +124358 +124359 +124384 +124385 +124386 +124387 +124388 +124389 +124390 +124391 +124416 +124417 +124418 +124419 +124420 +124421 +124422 +124423 +124448 +124449 +124450 +124451 +124452 +124453 +124454 +124455 +124480 +124481 +124482 +124483 +124484 +124485 +124486 +124487 +124512 +124513 +124514 +124515 +124516 +124517 +124518 +124519 +124544 +124545 +124546 +124547 +124548 +124549 +124550 +124551 +124576 +124577 +124578 +124579 +124580 +124581 +124582 +124583 +124608 +124609 +124610 +124611 +124612 +124613 +124614 +124615 +124640 +124641 +124642 +124643 +124644 +124645 +124646 +124647 +124672 +124673 +124674 +124675 +124676 +124677 +124678 +124679 +124704 +124705 +124706 +124707 +124708 +124709 +124710 +124711 +124736 +124737 +124738 +124739 +124740 +124741 +124742 +124743 +124768 +124769 +124770 +124771 +124772 +124773 +124774 +124775 +124800 +124801 +124802 +124803 +124804 +124805 +124806 +124807 +124832 +124833 +124834 +124835 +124836 +124837 +124838 +124839 +124864 +124865 +124866 +124867 +124868 +124869 +124870 +124871 +124896 +124897 +124898 +124899 +124900 +124901 +124902 +124903 +124928 +124929 +124930 +124931 +124932 +124933 +124934 +124935 +124960 +124961 +124962 +124963 +124964 +124965 +124966 +124967 +124992 +124993 +124994 +124995 +124996 +124997 +124998 +124999 +125024 +125025 +125026 +125027 +125028 +125029 +125030 +125031 +125056 +125057 +125058 +125059 +125060 +125061 +125062 +125063 +125088 +125089 +125090 +125091 +125092 +125093 +125094 +125095 +125120 +125121 +125122 +125123 +125124 +125125 +125126 +125127 +125152 +125153 +125154 +125155 +125156 +125157 +125158 +125159 +125184 +125185 +125186 +125187 +125188 +125189 +125190 +125191 +125216 +125217 +125218 +125219 +125220 +125221 +125222 +125223 +125248 +125249 +125250 +125251 +125252 +125253 +125254 +125255 +125280 +125281 +125282 +125283 +125284 +125285 +125286 +125287 +125312 +125313 +125314 +125315 +125316 +125317 +125318 +125319 +125344 +125345 +125346 +125347 +125348 +125349 +125350 +125351 +125376 +125377 +125378 +125379 +125380 +125381 +125382 +125383 +125408 +125409 +125410 +125411 +125412 +125413 +125414 +125415 +125440 +125441 +125442 +125443 +125444 +125445 +125446 +125447 +125472 +125473 +125474 +125475 +125476 +125477 +125478 +125479 +125504 +125505 +125506 +125507 +125508 +125509 +125510 +125511 +125536 +125537 +125538 +125539 +125540 +125541 +125542 +125543 +125568 +125569 +125570 +125571 +125572 +125573 +125574 +125575 +125600 +125601 +125602 +125603 +125604 +125605 +125606 +125607 +125632 +125633 +125634 +125635 +125636 +125637 +125638 +125639 +125664 +125665 +125666 +125667 +125668 +125669 +125670 +125671 +125696 +125697 +125698 +125699 +125700 +125701 +125702 +125703 +125728 +125729 +125730 +125731 +125732 +125733 +125734 +125735 +125760 +125761 +125762 +125763 +125764 +125765 +125766 +125767 +125792 +125793 +125794 +125795 +125796 +125797 +125798 +125799 +125824 +125825 +125826 +125827 +125828 +125829 +125830 +125831 +125856 +125857 +125858 +125859 +125860 +125861 +125862 +125863 +125888 +125889 +125890 +125891 +125892 +125893 +125894 +125895 +125920 +125921 +125922 +125923 +125924 +125925 +125926 +125927 +125952 +125953 +125954 +125955 +125956 +125957 +125958 +125959 +125984 +125985 +125986 +125987 +125988 +125989 +125990 +125991 +126016 +126017 +126018 +126019 +126020 +126021 +126022 +126023 +126048 +126049 +126050 +126051 +126052 +126053 +126054 +126055 +126080 +126081 +126082 +126083 +126084 +126085 +126086 +126087 +126112 +126113 +126114 +126115 +126116 +126117 +126118 +126119 +126144 +126145 +126146 +126147 +126148 +126149 +126150 +126151 +126176 +126177 +126178 +126179 +126180 +126181 +126182 +126183 +126208 +126209 +126210 +126211 +126212 +126213 +126214 +126215 +126240 +126241 +126242 +126243 +126244 +126245 +126246 +126247 +126272 +126273 +126274 +126275 +126276 +126277 +126278 +126279 +126304 +126305 +126306 +126307 +126308 +126309 +126310 +126311 +126336 +126337 +126338 +126339 +126340 +126341 +126342 +126343 +126368 +126369 +126370 +126371 +126372 +126373 +126374 +126375 +126400 +126401 +126402 +126403 +126404 +126405 +126406 +126407 +126432 +126433 +126434 +126435 +126436 +126437 +126438 +126439 +126464 +126465 +126466 +126467 +126468 +126469 +126470 +126471 +126496 +126497 +126498 +126499 +126500 +126501 +126502 +126503 +126528 +126529 +126530 +126531 +126532 +126533 +126534 +126535 +126560 +126561 +126562 +126563 +126564 +126565 +126566 +126567 +126592 +126593 +126594 +126595 +126596 +126597 +126598 +126599 +126624 +126625 +126626 +126627 +126628 +126629 +126630 +126631 +126656 +126657 +126658 +126659 +126660 +126661 +126662 +126663 +126688 +126689 +126690 +126691 +126692 +126693 +126694 +126695 +126720 +126721 +126722 +126723 +126724 +126725 +126726 +126727 +126752 +126753 +126754 +126755 +126756 +126757 +126758 +126759 +126784 +126785 +126786 +126787 +126788 +126789 +126790 +126791 +126816 +126817 +126818 +126819 +126820 +126821 +126822 +126823 +126848 +126849 +126850 +126851 +126852 +126853 +126854 +126855 +126880 +126881 +126882 +126883 +126884 +126885 +126886 +126887 +126912 +126913 +126914 +126915 +126916 +126917 +126918 +126919 +126944 +126945 +126946 +126947 +126948 +126949 +126950 +126951 +126976 +126977 +126978 +126979 +126980 +126981 +126982 +126983 +127008 +127009 +127010 +127011 +127012 +127013 +127014 +127015 +127040 +127041 +127042 +127043 +127044 +127045 +127046 +127047 +127072 +127073 +127074 +127075 +127076 +127077 +127078 +127079 +127104 +127105 +127106 +127107 +127108 +127109 +127110 +127111 +127136 +127137 +127138 +127139 +127140 +127141 +127142 +127143 +127168 +127169 +127170 +127171 +127172 +127173 +127174 +127175 +127200 +127201 +127202 +127203 +127204 +127205 +127206 +127207 +127232 +127233 +127234 +127235 +127236 +127237 +127238 +127239 +127264 +127265 +127266 +127267 +127268 +127269 +127270 +127271 +127296 +127297 +127298 +127299 +127300 +127301 +127302 +127303 +127328 +127329 +127330 +127331 +127332 +127333 +127334 +127335 +127360 +127361 +127362 +127363 +127364 +127365 +127366 +127367 +127392 +127393 +127394 +127395 +127396 +127397 +127398 +127399 +127424 +127425 +127426 +127427 +127428 +127429 +127430 +127431 +127456 +127457 +127458 +127459 +127460 +127461 +127462 +127463 +127488 +127489 +127490 +127491 +127492 +127493 +127494 +127495 +127520 +127521 +127522 +127523 +127524 +127525 +127526 +127527 +127552 +127553 +127554 +127555 +127556 +127557 +127558 +127559 +127584 +127585 +127586 +127587 +127588 +127589 +127590 +127591 +127616 +127617 +127618 +127619 +127620 +127621 +127622 +127623 +127648 +127649 +127650 +127651 +127652 +127653 +127654 +127655 +127680 +127681 +127682 +127683 +127684 +127685 +127686 +127687 +127712 +127713 +127714 +127715 +127716 +127717 +127718 +127719 +127744 +127745 +127746 +127747 +127748 +127749 +127750 +127751 +127776 +127777 +127778 +127779 +127780 +127781 +127782 +127783 +127808 +127809 +127810 +127811 +127812 +127813 +127814 +127815 +127840 +127841 +127842 +127843 +127844 +127845 +127846 +127847 +127872 +127873 +127874 +127875 +127876 +127877 +127878 +127879 +127904 +127905 +127906 +127907 +127908 +127909 +127910 +127911 +127936 +127937 +127938 +127939 +127940 +127941 +127942 +127943 +127968 +127969 +127970 +127971 +127972 +127973 +127974 +127975 +128000 +128001 +128002 +128003 +128004 +128005 +128006 +128007 +128032 +128033 +128034 +128035 +128036 +128037 +128038 +128039 +128064 +128065 +128066 +128067 +128068 +128069 +128070 +128071 +128096 +128097 +128098 +128099 +128100 +128101 +128102 +128103 +128128 +128129 +128130 +128131 +128132 +128133 +128134 +128135 +128160 +128161 +128162 +128163 +128164 +128165 +128166 +128167 +128192 +128193 +128194 +128195 +128196 +128197 +128198 +128199 +128224 +128225 +128226 +128227 +128228 +128229 +128230 +128231 +128256 +128257 +128258 +128259 +128260 +128261 +128262 +128263 +128288 +128289 +128290 +128291 +128292 +128293 +128294 +128295 +128320 +128321 +128322 +128323 +128324 +128325 +128326 +128327 +128352 +128353 +128354 +128355 +128356 +128357 +128358 +128359 +128384 +128385 +128386 +128387 +128388 +128389 +128390 +128391 +128416 +128417 +128418 +128419 +128420 +128421 +128422 +128423 +128448 +128449 +128450 +128451 +128452 +128453 +128454 +128455 +128480 +128481 +128482 +128483 +128484 +128485 +128486 +128487 +128512 +128513 +128514 +128515 +128516 +128517 +128518 +128519 +128544 +128545 +128546 +128547 +128548 +128549 +128550 +128551 +128576 +128577 +128578 +128579 +128580 +128581 +128582 +128583 +128608 +128609 +128610 +128611 +128612 +128613 +128614 +128615 +128640 +128641 +128642 +128643 +128644 +128645 +128646 +128647 +128672 +128673 +128674 +128675 +128676 +128677 +128678 +128679 +128704 +128705 +128706 +128707 +128708 +128709 +128710 +128711 +128736 +128737 +128738 +128739 +128740 +128741 +128742 +128743 +128768 +128769 +128770 +128771 +128772 +128773 +128774 +128775 +128800 +128801 +128802 +128803 +128804 +128805 +128806 +128807 +128832 +128833 +128834 +128835 +128836 +128837 +128838 +128839 +128864 +128865 +128866 +128867 +128868 +128869 +128870 +128871 +128896 +128897 +128898 +128899 +128900 +128901 +128902 +128903 +128928 +128929 +128930 +128931 +128932 +128933 +128934 +128935 +128960 +128961 +128962 +128963 +128964 +128965 +128966 +128967 +128992 +128993 +128994 +128995 +128996 +128997 +128998 +128999 +129024 +129025 +129026 +129027 +129028 +129029 +129030 +129031 +129056 +129057 +129058 +129059 +129060 +129061 +129062 +129063 +129088 +129089 +129090 +129091 +129092 +129093 +129094 +129095 +129120 +129121 +129122 +129123 +129124 +129125 +129126 +129127 +129152 +129153 +129154 +129155 +129156 +129157 +129158 +129159 +129184 +129185 +129186 +129187 +129188 +129189 +129190 +129191 +129216 +129217 +129218 +129219 +129220 +129221 +129222 +129223 +129248 +129249 +129250 +129251 +129252 +129253 +129254 +129255 +129280 +129281 +129282 +129283 +129284 +129285 +129286 +129287 +129312 +129313 +129314 +129315 +129316 +129317 +129318 +129319 +129344 +129345 +129346 +129347 +129348 +129349 +129350 +129351 +129376 +129377 +129378 +129379 +129380 +129381 +129382 +129383 +129408 +129409 +129410 +129411 +129412 +129413 +129414 +129415 +129440 +129441 +129442 +129443 +129444 +129445 +129446 +129447 +129472 +129473 +129474 +129475 +129476 +129477 +129478 +129479 +129504 +129505 +129506 +129507 +129508 +129509 +129510 +129511 +129536 +129537 +129538 +129539 +129540 +129541 +129542 +129543 +129568 +129569 +129570 +129571 +129572 +129573 +129574 +129575 +129600 +129601 +129602 +129603 +129604 +129605 +129606 +129607 +129632 +129633 +129634 +129635 +129636 +129637 +129638 +129639 +129664 +129665 +129666 +129667 +129668 +129669 +129670 +129671 +129696 +129697 +129698 +129699 +129700 +129701 +129702 +129703 +129728 +129729 +129730 +129731 +129732 +129733 +129734 +129735 +129760 +129761 +129762 +129763 +129764 +129765 +129766 +129767 +129792 +129793 +129794 +129795 +129796 +129797 +129798 +129799 +129824 +129825 +129826 +129827 +129828 +129829 +129830 +129831 +129856 +129857 +129858 +129859 +129860 +129861 +129862 +129863 +129888 +129889 +129890 +129891 +129892 +129893 +129894 +129895 +129920 +129921 +129922 +129923 +129924 +129925 +129926 +129927 +129952 +129953 +129954 +129955 +129956 +129957 +129958 +129959 +129984 +129985 +129986 +129987 +129988 +129989 +129990 +129991 +130016 +130017 +130018 +130019 +130020 +130021 +130022 +130023 +130048 +130049 +130050 +130051 +130052 +130053 +130054 +130055 +130080 +130081 +130082 +130083 +130084 +130085 +130086 +130087 +130112 +130113 +130114 +130115 +130116 +130117 +130118 +130119 +130144 +130145 +130146 +130147 +130148 +130149 +130150 +130151 +130176 +130177 +130178 +130179 +130180 +130181 +130182 +130183 +130208 +130209 +130210 +130211 +130212 +130213 +130214 +130215 +130240 +130241 +130242 +130243 +130244 +130245 +130246 +130247 +130272 +130273 +130274 +130275 +130276 +130277 +130278 +130279 +130304 +130305 +130306 +130307 +130308 +130309 +130310 +130311 +130336 +130337 +130338 +130339 +130340 +130341 +130342 +130343 +130368 +130369 +130370 +130371 +130372 +130373 +130374 +130375 +130400 +130401 +130402 +130403 +130404 +130405 +130406 +130407 +130432 +130433 +130434 +130435 +130436 +130437 +130438 +130439 +130464 +130465 +130466 +130467 +130468 +130469 +130470 +130471 +130496 +130497 +130498 +130499 +130500 +130501 +130502 +130503 +130528 +130529 +130530 +130531 +130532 +130533 +130534 +130535 +130560 +130561 +130562 +130563 +130564 +130565 +130566 +130567 +130592 +130593 +130594 +130595 +130596 +130597 +130598 +130599 +130624 +130625 +130626 +130627 +130628 +130629 +130630 +130631 +130656 +130657 +130658 +130659 +130660 +130661 +130662 +130663 +130688 +130689 +130690 +130691 +130692 +130693 +130694 +130695 +130720 +130721 +130722 +130723 +130724 +130725 +130726 +130727 +130752 +130753 +130754 +130755 +130756 +130757 +130758 +130759 +130784 +130785 +130786 +130787 +130788 +130789 +130790 +130791 +130816 +130817 +130818 +130819 +130820 +130821 +130822 +130823 +130848 +130849 +130850 +130851 +130852 +130853 +130854 +130855 +130880 +130881 +130882 +130883 +130884 +130885 +130886 +130887 +130912 +130913 +130914 +130915 +130916 +130917 +130918 +130919 +130944 +130945 +130946 +130947 +130948 +130949 +130950 +130951 +130976 +130977 +130978 +130979 +130980 +130981 +130982 +130983 +131008 +131009 +131010 +131011 +131012 +131013 +131014 +131015 +131040 +131041 +131042 +131043 +131044 +131045 +131046 +131047 +131072 +131073 +131074 +131075 +131076 +131077 +131078 +131079 +131104 +131105 +131106 +131107 +131108 +131109 +131110 +131111 +131136 +131137 +131138 +131139 +131140 +131141 +131142 +131143 +131168 +131169 +131170 +131171 +131172 +131173 +131174 +131175 +131200 +131201 +131202 +131203 +131204 +131205 +131206 +131207 +131232 +131233 +131234 +131235 +131236 +131237 +131238 +131239 +131264 +131265 +131266 +131267 +131268 +131269 +131270 +131271 +131296 +131297 +131298 +131299 +131300 +131301 +131302 +131303 +131328 +131329 +131330 +131331 +131332 +131333 +131334 +131335 +131360 +131361 +131362 +131363 +131364 +131365 +131366 +131367 +131392 +131393 +131394 +131395 +131396 +131397 +131398 +131399 +131424 +131425 +131426 +131427 +131428 +131429 +131430 +131431 +131456 +131457 +131458 +131459 +131460 +131461 +131462 +131463 +131488 +131489 +131490 +131491 +131492 +131493 +131494 +131495 +131520 +131521 +131522 +131523 +131524 +131525 +131526 +131527 +131552 +131553 +131554 +131555 +131556 +131557 +131558 +131559 +131584 +131585 +131586 +131587 +131588 +131589 +131590 +131591 +131616 +131617 +131618 +131619 +131620 +131621 +131622 +131623 +131648 +131649 +131650 +131651 +131652 +131653 +131654 +131655 +131680 +131681 +131682 +131683 +131684 +131685 +131686 +131687 +131712 +131713 +131714 +131715 +131716 +131717 +131718 +131719 +131744 +131745 +131746 +131747 +131748 +131749 +131750 +131751 +131776 +131777 +131778 +131779 +131780 +131781 +131782 +131783 +131808 +131809 +131810 +131811 +131812 +131813 +131814 +131815 +131840 +131841 +131842 +131843 +131844 +131845 +131846 +131847 +131872 +131873 +131874 +131875 +131876 +131877 +131878 +131879 +131904 +131905 +131906 +131907 +131908 +131909 +131910 +131911 +131936 +131937 +131938 +131939 +131940 +131941 +131942 +131943 +131968 +131969 +131970 +131971 +131972 +131973 +131974 +131975 +132000 +132001 +132002 +132003 +132004 +132005 +132006 +132007 +132032 +132033 +132034 +132035 +132036 +132037 +132038 +132039 +132064 +132065 +132066 +132067 +132068 +132069 +132070 +132071 +132096 +132097 +132098 +132099 +132100 +132101 +132102 +132103 +132128 +132129 +132130 +132131 +132132 +132133 +132134 +132135 +132160 +132161 +132162 +132163 +132164 +132165 +132166 +132167 +132192 +132193 +132194 +132195 +132196 +132197 +132198 +132199 +132224 +132225 +132226 +132227 +132228 +132229 +132230 +132231 +132256 +132257 +132258 +132259 +132260 +132261 +132262 +132263 +132288 +132289 +132290 +132291 +132292 +132293 +132294 +132295 +132320 +132321 +132322 +132323 +132324 +132325 +132326 +132327 +132352 +132353 +132354 +132355 +132356 +132357 +132358 +132359 +132384 +132385 +132386 +132387 +132388 +132389 +132390 +132391 +132416 +132417 +132418 +132419 +132420 +132421 +132422 +132423 +132448 +132449 +132450 +132451 +132452 +132453 +132454 +132455 +132480 +132481 +132482 +132483 +132484 +132485 +132486 +132487 +132512 +132513 +132514 +132515 +132516 +132517 +132518 +132519 +132544 +132545 +132546 +132547 +132548 +132549 +132550 +132551 +132576 +132577 +132578 +132579 +132580 +132581 +132582 +132583 +132608 +132609 +132610 +132611 +132612 +132613 +132614 +132615 +132640 +132641 +132642 +132643 +132644 +132645 +132646 +132647 +132672 +132673 +132674 +132675 +132676 +132677 +132678 +132679 +132704 +132705 +132706 +132707 +132708 +132709 +132710 +132711 +132736 +132737 +132738 +132739 +132740 +132741 +132742 +132743 +132768 +132769 +132770 +132771 +132772 +132773 +132774 +132775 +132800 +132801 +132802 +132803 +132804 +132805 +132806 +132807 +132832 +132833 +132834 +132835 +132836 +132837 +132838 +132839 +132864 +132865 +132866 +132867 +132868 +132869 +132870 +132871 +132896 +132897 +132898 +132899 +132900 +132901 +132902 +132903 +132928 +132929 +132930 +132931 +132932 +132933 +132934 +132935 +132960 +132961 +132962 +132963 +132964 +132965 +132966 +132967 +132992 +132993 +132994 +132995 +132996 +132997 +132998 +132999 +133024 +133025 +133026 +133027 +133028 +133029 +133030 +133031 +133056 +133057 +133058 +133059 +133060 +133061 +133062 +133063 +133088 +133089 +133090 +133091 +133092 +133093 +133094 +133095 +133120 +133121 +133122 +133123 +133124 +133125 +133126 +133127 +133152 +133153 +133154 +133155 +133156 +133157 +133158 +133159 +133184 +133185 +133186 +133187 +133188 +133189 +133190 +133191 +133216 +133217 +133218 +133219 +133220 +133221 +133222 +133223 +133248 +133249 +133250 +133251 +133252 +133253 +133254 +133255 +133280 +133281 +133282 +133283 +133284 +133285 +133286 +133287 +133312 +133313 +133314 +133315 +133316 +133317 +133318 +133319 +133344 +133345 +133346 +133347 +133348 +133349 +133350 +133351 +133376 +133377 +133378 +133379 +133380 +133381 +133382 +133383 +133408 +133409 +133410 +133411 +133412 +133413 +133414 +133415 +133440 +133441 +133442 +133443 +133444 +133445 +133446 +133447 +133472 +133473 +133474 +133475 +133476 +133477 +133478 +133479 +133504 +133505 +133506 +133507 +133508 +133509 +133510 +133511 +133536 +133537 +133538 +133539 +133540 +133541 +133542 +133543 +133568 +133569 +133570 +133571 +133572 +133573 +133574 +133575 +133600 +133601 +133602 +133603 +133604 +133605 +133606 +133607 +133632 +133633 +133634 +133635 +133636 +133637 +133638 +133639 +133664 +133665 +133666 +133667 +133668 +133669 +133670 +133671 +133696 +133697 +133698 +133699 +133700 +133701 +133702 +133703 +133728 +133729 +133730 +133731 +133732 +133733 +133734 +133735 +133760 +133761 +133762 +133763 +133764 +133765 +133766 +133767 +133792 +133793 +133794 +133795 +133796 +133797 +133798 +133799 +133824 +133825 +133826 +133827 +133828 +133829 +133830 +133831 +133856 +133857 +133858 +133859 +133860 +133861 +133862 +133863 +133888 +133889 +133890 +133891 +133892 +133893 +133894 +133895 +133920 +133921 +133922 +133923 +133924 +133925 +133926 +133927 +133952 +133953 +133954 +133955 +133956 +133957 +133958 +133959 +133984 +133985 +133986 +133987 +133988 +133989 +133990 +133991 +134016 +134017 +134018 +134019 +134020 +134021 +134022 +134023 +134048 +134049 +134050 +134051 +134052 +134053 +134054 +134055 +134080 +134081 +134082 +134083 +134084 +134085 +134086 +134087 +134112 +134113 +134114 +134115 +134116 +134117 +134118 +134119 +134144 +134145 +134146 +134147 +134148 +134149 +134150 +134151 +134176 +134177 +134178 +134179 +134180 +134181 +134182 +134183 +134208 +134209 +134210 +134211 +134212 +134213 +134214 +134215 +134240 +134241 +134242 +134243 +134244 +134245 +134246 +134247 +134272 +134273 +134274 +134275 +134276 +134277 +134278 +134279 +134304 +134305 +134306 +134307 +134308 +134309 +134310 +134311 +134336 +134337 +134338 +134339 +134340 +134341 +134342 +134343 +134368 +134369 +134370 +134371 +134372 +134373 +134374 +134375 +134400 +134401 +134402 +134403 +134404 +134405 +134406 +134407 +134432 +134433 +134434 +134435 +134436 +134437 +134438 +134439 +134464 +134465 +134466 +134467 +134468 +134469 +134470 +134471 +134496 +134497 +134498 +134499 +134500 +134501 +134502 +134503 +134528 +134529 +134530 +134531 +134532 +134533 +134534 +134535 +134560 +134561 +134562 +134563 +134564 +134565 +134566 +134567 +134592 +134593 +134594 +134595 +134596 +134597 +134598 +134599 +134624 +134625 +134626 +134627 +134628 +134629 +134630 +134631 +134656 +134657 +134658 +134659 +134660 +134661 +134662 +134663 +134688 +134689 +134690 +134691 +134692 +134693 +134694 +134695 +134720 +134721 +134722 +134723 +134724 +134725 +134726 +134727 +134752 +134753 +134754 +134755 +134756 +134757 +134758 +134759 +134784 +134785 +134786 +134787 +134788 +134789 +134790 +134791 +134816 +134817 +134818 +134819 +134820 +134821 +134822 +134823 +134848 +134849 +134850 +134851 +134852 +134853 +134854 +134855 +134880 +134881 +134882 +134883 +134884 +134885 +134886 +134887 +134912 +134913 +134914 +134915 +134916 +134917 +134918 +134919 +134944 +134945 +134946 +134947 +134948 +134949 +134950 +134951 +134976 +134977 +134978 +134979 +134980 +134981 +134982 +134983 +135008 +135009 +135010 +135011 +135012 +135013 +135014 +135015 +135040 +135041 +135042 +135043 +135044 +135045 +135046 +135047 +135072 +135073 +135074 +135075 +135076 +135077 +135078 +135079 +135104 +135105 +135106 +135107 +135108 +135109 +135110 +135111 +135136 +135137 +135138 +135139 +135140 +135141 +135142 +135143 +135168 +135169 +135170 +135171 +135172 +135173 +135174 +135175 +135200 +135201 +135202 +135203 +135204 +135205 +135206 +135207 +135232 +135233 +135234 +135235 +135236 +135237 +135238 +135239 +135264 +135265 +135266 +135267 +135268 +135269 +135270 +135271 +135296 +135297 +135298 +135299 +135300 +135301 +135302 +135303 +135328 +135329 +135330 +135331 +135332 +135333 +135334 +135335 +135360 +135361 +135362 +135363 +135364 +135365 +135366 +135367 +135392 +135393 +135394 +135395 +135396 +135397 +135398 +135399 +135424 +135425 +135426 +135427 +135428 +135429 +135430 +135431 +135456 +135457 +135458 +135459 +135460 +135461 +135462 +135463 +135488 +135489 +135490 +135491 +135492 +135493 +135494 +135495 +135520 +135521 +135522 +135523 +135524 +135525 +135526 +135527 +135552 +135553 +135554 +135555 +135556 +135557 +135558 +135559 +135584 +135585 +135586 +135587 +135588 +135589 +135590 +135591 +135616 +135617 +135618 +135619 +135620 +135621 +135622 +135623 +135648 +135649 +135650 +135651 +135652 +135653 +135654 +135655 +135680 +135681 +135682 +135683 +135684 +135685 +135686 +135687 +135712 +135713 +135714 +135715 +135716 +135717 +135718 +135719 +135744 +135745 +135746 +135747 +135748 +135749 +135750 +135751 +135776 +135777 +135778 +135779 +135780 +135781 +135782 +135783 +135808 +135809 +135810 +135811 +135812 +135813 +135814 +135815 +135840 +135841 +135842 +135843 +135844 +135845 +135846 +135847 +135872 +135873 +135874 +135875 +135876 +135877 +135878 +135879 +135904 +135905 +135906 +135907 +135908 +135909 +135910 +135911 +135936 +135937 +135938 +135939 +135940 +135941 +135942 +135943 +135968 +135969 +135970 +135971 +135972 +135973 +135974 +135975 +136000 +136001 +136002 +136003 +136004 +136005 +136006 +136007 +136032 +136033 +136034 +136035 +136036 +136037 +136038 +136039 +136064 +136065 +136066 +136067 +136068 +136069 +136070 +136071 +136096 +136097 +136098 +136099 +136100 +136101 +136102 +136103 +136128 +136129 +136130 +136131 +136132 +136133 +136134 +136135 +136160 +136161 +136162 +136163 +136164 +136165 +136166 +136167 +136192 +136193 +136194 +136195 +136196 +136197 +136198 +136199 +136224 +136225 +136226 +136227 +136228 +136229 +136230 +136231 +136256 +136257 +136258 +136259 +136260 +136261 +136262 +136263 +136288 +136289 +136290 +136291 +136292 +136293 +136294 +136295 +136320 +136321 +136322 +136323 +136324 +136325 +136326 +136327 +136352 +136353 +136354 +136355 +136356 +136357 +136358 +136359 +136384 +136385 +136386 +136387 +136388 +136389 +136390 +136391 +136416 +136417 +136418 +136419 +136420 +136421 +136422 +136423 +136448 +136449 +136450 +136451 +136452 +136453 +136454 +136455 +136480 +136481 +136482 +136483 +136484 +136485 +136486 +136487 +136512 +136513 +136514 +136515 +136516 +136517 +136518 +136519 +136544 +136545 +136546 +136547 +136548 +136549 +136550 +136551 +136576 +136577 +136578 +136579 +136580 +136581 +136582 +136583 +136608 +136609 +136610 +136611 +136612 +136613 +136614 +136615 +136640 +136641 +136642 +136643 +136644 +136645 +136646 +136647 +136672 +136673 +136674 +136675 +136676 +136677 +136678 +136679 +136704 +136705 +136706 +136707 +136708 +136709 +136710 +136711 +136736 +136737 +136738 +136739 +136740 +136741 +136742 +136743 +136768 +136769 +136770 +136771 +136772 +136773 +136774 +136775 +136800 +136801 +136802 +136803 +136804 +136805 +136806 +136807 +136832 +136833 +136834 +136835 +136836 +136837 +136838 +136839 +136864 +136865 +136866 +136867 +136868 +136869 +136870 +136871 +136896 +136897 +136898 +136899 +136900 +136901 +136902 +136903 +136928 +136929 +136930 +136931 +136932 +136933 +136934 +136935 +136960 +136961 +136962 +136963 +136964 +136965 +136966 +136967 +136992 +136993 +136994 +136995 +136996 +136997 +136998 +136999 +137024 +137025 +137026 +137027 +137028 +137029 +137030 +137031 +137056 +137057 +137058 +137059 +137060 +137061 +137062 +137063 +137088 +137089 +137090 +137091 +137092 +137093 +137094 +137095 +137120 +137121 +137122 +137123 +137124 +137125 +137126 +137127 +137152 +137153 +137154 +137155 +137156 +137157 +137158 +137159 +137184 +137185 +137186 +137187 +137188 +137189 +137190 +137191 +137216 +137217 +137218 +137219 +137220 +137221 +137222 +137223 +137248 +137249 +137250 +137251 +137252 +137253 +137254 +137255 +137280 +137281 +137282 +137283 +137284 +137285 +137286 +137287 +137312 +137313 +137314 +137315 +137316 +137317 +137318 +137319 +137344 +137345 +137346 +137347 +137348 +137349 +137350 +137351 +137376 +137377 +137378 +137379 +137380 +137381 +137382 +137383 +137408 +137409 +137410 +137411 +137412 +137413 +137414 +137415 +137440 +137441 +137442 +137443 +137444 +137445 +137446 +137447 +137472 +137473 +137474 +137475 +137476 +137477 +137478 +137479 +137504 +137505 +137506 +137507 +137508 +137509 +137510 +137511 +137536 +137537 +137538 +137539 +137540 +137541 +137542 +137543 +137568 +137569 +137570 +137571 +137572 +137573 +137574 +137575 +137600 +137601 +137602 +137603 +137604 +137605 +137606 +137607 +137632 +137633 +137634 +137635 +137636 +137637 +137638 +137639 +137664 +137665 +137666 +137667 +137668 +137669 +137670 +137671 +137696 +137697 +137698 +137699 +137700 +137701 +137702 +137703 +137728 +137729 +137730 +137731 +137732 +137733 +137734 +137735 +137760 +137761 +137762 +137763 +137764 +137765 +137766 +137767 +137792 +137793 +137794 +137795 +137796 +137797 +137798 +137799 +137824 +137825 +137826 +137827 +137828 +137829 +137830 +137831 +137856 +137857 +137858 +137859 +137860 +137861 +137862 +137863 +137888 +137889 +137890 +137891 +137892 +137893 +137894 +137895 +137920 +137921 +137922 +137923 +137924 +137925 +137926 +137927 +137952 +137953 +137954 +137955 +137956 +137957 +137958 +137959 +137984 +137985 +137986 +137987 +137988 +137989 +137990 +137991 +138016 +138017 +138018 +138019 +138020 +138021 +138022 +138023 +138048 +138049 +138050 +138051 +138052 +138053 +138054 +138055 +138080 +138081 +138082 +138083 +138084 +138085 +138086 +138087 +138112 +138113 +138114 +138115 +138116 +138117 +138118 +138119 +138144 +138145 +138146 +138147 +138148 +138149 +138150 +138151 +138176 +138177 +138178 +138179 +138180 +138181 +138182 +138183 +138208 +138209 +138210 +138211 +138212 +138213 +138214 +138215 +138240 +138241 +138242 +138243 +138244 +138245 +138246 +138247 +138272 +138273 +138274 +138275 +138276 +138277 +138278 +138279 +138304 +138305 +138306 +138307 +138308 +138309 +138310 +138311 +138336 +138337 +138338 +138339 +138340 +138341 +138342 +138343 +138368 +138369 +138370 +138371 +138372 +138373 +138374 +138375 +138400 +138401 +138402 +138403 +138404 +138405 +138406 +138407 +138432 +138433 +138434 +138435 +138436 +138437 +138438 +138439 +138464 +138465 +138466 +138467 +138468 +138469 +138470 +138471 +138496 +138497 +138498 +138499 +138500 +138501 +138502 +138503 +138528 +138529 +138530 +138531 +138532 +138533 +138534 +138535 +138560 +138561 +138562 +138563 +138564 +138565 +138566 +138567 +138592 +138593 +138594 +138595 +138596 +138597 +138598 +138599 +138624 +138625 +138626 +138627 +138628 +138629 +138630 +138631 +138656 +138657 +138658 +138659 +138660 +138661 +138662 +138663 +138688 +138689 +138690 +138691 +138692 +138693 +138694 +138695 +138720 +138721 +138722 +138723 +138724 +138725 +138726 +138727 +138752 +138753 +138754 +138755 +138756 +138757 +138758 +138759 +138784 +138785 +138786 +138787 +138788 +138789 +138790 +138791 +138816 +138817 +138818 +138819 +138820 +138821 +138822 +138823 +138848 +138849 +138850 +138851 +138852 +138853 +138854 +138855 +138880 +138881 +138882 +138883 +138884 +138885 +138886 +138887 +138912 +138913 +138914 +138915 +138916 +138917 +138918 +138919 +138944 +138945 +138946 +138947 +138948 +138949 +138950 +138951 +138976 +138977 +138978 +138979 +138980 +138981 +138982 +138983 +139008 +139009 +139010 +139011 +139012 +139013 +139014 +139015 +139040 +139041 +139042 +139043 +139044 +139045 +139046 +139047 +139072 +139073 +139074 +139075 +139076 +139077 +139078 +139079 +139104 +139105 +139106 +139107 +139108 +139109 +139110 +139111 +139136 +139137 +139138 +139139 +139140 +139141 +139142 +139143 +139168 +139169 +139170 +139171 +139172 +139173 +139174 +139175 +139200 +139201 +139202 +139203 +139204 +139205 +139206 +139207 +139232 +139233 +139234 +139235 +139236 +139237 +139238 +139239 +139264 +139265 +139266 +139267 +139268 +139269 +139270 +139271 +139296 +139297 +139298 +139299 +139300 +139301 +139302 +139303 +139328 +139329 +139330 +139331 +139332 +139333 +139334 +139335 +139360 +139361 +139362 +139363 +139364 +139365 +139366 +139367 +139392 +139393 +139394 +139395 +139396 +139397 +139398 +139399 +139424 +139425 +139426 +139427 +139428 +139429 +139430 +139431 +139456 +139457 +139458 +139459 +139460 +139461 +139462 +139463 +139488 +139489 +139490 +139491 +139492 +139493 +139494 +139495 +139520 +139521 +139522 +139523 +139524 +139525 +139526 +139527 +139552 +139553 +139554 +139555 +139556 +139557 +139558 +139559 +139584 +139585 +139586 +139587 +139588 +139589 +139590 +139591 +139616 +139617 +139618 +139619 +139620 +139621 +139622 +139623 +139648 +139649 +139650 +139651 +139652 +139653 +139654 +139655 +139680 +139681 +139682 +139683 +139684 +139685 +139686 +139687 +139712 +139713 +139714 +139715 +139716 +139717 +139718 +139719 +139744 +139745 +139746 +139747 +139748 +139749 +139750 +139751 +139776 +139777 +139778 +139779 +139780 +139781 +139782 +139783 +139808 +139809 +139810 +139811 +139812 +139813 +139814 +139815 +139840 +139841 +139842 +139843 +139844 +139845 +139846 +139847 +139872 +139873 +139874 +139875 +139876 +139877 +139878 +139879 +139904 +139905 +139906 +139907 +139908 +139909 +139910 +139911 +139936 +139937 +139938 +139939 +139940 +139941 +139942 +139943 +139968 +139969 +139970 +139971 +139972 +139973 +139974 +139975 +140000 +140001 +140002 +140003 +140004 +140005 +140006 +140007 +140032 +140033 +140034 +140035 +140036 +140037 +140038 +140039 +140064 +140065 +140066 +140067 +140068 +140069 +140070 +140071 +140096 +140097 +140098 +140099 +140100 +140101 +140102 +140103 +140128 +140129 +140130 +140131 +140132 +140133 +140134 +140135 +140160 +140161 +140162 +140163 +140164 +140165 +140166 +140167 +140192 +140193 +140194 +140195 +140196 +140197 +140198 +140199 +140224 +140225 +140226 +140227 +140228 +140229 +140230 +140231 +140256 +140257 +140258 +140259 +140260 +140261 +140262 +140263 +140288 +140289 +140290 +140291 +140292 +140293 +140294 +140295 +140320 +140321 +140322 +140323 +140324 +140325 +140326 +140327 +140352 +140353 +140354 +140355 +140356 +140357 +140358 +140359 +140384 +140385 +140386 +140387 +140388 +140389 +140390 +140391 +140416 +140417 +140418 +140419 +140420 +140421 +140422 +140423 +140448 +140449 +140450 +140451 +140452 +140453 +140454 +140455 +140480 +140481 +140482 +140483 +140484 +140485 +140486 +140487 +140512 +140513 +140514 +140515 +140516 +140517 +140518 +140519 +140544 +140545 +140546 +140547 +140548 +140549 +140550 +140551 +140576 +140577 +140578 +140579 +140580 +140581 +140582 +140583 +140608 +140609 +140610 +140611 +140612 +140613 +140614 +140615 +140640 +140641 +140642 +140643 +140644 +140645 +140646 +140647 +140672 +140673 +140674 +140675 +140676 +140677 +140678 +140679 +140704 +140705 +140706 +140707 +140708 +140709 +140710 +140711 +140736 +140737 +140738 +140739 +140740 +140741 +140742 +140743 +140768 +140769 +140770 +140771 +140772 +140773 +140774 +140775 +140800 +140801 +140802 +140803 +140804 +140805 +140806 +140807 +140832 +140833 +140834 +140835 +140836 +140837 +140838 +140839 +140864 +140865 +140866 +140867 +140868 +140869 +140870 +140871 +140896 +140897 +140898 +140899 +140900 +140901 +140902 +140903 +140928 +140929 +140930 +140931 +140932 +140933 +140934 +140935 +140960 +140961 +140962 +140963 +140964 +140965 +140966 +140967 +140992 +140993 +140994 +140995 +140996 +140997 +140998 +140999 +141024 +141025 +141026 +141027 +141028 +141029 +141030 +141031 +141056 +141057 +141058 +141059 +141060 +141061 +141062 +141063 +141088 +141089 +141090 +141091 +141092 +141093 +141094 +141095 +141120 +141121 +141122 +141123 +141124 +141125 +141126 +141127 +141152 +141153 +141154 +141155 +141156 +141157 +141158 +141159 +141184 +141185 +141186 +141187 +141188 +141189 +141190 +141191 +141216 +141217 +141218 +141219 +141220 +141221 +141222 +141223 +141248 +141249 +141250 +141251 +141252 +141253 +141254 +141255 +141280 +141281 +141282 +141283 +141284 +141285 +141286 +141287 +141312 +141313 +141314 +141315 +141316 +141317 +141318 +141319 +141344 +141345 +141346 +141347 +141348 +141349 +141350 +141351 +141376 +141377 +141378 +141379 +141380 +141381 +141382 +141383 +141408 +141409 +141410 +141411 +141412 +141413 +141414 +141415 +141440 +141441 +141442 +141443 +141444 +141445 +141446 +141447 +141472 +141473 +141474 +141475 +141476 +141477 +141478 +141479 +141504 +141505 +141506 +141507 +141508 +141509 +141510 +141511 +141536 +141537 +141538 +141539 +141540 +141541 +141542 +141543 +141568 +141569 +141570 +141571 +141572 +141573 +141574 +141575 +141600 +141601 +141602 +141603 +141604 +141605 +141606 +141607 +141632 +141633 +141634 +141635 +141636 +141637 +141638 +141639 +141664 +141665 +141666 +141667 +141668 +141669 +141670 +141671 +141696 +141697 +141698 +141699 +141700 +141701 +141702 +141703 +141728 +141729 +141730 +141731 +141732 +141733 +141734 +141735 +141760 +141761 +141762 +141763 +141764 +141765 +141766 +141767 +141792 +141793 +141794 +141795 +141796 +141797 +141798 +141799 +141824 +141825 +141826 +141827 +141828 +141829 +141830 +141831 +141856 +141857 +141858 +141859 +141860 +141861 +141862 +141863 +141888 +141889 +141890 +141891 +141892 +141893 +141894 +141895 +141920 +141921 +141922 +141923 +141924 +141925 +141926 +141927 +141952 +141953 +141954 +141955 +141956 +141957 +141958 +141959 +141984 +141985 +141986 +141987 +141988 +141989 +141990 +141991 +142016 +142017 +142018 +142019 +142020 +142021 +142022 +142023 +142048 +142049 +142050 +142051 +142052 +142053 +142054 +142055 +142080 +142081 +142082 +142083 +142084 +142085 +142086 +142087 +142112 +142113 +142114 +142115 +142116 +142117 +142118 +142119 +142144 +142145 +142146 +142147 +142148 +142149 +142150 +142151 +142176 +142177 +142178 +142179 +142180 +142181 +142182 +142183 +142208 +142209 +142210 +142211 +142212 +142213 +142214 +142215 +142240 +142241 +142242 +142243 +142244 +142245 +142246 +142247 +142272 +142273 +142274 +142275 +142276 +142277 +142278 +142279 +142304 +142305 +142306 +142307 +142308 +142309 +142310 +142311 +142336 +142337 +142338 +142339 +142340 +142341 +142342 +142343 +142368 +142369 +142370 +142371 +142372 +142373 +142374 +142375 +142400 +142401 +142402 +142403 +142404 +142405 +142406 +142407 +142432 +142433 +142434 +142435 +142436 +142437 +142438 +142439 +142464 +142465 +142466 +142467 +142468 +142469 +142470 +142471 +142496 +142497 +142498 +142499 +142500 +142501 +142502 +142503 +142528 +142529 +142530 +142531 +142532 +142533 +142534 +142535 +142560 +142561 +142562 +142563 +142564 +142565 +142566 +142567 +142592 +142593 +142594 +142595 +142596 +142597 +142598 +142599 +142624 +142625 +142626 +142627 +142628 +142629 +142630 +142631 +142656 +142657 +142658 +142659 +142660 +142661 +142662 +142663 +142688 +142689 +142690 +142691 +142692 +142693 +142694 +142695 +142720 +142721 +142722 +142723 +142724 +142725 +142726 +142727 +142752 +142753 +142754 +142755 +142756 +142757 +142758 +142759 +142784 +142785 +142786 +142787 +142788 +142789 +142790 +142791 +142816 +142817 +142818 +142819 +142820 +142821 +142822 +142823 +142848 +142849 +142850 +142851 +142852 +142853 +142854 +142855 +142880 +142881 +142882 +142883 +142884 +142885 +142886 +142887 +142912 +142913 +142914 +142915 +142916 +142917 +142918 +142919 +142944 +142945 +142946 +142947 +142948 +142949 +142950 +142951 +142976 +142977 +142978 +142979 +142980 +142981 +142982 +142983 +143008 +143009 +143010 +143011 +143012 +143013 +143014 +143015 +143040 +143041 +143042 +143043 +143044 +143045 +143046 +143047 +143072 +143073 +143074 +143075 +143076 +143077 +143078 +143079 +143104 +143105 +143106 +143107 +143108 +143109 +143110 +143111 +143136 +143137 +143138 +143139 +143140 +143141 +143142 +143143 +143168 +143169 +143170 +143171 +143172 +143173 +143174 +143175 +143200 +143201 +143202 +143203 +143204 +143205 +143206 +143207 +143232 +143233 +143234 +143235 +143236 +143237 +143238 +143239 +143264 +143265 +143266 +143267 +143268 +143269 +143270 +143271 +143296 +143297 +143298 +143299 +143300 +143301 +143302 +143303 +143328 +143329 +143330 +143331 +143332 +143333 +143334 +143335 +143360 +143361 +143362 +143363 +143364 +143365 +143366 +143367 +143392 +143393 +143394 +143395 +143396 +143397 +143398 +143399 +143424 +143425 +143426 +143427 +143428 +143429 +143430 +143431 +143456 +143457 +143458 +143459 +143460 +143461 +143462 +143463 +143488 +143489 +143490 +143491 +143492 +143493 +143494 +143495 +143520 +143521 +143522 +143523 +143524 +143525 +143526 +143527 +143552 +143553 +143554 +143555 +143556 +143557 +143558 +143559 +143584 +143585 +143586 +143587 +143588 +143589 +143590 +143591 +143616 +143617 +143618 +143619 +143620 +143621 +143622 +143623 +143648 +143649 +143650 +143651 +143652 +143653 +143654 +143655 +143680 +143681 +143682 +143683 +143684 +143685 +143686 +143687 +143712 +143713 +143714 +143715 +143716 +143717 +143718 +143719 +143744 +143745 +143746 +143747 +143748 +143749 +143750 +143751 +143776 +143777 +143778 +143779 +143780 +143781 +143782 +143783 +143808 +143809 +143810 +143811 +143812 +143813 +143814 +143815 +143840 +143841 +143842 +143843 +143844 +143845 +143846 +143847 +143872 +143873 +143874 +143875 +143876 +143877 +143878 +143879 +143904 +143905 +143906 +143907 +143908 +143909 +143910 +143911 +143936 +143937 +143938 +143939 +143940 +143941 +143942 +143943 +143968 +143969 +143970 +143971 +143972 +143973 +143974 +143975 +144000 +144001 +144002 +144003 +144004 +144005 +144006 +144007 +144032 +144033 +144034 +144035 +144036 +144037 +144038 +144039 +144064 +144065 +144066 +144067 +144068 +144069 +144070 +144071 +144096 +144097 +144098 +144099 +144100 +144101 +144102 +144103 +144128 +144129 +144130 +144131 +144132 +144133 +144134 +144135 +144160 +144161 +144162 +144163 +144164 +144165 +144166 +144167 +144192 +144193 +144194 +144195 +144196 +144197 +144198 +144199 +144224 +144225 +144226 +144227 +144228 +144229 +144230 +144231 +144256 +144257 +144258 +144259 +144260 +144261 +144262 +144263 +144288 +144289 +144290 +144291 +144292 +144293 +144294 +144295 +144320 +144321 +144322 +144323 +144324 +144325 +144326 +144327 +144352 +144353 +144354 +144355 +144356 +144357 +144358 +144359 +144384 +144385 +144386 +144387 +144388 +144389 +144390 +144391 +144416 +144417 +144418 +144419 +144420 +144421 +144422 +144423 +144448 +144449 +144450 +144451 +144452 +144453 +144454 +144455 +144480 +144481 +144482 +144483 +144484 +144485 +144486 +144487 +144512 +144513 +144514 +144515 +144516 +144517 +144518 +144519 +144544 +144545 +144546 +144547 +144548 +144549 +144550 +144551 +144576 +144577 +144578 +144579 +144580 +144581 +144582 +144583 +144608 +144609 +144610 +144611 +144612 +144613 +144614 +144615 +144640 +144641 +144642 +144643 +144644 +144645 +144646 +144647 +144672 +144673 +144674 +144675 +144676 +144677 +144678 +144679 +144704 +144705 +144706 +144707 +144708 +144709 +144710 +144711 +144736 +144737 +144738 +144739 +144740 +144741 +144742 +144743 +144768 +144769 +144770 +144771 +144772 +144773 +144774 +144775 +144800 +144801 +144802 +144803 +144804 +144805 +144806 +144807 +144832 +144833 +144834 +144835 +144836 +144837 +144838 +144839 +144864 +144865 +144866 +144867 +144868 +144869 +144870 +144871 +144896 +144897 +144898 +144899 +144900 +144901 +144902 +144903 +144928 +144929 +144930 +144931 +144932 +144933 +144934 +144935 +144960 +144961 +144962 +144963 +144964 +144965 +144966 +144967 +144992 +144993 +144994 +144995 +144996 +144997 +144998 +144999 +145024 +145025 +145026 +145027 +145028 +145029 +145030 +145031 +145056 +145057 +145058 +145059 +145060 +145061 +145062 +145063 +145088 +145089 +145090 +145091 +145092 +145093 +145094 +145095 +145120 +145121 +145122 +145123 +145124 +145125 +145126 +145127 +145152 +145153 +145154 +145155 +145156 +145157 +145158 +145159 +145184 +145185 +145186 +145187 +145188 +145189 +145190 +145191 +145216 +145217 +145218 +145219 +145220 +145221 +145222 +145223 +145248 +145249 +145250 +145251 +145252 +145253 +145254 +145255 +145280 +145281 +145282 +145283 +145284 +145285 +145286 +145287 +145312 +145313 +145314 +145315 +145316 +145317 +145318 +145319 +145344 +145345 +145346 +145347 +145348 +145349 +145350 +145351 +145376 +145377 +145378 +145379 +145380 +145381 +145382 +145383 +145408 +145409 +145410 +145411 +145412 +145413 +145414 +145415 +145440 +145441 +145442 +145443 +145444 +145445 +145446 +145447 +145472 +145473 +145474 +145475 +145476 +145477 +145478 +145479 +145504 +145505 +145506 +145507 +145508 +145509 +145510 +145511 +145536 +145537 +145538 +145539 +145540 +145541 +145542 +145543 +145568 +145569 +145570 +145571 +145572 +145573 +145574 +145575 +145600 +145601 +145602 +145603 +145604 +145605 +145606 +145607 +145632 +145633 +145634 +145635 +145636 +145637 +145638 +145639 +145664 +145665 +145666 +145667 +145668 +145669 +145670 +145671 +145696 +145697 +145698 +145699 +145700 +145701 +145702 +145703 +145728 +145729 +145730 +145731 +145732 +145733 +145734 +145735 +145760 +145761 +145762 +145763 +145764 +145765 +145766 +145767 +145792 +145793 +145794 +145795 +145796 +145797 +145798 +145799 +145824 +145825 +145826 +145827 +145828 +145829 +145830 +145831 +145856 +145857 +145858 +145859 +145860 +145861 +145862 +145863 +145888 +145889 +145890 +145891 +145892 +145893 +145894 +145895 +145920 +145921 +145922 +145923 +145924 +145925 +145926 +145927 +145952 +145953 +145954 +145955 +145956 +145957 +145958 +145959 +145984 +145985 +145986 +145987 +145988 +145989 +145990 +145991 +146016 +146017 +146018 +146019 +146020 +146021 +146022 +146023 +146048 +146049 +146050 +146051 +146052 +146053 +146054 +146055 +146080 +146081 +146082 +146083 +146084 +146085 +146086 +146087 +146112 +146113 +146114 +146115 +146116 +146117 +146118 +146119 +146144 +146145 +146146 +146147 +146148 +146149 +146150 +146151 +146176 +146177 +146178 +146179 +146180 +146181 +146182 +146183 +146208 +146209 +146210 +146211 +146212 +146213 +146214 +146215 +146240 +146241 +146242 +146243 +146244 +146245 +146246 +146247 +146272 +146273 +146274 +146275 +146276 +146277 +146278 +146279 +146304 +146305 +146306 +146307 +146308 +146309 +146310 +146311 +146336 +146337 +146338 +146339 +146340 +146341 +146342 +146343 +146368 +146369 +146370 +146371 +146372 +146373 +146374 +146375 +146400 +146401 +146402 +146403 +146404 +146405 +146406 +146407 +146432 +146433 +146434 +146435 +146436 +146437 +146438 +146439 +146464 +146465 +146466 +146467 +146468 +146469 +146470 +146471 +146496 +146497 +146498 +146499 +146500 +146501 +146502 +146503 +146528 +146529 +146530 +146531 +146532 +146533 +146534 +146535 +146560 +146561 +146562 +146563 +146564 +146565 +146566 +146567 +146592 +146593 +146594 +146595 +146596 +146597 +146598 +146599 +146624 +146625 +146626 +146627 +146628 +146629 +146630 +146631 +146656 +146657 +146658 +146659 +146660 +146661 +146662 +146663 +146688 +146689 +146690 +146691 +146692 +146693 +146694 +146695 +146720 +146721 +146722 +146723 +146724 +146725 +146726 +146727 +146752 +146753 +146754 +146755 +146756 +146757 +146758 +146759 +146784 +146785 +146786 +146787 +146788 +146789 +146790 +146791 +146816 +146817 +146818 +146819 +146820 +146821 +146822 +146823 +146848 +146849 +146850 +146851 +146852 +146853 +146854 +146855 +146880 +146881 +146882 +146883 +146884 +146885 +146886 +146887 +146912 +146913 +146914 +146915 +146916 +146917 +146918 +146919 +146944 +146945 +146946 +146947 +146948 +146949 +146950 +146951 +146976 +146977 +146978 +146979 +146980 +146981 +146982 +146983 +147008 +147009 +147010 +147011 +147012 +147013 +147014 +147015 +147040 +147041 +147042 +147043 +147044 +147045 +147046 +147047 +147072 +147073 +147074 +147075 +147076 +147077 +147078 +147079 +147104 +147105 +147106 +147107 +147108 +147109 +147110 +147111 +147136 +147137 +147138 +147139 +147140 +147141 +147142 +147143 +147168 +147169 +147170 +147171 +147172 +147173 +147174 +147175 +147200 +147201 +147202 +147203 +147204 +147205 +147206 +147207 +147232 +147233 +147234 +147235 +147236 +147237 +147238 +147239 +147264 +147265 +147266 +147267 +147268 +147269 +147270 +147271 +147296 +147297 +147298 +147299 +147300 +147301 +147302 +147303 +147328 +147329 +147330 +147331 +147332 +147333 +147334 +147335 +147360 +147361 +147362 +147363 +147364 +147365 +147366 +147367 +147392 +147393 +147394 +147395 +147396 +147397 +147398 +147399 +147424 +147425 +147426 +147427 +147428 +147429 +147430 +147431 +147456 +147457 +147458 +147459 +147460 +147461 +147462 +147463 +147488 +147489 +147490 +147491 +147492 +147493 +147494 +147495 +147520 +147521 +147522 +147523 +147524 +147525 +147526 +147527 +147552 +147553 +147554 +147555 +147556 +147557 +147558 +147559 +147584 +147585 +147586 +147587 +147588 +147589 +147590 +147591 +147616 +147617 +147618 +147619 +147620 +147621 +147622 +147623 +147648 +147649 +147650 +147651 +147652 +147653 +147654 +147655 +147680 +147681 +147682 +147683 +147684 +147685 +147686 +147687 +147712 +147713 +147714 +147715 +147716 +147717 +147718 +147719 +147744 +147745 +147746 +147747 +147748 +147749 +147750 +147751 +147776 +147777 +147778 +147779 +147780 +147781 +147782 +147783 +147808 +147809 +147810 +147811 +147812 +147813 +147814 +147815 +147840 +147841 +147842 +147843 +147844 +147845 +147846 +147847 +147872 +147873 +147874 +147875 +147876 +147877 +147878 +147879 +147904 +147905 +147906 +147907 +147908 +147909 +147910 +147911 +147936 +147937 +147938 +147939 +147940 +147941 +147942 +147943 +147968 +147969 +147970 +147971 +147972 +147973 +147974 +147975 +148000 +148001 +148002 +148003 +148004 +148005 +148006 +148007 +148032 +148033 +148034 +148035 +148036 +148037 +148038 +148039 +148064 +148065 +148066 +148067 +148068 +148069 +148070 +148071 +148096 +148097 +148098 +148099 +148100 +148101 +148102 +148103 +148128 +148129 +148130 +148131 +148132 +148133 +148134 +148135 +148160 +148161 +148162 +148163 +148164 +148165 +148166 +148167 +148192 +148193 +148194 +148195 +148196 +148197 +148198 +148199 +148224 +148225 +148226 +148227 +148228 +148229 +148230 +148231 +148256 +148257 +148258 +148259 +148260 +148261 +148262 +148263 +148288 +148289 +148290 +148291 +148292 +148293 +148294 +148295 +148320 +148321 +148322 +148323 +148324 +148325 +148326 +148327 +148352 +148353 +148354 +148355 +148356 +148357 +148358 +148359 +148384 +148385 +148386 +148387 +148388 +148389 +148390 +148391 +148416 +148417 +148418 +148419 +148420 +148421 +148422 +148423 +148448 +148449 +148450 +148451 +148452 +148453 +148454 +148455 +148480 +148481 +148482 +148483 +148484 +148485 +148486 +148487 +148512 +148513 +148514 +148515 +148516 +148517 +148518 +148519 +148544 +148545 +148546 +148547 +148548 +148549 +148550 +148551 +148576 +148577 +148578 +148579 +148580 +148581 +148582 +148583 +148608 +148609 +148610 +148611 +148612 +148613 +148614 +148615 +148640 +148641 +148642 +148643 +148644 +148645 +148646 +148647 +148672 +148673 +148674 +148675 +148676 +148677 +148678 +148679 +148704 +148705 +148706 +148707 +148708 +148709 +148710 +148711 +148736 +148737 +148738 +148739 +148740 +148741 +148742 +148743 +148768 +148769 +148770 +148771 +148772 +148773 +148774 +148775 +148800 +148801 +148802 +148803 +148804 +148805 +148806 +148807 +148832 +148833 +148834 +148835 +148836 +148837 +148838 +148839 +148864 +148865 +148866 +148867 +148868 +148869 +148870 +148871 +148896 +148897 +148898 +148899 +148900 +148901 +148902 +148903 +148928 +148929 +148930 +148931 +148932 +148933 +148934 +148935 +148960 +148961 +148962 +148963 +148964 +148965 +148966 +148967 +148992 +148993 +148994 +148995 +148996 +148997 +148998 +148999 +149024 +149025 +149026 +149027 +149028 +149029 +149030 +149031 +149056 +149057 +149058 +149059 +149060 +149061 +149062 +149063 +149088 +149089 +149090 +149091 +149092 +149093 +149094 +149095 +149120 +149121 +149122 +149123 +149124 +149125 +149126 +149127 +149152 +149153 +149154 +149155 +149156 +149157 +149158 +149159 +149184 +149185 +149186 +149187 +149188 +149189 +149190 +149191 +149216 +149217 +149218 +149219 +149220 +149221 +149222 +149223 +149248 +149249 +149250 +149251 +149252 +149253 +149254 +149255 +149280 +149281 +149282 +149283 +149284 +149285 +149286 +149287 +149312 +149313 +149314 +149315 +149316 +149317 +149318 +149319 +149344 +149345 +149346 +149347 +149348 +149349 +149350 +149351 +149376 +149377 +149378 +149379 +149380 +149381 +149382 +149383 +149408 +149409 +149410 +149411 +149412 +149413 +149414 +149415 +149440 +149441 +149442 +149443 +149444 +149445 +149446 +149447 +149472 +149473 +149474 +149475 +149476 +149477 +149478 +149479 +149504 +149505 +149506 +149507 +149508 +149509 +149510 +149511 +149536 +149537 +149538 +149539 +149540 +149541 +149542 +149543 +149568 +149569 +149570 +149571 +149572 +149573 +149574 +149575 +149600 +149601 +149602 +149603 +149604 +149605 +149606 +149607 +149632 +149633 +149634 +149635 +149636 +149637 +149638 +149639 +149664 +149665 +149666 +149667 +149668 +149669 +149670 +149671 +149696 +149697 +149698 +149699 +149700 +149701 +149702 +149703 +149728 +149729 +149730 +149731 +149732 +149733 +149734 +149735 +149760 +149761 +149762 +149763 +149764 +149765 +149766 +149767 +149792 +149793 +149794 +149795 +149796 +149797 +149798 +149799 +149824 +149825 +149826 +149827 +149828 +149829 +149830 +149831 +149856 +149857 +149858 +149859 +149860 +149861 +149862 +149863 +149888 +149889 +149890 +149891 +149892 +149893 +149894 +149895 +149920 +149921 +149922 +149923 +149924 +149925 +149926 +149927 +149952 +149953 +149954 +149955 +149956 +149957 +149958 +149959 +149984 +149985 +149986 +149987 +149988 +149989 +149990 +149991 +150016 +150017 +150018 +150019 +150020 +150021 +150022 +150023 +150048 +150049 +150050 +150051 +150052 +150053 +150054 +150055 +150080 +150081 +150082 +150083 +150084 +150085 +150086 +150087 +150112 +150113 +150114 +150115 +150116 +150117 +150118 +150119 +150144 +150145 +150146 +150147 +150148 +150149 +150150 +150151 +150176 +150177 +150178 +150179 +150180 +150181 +150182 +150183 +150208 +150209 +150210 +150211 +150212 +150213 +150214 +150215 +150240 +150241 +150242 +150243 +150244 +150245 +150246 +150247 +150272 +150273 +150274 +150275 +150276 +150277 +150278 +150279 +150304 +150305 +150306 +150307 +150308 +150309 +150310 +150311 +150336 +150337 +150338 +150339 +150340 +150341 +150342 +150343 +150368 +150369 +150370 +150371 +150372 +150373 +150374 +150375 +150400 +150401 +150402 +150403 +150404 +150405 +150406 +150407 +150432 +150433 +150434 +150435 +150436 +150437 +150438 +150439 +150464 +150465 +150466 +150467 +150468 +150469 +150470 +150471 +150496 +150497 +150498 +150499 +150500 +150501 +150502 +150503 +150528 +150529 +150530 +150531 +150532 +150533 +150534 +150535 +150560 +150561 +150562 +150563 +150564 +150565 +150566 +150567 +150592 +150593 +150594 +150595 +150596 +150597 +150598 +150599 +150624 +150625 +150626 +150627 +150628 +150629 +150630 +150631 +150656 +150657 +150658 +150659 +150660 +150661 +150662 +150663 +150688 +150689 +150690 +150691 +150692 +150693 +150694 +150695 +150720 +150721 +150722 +150723 +150724 +150725 +150726 +150727 +150752 +150753 +150754 +150755 +150756 +150757 +150758 +150759 +150784 +150785 +150786 +150787 +150788 +150789 +150790 +150791 +150816 +150817 +150818 +150819 +150820 +150821 +150822 +150823 +150848 +150849 +150850 +150851 +150852 +150853 +150854 +150855 +150880 +150881 +150882 +150883 +150884 +150885 +150886 +150887 +150912 +150913 +150914 +150915 +150916 +150917 +150918 +150919 +150944 +150945 +150946 +150947 +150948 +150949 +150950 +150951 +150976 +150977 +150978 +150979 +150980 +150981 +150982 +150983 +151008 +151009 +151010 +151011 +151012 +151013 +151014 +151015 +151040 +151041 +151042 +151043 +151044 +151045 +151046 +151047 +151072 +151073 +151074 +151075 +151076 +151077 +151078 +151079 +151104 +151105 +151106 +151107 +151108 +151109 +151110 +151111 +151136 +151137 +151138 +151139 +151140 +151141 +151142 +151143 +151168 +151169 +151170 +151171 +151172 +151173 +151174 +151175 +151200 +151201 +151202 +151203 +151204 +151205 +151206 +151207 +151232 +151233 +151234 +151235 +151236 +151237 +151238 +151239 +151264 +151265 +151266 +151267 +151268 +151269 +151270 +151271 +151296 +151297 +151298 +151299 +151300 +151301 +151302 +151303 +151328 +151329 +151330 +151331 +151332 +151333 +151334 +151335 +151360 +151361 +151362 +151363 +151364 +151365 +151366 +151367 +151392 +151393 +151394 +151395 +151396 +151397 +151398 +151399 +151424 +151425 +151426 +151427 +151428 +151429 +151430 +151431 +151456 +151457 +151458 +151459 +151460 +151461 +151462 +151463 +151488 +151489 +151490 +151491 +151492 +151493 +151494 +151495 +151520 +151521 +151522 +151523 +151524 +151525 +151526 +151527 +151552 +151553 +151554 +151555 +151556 +151557 +151558 +151559 +151584 +151585 +151586 +151587 +151588 +151589 +151590 +151591 +151616 +151617 +151618 +151619 +151620 +151621 +151622 +151623 +151648 +151649 +151650 +151651 +151652 +151653 +151654 +151655 +151680 +151681 +151682 +151683 +151684 +151685 +151686 +151687 +151712 +151713 +151714 +151715 +151716 +151717 +151718 +151719 +151744 +151745 +151746 +151747 +151748 +151749 +151750 +151751 +151776 +151777 +151778 +151779 +151780 +151781 +151782 +151783 +151808 +151809 +151810 +151811 +151812 +151813 +151814 +151815 +151840 +151841 +151842 +151843 +151844 +151845 +151846 +151847 +151872 +151873 +151874 +151875 +151876 +151877 +151878 +151879 +151904 +151905 +151906 +151907 +151908 +151909 +151910 +151911 +151936 +151937 +151938 +151939 +151940 +151941 +151942 +151943 +151968 +151969 +151970 +151971 +151972 +151973 +151974 +151975 +152000 +152001 +152002 +152003 +152004 +152005 +152006 +152007 +152032 +152033 +152034 +152035 +152036 +152037 +152038 +152039 +152064 +152065 +152066 +152067 +152068 +152069 +152070 +152071 +152096 +152097 +152098 +152099 +152100 +152101 +152102 +152103 +152128 +152129 +152130 +152131 +152132 +152133 +152134 +152135 +152160 +152161 +152162 +152163 +152164 +152165 +152166 +152167 +152192 +152193 +152194 +152195 +152196 +152197 +152198 +152199 +152224 +152225 +152226 +152227 +152228 +152229 +152230 +152231 +152256 +152257 +152258 +152259 +152260 +152261 +152262 +152263 +152288 +152289 +152290 +152291 +152292 +152293 +152294 +152295 +152320 +152321 +152322 +152323 +152324 +152325 +152326 +152327 +152352 +152353 +152354 +152355 +152356 +152357 +152358 +152359 +152384 +152385 +152386 +152387 +152388 +152389 +152390 +152391 +152416 +152417 +152418 +152419 +152420 +152421 +152422 +152423 +152448 +152449 +152450 +152451 +152452 +152453 +152454 +152455 +152480 +152481 +152482 +152483 +152484 +152485 +152486 +152487 +152512 +152513 +152514 +152515 +152516 +152517 +152518 +152519 +152544 +152545 +152546 +152547 +152548 +152549 +152550 +152551 +152576 +152577 +152578 +152579 +152580 +152581 +152582 +152583 +152608 +152609 +152610 +152611 +152612 +152613 +152614 +152615 +152640 +152641 +152642 +152643 +152644 +152645 +152646 +152647 +152672 +152673 +152674 +152675 +152676 +152677 +152678 +152679 +152704 +152705 +152706 +152707 +152708 +152709 +152710 +152711 +152736 +152737 +152738 +152739 +152740 +152741 +152742 +152743 +152768 +152769 +152770 +152771 +152772 +152773 +152774 +152775 +152800 +152801 +152802 +152803 +152804 +152805 +152806 +152807 +152832 +152833 +152834 +152835 +152836 +152837 +152838 +152839 +152864 +152865 +152866 +152867 +152868 +152869 +152870 +152871 +152896 +152897 +152898 +152899 +152900 +152901 +152902 +152903 +152928 +152929 +152930 +152931 +152932 +152933 +152934 +152935 +152960 +152961 +152962 +152963 +152964 +152965 +152966 +152967 +152992 +152993 +152994 +152995 +152996 +152997 +152998 +152999 +153024 +153025 +153026 +153027 +153028 +153029 +153030 +153031 +153056 +153057 +153058 +153059 +153060 +153061 +153062 +153063 +153088 +153089 +153090 +153091 +153092 +153093 +153094 +153095 +153120 +153121 +153122 +153123 +153124 +153125 +153126 +153127 +153152 +153153 +153154 +153155 +153156 +153157 +153158 +153159 +153184 +153185 +153186 +153187 +153188 +153189 +153190 +153191 +153216 +153217 +153218 +153219 +153220 +153221 +153222 +153223 +153248 +153249 +153250 +153251 +153252 +153253 +153254 +153255 +153280 +153281 +153282 +153283 +153284 +153285 +153286 +153287 +153312 +153313 +153314 +153315 +153316 +153317 +153318 +153319 +153344 +153345 +153346 +153347 +153348 +153349 +153350 +153351 +153376 +153377 +153378 +153379 +153380 +153381 +153382 +153383 +153408 +153409 +153410 +153411 +153412 +153413 +153414 +153415 +153440 +153441 +153442 +153443 +153444 +153445 +153446 +153447 +153472 +153473 +153474 +153475 +153476 +153477 +153478 +153479 +153504 +153505 +153506 +153507 +153508 +153509 +153510 +153511 +153536 +153537 +153538 +153539 +153540 +153541 +153542 +153543 +153568 +153569 +153570 +153571 +153572 +153573 +153574 +153575 +153600 +153601 +153602 +153603 +153604 +153605 +153606 +153607 +153632 +153633 +153634 +153635 +153636 +153637 +153638 +153639 +153664 +153665 +153666 +153667 +153668 +153669 +153670 +153671 +153696 +153697 +153698 +153699 +153700 +153701 +153702 +153703 +153728 +153729 +153730 +153731 +153732 +153733 +153734 +153735 +153760 +153761 +153762 +153763 +153764 +153765 +153766 +153767 +153792 +153793 +153794 +153795 +153796 +153797 +153798 +153799 +153824 +153825 +153826 +153827 +153828 +153829 +153830 +153831 +153856 +153857 +153858 +153859 +153860 +153861 +153862 +153863 +153888 +153889 +153890 +153891 +153892 +153893 +153894 +153895 +153920 +153921 +153922 +153923 +153924 +153925 +153926 +153927 +153952 +153953 +153954 +153955 +153956 +153957 +153958 +153959 +153984 +153985 +153986 +153987 +153988 +153989 +153990 +153991 +154016 +154017 +154018 +154019 +154020 +154021 +154022 +154023 +154048 +154049 +154050 +154051 +154052 +154053 +154054 +154055 +154080 +154081 +154082 +154083 +154084 +154085 +154086 +154087 +154112 +154113 +154114 +154115 +154116 +154117 +154118 +154119 +154144 +154145 +154146 +154147 +154148 +154149 +154150 +154151 +154176 +154177 +154178 +154179 +154180 +154181 +154182 +154183 +154208 +154209 +154210 +154211 +154212 +154213 +154214 +154215 +154240 +154241 +154242 +154243 +154244 +154245 +154246 +154247 +154272 +154273 +154274 +154275 +154276 +154277 +154278 +154279 +154304 +154305 +154306 +154307 +154308 +154309 +154310 +154311 +154336 +154337 +154338 +154339 +154340 +154341 +154342 +154343 +154368 +154369 +154370 +154371 +154372 +154373 +154374 +154375 +154400 +154401 +154402 +154403 +154404 +154405 +154406 +154407 +154432 +154433 +154434 +154435 +154436 +154437 +154438 +154439 +154464 +154465 +154466 +154467 +154468 +154469 +154470 +154471 +154496 +154497 +154498 +154499 +154500 +154501 +154502 +154503 +154528 +154529 +154530 +154531 +154532 +154533 +154534 +154535 +154560 +154561 +154562 +154563 +154564 +154565 +154566 +154567 +154592 +154593 +154594 +154595 +154596 +154597 +154598 +154599 +154624 +154625 +154626 +154627 +154628 +154629 +154630 +154631 +154656 +154657 +154658 +154659 +154660 +154661 +154662 +154663 +154688 +154689 +154690 +154691 +154692 +154693 +154694 +154695 +154720 +154721 +154722 +154723 +154724 +154725 +154726 +154727 +154752 +154753 +154754 +154755 +154756 +154757 +154758 +154759 +154784 +154785 +154786 +154787 +154788 +154789 +154790 +154791 +154816 +154817 +154818 +154819 +154820 +154821 +154822 +154823 +154848 +154849 +154850 +154851 +154852 +154853 +154854 +154855 +154880 +154881 +154882 +154883 +154884 +154885 +154886 +154887 +154912 +154913 +154914 +154915 +154916 +154917 +154918 +154919 +154944 +154945 +154946 +154947 +154948 +154949 +154950 +154951 +154976 +154977 +154978 +154979 +154980 +154981 +154982 +154983 +155008 +155009 +155010 +155011 +155012 +155013 +155014 +155015 +155040 +155041 +155042 +155043 +155044 +155045 +155046 +155047 +155072 +155073 +155074 +155075 +155076 +155077 +155078 +155079 +155104 +155105 +155106 +155107 +155108 +155109 +155110 +155111 +155136 +155137 +155138 +155139 +155140 +155141 +155142 +155143 +155168 +155169 +155170 +155171 +155172 +155173 +155174 +155175 +155200 +155201 +155202 +155203 +155204 +155205 +155206 +155207 +155232 +155233 +155234 +155235 +155236 +155237 +155238 +155239 +155264 +155265 +155266 +155267 +155268 +155269 +155270 +155271 +155296 +155297 +155298 +155299 +155300 +155301 +155302 +155303 +155328 +155329 +155330 +155331 +155332 +155333 +155334 +155335 +155360 +155361 +155362 +155363 +155364 +155365 +155366 +155367 +155392 +155393 +155394 +155395 +155396 +155397 +155398 +155399 +155424 +155425 +155426 +155427 +155428 +155429 +155430 +155431 +155456 +155457 +155458 +155459 +155460 +155461 +155462 +155463 +155488 +155489 +155490 +155491 +155492 +155493 +155494 +155495 +155520 +155521 +155522 +155523 +155524 +155525 +155526 +155527 +155552 +155553 +155554 +155555 +155556 +155557 +155558 +155559 +155584 +155585 +155586 +155587 +155588 +155589 +155590 +155591 +155616 +155617 +155618 +155619 +155620 +155621 +155622 +155623 +155648 +155649 +155650 +155651 +155652 +155653 +155654 +155655 +155680 +155681 +155682 +155683 +155684 +155685 +155686 +155687 +155712 +155713 +155714 +155715 +155716 +155717 +155718 +155719 +155744 +155745 +155746 +155747 +155748 +155749 +155750 +155751 +155776 +155777 +155778 +155779 +155780 +155781 +155782 +155783 +155808 +155809 +155810 +155811 +155812 +155813 +155814 +155815 +155840 +155841 +155842 +155843 +155844 +155845 +155846 +155847 +155872 +155873 +155874 +155875 +155876 +155877 +155878 +155879 +155904 +155905 +155906 +155907 +155908 +155909 +155910 +155911 +155936 +155937 +155938 +155939 +155940 +155941 +155942 +155943 +155968 +155969 +155970 +155971 +155972 +155973 +155974 +155975 +156000 +156001 +156002 +156003 +156004 +156005 +156006 +156007 +156032 +156033 +156034 +156035 +156036 +156037 +156038 +156039 +156064 +156065 +156066 +156067 +156068 +156069 +156070 +156071 +156096 +156097 +156098 +156099 +156100 +156101 +156102 +156103 +156128 +156129 +156130 +156131 +156132 +156133 +156134 +156135 +156160 +156161 +156162 +156163 +156164 +156165 +156166 +156167 +156192 +156193 +156194 +156195 +156196 +156197 +156198 +156199 +156224 +156225 +156226 +156227 +156228 +156229 +156230 +156231 +156256 +156257 +156258 +156259 +156260 +156261 +156262 +156263 +156288 +156289 +156290 +156291 +156292 +156293 +156294 +156295 +156320 +156321 +156322 +156323 +156324 +156325 +156326 +156327 +156352 +156353 +156354 +156355 +156356 +156357 +156358 +156359 +156384 +156385 +156386 +156387 +156388 +156389 +156390 +156391 +156416 +156417 +156418 +156419 +156420 +156421 +156422 +156423 +156448 +156449 +156450 +156451 +156452 +156453 +156454 +156455 +156480 +156481 +156482 +156483 +156484 +156485 +156486 +156487 +156512 +156513 +156514 +156515 +156516 +156517 +156518 +156519 +156544 +156545 +156546 +156547 +156548 +156549 +156550 +156551 +156576 +156577 +156578 +156579 +156580 +156581 +156582 +156583 +156608 +156609 +156610 +156611 +156612 +156613 +156614 +156615 +156640 +156641 +156642 +156643 +156644 +156645 +156646 +156647 +156672 +156673 +156674 +156675 +156676 +156677 +156678 +156679 +156704 +156705 +156706 +156707 +156708 +156709 +156710 +156711 +156736 +156737 +156738 +156739 +156740 +156741 +156742 +156743 +156768 +156769 +156770 +156771 +156772 +156773 +156774 +156775 +156800 +156801 +156802 +156803 +156804 +156805 +156806 +156807 +156832 +156833 +156834 +156835 +156836 +156837 +156838 +156839 +156864 +156865 +156866 +156867 +156868 +156869 +156870 +156871 +156896 +156897 +156898 +156899 +156900 +156901 +156902 +156903 +156928 +156929 +156930 +156931 +156932 +156933 +156934 +156935 +156960 +156961 +156962 +156963 +156964 +156965 +156966 +156967 +156992 +156993 +156994 +156995 +156996 +156997 +156998 +156999 +157024 +157025 +157026 +157027 +157028 +157029 +157030 +157031 +157056 +157057 +157058 +157059 +157060 +157061 +157062 +157063 +157088 +157089 +157090 +157091 +157092 +157093 +157094 +157095 +157120 +157121 +157122 +157123 +157124 +157125 +157126 +157127 +157152 +157153 +157154 +157155 +157156 +157157 +157158 +157159 +157184 +157185 +157186 +157187 +157188 +157189 +157190 +157191 +157216 +157217 +157218 +157219 +157220 +157221 +157222 +157223 +157248 +157249 +157250 +157251 +157252 +157253 +157254 +157255 +157280 +157281 +157282 +157283 +157284 +157285 +157286 +157287 +157312 +157313 +157314 +157315 +157316 +157317 +157318 +157319 +157344 +157345 +157346 +157347 +157348 +157349 +157350 +157351 +157376 +157377 +157378 +157379 +157380 +157381 +157382 +157383 +157408 +157409 +157410 +157411 +157412 +157413 +157414 +157415 +157440 +157441 +157442 +157443 +157444 +157445 +157446 +157447 +157472 +157473 +157474 +157475 +157476 +157477 +157478 +157479 +157504 +157505 +157506 +157507 +157508 +157509 +157510 +157511 +157536 +157537 +157538 +157539 +157540 +157541 +157542 +157543 +157568 +157569 +157570 +157571 +157572 +157573 +157574 +157575 +157600 +157601 +157602 +157603 +157604 +157605 +157606 +157607 +157632 +157633 +157634 +157635 +157636 +157637 +157638 +157639 +157664 +157665 +157666 +157667 +157668 +157669 +157670 +157671 +157696 +157697 +157698 +157699 +157700 +157701 +157702 +157703 +157728 +157729 +157730 +157731 +157732 +157733 +157734 +157735 +157760 +157761 +157762 +157763 +157764 +157765 +157766 +157767 +157792 +157793 +157794 +157795 +157796 +157797 +157798 +157799 +157824 +157825 +157826 +157827 +157828 +157829 +157830 +157831 +157856 +157857 +157858 +157859 +157860 +157861 +157862 +157863 +157888 +157889 +157890 +157891 +157892 +157893 +157894 +157895 +157920 +157921 +157922 +157923 +157924 +157925 +157926 +157927 +157952 +157953 +157954 +157955 +157956 +157957 +157958 +157959 +157984 +157985 +157986 +157987 +157988 +157989 +157990 +157991 +158016 +158017 +158018 +158019 +158020 +158021 +158022 +158023 +158048 +158049 +158050 +158051 +158052 +158053 +158054 +158055 +158080 +158081 +158082 +158083 +158084 +158085 +158086 +158087 +158112 +158113 +158114 +158115 +158116 +158117 +158118 +158119 +158144 +158145 +158146 +158147 +158148 +158149 +158150 +158151 +158176 +158177 +158178 +158179 +158180 +158181 +158182 +158183 +158208 +158209 +158210 +158211 +158212 +158213 +158214 +158215 +158240 +158241 +158242 +158243 +158244 +158245 +158246 +158247 +158272 +158273 +158274 +158275 +158276 +158277 +158278 +158279 +158304 +158305 +158306 +158307 +158308 +158309 +158310 +158311 +158336 +158337 +158338 +158339 +158340 +158341 +158342 +158343 +158368 +158369 +158370 +158371 +158372 +158373 +158374 +158375 +158400 +158401 +158402 +158403 +158404 +158405 +158406 +158407 +158432 +158433 +158434 +158435 +158436 +158437 +158438 +158439 +158464 +158465 +158466 +158467 +158468 +158469 +158470 +158471 +158496 +158497 +158498 +158499 +158500 +158501 +158502 +158503 +158528 +158529 +158530 +158531 +158532 +158533 +158534 +158535 +158560 +158561 +158562 +158563 +158564 +158565 +158566 +158567 +158592 +158593 +158594 +158595 +158596 +158597 +158598 +158599 +158624 +158625 +158626 +158627 +158628 +158629 +158630 +158631 +158656 +158657 +158658 +158659 +158660 +158661 +158662 +158663 +158688 +158689 +158690 +158691 +158692 +158693 +158694 +158695 +158720 +158721 +158722 +158723 +158724 +158725 +158726 +158727 +158752 +158753 +158754 +158755 +158756 +158757 +158758 +158759 +158784 +158785 +158786 +158787 +158788 +158789 +158790 +158791 +158816 +158817 +158818 +158819 +158820 +158821 +158822 +158823 +158848 +158849 +158850 +158851 +158852 +158853 +158854 +158855 +158880 +158881 +158882 +158883 +158884 +158885 +158886 +158887 +158912 +158913 +158914 +158915 +158916 +158917 +158918 +158919 +158944 +158945 +158946 +158947 +158948 +158949 +158950 +158951 +158976 +158977 +158978 +158979 +158980 +158981 +158982 +158983 +159008 +159009 +159010 +159011 +159012 +159013 +159014 +159015 +159040 +159041 +159042 +159043 +159044 +159045 +159046 +159047 +159072 +159073 +159074 +159075 +159076 +159077 +159078 +159079 +159104 +159105 +159106 +159107 +159108 +159109 +159110 +159111 +159136 +159137 +159138 +159139 +159140 +159141 +159142 +159143 +159168 +159169 +159170 +159171 +159172 +159173 +159174 +159175 +159200 +159201 +159202 +159203 +159204 +159205 +159206 +159207 +159232 +159233 +159234 +159235 +159236 +159237 +159238 +159239 +159264 +159265 +159266 +159267 +159268 +159269 +159270 +159271 +159296 +159297 +159298 +159299 +159300 +159301 +159302 +159303 +159328 +159329 +159330 +159331 +159332 +159333 +159334 +159335 +159360 +159361 +159362 +159363 +159364 +159365 +159366 +159367 +159392 +159393 +159394 +159395 +159396 +159397 +159398 +159399 +159424 +159425 +159426 +159427 +159428 +159429 +159430 +159431 +159456 +159457 +159458 +159459 +159460 +159461 +159462 +159463 +159488 +159489 +159490 +159491 +159492 +159493 +159494 +159495 +159520 +159521 +159522 +159523 +159524 +159525 +159526 +159527 +159552 +159553 +159554 +159555 +159556 +159557 +159558 +159559 +159584 +159585 +159586 +159587 +159588 +159589 +159590 +159591 +159616 +159617 +159618 +159619 +159620 +159621 +159622 +159623 +159648 +159649 +159650 +159651 +159652 +159653 +159654 +159655 +159680 +159681 +159682 +159683 +159684 +159685 +159686 +159687 +159712 +159713 +159714 +159715 +159716 +159717 +159718 +159719 +159744 +159745 +159746 +159747 +159748 +159749 +159750 +159751 +159776 +159777 +159778 +159779 +159780 +159781 +159782 +159783 +159808 +159809 +159810 +159811 +159812 +159813 +159814 +159815 +159840 +159841 +159842 +159843 +159844 +159845 +159846 +159847 +159872 +159873 +159874 +159875 +159876 +159877 +159878 +159879 +159904 +159905 +159906 +159907 +159908 +159909 +159910 +159911 +159936 +159937 +159938 +159939 +159940 +159941 +159942 +159943 +159968 +159969 +159970 +159971 +159972 +159973 +159974 +159975 +160000 +160001 +160002 +160003 +160004 +160005 +160006 +160007 +160032 +160033 +160034 +160035 +160036 +160037 +160038 +160039 +160064 +160065 +160066 +160067 +160068 +160069 +160070 +160071 +160096 +160097 +160098 +160099 +160100 +160101 +160102 +160103 +160128 +160129 +160130 +160131 +160132 +160133 +160134 +160135 +160160 +160161 +160162 +160163 +160164 +160165 +160166 +160167 +160192 +160193 +160194 +160195 +160196 +160197 +160198 +160199 +160224 +160225 +160226 +160227 +160228 +160229 +160230 +160231 +160256 +160257 +160258 +160259 +160260 +160261 +160262 +160263 +160288 +160289 +160290 +160291 +160292 +160293 +160294 +160295 +160320 +160321 +160322 +160323 +160324 +160325 +160326 +160327 +160352 +160353 +160354 +160355 +160356 +160357 +160358 +160359 +160384 +160385 +160386 +160387 +160388 +160389 +160390 +160391 +160416 +160417 +160418 +160419 +160420 +160421 +160422 +160423 +160448 +160449 +160450 +160451 +160452 +160453 +160454 +160455 +160480 +160481 +160482 +160483 +160484 +160485 +160486 +160487 +160512 +160513 +160514 +160515 +160516 +160517 +160518 +160519 +160544 +160545 +160546 +160547 +160548 +160549 +160550 +160551 +160576 +160577 +160578 +160579 +160580 +160581 +160582 +160583 +160608 +160609 +160610 +160611 +160612 +160613 +160614 +160615 +160640 +160641 +160642 +160643 +160644 +160645 +160646 +160647 +160672 +160673 +160674 +160675 +160676 +160677 +160678 +160679 +160704 +160705 +160706 +160707 +160708 +160709 +160710 +160711 +160736 +160737 +160738 +160739 +160740 +160741 +160742 +160743 +160768 +160769 +160770 +160771 +160772 +160773 +160774 +160775 +160800 +160801 +160802 +160803 +160804 +160805 +160806 +160807 +160832 +160833 +160834 +160835 +160836 +160837 +160838 +160839 +160864 +160865 +160866 +160867 +160868 +160869 +160870 +160871 +160896 +160897 +160898 +160899 +160900 +160901 +160902 +160903 +160928 +160929 +160930 +160931 +160932 +160933 +160934 +160935 +160960 +160961 +160962 +160963 +160964 +160965 +160966 +160967 +160992 +160993 +160994 +160995 +160996 +160997 +160998 +160999 +161024 +161025 +161026 +161027 +161028 +161029 +161030 +161031 +161056 +161057 +161058 +161059 +161060 +161061 +161062 +161063 +161088 +161089 +161090 +161091 +161092 +161093 +161094 +161095 +161120 +161121 +161122 +161123 +161124 +161125 +161126 +161127 +161152 +161153 +161154 +161155 +161156 +161157 +161158 +161159 +161184 +161185 +161186 +161187 +161188 +161189 +161190 +161191 +161216 +161217 +161218 +161219 +161220 +161221 +161222 +161223 +161248 +161249 +161250 +161251 +161252 +161253 +161254 +161255 +161280 +161281 +161282 +161283 +161284 +161285 +161286 +161287 +161312 +161313 +161314 +161315 +161316 +161317 +161318 +161319 +161344 +161345 +161346 +161347 +161348 +161349 +161350 +161351 +161376 +161377 +161378 +161379 +161380 +161381 +161382 +161383 +161408 +161409 +161410 +161411 +161412 +161413 +161414 +161415 +161440 +161441 +161442 +161443 +161444 +161445 +161446 +161447 +161472 +161473 +161474 +161475 +161476 +161477 +161478 +161479 +161504 +161505 +161506 +161507 +161508 +161509 +161510 +161511 +161536 +161537 +161538 +161539 +161540 +161541 +161542 +161543 +161568 +161569 +161570 +161571 +161572 +161573 +161574 +161575 +161600 +161601 +161602 +161603 +161604 +161605 +161606 +161607 +161632 +161633 +161634 +161635 +161636 +161637 +161638 +161639 +161664 +161665 +161666 +161667 +161668 +161669 +161670 +161671 +161696 +161697 +161698 +161699 +161700 +161701 +161702 +161703 +161728 +161729 +161730 +161731 +161732 +161733 +161734 +161735 +161760 +161761 +161762 +161763 +161764 +161765 +161766 +161767 +161792 +161793 +161794 +161795 +161796 +161797 +161798 +161799 +161824 +161825 +161826 +161827 +161828 +161829 +161830 +161831 +161856 +161857 +161858 +161859 +161860 +161861 +161862 +161863 +161888 +161889 +161890 +161891 +161892 +161893 +161894 +161895 +161920 +161921 +161922 +161923 +161924 +161925 +161926 +161927 +161952 +161953 +161954 +161955 +161956 +161957 +161958 +161959 +161984 +161985 +161986 +161987 +161988 +161989 +161990 +161991 +162016 +162017 +162018 +162019 +162020 +162021 +162022 +162023 +162048 +162049 +162050 +162051 +162052 +162053 +162054 +162055 +162080 +162081 +162082 +162083 +162084 +162085 +162086 +162087 +162112 +162113 +162114 +162115 +162116 +162117 +162118 +162119 +162144 +162145 +162146 +162147 +162148 +162149 +162150 +162151 +162176 +162177 +162178 +162179 +162180 +162181 +162182 +162183 +162208 +162209 +162210 +162211 +162212 +162213 +162214 +162215 +162240 +162241 +162242 +162243 +162244 +162245 +162246 +162247 +162272 +162273 +162274 +162275 +162276 +162277 +162278 +162279 +162304 +162305 +162306 +162307 +162308 +162309 +162310 +162311 +162336 +162337 +162338 +162339 +162340 +162341 +162342 +162343 +162368 +162369 +162370 +162371 +162372 +162373 +162374 +162375 +162400 +162401 +162402 +162403 +162404 +162405 +162406 +162407 +162432 +162433 +162434 +162435 +162436 +162437 +162438 +162439 +162464 +162465 +162466 +162467 +162468 +162469 +162470 +162471 +162496 +162497 +162498 +162499 +162500 +162501 +162502 +162503 +162528 +162529 +162530 +162531 +162532 +162533 +162534 +162535 +162560 +162561 +162562 +162563 +162564 +162565 +162566 +162567 +162592 +162593 +162594 +162595 +162596 +162597 +162598 +162599 +162624 +162625 +162626 +162627 +162628 +162629 +162630 +162631 +162656 +162657 +162658 +162659 +162660 +162661 +162662 +162663 +162688 +162689 +162690 +162691 +162692 +162693 +162694 +162695 +162720 +162721 +162722 +162723 +162724 +162725 +162726 +162727 +162752 +162753 +162754 +162755 +162756 +162757 +162758 +162759 +162784 +162785 +162786 +162787 +162788 +162789 +162790 +162791 +162816 +162817 +162818 +162819 +162820 +162821 +162822 +162823 +162848 +162849 +162850 +162851 +162852 +162853 +162854 +162855 +162880 +162881 +162882 +162883 +162884 +162885 +162886 +162887 +162912 +162913 +162914 +162915 +162916 +162917 +162918 +162919 +162944 +162945 +162946 +162947 +162948 +162949 +162950 +162951 +162976 +162977 +162978 +162979 +162980 +162981 +162982 +162983 +163008 +163009 +163010 +163011 +163012 +163013 +163014 +163015 +163040 +163041 +163042 +163043 +163044 +163045 +163046 +163047 +163072 +163073 +163074 +163075 +163076 +163077 +163078 +163079 +163104 +163105 +163106 +163107 +163108 +163109 +163110 +163111 +163136 +163137 +163138 +163139 +163140 +163141 +163142 +163143 +163168 +163169 +163170 +163171 +163172 +163173 +163174 +163175 +163200 +163201 +163202 +163203 +163204 +163205 +163206 +163207 +163232 +163233 +163234 +163235 +163236 +163237 +163238 +163239 +163264 +163265 +163266 +163267 +163268 +163269 +163270 +163271 +163296 +163297 +163298 +163299 +163300 +163301 +163302 +163303 +163328 +163329 +163330 +163331 +163332 +163333 +163334 +163335 +163360 +163361 +163362 +163363 +163364 +163365 +163366 +163367 +163392 +163393 +163394 +163395 +163396 +163397 +163398 +163399 +163424 +163425 +163426 +163427 +163428 +163429 +163430 +163431 +163456 +163457 +163458 +163459 +163460 +163461 +163462 +163463 +163488 +163489 +163490 +163491 +163492 +163493 +163494 +163495 +163520 +163521 +163522 +163523 +163524 +163525 +163526 +163527 +163552 +163553 +163554 +163555 +163556 +163557 +163558 +163559 +163584 +163585 +163586 +163587 +163588 +163589 +163590 +163591 +163616 +163617 +163618 +163619 +163620 +163621 +163622 +163623 +163648 +163649 +163650 +163651 +163652 +163653 +163654 +163655 +163680 +163681 +163682 +163683 +163684 +163685 +163686 +163687 +163712 +163713 +163714 +163715 +163716 +163717 +163718 +163719 +163744 +163745 +163746 +163747 +163748 +163749 +163750 +163751 +163776 +163777 +163778 +163779 +163780 +163781 +163782 +163783 +163808 +163809 +163810 +163811 +163812 +163813 +163814 +163815 +163840 +163841 +163842 +163843 +163844 +163845 +163846 +163847 +163872 +163873 +163874 +163875 +163876 +163877 +163878 +163879 +163904 +163905 +163906 +163907 +163908 +163909 +163910 +163911 +163936 +163937 +163938 +163939 +163940 +163941 +163942 +163943 +163968 +163969 +163970 +163971 +163972 +163973 +163974 +163975 +164000 +164001 +164002 +164003 +164004 +164005 +164006 +164007 +164032 +164033 +164034 +164035 +164036 +164037 +164038 +164039 +164064 +164065 +164066 +164067 +164068 +164069 +164070 +164071 +164096 +164097 +164098 +164099 +164100 +164101 +164102 +164103 +164128 +164129 +164130 +164131 +164132 +164133 +164134 +164135 +164160 +164161 +164162 +164163 +164164 +164165 +164166 +164167 +164192 +164193 +164194 +164195 +164196 +164197 +164198 +164199 +164224 +164225 +164226 +164227 +164228 +164229 +164230 +164231 +164256 +164257 +164258 +164259 +164260 +164261 +164262 +164263 +164288 +164289 +164290 +164291 +164292 +164293 +164294 +164295 +164320 +164321 +164322 +164323 +164324 +164325 +164326 +164327 +164352 +164353 +164354 +164355 +164356 +164357 +164358 +164359 +164384 +164385 +164386 +164387 +164388 +164389 +164390 +164391 +164416 +164417 +164418 +164419 +164420 +164421 +164422 +164423 +164448 +164449 +164450 +164451 +164452 +164453 +164454 +164455 +164480 +164481 +164482 +164483 +164484 +164485 +164486 +164487 +164512 +164513 +164514 +164515 +164516 +164517 +164518 +164519 +164544 +164545 +164546 +164547 +164548 +164549 +164550 +164551 +164576 +164577 +164578 +164579 +164580 +164581 +164582 +164583 +164608 +164609 +164610 +164611 +164612 +164613 +164614 +164615 +164640 +164641 +164642 +164643 +164644 +164645 +164646 +164647 +164672 +164673 +164674 +164675 +164676 +164677 +164678 +164679 +164704 +164705 +164706 +164707 +164708 +164709 +164710 +164711 +164736 +164737 +164738 +164739 +164740 +164741 +164742 +164743 +164768 +164769 +164770 +164771 +164772 +164773 +164774 +164775 +164800 +164801 +164802 +164803 +164804 +164805 +164806 +164807 +164832 +164833 +164834 +164835 +164836 +164837 +164838 +164839 +164864 +164865 +164866 +164867 +164868 +164869 +164870 +164871 +164896 +164897 +164898 +164899 +164900 +164901 +164902 +164903 +164928 +164929 +164930 +164931 +164932 +164933 +164934 +164935 +164960 +164961 +164962 +164963 +164964 +164965 +164966 +164967 +164992 +164993 +164994 +164995 +164996 +164997 +164998 +164999 +165024 +165025 +165026 +165027 +165028 +165029 +165030 +165031 +165056 +165057 +165058 +165059 +165060 +165061 +165062 +165063 +165088 +165089 +165090 +165091 +165092 +165093 +165094 +165095 +165120 +165121 +165122 +165123 +165124 +165125 +165126 +165127 +165152 +165153 +165154 +165155 +165156 +165157 +165158 +165159 +165184 +165185 +165186 +165187 +165188 +165189 +165190 +165191 +165216 +165217 +165218 +165219 +165220 +165221 +165222 +165223 +165248 +165249 +165250 +165251 +165252 +165253 +165254 +165255 +165280 +165281 +165282 +165283 +165284 +165285 +165286 +165287 +165312 +165313 +165314 +165315 +165316 +165317 +165318 +165319 +165344 +165345 +165346 +165347 +165348 +165349 +165350 +165351 +165376 +165377 +165378 +165379 +165380 +165381 +165382 +165383 +165408 +165409 +165410 +165411 +165412 +165413 +165414 +165415 +165440 +165441 +165442 +165443 +165444 +165445 +165446 +165447 +165472 +165473 +165474 +165475 +165476 +165477 +165478 +165479 +165504 +165505 +165506 +165507 +165508 +165509 +165510 +165511 +165536 +165537 +165538 +165539 +165540 +165541 +165542 +165543 +165568 +165569 +165570 +165571 +165572 +165573 +165574 +165575 +165600 +165601 +165602 +165603 +165604 +165605 +165606 +165607 +165632 +165633 +165634 +165635 +165636 +165637 +165638 +165639 +165664 +165665 +165666 +165667 +165668 +165669 +165670 +165671 +165696 +165697 +165698 +165699 +165700 +165701 +165702 +165703 +165728 +165729 +165730 +165731 +165732 +165733 +165734 +165735 +165760 +165761 +165762 +165763 +165764 +165765 +165766 +165767 +165792 +165793 +165794 +165795 +165796 +165797 +165798 +165799 +165824 +165825 +165826 +165827 +165828 +165829 +165830 +165831 +165856 +165857 +165858 +165859 +165860 +165861 +165862 +165863 +165888 +165889 +165890 +165891 +165892 +165893 +165894 +165895 +165920 +165921 +165922 +165923 +165924 +165925 +165926 +165927 +165952 +165953 +165954 +165955 +165956 +165957 +165958 +165959 +165984 +165985 +165986 +165987 +165988 +165989 +165990 +165991 +166016 +166017 +166018 +166019 +166020 +166021 +166022 +166023 +166048 +166049 +166050 +166051 +166052 +166053 +166054 +166055 +166080 +166081 +166082 +166083 +166084 +166085 +166086 +166087 +166112 +166113 +166114 +166115 +166116 +166117 +166118 +166119 +166144 +166145 +166146 +166147 +166148 +166149 +166150 +166151 +166176 +166177 +166178 +166179 +166180 +166181 +166182 +166183 +166208 +166209 +166210 +166211 +166212 +166213 +166214 +166215 +166240 +166241 +166242 +166243 +166244 +166245 +166246 +166247 +166272 +166273 +166274 +166275 +166276 +166277 +166278 +166279 +166304 +166305 +166306 +166307 +166308 +166309 +166310 +166311 +166336 +166337 +166338 +166339 +166340 +166341 +166342 +166343 +166368 +166369 +166370 +166371 +166372 +166373 +166374 +166375 +166400 +166401 +166402 +166403 +166404 +166405 +166406 +166407 +166432 +166433 +166434 +166435 +166436 +166437 +166438 +166439 +166464 +166465 +166466 +166467 +166468 +166469 +166470 +166471 +166496 +166497 +166498 +166499 +166500 +166501 +166502 +166503 +166528 +166529 +166530 +166531 +166532 +166533 +166534 +166535 +166560 +166561 +166562 +166563 +166564 +166565 +166566 +166567 +166592 +166593 +166594 +166595 +166596 +166597 +166598 +166599 +166624 +166625 +166626 +166627 +166628 +166629 +166630 +166631 +166656 +166657 +166658 +166659 +166660 +166661 +166662 +166663 +166688 +166689 +166690 +166691 +166692 +166693 +166694 +166695 +166720 +166721 +166722 +166723 +166724 +166725 +166726 +166727 +166752 +166753 +166754 +166755 +166756 +166757 +166758 +166759 +166784 +166785 +166786 +166787 +166788 +166789 +166790 +166791 +166816 +166817 +166818 +166819 +166820 +166821 +166822 +166823 +166848 +166849 +166850 +166851 +166852 +166853 +166854 +166855 +166880 +166881 +166882 +166883 +166884 +166885 +166886 +166887 +166912 +166913 +166914 +166915 +166916 +166917 +166918 +166919 +166944 +166945 +166946 +166947 +166948 +166949 +166950 +166951 +166976 +166977 +166978 +166979 +166980 +166981 +166982 +166983 +167008 +167009 +167010 +167011 +167012 +167013 +167014 +167015 +167040 +167041 +167042 +167043 +167044 +167045 +167046 +167047 +167072 +167073 +167074 +167075 +167076 +167077 +167078 +167079 +167104 +167105 +167106 +167107 +167108 +167109 +167110 +167111 +167136 +167137 +167138 +167139 +167140 +167141 +167142 +167143 +167168 +167169 +167170 +167171 +167172 +167173 +167174 +167175 +167200 +167201 +167202 +167203 +167204 +167205 +167206 +167207 +167232 +167233 +167234 +167235 +167236 +167237 +167238 +167239 +167264 +167265 +167266 +167267 +167268 +167269 +167270 +167271 +167296 +167297 +167298 +167299 +167300 +167301 +167302 +167303 +167328 +167329 +167330 +167331 +167332 +167333 +167334 +167335 +167360 +167361 +167362 +167363 +167364 +167365 +167366 +167367 +167392 +167393 +167394 +167395 +167396 +167397 +167398 +167399 +167424 +167425 +167426 +167427 +167428 +167429 +167430 +167431 +167456 +167457 +167458 +167459 +167460 +167461 +167462 +167463 +167488 +167489 +167490 +167491 +167492 +167493 +167494 +167495 +167520 +167521 +167522 +167523 +167524 +167525 +167526 +167527 +167552 +167553 +167554 +167555 +167556 +167557 +167558 +167559 +167584 +167585 +167586 +167587 +167588 +167589 +167590 +167591 +167616 +167617 +167618 +167619 +167620 +167621 +167622 +167623 +167648 +167649 +167650 +167651 +167652 +167653 +167654 +167655 +167680 +167681 +167682 +167683 +167684 +167685 +167686 +167687 +167712 +167713 +167714 +167715 +167716 +167717 +167718 +167719 +167744 +167745 +167746 +167747 +167748 +167749 +167750 +167751 +167776 +167777 +167778 +167779 +167780 +167781 +167782 +167783 +167808 +167809 +167810 +167811 +167812 +167813 +167814 +167815 +167840 +167841 +167842 +167843 +167844 +167845 +167846 +167847 +167872 +167873 +167874 +167875 +167876 +167877 +167878 +167879 +167904 +167905 +167906 +167907 +167908 +167909 +167910 +167911 +167936 +167937 +167938 +167939 +167940 +167941 +167942 +167943 +167968 +167969 +167970 +167971 +167972 +167973 +167974 +167975 +168000 +168001 +168002 +168003 +168004 +168005 +168006 +168007 +168032 +168033 +168034 +168035 +168036 +168037 +168038 +168039 +168064 +168065 +168066 +168067 +168068 +168069 +168070 +168071 +168096 +168097 +168098 +168099 +168100 +168101 +168102 +168103 +168128 +168129 +168130 +168131 +168132 +168133 +168134 +168135 +168160 +168161 +168162 +168163 +168164 +168165 +168166 +168167 +168192 +168193 +168194 +168195 +168196 +168197 +168198 +168199 +168224 +168225 +168226 +168227 +168228 +168229 +168230 +168231 +168256 +168257 +168258 +168259 +168260 +168261 +168262 +168263 +168288 +168289 +168290 +168291 +168292 +168293 +168294 +168295 +168320 +168321 +168322 +168323 +168324 +168325 +168326 +168327 +168352 +168353 +168354 +168355 +168356 +168357 +168358 +168359 +168384 +168385 +168386 +168387 +168388 +168389 +168390 +168391 +168416 +168417 +168418 +168419 +168420 +168421 +168422 +168423 +168448 +168449 +168450 +168451 +168452 +168453 +168454 +168455 +168480 +168481 +168482 +168483 +168484 +168485 +168486 +168487 +168512 +168513 +168514 +168515 +168516 +168517 +168518 +168519 +168544 +168545 +168546 +168547 +168548 +168549 +168550 +168551 +168576 +168577 +168578 +168579 +168580 +168581 +168582 +168583 +168608 +168609 +168610 +168611 +168612 +168613 +168614 +168615 +168640 +168641 +168642 +168643 +168644 +168645 +168646 +168647 +168672 +168673 +168674 +168675 +168676 +168677 +168678 +168679 +168704 +168705 +168706 +168707 +168708 +168709 +168710 +168711 +168736 +168737 +168738 +168739 +168740 +168741 +168742 +168743 +168768 +168769 +168770 +168771 +168772 +168773 +168774 +168775 +168800 +168801 +168802 +168803 +168804 +168805 +168806 +168807 +168832 +168833 +168834 +168835 +168836 +168837 +168838 +168839 +168864 +168865 +168866 +168867 +168868 +168869 +168870 +168871 +168896 +168897 +168898 +168899 +168900 +168901 +168902 +168903 +168928 +168929 +168930 +168931 +168932 +168933 +168934 +168935 +168960 +168961 +168962 +168963 +168964 +168965 +168966 +168967 +168992 +168993 +168994 +168995 +168996 +168997 +168998 +168999 +169024 +169025 +169026 +169027 +169028 +169029 +169030 +169031 +169056 +169057 +169058 +169059 +169060 +169061 +169062 +169063 +169088 +169089 +169090 +169091 +169092 +169093 +169094 +169095 +169120 +169121 +169122 +169123 +169124 +169125 +169126 +169127 +169152 +169153 +169154 +169155 +169156 +169157 +169158 +169159 +169184 +169185 +169186 +169187 +169188 +169189 +169190 +169191 +169216 +169217 +169218 +169219 +169220 +169221 +169222 +169223 +169248 +169249 +169250 +169251 +169252 +169253 +169254 +169255 +169280 +169281 +169282 +169283 +169284 +169285 +169286 +169287 +169312 +169313 +169314 +169315 +169316 +169317 +169318 +169319 +169344 +169345 +169346 +169347 +169348 +169349 +169350 +169351 +169376 +169377 +169378 +169379 +169380 +169381 +169382 +169383 +169408 +169409 +169410 +169411 +169412 +169413 +169414 +169415 +169440 +169441 +169442 +169443 +169444 +169445 +169446 +169447 +169472 +169473 +169474 +169475 +169476 +169477 +169478 +169479 +169504 +169505 +169506 +169507 +169508 +169509 +169510 +169511 +169536 +169537 +169538 +169539 +169540 +169541 +169542 +169543 +169568 +169569 +169570 +169571 +169572 +169573 +169574 +169575 +169600 +169601 +169602 +169603 +169604 +169605 +169606 +169607 +169632 +169633 +169634 +169635 +169636 +169637 +169638 +169639 +169664 +169665 +169666 +169667 +169668 +169669 +169670 +169671 +169696 +169697 +169698 +169699 +169700 +169701 +169702 +169703 +169728 +169729 +169730 +169731 +169732 +169733 +169734 +169735 +169760 +169761 +169762 +169763 +169764 +169765 +169766 +169767 +169792 +169793 +169794 +169795 +169796 +169797 +169798 +169799 +169824 +169825 +169826 +169827 +169828 +169829 +169830 +169831 +169856 +169857 +169858 +169859 +169860 +169861 +169862 +169863 +169888 +169889 +169890 +169891 +169892 +169893 +169894 +169895 +169920 +169921 +169922 +169923 +169924 +169925 +169926 +169927 +169952 +169953 +169954 +169955 +169956 +169957 +169958 +169959 +169984 +169985 +169986 +169987 +169988 +169989 +169990 +169991 +170016 +170017 +170018 +170019 +170020 +170021 +170022 +170023 +170048 +170049 +170050 +170051 +170052 +170053 +170054 +170055 +170080 +170081 +170082 +170083 +170084 +170085 +170086 +170087 +170112 +170113 +170114 +170115 +170116 +170117 +170118 +170119 +170144 +170145 +170146 +170147 +170148 +170149 +170150 +170151 +170176 +170177 +170178 +170179 +170180 +170181 +170182 +170183 +170208 +170209 +170210 +170211 +170212 +170213 +170214 +170215 +170240 +170241 +170242 +170243 +170244 +170245 +170246 +170247 +170272 +170273 +170274 +170275 +170276 +170277 +170278 +170279 +170304 +170305 +170306 +170307 +170308 +170309 +170310 +170311 +170336 +170337 +170338 +170339 +170340 +170341 +170342 +170343 +170368 +170369 +170370 +170371 +170372 +170373 +170374 +170375 +170400 +170401 +170402 +170403 +170404 +170405 +170406 +170407 +170432 +170433 +170434 +170435 +170436 +170437 +170438 +170439 +170464 +170465 +170466 +170467 +170468 +170469 +170470 +170471 +170496 +170497 +170498 +170499 +170500 +170501 +170502 +170503 +170528 +170529 +170530 +170531 +170532 +170533 +170534 +170535 +170560 +170561 +170562 +170563 +170564 +170565 +170566 +170567 +170592 +170593 +170594 +170595 +170596 +170597 +170598 +170599 +170624 +170625 +170626 +170627 +170628 +170629 +170630 +170631 +170656 +170657 +170658 +170659 +170660 +170661 +170662 +170663 +170688 +170689 +170690 +170691 +170692 +170693 +170694 +170695 +170720 +170721 +170722 +170723 +170724 +170725 +170726 +170727 +170752 +170753 +170754 +170755 +170756 +170757 +170758 +170759 +170784 +170785 +170786 +170787 +170788 +170789 +170790 +170791 +170816 +170817 +170818 +170819 +170820 +170821 +170822 +170823 +170848 +170849 +170850 +170851 +170852 +170853 +170854 +170855 +170880 +170881 +170882 +170883 +170884 +170885 +170886 +170887 +170912 +170913 +170914 +170915 +170916 +170917 +170918 +170919 +170944 +170945 +170946 +170947 +170948 +170949 +170950 +170951 +170976 +170977 +170978 +170979 +170980 +170981 +170982 +170983 +171008 +171009 +171010 +171011 +171012 +171013 +171014 +171015 +171040 +171041 +171042 +171043 +171044 +171045 +171046 +171047 +171072 +171073 +171074 +171075 +171076 +171077 +171078 +171079 +171104 +171105 +171106 +171107 +171108 +171109 +171110 +171111 +171136 +171137 +171138 +171139 +171140 +171141 +171142 +171143 +171168 +171169 +171170 +171171 +171172 +171173 +171174 +171175 +171200 +171201 +171202 +171203 +171204 +171205 +171206 +171207 +171232 +171233 +171234 +171235 +171236 +171237 +171238 +171239 +171264 +171265 +171266 +171267 +171268 +171269 +171270 +171271 +171296 +171297 +171298 +171299 +171300 +171301 +171302 +171303 +171328 +171329 +171330 +171331 +171332 +171333 +171334 +171335 +171360 +171361 +171362 +171363 +171364 +171365 +171366 +171367 +171392 +171393 +171394 +171395 +171396 +171397 +171398 +171399 +171424 +171425 +171426 +171427 +171428 +171429 +171430 +171431 +171456 +171457 +171458 +171459 +171460 +171461 +171462 +171463 +171488 +171489 +171490 +171491 +171492 +171493 +171494 +171495 +171520 +171521 +171522 +171523 +171524 +171525 +171526 +171527 +171552 +171553 +171554 +171555 +171556 +171557 +171558 +171559 +171584 +171585 +171586 +171587 +171588 +171589 +171590 +171591 +171616 +171617 +171618 +171619 +171620 +171621 +171622 +171623 +171648 +171649 +171650 +171651 +171652 +171653 +171654 +171655 +171680 +171681 +171682 +171683 +171684 +171685 +171686 +171687 +171712 +171713 +171714 +171715 +171716 +171717 +171718 +171719 +171744 +171745 +171746 +171747 +171748 +171749 +171750 +171751 +171776 +171777 +171778 +171779 +171780 +171781 +171782 +171783 +171808 +171809 +171810 +171811 +171812 +171813 +171814 +171815 +171840 +171841 +171842 +171843 +171844 +171845 +171846 +171847 +171872 +171873 +171874 +171875 +171876 +171877 +171878 +171879 +171904 +171905 +171906 +171907 +171908 +171909 +171910 +171911 +171936 +171937 +171938 +171939 +171940 +171941 +171942 +171943 +171968 +171969 +171970 +171971 +171972 +171973 +171974 +171975 +172000 +172001 +172002 +172003 +172004 +172005 +172006 +172007 +172032 +172033 +172034 +172035 +172036 +172037 +172038 +172039 +172064 +172065 +172066 +172067 +172068 +172069 +172070 +172071 +172096 +172097 +172098 +172099 +172100 +172101 +172102 +172103 +172128 +172129 +172130 +172131 +172132 +172133 +172134 +172135 +172160 +172161 +172162 +172163 +172164 +172165 +172166 +172167 +172192 +172193 +172194 +172195 +172196 +172197 +172198 +172199 +172224 +172225 +172226 +172227 +172228 +172229 +172230 +172231 +172256 +172257 +172258 +172259 +172260 +172261 +172262 +172263 +172288 +172289 +172290 +172291 +172292 +172293 +172294 +172295 +172320 +172321 +172322 +172323 +172324 +172325 +172326 +172327 +172352 +172353 +172354 +172355 +172356 +172357 +172358 +172359 +172384 +172385 +172386 +172387 +172388 +172389 +172390 +172391 +172416 +172417 +172418 +172419 +172420 +172421 +172422 +172423 +172448 +172449 +172450 +172451 +172452 +172453 +172454 +172455 +172480 +172481 +172482 +172483 +172484 +172485 +172486 +172487 +172512 +172513 +172514 +172515 +172516 +172517 +172518 +172519 +172544 +172545 +172546 +172547 +172548 +172549 +172550 +172551 +172576 +172577 +172578 +172579 +172580 +172581 +172582 +172583 +172608 +172609 +172610 +172611 +172612 +172613 +172614 +172615 +172640 +172641 +172642 +172643 +172644 +172645 +172646 +172647 +172672 +172673 +172674 +172675 +172676 +172677 +172678 +172679 +172704 +172705 +172706 +172707 +172708 +172709 +172710 +172711 +172736 +172737 +172738 +172739 +172740 +172741 +172742 +172743 +172768 +172769 +172770 +172771 +172772 +172773 +172774 +172775 +172800 +172801 +172802 +172803 +172804 +172805 +172806 +172807 +172832 +172833 +172834 +172835 +172836 +172837 +172838 +172839 +172864 +172865 +172866 +172867 +172868 +172869 +172870 +172871 +172896 +172897 +172898 +172899 +172900 +172901 +172902 +172903 +172928 +172929 +172930 +172931 +172932 +172933 +172934 +172935 +172960 +172961 +172962 +172963 +172964 +172965 +172966 +172967 +172992 +172993 +172994 +172995 +172996 +172997 +172998 +172999 +173024 +173025 +173026 +173027 +173028 +173029 +173030 +173031 +173056 +173057 +173058 +173059 +173060 +173061 +173062 +173063 +173088 +173089 +173090 +173091 +173092 +173093 +173094 +173095 +173120 +173121 +173122 +173123 +173124 +173125 +173126 +173127 +173152 +173153 +173154 +173155 +173156 +173157 +173158 +173159 +173184 +173185 +173186 +173187 +173188 +173189 +173190 +173191 +173216 +173217 +173218 +173219 +173220 +173221 +173222 +173223 +173248 +173249 +173250 +173251 +173252 +173253 +173254 +173255 +173280 +173281 +173282 +173283 +173284 +173285 +173286 +173287 +173312 +173313 +173314 +173315 +173316 +173317 +173318 +173319 +173344 +173345 +173346 +173347 +173348 +173349 +173350 +173351 +173376 +173377 +173378 +173379 +173380 +173381 +173382 +173383 +173408 +173409 +173410 +173411 +173412 +173413 +173414 +173415 +173440 +173441 +173442 +173443 +173444 +173445 +173446 +173447 +173472 +173473 +173474 +173475 +173476 +173477 +173478 +173479 +173504 +173505 +173506 +173507 +173508 +173509 +173510 +173511 +173536 +173537 +173538 +173539 +173540 +173541 +173542 +173543 +173568 +173569 +173570 +173571 +173572 +173573 +173574 +173575 +173600 +173601 +173602 +173603 +173604 +173605 +173606 +173607 +173632 +173633 +173634 +173635 +173636 +173637 +173638 +173639 +173664 +173665 +173666 +173667 +173668 +173669 +173670 +173671 +173696 +173697 +173698 +173699 +173700 +173701 +173702 +173703 +173728 +173729 +173730 +173731 +173732 +173733 +173734 +173735 +173760 +173761 +173762 +173763 +173764 +173765 +173766 +173767 +173792 +173793 +173794 +173795 +173796 +173797 +173798 +173799 +173824 +173825 +173826 +173827 +173828 +173829 +173830 +173831 +173856 +173857 +173858 +173859 +173860 +173861 +173862 +173863 +173888 +173889 +173890 +173891 +173892 +173893 +173894 +173895 +173920 +173921 +173922 +173923 +173924 +173925 +173926 +173927 +173952 +173953 +173954 +173955 +173956 +173957 +173958 +173959 +173984 +173985 +173986 +173987 +173988 +173989 +173990 +173991 +174016 +174017 +174018 +174019 +174020 +174021 +174022 +174023 +174048 +174049 +174050 +174051 +174052 +174053 +174054 +174055 +174080 +174081 +174082 +174083 +174084 +174085 +174086 +174087 +174112 +174113 +174114 +174115 +174116 +174117 +174118 +174119 +174144 +174145 +174146 +174147 +174148 +174149 +174150 +174151 +174176 +174177 +174178 +174179 +174180 +174181 +174182 +174183 +174208 +174209 +174210 +174211 +174212 +174213 +174214 +174215 +174240 +174241 +174242 +174243 +174244 +174245 +174246 +174247 +174272 +174273 +174274 +174275 +174276 +174277 +174278 +174279 +174304 +174305 +174306 +174307 +174308 +174309 +174310 +174311 +174336 +174337 +174338 +174339 +174340 +174341 +174342 +174343 +174368 +174369 +174370 +174371 +174372 +174373 +174374 +174375 +174400 +174401 +174402 +174403 +174404 +174405 +174406 +174407 +174432 +174433 +174434 +174435 +174436 +174437 +174438 +174439 +174464 +174465 +174466 +174467 +174468 +174469 +174470 +174471 +174496 +174497 +174498 +174499 +174500 +174501 +174502 +174503 +174528 +174529 +174530 +174531 +174532 +174533 +174534 +174535 +174560 +174561 +174562 +174563 +174564 +174565 +174566 +174567 +174592 +174593 +174594 +174595 +174596 +174597 +174598 +174599 +174624 +174625 +174626 +174627 +174628 +174629 +174630 +174631 +174656 +174657 +174658 +174659 +174660 +174661 +174662 +174663 +174688 +174689 +174690 +174691 +174692 +174693 +174694 +174695 +174720 +174721 +174722 +174723 +174724 +174725 +174726 +174727 +174752 +174753 +174754 +174755 +174756 +174757 +174758 +174759 +174784 +174785 +174786 +174787 +174788 +174789 +174790 +174791 +174816 +174817 +174818 +174819 +174820 +174821 +174822 +174823 +174848 +174849 +174850 +174851 +174852 +174853 +174854 +174855 +174880 +174881 +174882 +174883 +174884 +174885 +174886 +174887 +174912 +174913 +174914 +174915 +174916 +174917 +174918 +174919 +174944 +174945 +174946 +174947 +174948 +174949 +174950 +174951 +174976 +174977 +174978 +174979 +174980 +174981 +174982 +174983 +175008 +175009 +175010 +175011 +175012 +175013 +175014 +175015 +175040 +175041 +175042 +175043 +175044 +175045 +175046 +175047 +175072 +175073 +175074 +175075 +175076 +175077 +175078 +175079 +175104 +175105 +175106 +175107 +175108 +175109 +175110 +175111 +175136 +175137 +175138 +175139 +175140 +175141 +175142 +175143 +175168 +175169 +175170 +175171 +175172 +175173 +175174 +175175 +175200 +175201 +175202 +175203 +175204 +175205 +175206 +175207 +175232 +175233 +175234 +175235 +175236 +175237 +175238 +175239 +175264 +175265 +175266 +175267 +175268 +175269 +175270 +175271 +175296 +175297 +175298 +175299 +175300 +175301 +175302 +175303 +175328 +175329 +175330 +175331 +175332 +175333 +175334 +175335 +175360 +175361 +175362 +175363 +175364 +175365 +175366 +175367 +175392 +175393 +175394 +175395 +175396 +175397 +175398 +175399 +175424 +175425 +175426 +175427 +175428 +175429 +175430 +175431 +175456 +175457 +175458 +175459 +175460 +175461 +175462 +175463 +175488 +175489 +175490 +175491 +175492 +175493 +175494 +175495 +175520 +175521 +175522 +175523 +175524 +175525 +175526 +175527 +175552 +175553 +175554 +175555 +175556 +175557 +175558 +175559 +175584 +175585 +175586 +175587 +175588 +175589 +175590 +175591 +175616 +175617 +175618 +175619 +175620 +175621 +175622 +175623 +175648 +175649 +175650 +175651 +175652 +175653 +175654 +175655 +175680 +175681 +175682 +175683 +175684 +175685 +175686 +175687 +175712 +175713 +175714 +175715 +175716 +175717 +175718 +175719 +175744 +175745 +175746 +175747 +175748 +175749 +175750 +175751 +175776 +175777 +175778 +175779 +175780 +175781 +175782 +175783 +175808 +175809 +175810 +175811 +175812 +175813 +175814 +175815 +175840 +175841 +175842 +175843 +175844 +175845 +175846 +175847 +175872 +175873 +175874 +175875 +175876 +175877 +175878 +175879 +175904 +175905 +175906 +175907 +175908 +175909 +175910 +175911 +175936 +175937 +175938 +175939 +175940 +175941 +175942 +175943 +175968 +175969 +175970 +175971 +175972 +175973 +175974 +175975 +176000 +176001 +176002 +176003 +176004 +176005 +176006 +176007 +176032 +176033 +176034 +176035 +176036 +176037 +176038 +176039 +176064 +176065 +176066 +176067 +176068 +176069 +176070 +176071 +176096 +176097 +176098 +176099 +176100 +176101 +176102 +176103 +176128 +176129 +176130 +176131 +176132 +176133 +176134 +176135 +176160 +176161 +176162 +176163 +176164 +176165 +176166 +176167 +176192 +176193 +176194 +176195 +176196 +176197 +176198 +176199 +176224 +176225 +176226 +176227 +176228 +176229 +176230 +176231 +176256 +176257 +176258 +176259 +176260 +176261 +176262 +176263 +176288 +176289 +176290 +176291 +176292 +176293 +176294 +176295 +176320 +176321 +176322 +176323 +176324 +176325 +176326 +176327 +176352 +176353 +176354 +176355 +176356 +176357 +176358 +176359 +176384 +176385 +176386 +176387 +176388 +176389 +176390 +176391 +176416 +176417 +176418 +176419 +176420 +176421 +176422 +176423 +176448 +176449 +176450 +176451 +176452 +176453 +176454 +176455 +176480 +176481 +176482 +176483 +176484 +176485 +176486 +176487 +176512 +176513 +176514 +176515 +176516 +176517 +176518 +176519 +176544 +176545 +176546 +176547 +176548 +176549 +176550 +176551 +176576 +176577 +176578 +176579 +176580 +176581 +176582 +176583 +176608 +176609 +176610 +176611 +176612 +176613 +176614 +176615 +176640 +176641 +176642 +176643 +176644 +176645 +176646 +176647 +176672 +176673 +176674 +176675 +176676 +176677 +176678 +176679 +176704 +176705 +176706 +176707 +176708 +176709 +176710 +176711 +176736 +176737 +176738 +176739 +176740 +176741 +176742 +176743 +176768 +176769 +176770 +176771 +176772 +176773 +176774 +176775 +176800 +176801 +176802 +176803 +176804 +176805 +176806 +176807 +176832 +176833 +176834 +176835 +176836 +176837 +176838 +176839 +176864 +176865 +176866 +176867 +176868 +176869 +176870 +176871 +176896 +176897 +176898 +176899 +176900 +176901 +176902 +176903 +176928 +176929 +176930 +176931 +176932 +176933 +176934 +176935 +176960 +176961 +176962 +176963 +176964 +176965 +176966 +176967 +176992 +176993 +176994 +176995 +176996 +176997 +176998 +176999 +177024 +177025 +177026 +177027 +177028 +177029 +177030 +177031 +177056 +177057 +177058 +177059 +177060 +177061 +177062 +177063 +177088 +177089 +177090 +177091 +177092 +177093 +177094 +177095 +177120 +177121 +177122 +177123 +177124 +177125 +177126 +177127 +177152 +177153 +177154 +177155 +177156 +177157 +177158 +177159 +177184 +177185 +177186 +177187 +177188 +177189 +177190 +177191 +177216 +177217 +177218 +177219 +177220 +177221 +177222 +177223 +177248 +177249 +177250 +177251 +177252 +177253 +177254 +177255 +177280 +177281 +177282 +177283 +177284 +177285 +177286 +177287 +177312 +177313 +177314 +177315 +177316 +177317 +177318 +177319 +177344 +177345 +177346 +177347 +177348 +177349 +177350 +177351 +177376 +177377 +177378 +177379 +177380 +177381 +177382 +177383 +177408 +177409 +177410 +177411 +177412 +177413 +177414 +177415 +177440 +177441 +177442 +177443 +177444 +177445 +177446 +177447 +177472 +177473 +177474 +177475 +177476 +177477 +177478 +177479 +177504 +177505 +177506 +177507 +177508 +177509 +177510 +177511 +177536 +177537 +177538 +177539 +177540 +177541 +177542 +177543 +177568 +177569 +177570 +177571 +177572 +177573 +177574 +177575 +177600 +177601 +177602 +177603 +177604 +177605 +177606 +177607 +177632 +177633 +177634 +177635 +177636 +177637 +177638 +177639 +177664 +177665 +177666 +177667 +177668 +177669 +177670 +177671 +177696 +177697 +177698 +177699 +177700 +177701 +177702 +177703 +177728 +177729 +177730 +177731 +177732 +177733 +177734 +177735 +177760 +177761 +177762 +177763 +177764 +177765 +177766 +177767 +177792 +177793 +177794 +177795 +177796 +177797 +177798 +177799 +177824 +177825 +177826 +177827 +177828 +177829 +177830 +177831 +177856 +177857 +177858 +177859 +177860 +177861 +177862 +177863 +177888 +177889 +177890 +177891 +177892 +177893 +177894 +177895 +177920 +177921 +177922 +177923 +177924 +177925 +177926 +177927 +177952 +177953 +177954 +177955 +177956 +177957 +177958 +177959 +177984 +177985 +177986 +177987 +177988 +177989 +177990 +177991 +178016 +178017 +178018 +178019 +178020 +178021 +178022 +178023 +178048 +178049 +178050 +178051 +178052 +178053 +178054 +178055 +178080 +178081 +178082 +178083 +178084 +178085 +178086 +178087 +178112 +178113 +178114 +178115 +178116 +178117 +178118 +178119 +178144 +178145 +178146 +178147 +178148 +178149 +178150 +178151 +178176 +178177 +178178 +178179 +178180 +178181 +178182 +178183 +178208 +178209 +178210 +178211 +178212 +178213 +178214 +178215 +178240 +178241 +178242 +178243 +178244 +178245 +178246 +178247 +178272 +178273 +178274 +178275 +178276 +178277 +178278 +178279 +178304 +178305 +178306 +178307 +178308 +178309 +178310 +178311 +178336 +178337 +178338 +178339 +178340 +178341 +178342 +178343 +178368 +178369 +178370 +178371 +178372 +178373 +178374 +178375 +178400 +178401 +178402 +178403 +178404 +178405 +178406 +178407 +178432 +178433 +178434 +178435 +178436 +178437 +178438 +178439 +178464 +178465 +178466 +178467 +178468 +178469 +178470 +178471 +178496 +178497 +178498 +178499 +178500 +178501 +178502 +178503 +178528 +178529 +178530 +178531 +178532 +178533 +178534 +178535 +178560 +178561 +178562 +178563 +178564 +178565 +178566 +178567 +178592 +178593 +178594 +178595 +178596 +178597 +178598 +178599 +178624 +178625 +178626 +178627 +178628 +178629 +178630 +178631 +178656 +178657 +178658 +178659 +178660 +178661 +178662 +178663 +178688 +178689 +178690 +178691 +178692 +178693 +178694 +178695 +178720 +178721 +178722 +178723 +178724 +178725 +178726 +178727 +178752 +178753 +178754 +178755 +178756 +178757 +178758 +178759 +178784 +178785 +178786 +178787 +178788 +178789 +178790 +178791 +178816 +178817 +178818 +178819 +178820 +178821 +178822 +178823 +178848 +178849 +178850 +178851 +178852 +178853 +178854 +178855 +178880 +178881 +178882 +178883 +178884 +178885 +178886 +178887 +178912 +178913 +178914 +178915 +178916 +178917 +178918 +178919 +178944 +178945 +178946 +178947 +178948 +178949 +178950 +178951 +178976 +178977 +178978 +178979 +178980 +178981 +178982 +178983 +179008 +179009 +179010 +179011 +179012 +179013 +179014 +179015 +179040 +179041 +179042 +179043 +179044 +179045 +179046 +179047 +179072 +179073 +179074 +179075 +179076 +179077 +179078 +179079 +179104 +179105 +179106 +179107 +179108 +179109 +179110 +179111 +179136 +179137 +179138 +179139 +179140 +179141 +179142 +179143 +179168 +179169 +179170 +179171 +179172 +179173 +179174 +179175 +179200 +179201 +179202 +179203 +179204 +179205 +179206 +179207 +179232 +179233 +179234 +179235 +179236 +179237 +179238 +179239 +179264 +179265 +179266 +179267 +179268 +179269 +179270 +179271 +179296 +179297 +179298 +179299 +179300 +179301 +179302 +179303 +179328 +179329 +179330 +179331 +179332 +179333 +179334 +179335 +179360 +179361 +179362 +179363 +179364 +179365 +179366 +179367 +179392 +179393 +179394 +179395 +179396 +179397 +179398 +179399 +179424 +179425 +179426 +179427 +179428 +179429 +179430 +179431 +179456 +179457 +179458 +179459 +179460 +179461 +179462 +179463 +179488 +179489 +179490 +179491 +179492 +179493 +179494 +179495 +179520 +179521 +179522 +179523 +179524 +179525 +179526 +179527 +179552 +179553 +179554 +179555 +179556 +179557 +179558 +179559 +179584 +179585 +179586 +179587 +179588 +179589 +179590 +179591 +179616 +179617 +179618 +179619 +179620 +179621 +179622 +179623 +179648 +179649 +179650 +179651 +179652 +179653 +179654 +179655 +179680 +179681 +179682 +179683 +179684 +179685 +179686 +179687 +179712 +179713 +179714 +179715 +179716 +179717 +179718 +179719 +179744 +179745 +179746 +179747 +179748 +179749 +179750 +179751 +179776 +179777 +179778 +179779 +179780 +179781 +179782 +179783 +179808 +179809 +179810 +179811 +179812 +179813 +179814 +179815 +179840 +179841 +179842 +179843 +179844 +179845 +179846 +179847 +179872 +179873 +179874 +179875 +179876 +179877 +179878 +179879 +179904 +179905 +179906 +179907 +179908 +179909 +179910 +179911 +179936 +179937 +179938 +179939 +179940 +179941 +179942 +179943 +179968 +179969 +179970 +179971 +179972 +179973 +179974 +179975 +180000 +180001 +180002 +180003 +180004 +180005 +180006 +180007 +180032 +180033 +180034 +180035 +180036 +180037 +180038 +180039 +180064 +180065 +180066 +180067 +180068 +180069 +180070 +180071 +180096 +180097 +180098 +180099 +180100 +180101 +180102 +180103 +180128 +180129 +180130 +180131 +180132 +180133 +180134 +180135 +180160 +180161 +180162 +180163 +180164 +180165 +180166 +180167 +180192 +180193 +180194 +180195 +180196 +180197 +180198 +180199 +180224 +180225 +180226 +180227 +180228 +180229 +180230 +180231 +180256 +180257 +180258 +180259 +180260 +180261 +180262 +180263 +180288 +180289 +180290 +180291 +180292 +180293 +180294 +180295 +180320 +180321 +180322 +180323 +180324 +180325 +180326 +180327 +180352 +180353 +180354 +180355 +180356 +180357 +180358 +180359 +180384 +180385 +180386 +180387 +180388 +180389 +180390 +180391 +180416 +180417 +180418 +180419 +180420 +180421 +180422 +180423 +180448 +180449 +180450 +180451 +180452 +180453 +180454 +180455 +180480 +180481 +180482 +180483 +180484 +180485 +180486 +180487 +180512 +180513 +180514 +180515 +180516 +180517 +180518 +180519 +180544 +180545 +180546 +180547 +180548 +180549 +180550 +180551 +180576 +180577 +180578 +180579 +180580 +180581 +180582 +180583 +180608 +180609 +180610 +180611 +180612 +180613 +180614 +180615 +180640 +180641 +180642 +180643 +180644 +180645 +180646 +180647 +180672 +180673 +180674 +180675 +180676 +180677 +180678 +180679 +180704 +180705 +180706 +180707 +180708 +180709 +180710 +180711 +180736 +180737 +180738 +180739 +180740 +180741 +180742 +180743 +180768 +180769 +180770 +180771 +180772 +180773 +180774 +180775 +180800 +180801 +180802 +180803 +180804 +180805 +180806 +180807 +180832 +180833 +180834 +180835 +180836 +180837 +180838 +180839 +180864 +180865 +180866 +180867 +180868 +180869 +180870 +180871 +180896 +180897 +180898 +180899 +180900 +180901 +180902 +180903 +180928 +180929 +180930 +180931 +180932 +180933 +180934 +180935 +180960 +180961 +180962 +180963 +180964 +180965 +180966 +180967 +180992 +180993 +180994 +180995 +180996 +180997 +180998 +180999 +181024 +181025 +181026 +181027 +181028 +181029 +181030 +181031 +181056 +181057 +181058 +181059 +181060 +181061 +181062 +181063 +181088 +181089 +181090 +181091 +181092 +181093 +181094 +181095 +181120 +181121 +181122 +181123 +181124 +181125 +181126 +181127 +181152 +181153 +181154 +181155 +181156 +181157 +181158 +181159 +181184 +181185 +181186 +181187 +181188 +181189 +181190 +181191 +181216 +181217 +181218 +181219 +181220 +181221 +181222 +181223 +181248 +181249 +181250 +181251 +181252 +181253 +181254 +181255 +181280 +181281 +181282 +181283 +181284 +181285 +181286 +181287 +181312 +181313 +181314 +181315 +181316 +181317 +181318 +181319 +181344 +181345 +181346 +181347 +181348 +181349 +181350 +181351 +181376 +181377 +181378 +181379 +181380 +181381 +181382 +181383 +181408 +181409 +181410 +181411 +181412 +181413 +181414 +181415 +181440 +181441 +181442 +181443 +181444 +181445 +181446 +181447 +181472 +181473 +181474 +181475 +181476 +181477 +181478 +181479 +181504 +181505 +181506 +181507 +181508 +181509 +181510 +181511 +181536 +181537 +181538 +181539 +181540 +181541 +181542 +181543 +181568 +181569 +181570 +181571 +181572 +181573 +181574 +181575 +181600 +181601 +181602 +181603 +181604 +181605 +181606 +181607 +181632 +181633 +181634 +181635 +181636 +181637 +181638 +181639 +181664 +181665 +181666 +181667 +181668 +181669 +181670 +181671 +181696 +181697 +181698 +181699 +181700 +181701 +181702 +181703 +181728 +181729 +181730 +181731 +181732 +181733 +181734 +181735 +181760 +181761 +181762 +181763 +181764 +181765 +181766 +181767 +181792 +181793 +181794 +181795 +181796 +181797 +181798 +181799 +181824 +181825 +181826 +181827 +181828 +181829 +181830 +181831 +181856 +181857 +181858 +181859 +181860 +181861 +181862 +181863 +181888 +181889 +181890 +181891 +181892 +181893 +181894 +181895 +181920 +181921 +181922 +181923 +181924 +181925 +181926 +181927 +181952 +181953 +181954 +181955 +181956 +181957 +181958 +181959 +181984 +181985 +181986 +181987 +181988 +181989 +181990 +181991 +182016 +182017 +182018 +182019 +182020 +182021 +182022 +182023 +182048 +182049 +182050 +182051 +182052 +182053 +182054 +182055 +182080 +182081 +182082 +182083 +182084 +182085 +182086 +182087 +182112 +182113 +182114 +182115 +182116 +182117 +182118 +182119 +182144 +182145 +182146 +182147 +182148 +182149 +182150 +182151 +182176 +182177 +182178 +182179 +182180 +182181 +182182 +182183 +182208 +182209 +182210 +182211 +182212 +182213 +182214 +182215 +182240 +182241 +182242 +182243 +182244 +182245 +182246 +182247 +182272 +182273 +182274 +182275 +182276 +182277 +182278 +182279 +182304 +182305 +182306 +182307 +182308 +182309 +182310 +182311 +182336 +182337 +182338 +182339 +182340 +182341 +182342 +182343 +182368 +182369 +182370 +182371 +182372 +182373 +182374 +182375 +182400 +182401 +182402 +182403 +182404 +182405 +182406 +182407 +182432 +182433 +182434 +182435 +182436 +182437 +182438 +182439 +182464 +182465 +182466 +182467 +182468 +182469 +182470 +182471 +182496 +182497 +182498 +182499 +182500 +182501 +182502 +182503 +182528 +182529 +182530 +182531 +182532 +182533 +182534 +182535 +182560 +182561 +182562 +182563 +182564 +182565 +182566 +182567 +182592 +182593 +182594 +182595 +182596 +182597 +182598 +182599 +182624 +182625 +182626 +182627 +182628 +182629 +182630 +182631 +182656 +182657 +182658 +182659 +182660 +182661 +182662 +182663 +182688 +182689 +182690 +182691 +182692 +182693 +182694 +182695 +182720 +182721 +182722 +182723 +182724 +182725 +182726 +182727 +182752 +182753 +182754 +182755 +182756 +182757 +182758 +182759 +182784 +182785 +182786 +182787 +182788 +182789 +182790 +182791 +182816 +182817 +182818 +182819 +182820 +182821 +182822 +182823 +182848 +182849 +182850 +182851 +182852 +182853 +182854 +182855 +182880 +182881 +182882 +182883 +182884 +182885 +182886 +182887 +182912 +182913 +182914 +182915 +182916 +182917 +182918 +182919 +182944 +182945 +182946 +182947 +182948 +182949 +182950 +182951 +182976 +182977 +182978 +182979 +182980 +182981 +182982 +182983 +183008 +183009 +183010 +183011 +183012 +183013 +183014 +183015 +183040 +183041 +183042 +183043 +183044 +183045 +183046 +183047 +183072 +183073 +183074 +183075 +183076 +183077 +183078 +183079 +183104 +183105 +183106 +183107 +183108 +183109 +183110 +183111 +183136 +183137 +183138 +183139 +183140 +183141 +183142 +183143 +183168 +183169 +183170 +183171 +183172 +183173 +183174 +183175 +183200 +183201 +183202 +183203 +183204 +183205 +183206 +183207 +183232 +183233 +183234 +183235 +183236 +183237 +183238 +183239 +183264 +183265 +183266 +183267 +183268 +183269 +183270 +183271 +183296 +183297 +183298 +183299 +183300 +183301 +183302 +183303 +183328 +183329 +183330 +183331 +183332 +183333 +183334 +183335 +183360 +183361 +183362 +183363 +183364 +183365 +183366 +183367 +183392 +183393 +183394 +183395 +183396 +183397 +183398 +183399 +183424 +183425 +183426 +183427 +183428 +183429 +183430 +183431 +183456 +183457 +183458 +183459 +183460 +183461 +183462 +183463 +183488 +183489 +183490 +183491 +183492 +183493 +183494 +183495 +183520 +183521 +183522 +183523 +183524 +183525 +183526 +183527 +183552 +183553 +183554 +183555 +183556 +183557 +183558 +183559 +183584 +183585 +183586 +183587 +183588 +183589 +183590 +183591 +183616 +183617 +183618 +183619 +183620 +183621 +183622 +183623 +183648 +183649 +183650 +183651 +183652 +183653 +183654 +183655 +183680 +183681 +183682 +183683 +183684 +183685 +183686 +183687 +183712 +183713 +183714 +183715 +183716 +183717 +183718 +183719 +183744 +183745 +183746 +183747 +183748 +183749 +183750 +183751 +183776 +183777 +183778 +183779 +183780 +183781 +183782 +183783 +183808 +183809 +183810 +183811 +183812 +183813 +183814 +183815 +183840 +183841 +183842 +183843 +183844 +183845 +183846 +183847 +183872 +183873 +183874 +183875 +183876 +183877 +183878 +183879 +183904 +183905 +183906 +183907 +183908 +183909 +183910 +183911 +183936 +183937 +183938 +183939 +183940 +183941 +183942 +183943 +183968 +183969 +183970 +183971 +183972 +183973 +183974 +183975 +184000 +184001 +184002 +184003 +184004 +184005 +184006 +184007 +184032 +184033 +184034 +184035 +184036 +184037 +184038 +184039 +184064 +184065 +184066 +184067 +184068 +184069 +184070 +184071 +184096 +184097 +184098 +184099 +184100 +184101 +184102 +184103 +184128 +184129 +184130 +184131 +184132 +184133 +184134 +184135 +184160 +184161 +184162 +184163 +184164 +184165 +184166 +184167 +184192 +184193 +184194 +184195 +184196 +184197 +184198 +184199 +184224 +184225 +184226 +184227 +184228 +184229 +184230 +184231 +184256 +184257 +184258 +184259 +184260 +184261 +184262 +184263 +184288 +184289 +184290 +184291 +184292 +184293 +184294 +184295 +184320 +184321 +184322 +184323 +184324 +184325 +184326 +184327 +184352 +184353 +184354 +184355 +184356 +184357 +184358 +184359 +184384 +184385 +184386 +184387 +184388 +184389 +184390 +184391 +184416 +184417 +184418 +184419 +184420 +184421 +184422 +184423 +184448 +184449 +184450 +184451 +184452 +184453 +184454 +184455 +184480 +184481 +184482 +184483 +184484 +184485 +184486 +184487 +184512 +184513 +184514 +184515 +184516 +184517 +184518 +184519 +184544 +184545 +184546 +184547 +184548 +184549 +184550 +184551 +184576 +184577 +184578 +184579 +184580 +184581 +184582 +184583 +184608 +184609 +184610 +184611 +184612 +184613 +184614 +184615 +184640 +184641 +184642 +184643 +184644 +184645 +184646 +184647 +184672 +184673 +184674 +184675 +184676 +184677 +184678 +184679 +184704 +184705 +184706 +184707 +184708 +184709 +184710 +184711 +184736 +184737 +184738 +184739 +184740 +184741 +184742 +184743 +184768 +184769 +184770 +184771 +184772 +184773 +184774 +184775 +184800 +184801 +184802 +184803 +184804 +184805 +184806 +184807 +184832 +184833 +184834 +184835 +184836 +184837 +184838 +184839 +184864 +184865 +184866 +184867 +184868 +184869 +184870 +184871 +184896 +184897 +184898 +184899 +184900 +184901 +184902 +184903 +184928 +184929 +184930 +184931 +184932 +184933 +184934 +184935 +184960 +184961 +184962 +184963 +184964 +184965 +184966 +184967 +184992 +184993 +184994 +184995 +184996 +184997 +184998 +184999 +185024 +185025 +185026 +185027 +185028 +185029 +185030 +185031 +185056 +185057 +185058 +185059 +185060 +185061 +185062 +185063 +185088 +185089 +185090 +185091 +185092 +185093 +185094 +185095 +185120 +185121 +185122 +185123 +185124 +185125 +185126 +185127 +185152 +185153 +185154 +185155 +185156 +185157 +185158 +185159 +185184 +185185 +185186 +185187 +185188 +185189 +185190 +185191 +185216 +185217 +185218 +185219 +185220 +185221 +185222 +185223 +185248 +185249 +185250 +185251 +185252 +185253 +185254 +185255 +185280 +185281 +185282 +185283 +185284 +185285 +185286 +185287 +185312 +185313 +185314 +185315 +185316 +185317 +185318 +185319 +185344 +185345 +185346 +185347 +185348 +185349 +185350 +185351 +185376 +185377 +185378 +185379 +185380 +185381 +185382 +185383 +185408 +185409 +185410 +185411 +185412 +185413 +185414 +185415 +185440 +185441 +185442 +185443 +185444 +185445 +185446 +185447 +185472 +185473 +185474 +185475 +185476 +185477 +185478 +185479 +185504 +185505 +185506 +185507 +185508 +185509 +185510 +185511 +185536 +185537 +185538 +185539 +185540 +185541 +185542 +185543 +185568 +185569 +185570 +185571 +185572 +185573 +185574 +185575 +185600 +185601 +185602 +185603 +185604 +185605 +185606 +185607 +185632 +185633 +185634 +185635 +185636 +185637 +185638 +185639 +185664 +185665 +185666 +185667 +185668 +185669 +185670 +185671 +185696 +185697 +185698 +185699 +185700 +185701 +185702 +185703 +185728 +185729 +185730 +185731 +185732 +185733 +185734 +185735 +185760 +185761 +185762 +185763 +185764 +185765 +185766 +185767 +185792 +185793 +185794 +185795 +185796 +185797 +185798 +185799 +185824 +185825 +185826 +185827 +185828 +185829 +185830 +185831 +185856 +185857 +185858 +185859 +185860 +185861 +185862 +185863 +185888 +185889 +185890 +185891 +185892 +185893 +185894 +185895 +185920 +185921 +185922 +185923 +185924 +185925 +185926 +185927 +185952 +185953 +185954 +185955 +185956 +185957 +185958 +185959 +185984 +185985 +185986 +185987 +185988 +185989 +185990 +185991 +186016 +186017 +186018 +186019 +186020 +186021 +186022 +186023 +186048 +186049 +186050 +186051 +186052 +186053 +186054 +186055 +186080 +186081 +186082 +186083 +186084 +186085 +186086 +186087 +186112 +186113 +186114 +186115 +186116 +186117 +186118 +186119 +186144 +186145 +186146 +186147 +186148 +186149 +186150 +186151 +186176 +186177 +186178 +186179 +186180 +186181 +186182 +186183 +186208 +186209 +186210 +186211 +186212 +186213 +186214 +186215 +186240 +186241 +186242 +186243 +186244 +186245 +186246 +186247 +186272 +186273 +186274 +186275 +186276 +186277 +186278 +186279 +186304 +186305 +186306 +186307 +186308 +186309 +186310 +186311 +186336 +186337 +186338 +186339 +186340 +186341 +186342 +186343 +186368 +186369 +186370 +186371 +186372 +186373 +186374 +186375 +186400 +186401 +186402 +186403 +186404 +186405 +186406 +186407 +186432 +186433 +186434 +186435 +186436 +186437 +186438 +186439 +186464 +186465 +186466 +186467 +186468 +186469 +186470 +186471 +186496 +186497 +186498 +186499 +186500 +186501 +186502 +186503 +186528 +186529 +186530 +186531 +186532 +186533 +186534 +186535 +186560 +186561 +186562 +186563 +186564 +186565 +186566 +186567 +186592 +186593 +186594 +186595 +186596 +186597 +186598 +186599 +186624 +186625 +186626 +186627 +186628 +186629 +186630 +186631 +186656 +186657 +186658 +186659 +186660 +186661 +186662 +186663 +186688 +186689 +186690 +186691 +186692 +186693 +186694 +186695 +186720 +186721 +186722 +186723 +186724 +186725 +186726 +186727 +186752 +186753 +186754 +186755 +186756 +186757 +186758 +186759 +186784 +186785 +186786 +186787 +186788 +186789 +186790 +186791 +186816 +186817 +186818 +186819 +186820 +186821 +186822 +186823 +186848 +186849 +186850 +186851 +186852 +186853 +186854 +186855 +186880 +186881 +186882 +186883 +186884 +186885 +186886 +186887 +186912 +186913 +186914 +186915 +186916 +186917 +186918 +186919 +186944 +186945 +186946 +186947 +186948 +186949 +186950 +186951 +186976 +186977 +186978 +186979 +186980 +186981 +186982 +186983 +187008 +187009 +187010 +187011 +187012 +187013 +187014 +187015 +187040 +187041 +187042 +187043 +187044 +187045 +187046 +187047 +187072 +187073 +187074 +187075 +187076 +187077 +187078 +187079 +187104 +187105 +187106 +187107 +187108 +187109 +187110 +187111 +187136 +187137 +187138 +187139 +187140 +187141 +187142 +187143 +187168 +187169 +187170 +187171 +187172 +187173 +187174 +187175 +187200 +187201 +187202 +187203 +187204 +187205 +187206 +187207 +187232 +187233 +187234 +187235 +187236 +187237 +187238 +187239 +187264 +187265 +187266 +187267 +187268 +187269 +187270 +187271 +187296 +187297 +187298 +187299 +187300 +187301 +187302 +187303 +187328 +187329 +187330 +187331 +187332 +187333 +187334 +187335 +187360 +187361 +187362 +187363 +187364 +187365 +187366 +187367 +187392 +187393 +187394 +187395 +187396 +187397 +187398 +187399 +187424 +187425 +187426 +187427 +187428 +187429 +187430 +187431 +187456 +187457 +187458 +187459 +187460 +187461 +187462 +187463 +187488 +187489 +187490 +187491 +187492 +187493 +187494 +187495 +187520 +187521 +187522 +187523 +187524 +187525 +187526 +187527 +187552 +187553 +187554 +187555 +187556 +187557 +187558 +187559 +187584 +187585 +187586 +187587 +187588 +187589 +187590 +187591 +187616 +187617 +187618 +187619 +187620 +187621 +187622 +187623 +187648 +187649 +187650 +187651 +187652 +187653 +187654 +187655 +187680 +187681 +187682 +187683 +187684 +187685 +187686 +187687 +187712 +187713 +187714 +187715 +187716 +187717 +187718 +187719 +187744 +187745 +187746 +187747 +187748 +187749 +187750 +187751 +187776 +187777 +187778 +187779 +187780 +187781 +187782 +187783 +187808 +187809 +187810 +187811 +187812 +187813 +187814 +187815 +187840 +187841 +187842 +187843 +187844 +187845 +187846 +187847 +187872 +187873 +187874 +187875 +187876 +187877 +187878 +187879 +187904 +187905 +187906 +187907 +187908 +187909 +187910 +187911 +187936 +187937 +187938 +187939 +187940 +187941 +187942 +187943 +187968 +187969 +187970 +187971 +187972 +187973 +187974 +187975 +188000 +188001 +188002 +188003 +188004 +188005 +188006 +188007 +188032 +188033 +188034 +188035 +188036 +188037 +188038 +188039 +188064 +188065 +188066 +188067 +188068 +188069 +188070 +188071 +188096 +188097 +188098 +188099 +188100 +188101 +188102 +188103 +188128 +188129 +188130 +188131 +188132 +188133 +188134 +188135 +188160 +188161 +188162 +188163 +188164 +188165 +188166 +188167 +188192 +188193 +188194 +188195 +188196 +188197 +188198 +188199 +188224 +188225 +188226 +188227 +188228 +188229 +188230 +188231 +188256 +188257 +188258 +188259 +188260 +188261 +188262 +188263 +188288 +188289 +188290 +188291 +188292 +188293 +188294 +188295 +188320 +188321 +188322 +188323 +188324 +188325 +188326 +188327 +188352 +188353 +188354 +188355 +188356 +188357 +188358 +188359 +188384 +188385 +188386 +188387 +188388 +188389 +188390 +188391 +188416 +188417 +188418 +188419 +188420 +188421 +188422 +188423 +188448 +188449 +188450 +188451 +188452 +188453 +188454 +188455 +188480 +188481 +188482 +188483 +188484 +188485 +188486 +188487 +188512 +188513 +188514 +188515 +188516 +188517 +188518 +188519 +188544 +188545 +188546 +188547 +188548 +188549 +188550 +188551 +188576 +188577 +188578 +188579 +188580 +188581 +188582 +188583 +188608 +188609 +188610 +188611 +188612 +188613 +188614 +188615 +188640 +188641 +188642 +188643 +188644 +188645 +188646 +188647 +188672 +188673 +188674 +188675 +188676 +188677 +188678 +188679 +188704 +188705 +188706 +188707 +188708 +188709 +188710 +188711 +188736 +188737 +188738 +188739 +188740 +188741 +188742 +188743 +188768 +188769 +188770 +188771 +188772 +188773 +188774 +188775 +188800 +188801 +188802 +188803 +188804 +188805 +188806 +188807 +188832 +188833 +188834 +188835 +188836 +188837 +188838 +188839 +188864 +188865 +188866 +188867 +188868 +188869 +188870 +188871 +188896 +188897 +188898 +188899 +188900 +188901 +188902 +188903 +188928 +188929 +188930 +188931 +188932 +188933 +188934 +188935 +188960 +188961 +188962 +188963 +188964 +188965 +188966 +188967 +188992 +188993 +188994 +188995 +188996 +188997 +188998 +188999 +189024 +189025 +189026 +189027 +189028 +189029 +189030 +189031 +189056 +189057 +189058 +189059 +189060 +189061 +189062 +189063 +189088 +189089 +189090 +189091 +189092 +189093 +189094 +189095 +189120 +189121 +189122 +189123 +189124 +189125 +189126 +189127 +189152 +189153 +189154 +189155 +189156 +189157 +189158 +189159 +189184 +189185 +189186 +189187 +189188 +189189 +189190 +189191 +189216 +189217 +189218 +189219 +189220 +189221 +189222 +189223 +189248 +189249 +189250 +189251 +189252 +189253 +189254 +189255 +189280 +189281 +189282 +189283 +189284 +189285 +189286 +189287 +189312 +189313 +189314 +189315 +189316 +189317 +189318 +189319 +189344 +189345 +189346 +189347 +189348 +189349 +189350 +189351 +189376 +189377 +189378 +189379 +189380 +189381 +189382 +189383 +189408 +189409 +189410 +189411 +189412 +189413 +189414 +189415 +189440 +189441 +189442 +189443 +189444 +189445 +189446 +189447 +189472 +189473 +189474 +189475 +189476 +189477 +189478 +189479 +189504 +189505 +189506 +189507 +189508 +189509 +189510 +189511 +189536 +189537 +189538 +189539 +189540 +189541 +189542 +189543 +189568 +189569 +189570 +189571 +189572 +189573 +189574 +189575 +189600 +189601 +189602 +189603 +189604 +189605 +189606 +189607 +189632 +189633 +189634 +189635 +189636 +189637 +189638 +189639 +189664 +189665 +189666 +189667 +189668 +189669 +189670 +189671 +189696 +189697 +189698 +189699 +189700 +189701 +189702 +189703 +189728 +189729 +189730 +189731 +189732 +189733 +189734 +189735 +189760 +189761 +189762 +189763 +189764 +189765 +189766 +189767 +189792 +189793 +189794 +189795 +189796 +189797 +189798 +189799 +189824 +189825 +189826 +189827 +189828 +189829 +189830 +189831 +189856 +189857 +189858 +189859 +189860 +189861 +189862 +189863 +189888 +189889 +189890 +189891 +189892 +189893 +189894 +189895 +189920 +189921 +189922 +189923 +189924 +189925 +189926 +189927 +189952 +189953 +189954 +189955 +189956 +189957 +189958 +189959 +189984 +189985 +189986 +189987 +189988 +189989 +189990 +189991 +190016 +190017 +190018 +190019 +190020 +190021 +190022 +190023 +190048 +190049 +190050 +190051 +190052 +190053 +190054 +190055 +190080 +190081 +190082 +190083 +190084 +190085 +190086 +190087 +190112 +190113 +190114 +190115 +190116 +190117 +190118 +190119 +190144 +190145 +190146 +190147 +190148 +190149 +190150 +190151 +190176 +190177 +190178 +190179 +190180 +190181 +190182 +190183 +190208 +190209 +190210 +190211 +190212 +190213 +190214 +190215 +190240 +190241 +190242 +190243 +190244 +190245 +190246 +190247 +190272 +190273 +190274 +190275 +190276 +190277 +190278 +190279 +190304 +190305 +190306 +190307 +190308 +190309 +190310 +190311 +190336 +190337 +190338 +190339 +190340 +190341 +190342 +190343 +190368 +190369 +190370 +190371 +190372 +190373 +190374 +190375 +190400 +190401 +190402 +190403 +190404 +190405 +190406 +190407 +190432 +190433 +190434 +190435 +190436 +190437 +190438 +190439 +190464 +190465 +190466 +190467 +190468 +190469 +190470 +190471 +190496 +190497 +190498 +190499 +190500 +190501 +190502 +190503 +190528 +190529 +190530 +190531 +190532 +190533 +190534 +190535 +190560 +190561 +190562 +190563 +190564 +190565 +190566 +190567 +190592 +190593 +190594 +190595 +190596 +190597 +190598 +190599 +190624 +190625 +190626 +190627 +190628 +190629 +190630 +190631 +190656 +190657 +190658 +190659 +190660 +190661 +190662 +190663 +190688 +190689 +190690 +190691 +190692 +190693 +190694 +190695 +190720 +190721 +190722 +190723 +190724 +190725 +190726 +190727 +190752 +190753 +190754 +190755 +190756 +190757 +190758 +190759 +190784 +190785 +190786 +190787 +190788 +190789 +190790 +190791 +190816 +190817 +190818 +190819 +190820 +190821 +190822 +190823 +190848 +190849 +190850 +190851 +190852 +190853 +190854 +190855 +190880 +190881 +190882 +190883 +190884 +190885 +190886 +190887 +190912 +190913 +190914 +190915 +190916 +190917 +190918 +190919 +190944 +190945 +190946 +190947 +190948 +190949 +190950 +190951 +190976 +190977 +190978 +190979 +190980 +190981 +190982 +190983 +191008 +191009 +191010 +191011 +191012 +191013 +191014 +191015 +191040 +191041 +191042 +191043 +191044 +191045 +191046 +191047 +191072 +191073 +191074 +191075 +191076 +191077 +191078 +191079 +191104 +191105 +191106 +191107 +191108 +191109 +191110 +191111 +191136 +191137 +191138 +191139 +191140 +191141 +191142 +191143 +191168 +191169 +191170 +191171 +191172 +191173 +191174 +191175 +191200 +191201 +191202 +191203 +191204 +191205 +191206 +191207 +191232 +191233 +191234 +191235 +191236 +191237 +191238 +191239 +191264 +191265 +191266 +191267 +191268 +191269 +191270 +191271 +191296 +191297 +191298 +191299 +191300 +191301 +191302 +191303 +191328 +191329 +191330 +191331 +191332 +191333 +191334 +191335 +191360 +191361 +191362 +191363 +191364 +191365 +191366 +191367 +191392 +191393 +191394 +191395 +191396 +191397 +191398 +191399 +191424 +191425 +191426 +191427 +191428 +191429 +191430 +191431 +191456 +191457 +191458 +191459 +191460 +191461 +191462 +191463 +191488 +191489 +191490 +191491 +191492 +191493 +191494 +191495 +191520 +191521 +191522 +191523 +191524 +191525 +191526 +191527 +191552 +191553 +191554 +191555 +191556 +191557 +191558 +191559 +191584 +191585 +191586 +191587 +191588 +191589 +191590 +191591 +191616 +191617 +191618 +191619 +191620 +191621 +191622 +191623 +191648 +191649 +191650 +191651 +191652 +191653 +191654 +191655 +191680 +191681 +191682 +191683 +191684 +191685 +191686 +191687 +191712 +191713 +191714 +191715 +191716 +191717 +191718 +191719 +191744 +191745 +191746 +191747 +191748 +191749 +191750 +191751 +191776 +191777 +191778 +191779 +191780 +191781 +191782 +191783 +191808 +191809 +191810 +191811 +191812 +191813 +191814 +191815 +191840 +191841 +191842 +191843 +191844 +191845 +191846 +191847 +191872 +191873 +191874 +191875 +191876 +191877 +191878 +191879 +191904 +191905 +191906 +191907 +191908 +191909 +191910 +191911 +191936 +191937 +191938 +191939 +191940 +191941 +191942 +191943 +191968 +191969 +191970 +191971 +191972 +191973 +191974 +191975 +192000 +192001 +192002 +192003 +192004 +192005 +192006 +192007 +192032 +192033 +192034 +192035 +192036 +192037 +192038 +192039 +192064 +192065 +192066 +192067 +192068 +192069 +192070 +192071 +192096 +192097 +192098 +192099 +192100 +192101 +192102 +192103 +192128 +192129 +192130 +192131 +192132 +192133 +192134 +192135 +192160 +192161 +192162 +192163 +192164 +192165 +192166 +192167 +192192 +192193 +192194 +192195 +192196 +192197 +192198 +192199 +192224 +192225 +192226 +192227 +192228 +192229 +192230 +192231 +192256 +192257 +192258 +192259 +192260 +192261 +192262 +192263 +192288 +192289 +192290 +192291 +192292 +192293 +192294 +192295 +192320 +192321 +192322 +192323 +192324 +192325 +192326 +192327 +192352 +192353 +192354 +192355 +192356 +192357 +192358 +192359 +192384 +192385 +192386 +192387 +192388 +192389 +192390 +192391 +192416 +192417 +192418 +192419 +192420 +192421 +192422 +192423 +192448 +192449 +192450 +192451 +192452 +192453 +192454 +192455 +192480 +192481 +192482 +192483 +192484 +192485 +192486 +192487 +192512 +192513 +192514 +192515 +192516 +192517 +192518 +192519 +192544 +192545 +192546 +192547 +192548 +192549 +192550 +192551 +192576 +192577 +192578 +192579 +192580 +192581 +192582 +192583 +192608 +192609 +192610 +192611 +192612 +192613 +192614 +192615 +192640 +192641 +192642 +192643 +192644 +192645 +192646 +192647 +192672 +192673 +192674 +192675 +192676 +192677 +192678 +192679 +192704 +192705 +192706 +192707 +192708 +192709 +192710 +192711 +192736 +192737 +192738 +192739 +192740 +192741 +192742 +192743 +192768 +192769 +192770 +192771 +192772 +192773 +192774 +192775 +192800 +192801 +192802 +192803 +192804 +192805 +192806 +192807 +192832 +192833 +192834 +192835 +192836 +192837 +192838 +192839 +192864 +192865 +192866 +192867 +192868 +192869 +192870 +192871 +192896 +192897 +192898 +192899 +192900 +192901 +192902 +192903 +192928 +192929 +192930 +192931 +192932 +192933 +192934 +192935 +192960 +192961 +192962 +192963 +192964 +192965 +192966 +192967 +192992 +192993 +192994 +192995 +192996 +192997 +192998 +192999 +193024 +193025 +193026 +193027 +193028 +193029 +193030 +193031 +193056 +193057 +193058 +193059 +193060 +193061 +193062 +193063 +193088 +193089 +193090 +193091 +193092 +193093 +193094 +193095 +193120 +193121 +193122 +193123 +193124 +193125 +193126 +193127 +193152 +193153 +193154 +193155 +193156 +193157 +193158 +193159 +193184 +193185 +193186 +193187 +193188 +193189 +193190 +193191 +193216 +193217 +193218 +193219 +193220 +193221 +193222 +193223 +193248 +193249 +193250 +193251 +193252 +193253 +193254 +193255 +193280 +193281 +193282 +193283 +193284 +193285 +193286 +193287 +193312 +193313 +193314 +193315 +193316 +193317 +193318 +193319 +193344 +193345 +193346 +193347 +193348 +193349 +193350 +193351 +193376 +193377 +193378 +193379 +193380 +193381 +193382 +193383 +193408 +193409 +193410 +193411 +193412 +193413 +193414 +193415 +193440 +193441 +193442 +193443 +193444 +193445 +193446 +193447 +193472 +193473 +193474 +193475 +193476 +193477 +193478 +193479 +193504 +193505 +193506 +193507 +193508 +193509 +193510 +193511 +193536 +193537 +193538 +193539 +193540 +193541 +193542 +193543 +193568 +193569 +193570 +193571 +193572 +193573 +193574 +193575 +193600 +193601 +193602 +193603 +193604 +193605 +193606 +193607 +193632 +193633 +193634 +193635 +193636 +193637 +193638 +193639 +193664 +193665 +193666 +193667 +193668 +193669 +193670 +193671 +193696 +193697 +193698 +193699 +193700 +193701 +193702 +193703 +193728 +193729 +193730 +193731 +193732 +193733 +193734 +193735 +193760 +193761 +193762 +193763 +193764 +193765 +193766 +193767 +193792 +193793 +193794 +193795 +193796 +193797 +193798 +193799 +193824 +193825 +193826 +193827 +193828 +193829 +193830 +193831 +193856 +193857 +193858 +193859 +193860 +193861 +193862 +193863 +193888 +193889 +193890 +193891 +193892 +193893 +193894 +193895 +193920 +193921 +193922 +193923 +193924 +193925 +193926 +193927 +193952 +193953 +193954 +193955 +193956 +193957 +193958 +193959 +193984 +193985 +193986 +193987 +193988 +193989 +193990 +193991 +194016 +194017 +194018 +194019 +194020 +194021 +194022 +194023 +194048 +194049 +194050 +194051 +194052 +194053 +194054 +194055 +194080 +194081 +194082 +194083 +194084 +194085 +194086 +194087 +194112 +194113 +194114 +194115 +194116 +194117 +194118 +194119 +194144 +194145 +194146 +194147 +194148 +194149 +194150 +194151 +194176 +194177 +194178 +194179 +194180 +194181 +194182 +194183 +194208 +194209 +194210 +194211 +194212 +194213 +194214 +194215 +194240 +194241 +194242 +194243 +194244 +194245 +194246 +194247 +194272 +194273 +194274 +194275 +194276 +194277 +194278 +194279 +194304 +194305 +194306 +194307 +194308 +194309 +194310 +194311 +194336 +194337 +194338 +194339 +194340 +194341 +194342 +194343 +194368 +194369 +194370 +194371 +194372 +194373 +194374 +194375 +194400 +194401 +194402 +194403 +194404 +194405 +194406 +194407 +194432 +194433 +194434 +194435 +194436 +194437 +194438 +194439 +194464 +194465 +194466 +194467 +194468 +194469 +194470 +194471 +194496 +194497 +194498 +194499 +194500 +194501 +194502 +194503 +194528 +194529 +194530 +194531 +194532 +194533 +194534 +194535 +194560 +194561 +194562 +194563 +194564 +194565 +194566 +194567 +194592 +194593 +194594 +194595 +194596 +194597 +194598 +194599 +194624 +194625 +194626 +194627 +194628 +194629 +194630 +194631 +194656 +194657 +194658 +194659 +194660 +194661 +194662 +194663 +194688 +194689 +194690 +194691 +194692 +194693 +194694 +194695 +194720 +194721 +194722 +194723 +194724 +194725 +194726 +194727 +194752 +194753 +194754 +194755 +194756 +194757 +194758 +194759 +194784 +194785 +194786 +194787 +194788 +194789 +194790 +194791 +194816 +194817 +194818 +194819 +194820 +194821 +194822 +194823 +194848 +194849 +194850 +194851 +194852 +194853 +194854 +194855 +194880 +194881 +194882 +194883 +194884 +194885 +194886 +194887 +194912 +194913 +194914 +194915 +194916 +194917 +194918 +194919 +194944 +194945 +194946 +194947 +194948 +194949 +194950 +194951 +194976 +194977 +194978 +194979 +194980 +194981 +194982 +194983 +195008 +195009 +195010 +195011 +195012 +195013 +195014 +195015 +195040 +195041 +195042 +195043 +195044 +195045 +195046 +195047 +195072 +195073 +195074 +195075 +195076 +195077 +195078 +195079 +195104 +195105 +195106 +195107 +195108 +195109 +195110 +195111 +195136 +195137 +195138 +195139 +195140 +195141 +195142 +195143 +195168 +195169 +195170 +195171 +195172 +195173 +195174 +195175 +195200 +195201 +195202 +195203 +195204 +195205 +195206 +195207 +195232 +195233 +195234 +195235 +195236 +195237 +195238 +195239 +195264 +195265 +195266 +195267 +195268 +195269 +195270 +195271 +195296 +195297 +195298 +195299 +195300 +195301 +195302 +195303 +195328 +195329 +195330 +195331 +195332 +195333 +195334 +195335 +195360 +195361 +195362 +195363 +195364 +195365 +195366 +195367 +195392 +195393 +195394 +195395 +195396 +195397 +195398 +195399 +195424 +195425 +195426 +195427 +195428 +195429 +195430 +195431 +195456 +195457 +195458 +195459 +195460 +195461 +195462 +195463 +195488 +195489 +195490 +195491 +195492 +195493 +195494 +195495 +195520 +195521 +195522 +195523 +195524 +195525 +195526 +195527 +195552 +195553 +195554 +195555 +195556 +195557 +195558 +195559 +195584 +195585 +195586 +195587 +195588 +195589 +195590 +195591 +195616 +195617 +195618 +195619 +195620 +195621 +195622 +195623 +195648 +195649 +195650 +195651 +195652 +195653 +195654 +195655 +195680 +195681 +195682 +195683 +195684 +195685 +195686 +195687 +195712 +195713 +195714 +195715 +195716 +195717 +195718 +195719 +195744 +195745 +195746 +195747 +195748 +195749 +195750 +195751 +195776 +195777 +195778 +195779 +195780 +195781 +195782 +195783 +195808 +195809 +195810 +195811 +195812 +195813 +195814 +195815 +195840 +195841 +195842 +195843 +195844 +195845 +195846 +195847 +195872 +195873 +195874 +195875 +195876 +195877 +195878 +195879 +195904 +195905 +195906 +195907 +195908 +195909 +195910 +195911 +195936 +195937 +195938 +195939 +195940 +195941 +195942 +195943 +195968 +195969 +195970 +195971 +195972 +195973 +195974 +195975 +196000 +196001 +196002 +196003 +196004 +196005 +196006 +196007 +196032 +196033 +196034 +196035 +196036 +196037 +196038 +196039 +196064 +196065 +196066 +196067 +196068 +196069 +196070 +196071 +196096 +196097 +196098 +196099 +196100 +196101 +196102 +196103 +196128 +196129 +196130 +196131 +196132 +196133 +196134 +196135 +196160 +196161 +196162 +196163 +196164 +196165 +196166 +196167 +196192 +196193 +196194 +196195 +196196 +196197 +196198 +196199 +196224 +196225 +196226 +196227 +196228 +196229 +196230 +196231 +196256 +196257 +196258 +196259 +196260 +196261 +196262 +196263 +196288 +196289 +196290 +196291 +196292 +196293 +196294 +196295 +196320 +196321 +196322 +196323 +196324 +196325 +196326 +196327 +196352 +196353 +196354 +196355 +196356 +196357 +196358 +196359 +196384 +196385 +196386 +196387 +196388 +196389 +196390 +196391 +196416 +196417 +196418 +196419 +196420 +196421 +196422 +196423 +196448 +196449 +196450 +196451 +196452 +196453 +196454 +196455 +196480 +196481 +196482 +196483 +196484 +196485 +196486 +196487 +196512 +196513 +196514 +196515 +196516 +196517 +196518 +196519 +196544 +196545 +196546 +196547 +196548 +196549 +196550 +196551 +196576 +196577 +196578 +196579 +196580 +196581 +196582 +196583 +196608 +196609 +196610 +196611 +196612 +196613 +196614 +196615 +196640 +196641 +196642 +196643 +196644 +196645 +196646 +196647 +196672 +196673 +196674 +196675 +196676 +196677 +196678 +196679 +196704 +196705 +196706 +196707 +196708 +196709 +196710 +196711 +196736 +196737 +196738 +196739 +196740 +196741 +196742 +196743 +196768 +196769 +196770 +196771 +196772 +196773 +196774 +196775 +196800 +196801 +196802 +196803 +196804 +196805 +196806 +196807 +196832 +196833 +196834 +196835 +196836 +196837 +196838 +196839 +196864 +196865 +196866 +196867 +196868 +196869 +196870 +196871 +196896 +196897 +196898 +196899 +196900 +196901 +196902 +196903 +196928 +196929 +196930 +196931 +196932 +196933 +196934 +196935 +196960 +196961 +196962 +196963 +196964 +196965 +196966 +196967 +196992 +196993 +196994 +196995 +196996 +196997 +196998 +196999 +197024 +197025 +197026 +197027 +197028 +197029 +197030 +197031 +197056 +197057 +197058 +197059 +197060 +197061 +197062 +197063 +197088 +197089 +197090 +197091 +197092 +197093 +197094 +197095 +197120 +197121 +197122 +197123 +197124 +197125 +197126 +197127 +197152 +197153 +197154 +197155 +197156 +197157 +197158 +197159 +197184 +197185 +197186 +197187 +197188 +197189 +197190 +197191 +197216 +197217 +197218 +197219 +197220 +197221 +197222 +197223 +197248 +197249 +197250 +197251 +197252 +197253 +197254 +197255 +197280 +197281 +197282 +197283 +197284 +197285 +197286 +197287 +197312 +197313 +197314 +197315 +197316 +197317 +197318 +197319 +197344 +197345 +197346 +197347 +197348 +197349 +197350 +197351 +197376 +197377 +197378 +197379 +197380 +197381 +197382 +197383 +197408 +197409 +197410 +197411 +197412 +197413 +197414 +197415 +197440 +197441 +197442 +197443 +197444 +197445 +197446 +197447 +197472 +197473 +197474 +197475 +197476 +197477 +197478 +197479 +197504 +197505 +197506 +197507 +197508 +197509 +197510 +197511 +197536 +197537 +197538 +197539 +197540 +197541 +197542 +197543 +197568 +197569 +197570 +197571 +197572 +197573 +197574 +197575 +197600 +197601 +197602 +197603 +197604 +197605 +197606 +197607 +197632 +197633 +197634 +197635 +197636 +197637 +197638 +197639 +197664 +197665 +197666 +197667 +197668 +197669 +197670 +197671 +197696 +197697 +197698 +197699 +197700 +197701 +197702 +197703 +197728 +197729 +197730 +197731 +197732 +197733 +197734 +197735 +197760 +197761 +197762 +197763 +197764 +197765 +197766 +197767 +197792 +197793 +197794 +197795 +197796 +197797 +197798 +197799 +197824 +197825 +197826 +197827 +197828 +197829 +197830 +197831 +197856 +197857 +197858 +197859 +197860 +197861 +197862 +197863 +197888 +197889 +197890 +197891 +197892 +197893 +197894 +197895 +197920 +197921 +197922 +197923 +197924 +197925 +197926 +197927 +197952 +197953 +197954 +197955 +197956 +197957 +197958 +197959 +197984 +197985 +197986 +197987 +197988 +197989 +197990 +197991 +198016 +198017 +198018 +198019 +198020 +198021 +198022 +198023 +198048 +198049 +198050 +198051 +198052 +198053 +198054 +198055 +198080 +198081 +198082 +198083 +198084 +198085 +198086 +198087 +198112 +198113 +198114 +198115 +198116 +198117 +198118 +198119 +198144 +198145 +198146 +198147 +198148 +198149 +198150 +198151 +198176 +198177 +198178 +198179 +198180 +198181 +198182 +198183 +198208 +198209 +198210 +198211 +198212 +198213 +198214 +198215 +198240 +198241 +198242 +198243 +198244 +198245 +198246 +198247 +198272 +198273 +198274 +198275 +198276 +198277 +198278 +198279 +198304 +198305 +198306 +198307 +198308 +198309 +198310 +198311 +198336 +198337 +198338 +198339 +198340 +198341 +198342 +198343 +198368 +198369 +198370 +198371 +198372 +198373 +198374 +198375 +198400 +198401 +198402 +198403 +198404 +198405 +198406 +198407 +198432 +198433 +198434 +198435 +198436 +198437 +198438 +198439 +198464 +198465 +198466 +198467 +198468 +198469 +198470 +198471 +198496 +198497 +198498 +198499 +198500 +198501 +198502 +198503 +198528 +198529 +198530 +198531 +198532 +198533 +198534 +198535 +198560 +198561 +198562 +198563 +198564 +198565 +198566 +198567 +198592 +198593 +198594 +198595 +198596 +198597 +198598 +198599 +198624 +198625 +198626 +198627 +198628 +198629 +198630 +198631 +198656 +198657 +198658 +198659 +198660 +198661 +198662 +198663 +198688 +198689 +198690 +198691 +198692 +198693 +198694 +198695 +198720 +198721 +198722 +198723 +198724 +198725 +198726 +198727 +198752 +198753 +198754 +198755 +198756 +198757 +198758 +198759 +198784 +198785 +198786 +198787 +198788 +198789 +198790 +198791 +198816 +198817 +198818 +198819 +198820 +198821 +198822 +198823 +198848 +198849 +198850 +198851 +198852 +198853 +198854 +198855 +198880 +198881 +198882 +198883 +198884 +198885 +198886 +198887 +198912 +198913 +198914 +198915 +198916 +198917 +198918 +198919 +198944 +198945 +198946 +198947 +198948 +198949 +198950 +198951 +198976 +198977 +198978 +198979 +198980 +198981 +198982 +198983 +199008 +199009 +199010 +199011 +199012 +199013 +199014 +199015 +199040 +199041 +199042 +199043 +199044 +199045 +199046 +199047 +199072 +199073 +199074 +199075 +199076 +199077 +199078 +199079 +199104 +199105 +199106 +199107 +199108 +199109 +199110 +199111 +199136 +199137 +199138 +199139 +199140 +199141 +199142 +199143 +199168 +199169 +199170 +199171 +199172 +199173 +199174 +199175 +199200 +199201 +199202 +199203 +199204 +199205 +199206 +199207 +199232 +199233 +199234 +199235 +199236 +199237 +199238 +199239 +199264 +199265 +199266 +199267 +199268 +199269 +199270 +199271 +199296 +199297 +199298 +199299 +199300 +199301 +199302 +199303 +199328 +199329 +199330 +199331 +199332 +199333 +199334 +199335 +199360 +199361 +199362 +199363 +199364 +199365 +199366 +199367 +199392 +199393 +199394 +199395 +199396 +199397 +199398 +199399 +199424 +199425 +199426 +199427 +199428 +199429 +199430 +199431 +199456 +199457 +199458 +199459 +199460 +199461 +199462 +199463 +199488 +199489 +199490 +199491 +199492 +199493 +199494 +199495 +199520 +199521 +199522 +199523 +199524 +199525 +199526 +199527 +199552 +199553 +199554 +199555 +199556 +199557 +199558 +199559 +199584 +199585 +199586 +199587 +199588 +199589 +199590 +199591 +199616 +199617 +199618 +199619 +199620 +199621 +199622 +199623 +199648 +199649 +199650 +199651 +199652 +199653 +199654 +199655 +199680 +199681 +199682 +199683 +199684 +199685 +199686 +199687 +199712 +199713 +199714 +199715 +199716 +199717 +199718 +199719 +199744 +199745 +199746 +199747 +199748 +199749 +199750 +199751 +199776 +199777 +199778 +199779 +199780 +199781 +199782 +199783 +199808 +199809 +199810 +199811 +199812 +199813 +199814 +199815 +199840 +199841 +199842 +199843 +199844 +199845 +199846 +199847 +199872 +199873 +199874 +199875 +199876 +199877 +199878 +199879 +199904 +199905 +199906 +199907 +199908 +199909 +199910 +199911 +199936 +199937 +199938 +199939 +199940 +199941 +199942 +199943 +199968 +199969 +199970 +199971 +199972 +199973 +199974 +199975 +200000 +200001 +200002 +200003 +200004 +200005 +200006 +200007 +200032 +200033 +200034 +200035 +200036 +200037 +200038 +200039 +200064 +200065 +200066 +200067 +200068 +200069 +200070 +200071 +200096 +200097 +200098 +200099 +200100 +200101 +200102 +200103 +200128 +200129 +200130 +200131 +200132 +200133 +200134 +200135 +200160 +200161 +200162 +200163 +200164 +200165 +200166 +200167 +200192 +200193 +200194 +200195 +200196 +200197 +200198 +200199 +200224 +200225 +200226 +200227 +200228 +200229 +200230 +200231 +200256 +200257 +200258 +200259 +200260 +200261 +200262 +200263 +200288 +200289 +200290 +200291 +200292 +200293 +200294 +200295 +200320 +200321 +200322 +200323 +200324 +200325 +200326 +200327 +200352 +200353 +200354 +200355 +200356 +200357 +200358 +200359 +200384 +200385 +200386 +200387 +200388 +200389 +200390 +200391 +200416 +200417 +200418 +200419 +200420 +200421 +200422 +200423 +200448 +200449 +200450 +200451 +200452 +200453 +200454 +200455 +200480 +200481 +200482 +200483 +200484 +200485 +200486 +200487 +200512 +200513 +200514 +200515 +200516 +200517 +200518 +200519 +200544 +200545 +200546 +200547 +200548 +200549 +200550 +200551 +200576 +200577 +200578 +200579 +200580 +200581 +200582 +200583 +200608 +200609 +200610 +200611 +200612 +200613 +200614 +200615 +200640 +200641 +200642 +200643 +200644 +200645 +200646 +200647 +200672 +200673 +200674 +200675 +200676 +200677 +200678 +200679 +200704 +200705 +200706 +200707 +200708 +200709 +200710 +200711 +200736 +200737 +200738 +200739 +200740 +200741 +200742 +200743 +200768 +200769 +200770 +200771 +200772 +200773 +200774 +200775 +200800 +200801 +200802 +200803 +200804 +200805 +200806 +200807 +200832 +200833 +200834 +200835 +200836 +200837 +200838 +200839 +200864 +200865 +200866 +200867 +200868 +200869 +200870 +200871 +200896 +200897 +200898 +200899 +200900 +200901 +200902 +200903 +200928 +200929 +200930 +200931 +200932 +200933 +200934 +200935 +200960 +200961 +200962 +200963 +200964 +200965 +200966 +200967 +200992 +200993 +200994 +200995 +200996 +200997 +200998 +200999 +201024 +201025 +201026 +201027 +201028 +201029 +201030 +201031 +201056 +201057 +201058 +201059 +201060 +201061 +201062 +201063 +201088 +201089 +201090 +201091 +201092 +201093 +201094 +201095 +201120 +201121 +201122 +201123 +201124 +201125 +201126 +201127 +201152 +201153 +201154 +201155 +201156 +201157 +201158 +201159 +201184 +201185 +201186 +201187 +201188 +201189 +201190 +201191 +201216 +201217 +201218 +201219 +201220 +201221 +201222 +201223 +201248 +201249 +201250 +201251 +201252 +201253 +201254 +201255 +201280 +201281 +201282 +201283 +201284 +201285 +201286 +201287 +201312 +201313 +201314 +201315 +201316 +201317 +201318 +201319 +201344 +201345 +201346 +201347 +201348 +201349 +201350 +201351 +201376 +201377 +201378 +201379 +201380 +201381 +201382 +201383 +201408 +201409 +201410 +201411 +201412 +201413 +201414 +201415 +201440 +201441 +201442 +201443 +201444 +201445 +201446 +201447 +201472 +201473 +201474 +201475 +201476 +201477 +201478 +201479 +201504 +201505 +201506 +201507 +201508 +201509 +201510 +201511 +201536 +201537 +201538 +201539 +201540 +201541 +201542 +201543 +201568 +201569 +201570 +201571 +201572 +201573 +201574 +201575 +201600 +201601 +201602 +201603 +201604 +201605 +201606 +201607 +201632 +201633 +201634 +201635 +201636 +201637 +201638 +201639 +201664 +201665 +201666 +201667 +201668 +201669 +201670 +201671 +201696 +201697 +201698 +201699 +201700 +201701 +201702 +201703 +201728 +201729 +201730 +201731 +201732 +201733 +201734 +201735 +201760 +201761 +201762 +201763 +201764 +201765 +201766 +201767 +201792 +201793 +201794 +201795 +201796 +201797 +201798 +201799 +201824 +201825 +201826 +201827 +201828 +201829 +201830 +201831 +201856 +201857 +201858 +201859 +201860 +201861 +201862 +201863 +201888 +201889 +201890 +201891 +201892 +201893 +201894 +201895 +201920 +201921 +201922 +201923 +201924 +201925 +201926 +201927 +201952 +201953 +201954 +201955 +201956 +201957 +201958 +201959 +201984 +201985 +201986 +201987 +201988 +201989 +201990 +201991 +202016 +202017 +202018 +202019 +202020 +202021 +202022 +202023 +202048 +202049 +202050 +202051 +202052 +202053 +202054 +202055 +202080 +202081 +202082 +202083 +202084 +202085 +202086 +202087 +202112 +202113 +202114 +202115 +202116 +202117 +202118 +202119 +202144 +202145 +202146 +202147 +202148 +202149 +202150 +202151 +202176 +202177 +202178 +202179 +202180 +202181 +202182 +202183 +202208 +202209 +202210 +202211 +202212 +202213 +202214 +202215 +202240 +202241 +202242 +202243 +202244 +202245 +202246 +202247 +202272 +202273 +202274 +202275 +202276 +202277 +202278 +202279 +202304 +202305 +202306 +202307 +202308 +202309 +202310 +202311 +202336 +202337 +202338 +202339 +202340 +202341 +202342 +202343 +202368 +202369 +202370 +202371 +202372 +202373 +202374 +202375 +202400 +202401 +202402 +202403 +202404 +202405 +202406 +202407 +202432 +202433 +202434 +202435 +202436 +202437 +202438 +202439 +202464 +202465 +202466 +202467 +202468 +202469 +202470 +202471 +202496 +202497 +202498 +202499 +202500 +202501 +202502 +202503 +202528 +202529 +202530 +202531 +202532 +202533 +202534 +202535 +202560 +202561 +202562 +202563 +202564 +202565 +202566 +202567 +202592 +202593 +202594 +202595 +202596 +202597 +202598 +202599 +202624 +202625 +202626 +202627 +202628 +202629 +202630 +202631 +202656 +202657 +202658 +202659 +202660 +202661 +202662 +202663 +202688 +202689 +202690 +202691 +202692 +202693 +202694 +202695 +202720 +202721 +202722 +202723 +202724 +202725 +202726 +202727 +202752 +202753 +202754 +202755 +202756 +202757 +202758 +202759 +202784 +202785 +202786 +202787 +202788 +202789 +202790 +202791 +202816 +202817 +202818 +202819 +202820 +202821 +202822 +202823 +202848 +202849 +202850 +202851 +202852 +202853 +202854 +202855 +202880 +202881 +202882 +202883 +202884 +202885 +202886 +202887 +202912 +202913 +202914 +202915 +202916 +202917 +202918 +202919 +202944 +202945 +202946 +202947 +202948 +202949 +202950 +202951 +202976 +202977 +202978 +202979 +202980 +202981 +202982 +202983 +203008 +203009 +203010 +203011 +203012 +203013 +203014 +203015 +203040 +203041 +203042 +203043 +203044 +203045 +203046 +203047 +203072 +203073 +203074 +203075 +203076 +203077 +203078 +203079 +203104 +203105 +203106 +203107 +203108 +203109 +203110 +203111 +203136 +203137 +203138 +203139 +203140 +203141 +203142 +203143 +203168 +203169 +203170 +203171 +203172 +203173 +203174 +203175 +203200 +203201 +203202 +203203 +203204 +203205 +203206 +203207 +203232 +203233 +203234 +203235 +203236 +203237 +203238 +203239 +203264 +203265 +203266 +203267 +203268 +203269 +203270 +203271 +203296 +203297 +203298 +203299 +203300 +203301 +203302 +203303 +203328 +203329 +203330 +203331 +203332 +203333 +203334 +203335 +203360 +203361 +203362 +203363 +203364 +203365 +203366 +203367 +203392 +203393 +203394 +203395 +203396 +203397 +203398 +203399 +203424 +203425 +203426 +203427 +203428 +203429 +203430 +203431 +203456 +203457 +203458 +203459 +203460 +203461 +203462 +203463 +203488 +203489 +203490 +203491 +203492 +203493 +203494 +203495 +203520 +203521 +203522 +203523 +203524 +203525 +203526 +203527 +203552 +203553 +203554 +203555 +203556 +203557 +203558 +203559 +203584 +203585 +203586 +203587 +203588 +203589 +203590 +203591 +203616 +203617 +203618 +203619 +203620 +203621 +203622 +203623 +203648 +203649 +203650 +203651 +203652 +203653 +203654 +203655 +203680 +203681 +203682 +203683 +203684 +203685 +203686 +203687 +203712 +203713 +203714 +203715 +203716 +203717 +203718 +203719 +203744 +203745 +203746 +203747 +203748 +203749 +203750 +203751 +203776 +203777 +203778 +203779 +203780 +203781 +203782 +203783 +203808 +203809 +203810 +203811 +203812 +203813 +203814 +203815 +203840 +203841 +203842 +203843 +203844 +203845 +203846 +203847 +203872 +203873 +203874 +203875 +203876 +203877 +203878 +203879 +203904 +203905 +203906 +203907 +203908 +203909 +203910 +203911 +203936 +203937 +203938 +203939 +203940 +203941 +203942 +203943 +203968 +203969 +203970 +203971 +203972 +203973 +203974 +203975 +204000 +204001 +204002 +204003 +204004 +204005 +204006 +204007 +204032 +204033 +204034 +204035 +204036 +204037 +204038 +204039 +204064 +204065 +204066 +204067 +204068 +204069 +204070 +204071 +204096 +204097 +204098 +204099 +204100 +204101 +204102 +204103 +204128 +204129 +204130 +204131 +204132 +204133 +204134 +204135 +204160 +204161 +204162 +204163 +204164 +204165 +204166 +204167 +204192 +204193 +204194 +204195 +204196 +204197 +204198 +204199 +204224 +204225 +204226 +204227 +204228 +204229 +204230 +204231 +204256 +204257 +204258 +204259 +204260 +204261 +204262 +204263 +204288 +204289 +204290 +204291 +204292 +204293 +204294 +204295 +204320 +204321 +204322 +204323 +204324 +204325 +204326 +204327 +204352 +204353 +204354 +204355 +204356 +204357 +204358 +204359 +204384 +204385 +204386 +204387 +204388 +204389 +204390 +204391 +204416 +204417 +204418 +204419 +204420 +204421 +204422 +204423 +204448 +204449 +204450 +204451 +204452 +204453 +204454 +204455 +204480 +204481 +204482 +204483 +204484 +204485 +204486 +204487 +204512 +204513 +204514 +204515 +204516 +204517 +204518 +204519 +204544 +204545 +204546 +204547 +204548 +204549 +204550 +204551 +204576 +204577 +204578 +204579 +204580 +204581 +204582 +204583 +204608 +204609 +204610 +204611 +204612 +204613 +204614 +204615 +204640 +204641 +204642 +204643 +204644 +204645 +204646 +204647 +204672 +204673 +204674 +204675 +204676 +204677 +204678 +204679 +204704 +204705 +204706 +204707 +204708 +204709 +204710 +204711 +204736 +204737 +204738 +204739 +204740 +204741 +204742 +204743 +204768 +204769 +204770 +204771 +204772 +204773 +204774 +204775 +204800 +204801 +204802 +204803 +204804 +204805 +204806 +204807 +204832 +204833 +204834 +204835 +204836 +204837 +204838 +204839 +204864 +204865 +204866 +204867 +204868 +204869 +204870 +204871 +204896 +204897 +204898 +204899 +204900 +204901 +204902 +204903 +204928 +204929 +204930 +204931 +204932 +204933 +204934 +204935 +204960 +204961 +204962 +204963 +204964 +204965 +204966 +204967 +204992 +204993 +204994 +204995 +204996 +204997 +204998 +204999 +205024 +205025 +205026 +205027 +205028 +205029 +205030 +205031 +205056 +205057 +205058 +205059 +205060 +205061 +205062 +205063 +205088 +205089 +205090 +205091 +205092 +205093 +205094 +205095 +205120 +205121 +205122 +205123 +205124 +205125 +205126 +205127 +205152 +205153 +205154 +205155 +205156 +205157 +205158 +205159 +205184 +205185 +205186 +205187 +205188 +205189 +205190 +205191 +205216 +205217 +205218 +205219 +205220 +205221 +205222 +205223 +205248 +205249 +205250 +205251 +205252 +205253 +205254 +205255 +205280 +205281 +205282 +205283 +205284 +205285 +205286 +205287 +205312 +205313 +205314 +205315 +205316 +205317 +205318 +205319 +205344 +205345 +205346 +205347 +205348 +205349 +205350 +205351 +205376 +205377 +205378 +205379 +205380 +205381 +205382 +205383 +205408 +205409 +205410 +205411 +205412 +205413 +205414 +205415 +205440 +205441 +205442 +205443 +205444 +205445 +205446 +205447 +205472 +205473 +205474 +205475 +205476 +205477 +205478 +205479 +205504 +205505 +205506 +205507 +205508 +205509 +205510 +205511 +205536 +205537 +205538 +205539 +205540 +205541 +205542 +205543 +205568 +205569 +205570 +205571 +205572 +205573 +205574 +205575 +205600 +205601 +205602 +205603 +205604 +205605 +205606 +205607 +205632 +205633 +205634 +205635 +205636 +205637 +205638 +205639 +205664 +205665 +205666 +205667 +205668 +205669 +205670 +205671 +205696 +205697 +205698 +205699 +205700 +205701 +205702 +205703 +205728 +205729 +205730 +205731 +205732 +205733 +205734 +205735 +205760 +205761 +205762 +205763 +205764 +205765 +205766 +205767 +205792 +205793 +205794 +205795 +205796 +205797 +205798 +205799 +205824 +205825 +205826 +205827 +205828 +205829 +205830 +205831 +205856 +205857 +205858 +205859 +205860 +205861 +205862 +205863 +205888 +205889 +205890 +205891 +205892 +205893 +205894 +205895 +205920 +205921 +205922 +205923 +205924 +205925 +205926 +205927 +205952 +205953 +205954 +205955 +205956 +205957 +205958 +205959 +205984 +205985 +205986 +205987 +205988 +205989 +205990 +205991 +206016 +206017 +206018 +206019 +206020 +206021 +206022 +206023 +206048 +206049 +206050 +206051 +206052 +206053 +206054 +206055 +206080 +206081 +206082 +206083 +206084 +206085 +206086 +206087 +206112 +206113 +206114 +206115 +206116 +206117 +206118 +206119 +206144 +206145 +206146 +206147 +206148 +206149 +206150 +206151 +206176 +206177 +206178 +206179 +206180 +206181 +206182 +206183 +206208 +206209 +206210 +206211 +206212 +206213 +206214 +206215 +206240 +206241 +206242 +206243 +206244 +206245 +206246 +206247 +206272 +206273 +206274 +206275 +206276 +206277 +206278 +206279 +206304 +206305 +206306 +206307 +206308 +206309 +206310 +206311 +206336 +206337 +206338 +206339 +206340 +206341 +206342 +206343 +206368 +206369 +206370 +206371 +206372 +206373 +206374 +206375 +206400 +206401 +206402 +206403 +206404 +206405 +206406 +206407 +206432 +206433 +206434 +206435 +206436 +206437 +206438 +206439 +206464 +206465 +206466 +206467 +206468 +206469 +206470 +206471 +206496 +206497 +206498 +206499 +206500 +206501 +206502 +206503 +206528 +206529 +206530 +206531 +206532 +206533 +206534 +206535 +206560 +206561 +206562 +206563 +206564 +206565 +206566 +206567 +206592 +206593 +206594 +206595 +206596 +206597 +206598 +206599 +206624 +206625 +206626 +206627 +206628 +206629 +206630 +206631 +206656 +206657 +206658 +206659 +206660 +206661 +206662 +206663 +206688 +206689 +206690 +206691 +206692 +206693 +206694 +206695 +206720 +206721 +206722 +206723 +206724 +206725 +206726 +206727 +206752 +206753 +206754 +206755 +206756 +206757 +206758 +206759 +206784 +206785 +206786 +206787 +206788 +206789 +206790 +206791 +206816 +206817 +206818 +206819 +206820 +206821 +206822 +206823 +206848 +206849 +206850 +206851 +206852 +206853 +206854 +206855 +206880 +206881 +206882 +206883 +206884 +206885 +206886 +206887 +206912 +206913 +206914 +206915 +206916 +206917 +206918 +206919 +206944 +206945 +206946 +206947 +206948 +206949 +206950 +206951 +206976 +206977 +206978 +206979 +206980 +206981 +206982 +206983 +207008 +207009 +207010 +207011 +207012 +207013 +207014 +207015 +207040 +207041 +207042 +207043 +207044 +207045 +207046 +207047 +207072 +207073 +207074 +207075 +207076 +207077 +207078 +207079 +207104 +207105 +207106 +207107 +207108 +207109 +207110 +207111 +207136 +207137 +207138 +207139 +207140 +207141 +207142 +207143 +207168 +207169 +207170 +207171 +207172 +207173 +207174 +207175 +207200 +207201 +207202 +207203 +207204 +207205 +207206 +207207 +207232 +207233 +207234 +207235 +207236 +207237 +207238 +207239 +207264 +207265 +207266 +207267 +207268 +207269 +207270 +207271 +207296 +207297 +207298 +207299 +207300 +207301 +207302 +207303 +207328 +207329 +207330 +207331 +207332 +207333 +207334 +207335 +207360 +207361 +207362 +207363 +207364 +207365 +207366 +207367 +207392 +207393 +207394 +207395 +207396 +207397 +207398 +207399 +207424 +207425 +207426 +207427 +207428 +207429 +207430 +207431 +207456 +207457 +207458 +207459 +207460 +207461 +207462 +207463 +207488 +207489 +207490 +207491 +207492 +207493 +207494 +207495 +207520 +207521 +207522 +207523 +207524 +207525 +207526 +207527 +207552 +207553 +207554 +207555 +207556 +207557 +207558 +207559 +207584 +207585 +207586 +207587 +207588 +207589 +207590 +207591 +207616 +207617 +207618 +207619 +207620 +207621 +207622 +207623 +207648 +207649 +207650 +207651 +207652 +207653 +207654 +207655 +207680 +207681 +207682 +207683 +207684 +207685 +207686 +207687 +207712 +207713 +207714 +207715 +207716 +207717 +207718 +207719 +207744 +207745 +207746 +207747 +207748 +207749 +207750 +207751 +207776 +207777 +207778 +207779 +207780 +207781 +207782 +207783 +207808 +207809 +207810 +207811 +207812 +207813 +207814 +207815 +207840 +207841 +207842 +207843 +207844 +207845 +207846 +207847 +207872 +207873 +207874 +207875 +207876 +207877 +207878 +207879 +207904 +207905 +207906 +207907 +207908 +207909 +207910 +207911 +207936 +207937 +207938 +207939 +207940 +207941 +207942 +207943 +207968 +207969 +207970 +207971 +207972 +207973 +207974 +207975 +208000 +208001 +208002 +208003 +208004 +208005 +208006 +208007 +208032 +208033 +208034 +208035 +208036 +208037 +208038 +208039 +208064 +208065 +208066 +208067 +208068 +208069 +208070 +208071 +208096 +208097 +208098 +208099 +208100 +208101 +208102 +208103 +208128 +208129 +208130 +208131 +208132 +208133 +208134 +208135 +208160 +208161 +208162 +208163 +208164 +208165 +208166 +208167 +208192 +208193 +208194 +208195 +208196 +208197 +208198 +208199 +208224 +208225 +208226 +208227 +208228 +208229 +208230 +208231 +208256 +208257 +208258 +208259 +208260 +208261 +208262 +208263 +208288 +208289 +208290 +208291 +208292 +208293 +208294 +208295 +208320 +208321 +208322 +208323 +208324 +208325 +208326 +208327 +208352 +208353 +208354 +208355 +208356 +208357 +208358 +208359 +208384 +208385 +208386 +208387 +208388 +208389 +208390 +208391 +208416 +208417 +208418 +208419 +208420 +208421 +208422 +208423 +208448 +208449 +208450 +208451 +208452 +208453 +208454 +208455 +208480 +208481 +208482 +208483 +208484 +208485 +208486 +208487 +208512 +208513 +208514 +208515 +208516 +208517 +208518 +208519 +208544 +208545 +208546 +208547 +208548 +208549 +208550 +208551 +208576 +208577 +208578 +208579 +208580 +208581 +208582 +208583 +208608 +208609 +208610 +208611 +208612 +208613 +208614 +208615 +208640 +208641 +208642 +208643 +208644 +208645 +208646 +208647 +208672 +208673 +208674 +208675 +208676 +208677 +208678 +208679 +208704 +208705 +208706 +208707 +208708 +208709 +208710 +208711 +208736 +208737 +208738 +208739 +208740 +208741 +208742 +208743 +208768 +208769 +208770 +208771 +208772 +208773 +208774 +208775 +208800 +208801 +208802 +208803 +208804 +208805 +208806 +208807 +208832 +208833 +208834 +208835 +208836 +208837 +208838 +208839 +208864 +208865 +208866 +208867 +208868 +208869 +208870 +208871 +208896 +208897 +208898 +208899 +208900 +208901 +208902 +208903 +208928 +208929 +208930 +208931 +208932 +208933 +208934 +208935 +208960 +208961 +208962 +208963 +208964 +208965 +208966 +208967 +208992 +208993 +208994 +208995 +208996 +208997 +208998 +208999 +209024 +209025 +209026 +209027 +209028 +209029 +209030 +209031 +209056 +209057 +209058 +209059 +209060 +209061 +209062 +209063 +209088 +209089 +209090 +209091 +209092 +209093 +209094 +209095 +209120 +209121 +209122 +209123 +209124 +209125 +209126 +209127 +209152 +209153 +209154 +209155 +209156 +209157 +209158 +209159 +209184 +209185 +209186 +209187 +209188 +209189 +209190 +209191 +209216 +209217 +209218 +209219 +209220 +209221 +209222 +209223 +209248 +209249 +209250 +209251 +209252 +209253 +209254 +209255 +209280 +209281 +209282 +209283 +209284 +209285 +209286 +209287 +209312 +209313 +209314 +209315 +209316 +209317 +209318 +209319 +209344 +209345 +209346 +209347 +209348 +209349 +209350 +209351 +209376 +209377 +209378 +209379 +209380 +209381 +209382 +209383 +209408 +209409 +209410 +209411 +209412 +209413 +209414 +209415 +209440 +209441 +209442 +209443 +209444 +209445 +209446 +209447 +209472 +209473 +209474 +209475 +209476 +209477 +209478 +209479 +209504 +209505 +209506 +209507 +209508 +209509 +209510 +209511 +209536 +209537 +209538 +209539 +209540 +209541 +209542 +209543 +209568 +209569 +209570 +209571 +209572 +209573 +209574 +209575 +209600 +209601 +209602 +209603 +209604 +209605 +209606 +209607 +209632 +209633 +209634 +209635 +209636 +209637 +209638 +209639 +209664 +209665 +209666 +209667 +209668 +209669 +209670 +209671 +209696 +209697 +209698 +209699 +209700 +209701 +209702 +209703 +209728 +209729 +209730 +209731 +209732 +209733 +209734 +209735 +209760 +209761 +209762 +209763 +209764 +209765 +209766 +209767 +209792 +209793 +209794 +209795 +209796 +209797 +209798 +209799 +209824 +209825 +209826 +209827 +209828 +209829 +209830 +209831 +209856 +209857 +209858 +209859 +209860 +209861 +209862 +209863 +209888 +209889 +209890 +209891 +209892 +209893 +209894 +209895 +209920 +209921 +209922 +209923 +209924 +209925 +209926 +209927 +209952 +209953 +209954 +209955 +209956 +209957 +209958 +209959 +209984 +209985 +209986 +209987 +209988 +209989 +209990 +209991 +210016 +210017 +210018 +210019 +210020 +210021 +210022 +210023 +210048 +210049 +210050 +210051 +210052 +210053 +210054 +210055 +210080 +210081 +210082 +210083 +210084 +210085 +210086 +210087 +210112 +210113 +210114 +210115 +210116 +210117 +210118 +210119 +210144 +210145 +210146 +210147 +210148 +210149 +210150 +210151 +210176 +210177 +210178 +210179 +210180 +210181 +210182 +210183 +210208 +210209 +210210 +210211 +210212 +210213 +210214 +210215 +210240 +210241 +210242 +210243 +210244 +210245 +210246 +210247 +210272 +210273 +210274 +210275 +210276 +210277 +210278 +210279 +210304 +210305 +210306 +210307 +210308 +210309 +210310 +210311 +210336 +210337 +210338 +210339 +210340 +210341 +210342 +210343 +210368 +210369 +210370 +210371 +210372 +210373 +210374 +210375 +210400 +210401 +210402 +210403 +210404 +210405 +210406 +210407 +210432 +210433 +210434 +210435 +210436 +210437 +210438 +210439 +210464 +210465 +210466 +210467 +210468 +210469 +210470 +210471 +210496 +210497 +210498 +210499 +210500 +210501 +210502 +210503 +210528 +210529 +210530 +210531 +210532 +210533 +210534 +210535 +210560 +210561 +210562 +210563 +210564 +210565 +210566 +210567 +210592 +210593 +210594 +210595 +210596 +210597 +210598 +210599 +210624 +210625 +210626 +210627 +210628 +210629 +210630 +210631 +210656 +210657 +210658 +210659 +210660 +210661 +210662 +210663 +210688 +210689 +210690 +210691 +210692 +210693 +210694 +210695 +210720 +210721 +210722 +210723 +210724 +210725 +210726 +210727 +210752 +210753 +210754 +210755 +210756 +210757 +210758 +210759 +210784 +210785 +210786 +210787 +210788 +210789 +210790 +210791 +210816 +210817 +210818 +210819 +210820 +210821 +210822 +210823 +210848 +210849 +210850 +210851 +210852 +210853 +210854 +210855 +210880 +210881 +210882 +210883 +210884 +210885 +210886 +210887 +210912 +210913 +210914 +210915 +210916 +210917 +210918 +210919 +210944 +210945 +210946 +210947 +210948 +210949 +210950 +210951 +210976 +210977 +210978 +210979 +210980 +210981 +210982 +210983 +211008 +211009 +211010 +211011 +211012 +211013 +211014 +211015 +211040 +211041 +211042 +211043 +211044 +211045 +211046 +211047 +211072 +211073 +211074 +211075 +211076 +211077 +211078 +211079 +211104 +211105 +211106 +211107 +211108 +211109 +211110 +211111 +211136 +211137 +211138 +211139 +211140 +211141 +211142 +211143 +211168 +211169 +211170 +211171 +211172 +211173 +211174 +211175 +211200 +211201 +211202 +211203 +211204 +211205 +211206 +211207 +211232 +211233 +211234 +211235 +211236 +211237 +211238 +211239 +211264 +211265 +211266 +211267 +211268 +211269 +211270 +211271 +211296 +211297 +211298 +211299 +211300 +211301 +211302 +211303 +211328 +211329 +211330 +211331 +211332 +211333 +211334 +211335 +211360 +211361 +211362 +211363 +211364 +211365 +211366 +211367 +211392 +211393 +211394 +211395 +211396 +211397 +211398 +211399 +211424 +211425 +211426 +211427 +211428 +211429 +211430 +211431 +211456 +211457 +211458 +211459 +211460 +211461 +211462 +211463 +211488 +211489 +211490 +211491 +211492 +211493 +211494 +211495 +211520 +211521 +211522 +211523 +211524 +211525 +211526 +211527 +211552 +211553 +211554 +211555 +211556 +211557 +211558 +211559 +211584 +211585 +211586 +211587 +211588 +211589 +211590 +211591 +211616 +211617 +211618 +211619 +211620 +211621 +211622 +211623 +211648 +211649 +211650 +211651 +211652 +211653 +211654 +211655 +211680 +211681 +211682 +211683 +211684 +211685 +211686 +211687 +211712 +211713 +211714 +211715 +211716 +211717 +211718 +211719 +211744 +211745 +211746 +211747 +211748 +211749 +211750 +211751 +211776 +211777 +211778 +211779 +211780 +211781 +211782 +211783 +211808 +211809 +211810 +211811 +211812 +211813 +211814 +211815 +211840 +211841 +211842 +211843 +211844 +211845 +211846 +211847 +211872 +211873 +211874 +211875 +211876 +211877 +211878 +211879 +211904 +211905 +211906 +211907 +211908 +211909 +211910 +211911 +211936 +211937 +211938 +211939 +211940 +211941 +211942 +211943 +211968 +211969 +211970 +211971 +211972 +211973 +211974 +211975 +212000 +212001 +212002 +212003 +212004 +212005 +212006 +212007 +212032 +212033 +212034 +212035 +212036 +212037 +212038 +212039 +212064 +212065 +212066 +212067 +212068 +212069 +212070 +212071 +212096 +212097 +212098 +212099 +212100 +212101 +212102 +212103 +212128 +212129 +212130 +212131 +212132 +212133 +212134 +212135 +212160 +212161 +212162 +212163 +212164 +212165 +212166 +212167 +212192 +212193 +212194 +212195 +212196 +212197 +212198 +212199 +212224 +212225 +212226 +212227 +212228 +212229 +212230 +212231 +212256 +212257 +212258 +212259 +212260 +212261 +212262 +212263 +212288 +212289 +212290 +212291 +212292 +212293 +212294 +212295 +212320 +212321 +212322 +212323 +212324 +212325 +212326 +212327 +212352 +212353 +212354 +212355 +212356 +212357 +212358 +212359 +212384 +212385 +212386 +212387 +212388 +212389 +212390 +212391 +212416 +212417 +212418 +212419 +212420 +212421 +212422 +212423 +212448 +212449 +212450 +212451 +212452 +212453 +212454 +212455 +212480 +212481 +212482 +212483 +212484 +212485 +212486 +212487 +212512 +212513 +212514 +212515 +212516 +212517 +212518 +212519 +212544 +212545 +212546 +212547 +212548 +212549 +212550 +212551 +212576 +212577 +212578 +212579 +212580 +212581 +212582 +212583 +212608 +212609 +212610 +212611 +212612 +212613 +212614 +212615 +212640 +212641 +212642 +212643 +212644 +212645 +212646 +212647 +212672 +212673 +212674 +212675 +212676 +212677 +212678 +212679 +212704 +212705 +212706 +212707 +212708 +212709 +212710 +212711 +212736 +212737 +212738 +212739 +212740 +212741 +212742 +212743 +212768 +212769 +212770 +212771 +212772 +212773 +212774 +212775 +212800 +212801 +212802 +212803 +212804 +212805 +212806 +212807 +212832 +212833 +212834 +212835 +212836 +212837 +212838 +212839 +212864 +212865 +212866 +212867 +212868 +212869 +212870 +212871 +212896 +212897 +212898 +212899 +212900 +212901 +212902 +212903 +212928 +212929 +212930 +212931 +212932 +212933 +212934 +212935 +212960 +212961 +212962 +212963 +212964 +212965 +212966 +212967 +212992 +212993 +212994 +212995 +212996 +212997 +212998 +212999 +213024 +213025 +213026 +213027 +213028 +213029 +213030 +213031 +213056 +213057 +213058 +213059 +213060 +213061 +213062 +213063 +213088 +213089 +213090 +213091 +213092 +213093 +213094 +213095 +213120 +213121 +213122 +213123 +213124 +213125 +213126 +213127 +213152 +213153 +213154 +213155 +213156 +213157 +213158 +213159 +213184 +213185 +213186 +213187 +213188 +213189 +213190 +213191 +213216 +213217 +213218 +213219 +213220 +213221 +213222 +213223 +213248 +213249 +213250 +213251 +213252 +213253 +213254 +213255 +213280 +213281 +213282 +213283 +213284 +213285 +213286 +213287 +213312 +213313 +213314 +213315 +213316 +213317 +213318 +213319 +213344 +213345 +213346 +213347 +213348 +213349 +213350 +213351 +213376 +213377 +213378 +213379 +213380 +213381 +213382 +213383 +213408 +213409 +213410 +213411 +213412 +213413 +213414 +213415 +213440 +213441 +213442 +213443 +213444 +213445 +213446 +213447 +213472 +213473 +213474 +213475 +213476 +213477 +213478 +213479 +213504 +213505 +213506 +213507 +213508 +213509 +213510 +213511 +213536 +213537 +213538 +213539 +213540 +213541 +213542 +213543 +213568 +213569 +213570 +213571 +213572 +213573 +213574 +213575 +213600 +213601 +213602 +213603 +213604 +213605 +213606 +213607 +213632 +213633 +213634 +213635 +213636 +213637 +213638 +213639 +213664 +213665 +213666 +213667 +213668 +213669 +213670 +213671 +213696 +213697 +213698 +213699 +213700 +213701 +213702 +213703 +213728 +213729 +213730 +213731 +213732 +213733 +213734 +213735 +213760 +213761 +213762 +213763 +213764 +213765 +213766 +213767 +213792 +213793 +213794 +213795 +213796 +213797 +213798 +213799 +213824 +213825 +213826 +213827 +213828 +213829 +213830 +213831 +213856 +213857 +213858 +213859 +213860 +213861 +213862 +213863 +213888 +213889 +213890 +213891 +213892 +213893 +213894 +213895 +213920 +213921 +213922 +213923 +213924 +213925 +213926 +213927 +213952 +213953 +213954 +213955 +213956 +213957 +213958 +213959 +213984 +213985 +213986 +213987 +213988 +213989 +213990 +213991 +214016 +214017 +214018 +214019 +214020 +214021 +214022 +214023 +214048 +214049 +214050 +214051 +214052 +214053 +214054 +214055 +214080 +214081 +214082 +214083 +214084 +214085 +214086 +214087 +214112 +214113 +214114 +214115 +214116 +214117 +214118 +214119 +214144 +214145 +214146 +214147 +214148 +214149 +214150 +214151 +214176 +214177 +214178 +214179 +214180 +214181 +214182 +214183 +214208 +214209 +214210 +214211 +214212 +214213 +214214 +214215 +214240 +214241 +214242 +214243 +214244 +214245 +214246 +214247 +214272 +214273 +214274 +214275 +214276 +214277 +214278 +214279 +214304 +214305 +214306 +214307 +214308 +214309 +214310 +214311 +214336 +214337 +214338 +214339 +214340 +214341 +214342 +214343 +214368 +214369 +214370 +214371 +214372 +214373 +214374 +214375 +214400 +214401 +214402 +214403 +214404 +214405 +214406 +214407 +214432 +214433 +214434 +214435 +214436 +214437 +214438 +214439 +214464 +214465 +214466 +214467 +214468 +214469 +214470 +214471 +214496 +214497 +214498 +214499 +214500 +214501 +214502 +214503 +214528 +214529 +214530 +214531 +214532 +214533 +214534 +214535 +214560 +214561 +214562 +214563 +214564 +214565 +214566 +214567 +214592 +214593 +214594 +214595 +214596 +214597 +214598 +214599 +214624 +214625 +214626 +214627 +214628 +214629 +214630 +214631 +214656 +214657 +214658 +214659 +214660 +214661 +214662 +214663 +214688 +214689 +214690 +214691 +214692 +214693 +214694 +214695 +214720 +214721 +214722 +214723 +214724 +214725 +214726 +214727 +214752 +214753 +214754 +214755 +214756 +214757 +214758 +214759 +214784 +214785 +214786 +214787 +214788 +214789 +214790 +214791 +214816 +214817 +214818 +214819 +214820 +214821 +214822 +214823 +214848 +214849 +214850 +214851 +214852 +214853 +214854 +214855 +214880 +214881 +214882 +214883 +214884 +214885 +214886 +214887 +214912 +214913 +214914 +214915 +214916 +214917 +214918 +214919 +214944 +214945 +214946 +214947 +214948 +214949 +214950 +214951 +214976 +214977 +214978 +214979 +214980 +214981 +214982 +214983 +215008 +215009 +215010 +215011 +215012 +215013 +215014 +215015 +215040 +215041 +215042 +215043 +215044 +215045 +215046 +215047 +215072 +215073 +215074 +215075 +215076 +215077 +215078 +215079 +215104 +215105 +215106 +215107 +215108 +215109 +215110 +215111 +215136 +215137 +215138 +215139 +215140 +215141 +215142 +215143 +215168 +215169 +215170 +215171 +215172 +215173 +215174 +215175 +215200 +215201 +215202 +215203 +215204 +215205 +215206 +215207 +215232 +215233 +215234 +215235 +215236 +215237 +215238 +215239 +215264 +215265 +215266 +215267 +215268 +215269 +215270 +215271 +215296 +215297 +215298 +215299 +215300 +215301 +215302 +215303 +215328 +215329 +215330 +215331 +215332 +215333 +215334 +215335 +215360 +215361 +215362 +215363 +215364 +215365 +215366 +215367 +215392 +215393 +215394 +215395 +215396 +215397 +215398 +215399 +215424 +215425 +215426 +215427 +215428 +215429 +215430 +215431 +215456 +215457 +215458 +215459 +215460 +215461 +215462 +215463 +215488 +215489 +215490 +215491 +215492 +215493 +215494 +215495 +215520 +215521 +215522 +215523 +215524 +215525 +215526 +215527 +215552 +215553 +215554 +215555 +215556 +215557 +215558 +215559 +215584 +215585 +215586 +215587 +215588 +215589 +215590 +215591 +215616 +215617 +215618 +215619 +215620 +215621 +215622 +215623 +215648 +215649 +215650 +215651 +215652 +215653 +215654 +215655 +215680 +215681 +215682 +215683 +215684 +215685 +215686 +215687 +215712 +215713 +215714 +215715 +215716 +215717 +215718 +215719 +215744 +215745 +215746 +215747 +215748 +215749 +215750 +215751 +215776 +215777 +215778 +215779 +215780 +215781 +215782 +215783 +215808 +215809 +215810 +215811 +215812 +215813 +215814 +215815 +215840 +215841 +215842 +215843 +215844 +215845 +215846 +215847 +215872 +215873 +215874 +215875 +215876 +215877 +215878 +215879 +215904 +215905 +215906 +215907 +215908 +215909 +215910 +215911 +215936 +215937 +215938 +215939 +215940 +215941 +215942 +215943 +215968 +215969 +215970 +215971 +215972 +215973 +215974 +215975 +216000 +216001 +216002 +216003 +216004 +216005 +216006 +216007 +216032 +216033 +216034 +216035 +216036 +216037 +216038 +216039 +216064 +216065 +216066 +216067 +216068 +216069 +216070 +216071 +216096 +216097 +216098 +216099 +216100 +216101 +216102 +216103 +216128 +216129 +216130 +216131 +216132 +216133 +216134 +216135 +216160 +216161 +216162 +216163 +216164 +216165 +216166 +216167 +216192 +216193 +216194 +216195 +216196 +216197 +216198 +216199 +216224 +216225 +216226 +216227 +216228 +216229 +216230 +216231 +216256 +216257 +216258 +216259 +216260 +216261 +216262 +216263 +216288 +216289 +216290 +216291 +216292 +216293 +216294 +216295 +216320 +216321 +216322 +216323 +216324 +216325 +216326 +216327 +216352 +216353 +216354 +216355 +216356 +216357 +216358 +216359 +216384 +216385 +216386 +216387 +216388 +216389 +216390 +216391 +216416 +216417 +216418 +216419 +216420 +216421 +216422 +216423 +216448 +216449 +216450 +216451 +216452 +216453 +216454 +216455 +216480 +216481 +216482 +216483 +216484 +216485 +216486 +216487 +216512 +216513 +216514 +216515 +216516 +216517 +216518 +216519 +216544 +216545 +216546 +216547 +216548 +216549 +216550 +216551 +216576 +216577 +216578 +216579 +216580 +216581 +216582 +216583 +216608 +216609 +216610 +216611 +216612 +216613 +216614 +216615 +216640 +216641 +216642 +216643 +216644 +216645 +216646 +216647 +216672 +216673 +216674 +216675 +216676 +216677 +216678 +216679 +216704 +216705 +216706 +216707 +216708 +216709 +216710 +216711 +216736 +216737 +216738 +216739 +216740 +216741 +216742 +216743 +216768 +216769 +216770 +216771 +216772 +216773 +216774 +216775 +216800 +216801 +216802 +216803 +216804 +216805 +216806 +216807 +216832 +216833 +216834 +216835 +216836 +216837 +216838 +216839 +216864 +216865 +216866 +216867 +216868 +216869 +216870 +216871 +216896 +216897 +216898 +216899 +216900 +216901 +216902 +216903 +216928 +216929 +216930 +216931 +216932 +216933 +216934 +216935 +216960 +216961 +216962 +216963 +216964 +216965 +216966 +216967 +216992 +216993 +216994 +216995 +216996 +216997 +216998 +216999 +217024 +217025 +217026 +217027 +217028 +217029 +217030 +217031 +217056 +217057 +217058 +217059 +217060 +217061 +217062 +217063 +217088 +217089 +217090 +217091 +217092 +217093 +217094 +217095 +217120 +217121 +217122 +217123 +217124 +217125 +217126 +217127 +217152 +217153 +217154 +217155 +217156 +217157 +217158 +217159 +217184 +217185 +217186 +217187 +217188 +217189 +217190 +217191 +217216 +217217 +217218 +217219 +217220 +217221 +217222 +217223 +217248 +217249 +217250 +217251 +217252 +217253 +217254 +217255 +217280 +217281 +217282 +217283 +217284 +217285 +217286 +217287 +217312 +217313 +217314 +217315 +217316 +217317 +217318 +217319 +217344 +217345 +217346 +217347 +217348 +217349 +217350 +217351 +217376 +217377 +217378 +217379 +217380 +217381 +217382 +217383 +217408 +217409 +217410 +217411 +217412 +217413 +217414 +217415 +217440 +217441 +217442 +217443 +217444 +217445 +217446 +217447 +217472 +217473 +217474 +217475 +217476 +217477 +217478 +217479 +217504 +217505 +217506 +217507 +217508 +217509 +217510 +217511 +217536 +217537 +217538 +217539 +217540 +217541 +217542 +217543 +217568 +217569 +217570 +217571 +217572 +217573 +217574 +217575 +217600 +217601 +217602 +217603 +217604 +217605 +217606 +217607 +217632 +217633 +217634 +217635 +217636 +217637 +217638 +217639 +217664 +217665 +217666 +217667 +217668 +217669 +217670 +217671 +217696 +217697 +217698 +217699 +217700 +217701 +217702 +217703 +217728 +217729 +217730 +217731 +217732 +217733 +217734 +217735 +217760 +217761 +217762 +217763 +217764 +217765 +217766 +217767 +217792 +217793 +217794 +217795 +217796 +217797 +217798 +217799 +217824 +217825 +217826 +217827 +217828 +217829 +217830 +217831 +217856 +217857 +217858 +217859 +217860 +217861 +217862 +217863 +217888 +217889 +217890 +217891 +217892 +217893 +217894 +217895 +217920 +217921 +217922 +217923 +217924 +217925 +217926 +217927 +217952 +217953 +217954 +217955 +217956 +217957 +217958 +217959 +217984 +217985 +217986 +217987 +217988 +217989 +217990 +217991 +218016 +218017 +218018 +218019 +218020 +218021 +218022 +218023 +218048 +218049 +218050 +218051 +218052 +218053 +218054 +218055 +218080 +218081 +218082 +218083 +218084 +218085 +218086 +218087 +218112 +218113 +218114 +218115 +218116 +218117 +218118 +218119 +218144 +218145 +218146 +218147 +218148 +218149 +218150 +218151 +218176 +218177 +218178 +218179 +218180 +218181 +218182 +218183 +218208 +218209 +218210 +218211 +218212 +218213 +218214 +218215 +218240 +218241 +218242 +218243 +218244 +218245 +218246 +218247 +218272 +218273 +218274 +218275 +218276 +218277 +218278 +218279 +218304 +218305 +218306 +218307 +218308 +218309 +218310 +218311 +218336 +218337 +218338 +218339 +218340 +218341 +218342 +218343 +218368 +218369 +218370 +218371 +218372 +218373 +218374 +218375 +218400 +218401 +218402 +218403 +218404 +218405 +218406 +218407 +218432 +218433 +218434 +218435 +218436 +218437 +218438 +218439 +218464 +218465 +218466 +218467 +218468 +218469 +218470 +218471 +218496 +218497 +218498 +218499 +218500 +218501 +218502 +218503 +218528 +218529 +218530 +218531 +218532 +218533 +218534 +218535 +218560 +218561 +218562 +218563 +218564 +218565 +218566 +218567 +218592 +218593 +218594 +218595 +218596 +218597 +218598 +218599 +218624 +218625 +218626 +218627 +218628 +218629 +218630 +218631 +218656 +218657 +218658 +218659 +218660 +218661 +218662 +218663 +218688 +218689 +218690 +218691 +218692 +218693 +218694 +218695 +218720 +218721 +218722 +218723 +218724 +218725 +218726 +218727 +218752 +218753 +218754 +218755 +218756 +218757 +218758 +218759 +218784 +218785 +218786 +218787 +218788 +218789 +218790 +218791 +218816 +218817 +218818 +218819 +218820 +218821 +218822 +218823 +218848 +218849 +218850 +218851 +218852 +218853 +218854 +218855 +218880 +218881 +218882 +218883 +218884 +218885 +218886 +218887 +218912 +218913 +218914 +218915 +218916 +218917 +218918 +218919 +218944 +218945 +218946 +218947 +218948 +218949 +218950 +218951 +218976 +218977 +218978 +218979 +218980 +218981 +218982 +218983 +219008 +219009 +219010 +219011 +219012 +219013 +219014 +219015 +219040 +219041 +219042 +219043 +219044 +219045 +219046 +219047 +219072 +219073 +219074 +219075 +219076 +219077 +219078 +219079 +219104 +219105 +219106 +219107 +219108 +219109 +219110 +219111 +219136 +219137 +219138 +219139 +219140 +219141 +219142 +219143 +219168 +219169 +219170 +219171 +219172 +219173 +219174 +219175 +219200 +219201 +219202 +219203 +219204 +219205 +219206 +219207 +219232 +219233 +219234 +219235 +219236 +219237 +219238 +219239 +219264 +219265 +219266 +219267 +219268 +219269 +219270 +219271 +219296 +219297 +219298 +219299 +219300 +219301 +219302 +219303 +219328 +219329 +219330 +219331 +219332 +219333 +219334 +219335 +219360 +219361 +219362 +219363 +219364 +219365 +219366 +219367 +219392 +219393 +219394 +219395 +219396 +219397 +219398 +219399 +219424 +219425 +219426 +219427 +219428 +219429 +219430 +219431 +219456 +219457 +219458 +219459 +219460 +219461 +219462 +219463 +219488 +219489 +219490 +219491 +219492 +219493 +219494 +219495 +219520 +219521 +219522 +219523 +219524 +219525 +219526 +219527 +219552 +219553 +219554 +219555 +219556 +219557 +219558 +219559 +219584 +219585 +219586 +219587 +219588 +219589 +219590 +219591 +219616 +219617 +219618 +219619 +219620 +219621 +219622 +219623 +219648 +219649 +219650 +219651 +219652 +219653 +219654 +219655 +219680 +219681 +219682 +219683 +219684 +219685 +219686 +219687 +219712 +219713 +219714 +219715 +219716 +219717 +219718 +219719 +219744 +219745 +219746 +219747 +219748 +219749 +219750 +219751 +219776 +219777 +219778 +219779 +219780 +219781 +219782 +219783 +219808 +219809 +219810 +219811 +219812 +219813 +219814 +219815 +219840 +219841 +219842 +219843 +219844 +219845 +219846 +219847 +219872 +219873 +219874 +219875 +219876 +219877 +219878 +219879 +219904 +219905 +219906 +219907 +219908 +219909 +219910 +219911 +219936 +219937 +219938 +219939 +219940 +219941 +219942 +219943 +219968 +219969 +219970 +219971 +219972 +219973 +219974 +219975 +220000 +220001 +220002 +220003 +220004 +220005 +220006 +220007 +220032 +220033 +220034 +220035 +220036 +220037 +220038 +220039 +220064 +220065 +220066 +220067 +220068 +220069 +220070 +220071 +220096 +220097 +220098 +220099 +220100 +220101 +220102 +220103 +220128 +220129 +220130 +220131 +220132 +220133 +220134 +220135 +220160 +220161 +220162 +220163 +220164 +220165 +220166 +220167 +220192 +220193 +220194 +220195 +220196 +220197 +220198 +220199 +220224 +220225 +220226 +220227 +220228 +220229 +220230 +220231 +220256 +220257 +220258 +220259 +220260 +220261 +220262 +220263 +220288 +220289 +220290 +220291 +220292 +220293 +220294 +220295 +220320 +220321 +220322 +220323 +220324 +220325 +220326 +220327 +220352 +220353 +220354 +220355 +220356 +220357 +220358 +220359 +220384 +220385 +220386 +220387 +220388 +220389 +220390 +220391 +220416 +220417 +220418 +220419 +220420 +220421 +220422 +220423 +220448 +220449 +220450 +220451 +220452 +220453 +220454 +220455 +220480 +220481 +220482 +220483 +220484 +220485 +220486 +220487 +220512 +220513 +220514 +220515 +220516 +220517 +220518 +220519 +220544 +220545 +220546 +220547 +220548 +220549 +220550 +220551 +220576 +220577 +220578 +220579 +220580 +220581 +220582 +220583 +220608 +220609 +220610 +220611 +220612 +220613 +220614 +220615 +220640 +220641 +220642 +220643 +220644 +220645 +220646 +220647 +220672 +220673 +220674 +220675 +220676 +220677 +220678 +220679 +220704 +220705 +220706 +220707 +220708 +220709 +220710 +220711 +220736 +220737 +220738 +220739 +220740 +220741 +220742 +220743 +220768 +220769 +220770 +220771 +220772 +220773 +220774 +220775 +220800 +220801 +220802 +220803 +220804 +220805 +220806 +220807 +220832 +220833 +220834 +220835 +220836 +220837 +220838 +220839 +220864 +220865 +220866 +220867 +220868 +220869 +220870 +220871 +220896 +220897 +220898 +220899 +220900 +220901 +220902 +220903 +220928 +220929 +220930 +220931 +220932 +220933 +220934 +220935 +220960 +220961 +220962 +220963 +220964 +220965 +220966 +220967 +220992 +220993 +220994 +220995 +220996 +220997 +220998 +220999 +221024 +221025 +221026 +221027 +221028 +221029 +221030 +221031 +221056 +221057 +221058 +221059 +221060 +221061 +221062 +221063 +221088 +221089 +221090 +221091 +221092 +221093 +221094 +221095 +221120 +221121 +221122 +221123 +221124 +221125 +221126 +221127 +221152 +221153 +221154 +221155 +221156 +221157 +221158 +221159 +221184 +221185 +221186 +221187 +221188 +221189 +221190 +221191 +221216 +221217 +221218 +221219 +221220 +221221 +221222 +221223 +221248 +221249 +221250 +221251 +221252 +221253 +221254 +221255 +221280 +221281 +221282 +221283 +221284 +221285 +221286 +221287 +221312 +221313 +221314 +221315 +221316 +221317 +221318 +221319 +221344 +221345 +221346 +221347 +221348 +221349 +221350 +221351 +221376 +221377 +221378 +221379 +221380 +221381 +221382 +221383 +221408 +221409 +221410 +221411 +221412 +221413 +221414 +221415 +221440 +221441 +221442 +221443 +221444 +221445 +221446 +221447 +221472 +221473 +221474 +221475 +221476 +221477 +221478 +221479 +221504 +221505 +221506 +221507 +221508 +221509 +221510 +221511 +221536 +221537 +221538 +221539 +221540 +221541 +221542 +221543 +221568 +221569 +221570 +221571 +221572 +221573 +221574 +221575 +221600 +221601 +221602 +221603 +221604 +221605 +221606 +221607 +221632 +221633 +221634 +221635 +221636 +221637 +221638 +221639 +221664 +221665 +221666 +221667 +221668 +221669 +221670 +221671 +221696 +221697 +221698 +221699 +221700 +221701 +221702 +221703 +221728 +221729 +221730 +221731 +221732 +221733 +221734 +221735 +221760 +221761 +221762 +221763 +221764 +221765 +221766 +221767 +221792 +221793 +221794 +221795 +221796 +221797 +221798 +221799 +221824 +221825 +221826 +221827 +221828 +221829 +221830 +221831 +221856 +221857 +221858 +221859 +221860 +221861 +221862 +221863 +221888 +221889 +221890 +221891 +221892 +221893 +221894 +221895 +221920 +221921 +221922 +221923 +221924 +221925 +221926 +221927 +221952 +221953 +221954 +221955 +221956 +221957 +221958 +221959 +221984 +221985 +221986 +221987 +221988 +221989 +221990 +221991 +222016 +222017 +222018 +222019 +222020 +222021 +222022 +222023 +222048 +222049 +222050 +222051 +222052 +222053 +222054 +222055 +222080 +222081 +222082 +222083 +222084 +222085 +222086 +222087 +222112 +222113 +222114 +222115 +222116 +222117 +222118 +222119 +222144 +222145 +222146 +222147 +222148 +222149 +222150 +222151 +222176 +222177 +222178 +222179 +222180 +222181 +222182 +222183 +222208 +222209 +222210 +222211 +222212 +222213 +222214 +222215 +222240 +222241 +222242 +222243 +222244 +222245 +222246 +222247 +222272 +222273 +222274 +222275 +222276 +222277 +222278 +222279 +222304 +222305 +222306 +222307 +222308 +222309 +222310 +222311 +222336 +222337 +222338 +222339 +222340 +222341 +222342 +222343 +222368 +222369 +222370 +222371 +222372 +222373 +222374 +222375 +222400 +222401 +222402 +222403 +222404 +222405 +222406 +222407 +222432 +222433 +222434 +222435 +222436 +222437 +222438 +222439 +222464 +222465 +222466 +222467 +222468 +222469 +222470 +222471 +222496 +222497 +222498 +222499 +222500 +222501 +222502 +222503 +222528 +222529 +222530 +222531 +222532 +222533 +222534 +222535 +222560 +222561 +222562 +222563 +222564 +222565 +222566 +222567 +222592 +222593 +222594 +222595 +222596 +222597 +222598 +222599 +222624 +222625 +222626 +222627 +222628 +222629 +222630 +222631 +222656 +222657 +222658 +222659 +222660 +222661 +222662 +222663 +222688 +222689 +222690 +222691 +222692 +222693 +222694 +222695 +222720 +222721 +222722 +222723 +222724 +222725 +222726 +222727 +222752 +222753 +222754 +222755 +222756 +222757 +222758 +222759 +222784 +222785 +222786 +222787 +222788 +222789 +222790 +222791 +222816 +222817 +222818 +222819 +222820 +222821 +222822 +222823 +222848 +222849 +222850 +222851 +222852 +222853 +222854 +222855 +222880 +222881 +222882 +222883 +222884 +222885 +222886 +222887 +222912 +222913 +222914 +222915 +222916 +222917 +222918 +222919 +222944 +222945 +222946 +222947 +222948 +222949 +222950 +222951 +222976 +222977 +222978 +222979 +222980 +222981 +222982 +222983 +223008 +223009 +223010 +223011 +223012 +223013 +223014 +223015 +223040 +223041 +223042 +223043 +223044 +223045 +223046 +223047 +223072 +223073 +223074 +223075 +223076 +223077 +223078 +223079 +223104 +223105 +223106 +223107 +223108 +223109 +223110 +223111 +223136 +223137 +223138 +223139 +223140 +223141 +223142 +223143 +223168 +223169 +223170 +223171 +223172 +223173 +223174 +223175 +223200 +223201 +223202 +223203 +223204 +223205 +223206 +223207 +223232 +223233 +223234 +223235 +223236 +223237 +223238 +223239 +223264 +223265 +223266 +223267 +223268 +223269 +223270 +223271 +223296 +223297 +223298 +223299 +223300 +223301 +223302 +223303 +223328 +223329 +223330 +223331 +223332 +223333 +223334 +223335 +223360 +223361 +223362 +223363 +223364 +223365 +223366 +223367 +223392 +223393 +223394 +223395 +223396 +223397 +223398 +223399 +223424 +223425 +223426 +223427 +223428 +223429 +223430 +223431 +223456 +223457 +223458 +223459 +223460 +223461 +223462 +223463 +223488 +223489 +223490 +223491 +223492 +223493 +223494 +223495 +223520 +223521 +223522 +223523 +223524 +223525 +223526 +223527 +223552 +223553 +223554 +223555 +223556 +223557 +223558 +223559 +223584 +223585 +223586 +223587 +223588 +223589 +223590 +223591 +223616 +223617 +223618 +223619 +223620 +223621 +223622 +223623 +223648 +223649 +223650 +223651 +223652 +223653 +223654 +223655 +223680 +223681 +223682 +223683 +223684 +223685 +223686 +223687 +223712 +223713 +223714 +223715 +223716 +223717 +223718 +223719 +223744 +223745 +223746 +223747 +223748 +223749 +223750 +223751 +223776 +223777 +223778 +223779 +223780 +223781 +223782 +223783 +223808 +223809 +223810 +223811 +223812 +223813 +223814 +223815 +223840 +223841 +223842 +223843 +223844 +223845 +223846 +223847 +223872 +223873 +223874 +223875 +223876 +223877 +223878 +223879 +223904 +223905 +223906 +223907 +223908 +223909 +223910 +223911 +223936 +223937 +223938 +223939 +223940 +223941 +223942 +223943 +223968 +223969 +223970 +223971 +223972 +223973 +223974 +223975 +224000 +224001 +224002 +224003 +224004 +224005 +224006 +224007 +224032 +224033 +224034 +224035 +224036 +224037 +224038 +224039 +224064 +224065 +224066 +224067 +224068 +224069 +224070 +224071 +224096 +224097 +224098 +224099 +224100 +224101 +224102 +224103 +224128 +224129 +224130 +224131 +224132 +224133 +224134 +224135 +224160 +224161 +224162 +224163 +224164 +224165 +224166 +224167 +224192 +224193 +224194 +224195 +224196 +224197 +224198 +224199 +224224 +224225 +224226 +224227 +224228 +224229 +224230 +224231 +224256 +224257 +224258 +224259 +224260 +224261 +224262 +224263 +224288 +224289 +224290 +224291 +224292 +224293 +224294 +224295 +224320 +224321 +224322 +224323 +224324 +224325 +224326 +224327 +224352 +224353 +224354 +224355 +224356 +224357 +224358 +224359 +224384 +224385 +224386 +224387 +224388 +224389 +224390 +224391 +224416 +224417 +224418 +224419 +224420 +224421 +224422 +224423 +224448 +224449 +224450 +224451 +224452 +224453 +224454 +224455 +224480 +224481 +224482 +224483 +224484 +224485 +224486 +224487 +224512 +224513 +224514 +224515 +224516 +224517 +224518 +224519 +224544 +224545 +224546 +224547 +224548 +224549 +224550 +224551 +224576 +224577 +224578 +224579 +224580 +224581 +224582 +224583 +224608 +224609 +224610 +224611 +224612 +224613 +224614 +224615 +224640 +224641 +224642 +224643 +224644 +224645 +224646 +224647 +224672 +224673 +224674 +224675 +224676 +224677 +224678 +224679 +224704 +224705 +224706 +224707 +224708 +224709 +224710 +224711 +224736 +224737 +224738 +224739 +224740 +224741 +224742 +224743 +224768 +224769 +224770 +224771 +224772 +224773 +224774 +224775 +224800 +224801 +224802 +224803 +224804 +224805 +224806 +224807 +224832 +224833 +224834 +224835 +224836 +224837 +224838 +224839 +224864 +224865 +224866 +224867 +224868 +224869 +224870 +224871 +224896 +224897 +224898 +224899 +224900 +224901 +224902 +224903 +224928 +224929 +224930 +224931 +224932 +224933 +224934 +224935 +224960 +224961 +224962 +224963 +224964 +224965 +224966 +224967 +224992 +224993 +224994 +224995 +224996 +224997 +224998 +224999 +225024 +225025 +225026 +225027 +225028 +225029 +225030 +225031 +225056 +225057 +225058 +225059 +225060 +225061 +225062 +225063 +225088 +225089 +225090 +225091 +225092 +225093 +225094 +225095 +225120 +225121 +225122 +225123 +225124 +225125 +225126 +225127 +225152 +225153 +225154 +225155 +225156 +225157 +225158 +225159 +225184 +225185 +225186 +225187 +225188 +225189 +225190 +225191 +225216 +225217 +225218 +225219 +225220 +225221 +225222 +225223 +225248 +225249 +225250 +225251 +225252 +225253 +225254 +225255 +225280 +225281 +225282 +225283 +225284 +225285 +225286 +225287 +225312 +225313 +225314 +225315 +225316 +225317 +225318 +225319 +225344 +225345 +225346 +225347 +225348 +225349 +225350 +225351 +225376 +225377 +225378 +225379 +225380 +225381 +225382 +225383 +225408 +225409 +225410 +225411 +225412 +225413 +225414 +225415 +225440 +225441 +225442 +225443 +225444 +225445 +225446 +225447 +225472 +225473 +225474 +225475 +225476 +225477 +225478 +225479 +225504 +225505 +225506 +225507 +225508 +225509 +225510 +225511 +225536 +225537 +225538 +225539 +225540 +225541 +225542 +225543 +225568 +225569 +225570 +225571 +225572 +225573 +225574 +225575 +225600 +225601 +225602 +225603 +225604 +225605 +225606 +225607 +225632 +225633 +225634 +225635 +225636 +225637 +225638 +225639 +225664 +225665 +225666 +225667 +225668 +225669 +225670 +225671 +225696 +225697 +225698 +225699 +225700 +225701 +225702 +225703 +225728 +225729 +225730 +225731 +225732 +225733 +225734 +225735 +225760 +225761 +225762 +225763 +225764 +225765 +225766 +225767 +225792 +225793 +225794 +225795 +225796 +225797 +225798 +225799 +225824 +225825 +225826 +225827 +225828 +225829 +225830 +225831 +225856 +225857 +225858 +225859 +225860 +225861 +225862 +225863 +225888 +225889 +225890 +225891 +225892 +225893 +225894 +225895 +225920 +225921 +225922 +225923 +225924 +225925 +225926 +225927 +225952 +225953 +225954 +225955 +225956 +225957 +225958 +225959 +225984 +225985 +225986 +225987 +225988 +225989 +225990 +225991 +226016 +226017 +226018 +226019 +226020 +226021 +226022 +226023 +226048 +226049 +226050 +226051 +226052 +226053 +226054 +226055 +226080 +226081 +226082 +226083 +226084 +226085 +226086 +226087 +226112 +226113 +226114 +226115 +226116 +226117 +226118 +226119 +226144 +226145 +226146 +226147 +226148 +226149 +226150 +226151 +226176 +226177 +226178 +226179 +226180 +226181 +226182 +226183 +226208 +226209 +226210 +226211 +226212 +226213 +226214 +226215 +226240 +226241 +226242 +226243 +226244 +226245 +226246 +226247 +226272 +226273 +226274 +226275 +226276 +226277 +226278 +226279 +226304 +226305 +226306 +226307 +226308 +226309 +226310 +226311 +226336 +226337 +226338 +226339 +226340 +226341 +226342 +226343 +226368 +226369 +226370 +226371 +226372 +226373 +226374 +226375 +226400 +226401 +226402 +226403 +226404 +226405 +226406 +226407 +226432 +226433 +226434 +226435 +226436 +226437 +226438 +226439 +226464 +226465 +226466 +226467 +226468 +226469 +226470 +226471 +226496 +226497 +226498 +226499 +226500 +226501 +226502 +226503 +226528 +226529 +226530 +226531 +226532 +226533 +226534 +226535 +226560 +226561 +226562 +226563 +226564 +226565 +226566 +226567 +226592 +226593 +226594 +226595 +226596 +226597 +226598 +226599 +226624 +226625 +226626 +226627 +226628 +226629 +226630 +226631 +226656 +226657 +226658 +226659 +226660 +226661 +226662 +226663 +226688 +226689 +226690 +226691 +226692 +226693 +226694 +226695 +226720 +226721 +226722 +226723 +226724 +226725 +226726 +226727 +226752 +226753 +226754 +226755 +226756 +226757 +226758 +226759 +226784 +226785 +226786 +226787 +226788 +226789 +226790 +226791 +226816 +226817 +226818 +226819 +226820 +226821 +226822 +226823 +226848 +226849 +226850 +226851 +226852 +226853 +226854 +226855 +226880 +226881 +226882 +226883 +226884 +226885 +226886 +226887 +226912 +226913 +226914 +226915 +226916 +226917 +226918 +226919 +226944 +226945 +226946 +226947 +226948 +226949 +226950 +226951 +226976 +226977 +226978 +226979 +226980 +226981 +226982 +226983 +227008 +227009 +227010 +227011 +227012 +227013 +227014 +227015 +227040 +227041 +227042 +227043 +227044 +227045 +227046 +227047 +227072 +227073 +227074 +227075 +227076 +227077 +227078 +227079 +227104 +227105 +227106 +227107 +227108 +227109 +227110 +227111 +227136 +227137 +227138 +227139 +227140 +227141 +227142 +227143 +227168 +227169 +227170 +227171 +227172 +227173 +227174 +227175 +227200 +227201 +227202 +227203 +227204 +227205 +227206 +227207 +227232 +227233 +227234 +227235 +227236 +227237 +227238 +227239 +227264 +227265 +227266 +227267 +227268 +227269 +227270 +227271 +227296 +227297 +227298 +227299 +227300 +227301 +227302 +227303 +227328 +227329 +227330 +227331 +227332 +227333 +227334 +227335 +227360 +227361 +227362 +227363 +227364 +227365 +227366 +227367 +227392 +227393 +227394 +227395 +227396 +227397 +227398 +227399 +227424 +227425 +227426 +227427 +227428 +227429 +227430 +227431 +227456 +227457 +227458 +227459 +227460 +227461 +227462 +227463 +227488 +227489 +227490 +227491 +227492 +227493 +227494 +227495 +227520 +227521 +227522 +227523 +227524 +227525 +227526 +227527 +227552 +227553 +227554 +227555 +227556 +227557 +227558 +227559 +227584 +227585 +227586 +227587 +227588 +227589 +227590 +227591 +227616 +227617 +227618 +227619 +227620 +227621 +227622 +227623 +227648 +227649 +227650 +227651 +227652 +227653 +227654 +227655 +227680 +227681 +227682 +227683 +227684 +227685 +227686 +227687 +227712 +227713 +227714 +227715 +227716 +227717 +227718 +227719 +227744 +227745 +227746 +227747 +227748 +227749 +227750 +227751 +227776 +227777 +227778 +227779 +227780 +227781 +227782 +227783 +227808 +227809 +227810 +227811 +227812 +227813 +227814 +227815 +227840 +227841 +227842 +227843 +227844 +227845 +227846 +227847 +227872 +227873 +227874 +227875 +227876 +227877 +227878 +227879 +227904 +227905 +227906 +227907 +227908 +227909 +227910 +227911 +227936 +227937 +227938 +227939 +227940 +227941 +227942 +227943 +227968 +227969 +227970 +227971 +227972 +227973 +227974 +227975 +228000 +228001 +228002 +228003 +228004 +228005 +228006 +228007 +228032 +228033 +228034 +228035 +228036 +228037 +228038 +228039 +228064 +228065 +228066 +228067 +228068 +228069 +228070 +228071 +228096 +228097 +228098 +228099 +228100 +228101 +228102 +228103 +228128 +228129 +228130 +228131 +228132 +228133 +228134 +228135 +228160 +228161 +228162 +228163 +228164 +228165 +228166 +228167 +228192 +228193 +228194 +228195 +228196 +228197 +228198 +228199 +228224 +228225 +228226 +228227 +228228 +228229 +228230 +228231 +228256 +228257 +228258 +228259 +228260 +228261 +228262 +228263 +228288 +228289 +228290 +228291 +228292 +228293 +228294 +228295 +228320 +228321 +228322 +228323 +228324 +228325 +228326 +228327 +228352 +228353 +228354 +228355 +228356 +228357 +228358 +228359 +228384 +228385 +228386 +228387 +228388 +228389 +228390 +228391 +228416 +228417 +228418 +228419 +228420 +228421 +228422 +228423 +228448 +228449 +228450 +228451 +228452 +228453 +228454 +228455 +228480 +228481 +228482 +228483 +228484 +228485 +228486 +228487 +228512 +228513 +228514 +228515 +228516 +228517 +228518 +228519 +228544 +228545 +228546 +228547 +228548 +228549 +228550 +228551 +228576 +228577 +228578 +228579 +228580 +228581 +228582 +228583 +228608 +228609 +228610 +228611 +228612 +228613 +228614 +228615 +228640 +228641 +228642 +228643 +228644 +228645 +228646 +228647 +228672 +228673 +228674 +228675 +228676 +228677 +228678 +228679 +228704 +228705 +228706 +228707 +228708 +228709 +228710 +228711 +228736 +228737 +228738 +228739 +228740 +228741 +228742 +228743 +228768 +228769 +228770 +228771 +228772 +228773 +228774 +228775 +228800 +228801 +228802 +228803 +228804 +228805 +228806 +228807 +228832 +228833 +228834 +228835 +228836 +228837 +228838 +228839 +228864 +228865 +228866 +228867 +228868 +228869 +228870 +228871 +228896 +228897 +228898 +228899 +228900 +228901 +228902 +228903 +228928 +228929 +228930 +228931 +228932 +228933 +228934 +228935 +228960 +228961 +228962 +228963 +228964 +228965 +228966 +228967 +228992 +228993 +228994 +228995 +228996 +228997 +228998 +228999 +229024 +229025 +229026 +229027 +229028 +229029 +229030 +229031 +229056 +229057 +229058 +229059 +229060 +229061 +229062 +229063 +229088 +229089 +229090 +229091 +229092 +229093 +229094 +229095 +229120 +229121 +229122 +229123 +229124 +229125 +229126 +229127 +229152 +229153 +229154 +229155 +229156 +229157 +229158 +229159 +229184 +229185 +229186 +229187 +229188 +229189 +229190 +229191 +229216 +229217 +229218 +229219 +229220 +229221 +229222 +229223 +229248 +229249 +229250 +229251 +229252 +229253 +229254 +229255 +229280 +229281 +229282 +229283 +229284 +229285 +229286 +229287 +229312 +229313 +229314 +229315 +229316 +229317 +229318 +229319 +229344 +229345 +229346 +229347 +229348 +229349 +229350 +229351 +229376 +229377 +229378 +229379 +229380 +229381 +229382 +229383 +229408 +229409 +229410 +229411 +229412 +229413 +229414 +229415 +229440 +229441 +229442 +229443 +229444 +229445 +229446 +229447 +229472 +229473 +229474 +229475 +229476 +229477 +229478 +229479 +229504 +229505 +229506 +229507 +229508 +229509 +229510 +229511 +229536 +229537 +229538 +229539 +229540 +229541 +229542 +229543 +229568 +229569 +229570 +229571 +229572 +229573 +229574 +229575 +229600 +229601 +229602 +229603 +229604 +229605 +229606 +229607 +229632 +229633 +229634 +229635 +229636 +229637 +229638 +229639 +229664 +229665 +229666 +229667 +229668 +229669 +229670 +229671 +229696 +229697 +229698 +229699 +229700 +229701 +229702 +229703 +229728 +229729 +229730 +229731 +229732 +229733 +229734 +229735 +229760 +229761 +229762 +229763 +229764 +229765 +229766 +229767 +229792 +229793 +229794 +229795 +229796 +229797 +229798 +229799 +229824 +229825 +229826 +229827 +229828 +229829 +229830 +229831 +229856 +229857 +229858 +229859 +229860 +229861 +229862 +229863 +229888 +229889 +229890 +229891 +229892 +229893 +229894 +229895 +229920 +229921 +229922 +229923 +229924 +229925 +229926 +229927 +229952 +229953 +229954 +229955 +229956 +229957 +229958 +229959 +229984 +229985 +229986 +229987 +229988 +229989 +229990 +229991 +230016 +230017 +230018 +230019 +230020 +230021 +230022 +230023 +230048 +230049 +230050 +230051 +230052 +230053 +230054 +230055 +230080 +230081 +230082 +230083 +230084 +230085 +230086 +230087 +230112 +230113 +230114 +230115 +230116 +230117 +230118 +230119 +230144 +230145 +230146 +230147 +230148 +230149 +230150 +230151 +230176 +230177 +230178 +230179 +230180 +230181 +230182 +230183 +230208 +230209 +230210 +230211 +230212 +230213 +230214 +230215 +230240 +230241 +230242 +230243 +230244 +230245 +230246 +230247 +230272 +230273 +230274 +230275 +230276 +230277 +230278 +230279 +230304 +230305 +230306 +230307 +230308 +230309 +230310 +230311 +230336 +230337 +230338 +230339 +230340 +230341 +230342 +230343 +230368 +230369 +230370 +230371 +230372 +230373 +230374 +230375 +230400 +230401 +230402 +230403 +230404 +230405 +230406 +230407 +230432 +230433 +230434 +230435 +230436 +230437 +230438 +230439 +230464 +230465 +230466 +230467 +230468 +230469 +230470 +230471 +230496 +230497 +230498 +230499 +230500 +230501 +230502 +230503 +230528 +230529 +230530 +230531 +230532 +230533 +230534 +230535 +230560 +230561 +230562 +230563 +230564 +230565 +230566 +230567 +230592 +230593 +230594 +230595 +230596 +230597 +230598 +230599 +230624 +230625 +230626 +230627 +230628 +230629 +230630 +230631 +230656 +230657 +230658 +230659 +230660 +230661 +230662 +230663 +230688 +230689 +230690 +230691 +230692 +230693 +230694 +230695 +230720 +230721 +230722 +230723 +230724 +230725 +230726 +230727 +230752 +230753 +230754 +230755 +230756 +230757 +230758 +230759 +230784 +230785 +230786 +230787 +230788 +230789 +230790 +230791 +230816 +230817 +230818 +230819 +230820 +230821 +230822 +230823 +230848 +230849 +230850 +230851 +230852 +230853 +230854 +230855 +230880 +230881 +230882 +230883 +230884 +230885 +230886 +230887 +230912 +230913 +230914 +230915 +230916 +230917 +230918 +230919 +230944 +230945 +230946 +230947 +230948 +230949 +230950 +230951 +230976 +230977 +230978 +230979 +230980 +230981 +230982 +230983 +231008 +231009 +231010 +231011 +231012 +231013 +231014 +231015 +231040 +231041 +231042 +231043 +231044 +231045 +231046 +231047 +231072 +231073 +231074 +231075 +231076 +231077 +231078 +231079 +231104 +231105 +231106 +231107 +231108 +231109 +231110 +231111 +231136 +231137 +231138 +231139 +231140 +231141 +231142 +231143 +231168 +231169 +231170 +231171 +231172 +231173 +231174 +231175 +231200 +231201 +231202 +231203 +231204 +231205 +231206 +231207 +231232 +231233 +231234 +231235 +231236 +231237 +231238 +231239 +231264 +231265 +231266 +231267 +231268 +231269 +231270 +231271 +231296 +231297 +231298 +231299 +231300 +231301 +231302 +231303 +231328 +231329 +231330 +231331 +231332 +231333 +231334 +231335 +231360 +231361 +231362 +231363 +231364 +231365 +231366 +231367 +231392 +231393 +231394 +231395 +231396 +231397 +231398 +231399 +231424 +231425 +231426 +231427 +231428 +231429 +231430 +231431 +231456 +231457 +231458 +231459 +231460 +231461 +231462 +231463 +231488 +231489 +231490 +231491 +231492 +231493 +231494 +231495 +231520 +231521 +231522 +231523 +231524 +231525 +231526 +231527 +231552 +231553 +231554 +231555 +231556 +231557 +231558 +231559 +231584 +231585 +231586 +231587 +231588 +231589 +231590 +231591 +231616 +231617 +231618 +231619 +231620 +231621 +231622 +231623 +231648 +231649 +231650 +231651 +231652 +231653 +231654 +231655 +231680 +231681 +231682 +231683 +231684 +231685 +231686 +231687 +231712 +231713 +231714 +231715 +231716 +231717 +231718 +231719 +231744 +231745 +231746 +231747 +231748 +231749 +231750 +231751 +231776 +231777 +231778 +231779 +231780 +231781 +231782 +231783 +231808 +231809 +231810 +231811 +231812 +231813 +231814 +231815 +231840 +231841 +231842 +231843 +231844 +231845 +231846 +231847 +231872 +231873 +231874 +231875 +231876 +231877 +231878 +231879 +231904 +231905 +231906 +231907 +231908 +231909 +231910 +231911 +231936 +231937 +231938 +231939 +231940 +231941 +231942 +231943 +231968 +231969 +231970 +231971 +231972 +231973 +231974 +231975 +232000 +232001 +232002 +232003 +232004 +232005 +232006 +232007 +232032 +232033 +232034 +232035 +232036 +232037 +232038 +232039 +232064 +232065 +232066 +232067 +232068 +232069 +232070 +232071 +232096 +232097 +232098 +232099 +232100 +232101 +232102 +232103 +232128 +232129 +232130 +232131 +232132 +232133 +232134 +232135 +232160 +232161 +232162 +232163 +232164 +232165 +232166 +232167 +232192 +232193 +232194 +232195 +232196 +232197 +232198 +232199 +232224 +232225 +232226 +232227 +232228 +232229 +232230 +232231 +232256 +232257 +232258 +232259 +232260 +232261 +232262 +232263 +232288 +232289 +232290 +232291 +232292 +232293 +232294 +232295 +232320 +232321 +232322 +232323 +232324 +232325 +232326 +232327 +232352 +232353 +232354 +232355 +232356 +232357 +232358 +232359 +232384 +232385 +232386 +232387 +232388 +232389 +232390 +232391 +232416 +232417 +232418 +232419 +232420 +232421 +232422 +232423 +232448 +232449 +232450 +232451 +232452 +232453 +232454 +232455 +232480 +232481 +232482 +232483 +232484 +232485 +232486 +232487 +232512 +232513 +232514 +232515 +232516 +232517 +232518 +232519 +232544 +232545 +232546 +232547 +232548 +232549 +232550 +232551 +232576 +232577 +232578 +232579 +232580 +232581 +232582 +232583 +232608 +232609 +232610 +232611 +232612 +232613 +232614 +232615 +232640 +232641 +232642 +232643 +232644 +232645 +232646 +232647 +232672 +232673 +232674 +232675 +232676 +232677 +232678 +232679 +232704 +232705 +232706 +232707 +232708 +232709 +232710 +232711 +232736 +232737 +232738 +232739 +232740 +232741 +232742 +232743 +232768 +232769 +232770 +232771 +232772 +232773 +232774 +232775 +232800 +232801 +232802 +232803 +232804 +232805 +232806 +232807 +232832 +232833 +232834 +232835 +232836 +232837 +232838 +232839 +232864 +232865 +232866 +232867 +232868 +232869 +232870 +232871 +232896 +232897 +232898 +232899 +232900 +232901 +232902 +232903 +232928 +232929 +232930 +232931 +232932 +232933 +232934 +232935 +232960 +232961 +232962 +232963 +232964 +232965 +232966 +232967 +232992 +232993 +232994 +232995 +232996 +232997 +232998 +232999 +233024 +233025 +233026 +233027 +233028 +233029 +233030 +233031 +233056 +233057 +233058 +233059 +233060 +233061 +233062 +233063 +233088 +233089 +233090 +233091 +233092 +233093 +233094 +233095 +233120 +233121 +233122 +233123 +233124 +233125 +233126 +233127 +233152 +233153 +233154 +233155 +233156 +233157 +233158 +233159 +233184 +233185 +233186 +233187 +233188 +233189 +233190 +233191 +233216 +233217 +233218 +233219 +233220 +233221 +233222 +233223 +233248 +233249 +233250 +233251 +233252 +233253 +233254 +233255 +233280 +233281 +233282 +233283 +233284 +233285 +233286 +233287 +233312 +233313 +233314 +233315 +233316 +233317 +233318 +233319 +233344 +233345 +233346 +233347 +233348 +233349 +233350 +233351 +233376 +233377 +233378 +233379 +233380 +233381 +233382 +233383 +233408 +233409 +233410 +233411 +233412 +233413 +233414 +233415 +233440 +233441 +233442 +233443 +233444 +233445 +233446 +233447 +233472 +233473 +233474 +233475 +233476 +233477 +233478 +233479 +233504 +233505 +233506 +233507 +233508 +233509 +233510 +233511 +233536 +233537 +233538 +233539 +233540 +233541 +233542 +233543 +233568 +233569 +233570 +233571 +233572 +233573 +233574 +233575 +233600 +233601 +233602 +233603 +233604 +233605 +233606 +233607 +233632 +233633 +233634 +233635 +233636 +233637 +233638 +233639 +233664 +233665 +233666 +233667 +233668 +233669 +233670 +233671 +233696 +233697 +233698 +233699 +233700 +233701 +233702 +233703 +233728 +233729 +233730 +233731 +233732 +233733 +233734 +233735 +233760 +233761 +233762 +233763 +233764 +233765 +233766 +233767 +233792 +233793 +233794 +233795 +233796 +233797 +233798 +233799 +233824 +233825 +233826 +233827 +233828 +233829 +233830 +233831 +233856 +233857 +233858 +233859 +233860 +233861 +233862 +233863 +233888 +233889 +233890 +233891 +233892 +233893 +233894 +233895 +233920 +233921 +233922 +233923 +233924 +233925 +233926 +233927 +233952 +233953 +233954 +233955 +233956 +233957 +233958 +233959 +233984 +233985 +233986 +233987 +233988 +233989 +233990 +233991 +234016 +234017 +234018 +234019 +234020 +234021 +234022 +234023 +234048 +234049 +234050 +234051 +234052 +234053 +234054 +234055 +234080 +234081 +234082 +234083 +234084 +234085 +234086 +234087 +234112 +234113 +234114 +234115 +234116 +234117 +234118 +234119 +234144 +234145 +234146 +234147 +234148 +234149 +234150 +234151 +234176 +234177 +234178 +234179 +234180 +234181 +234182 +234183 +234208 +234209 +234210 +234211 +234212 +234213 +234214 +234215 +234240 +234241 +234242 +234243 +234244 +234245 +234246 +234247 +234272 +234273 +234274 +234275 +234276 +234277 +234278 +234279 +234304 +234305 +234306 +234307 +234308 +234309 +234310 +234311 +234336 +234337 +234338 +234339 +234340 +234341 +234342 +234343 +234368 +234369 +234370 +234371 +234372 +234373 +234374 +234375 +234400 +234401 +234402 +234403 +234404 +234405 +234406 +234407 +234432 +234433 +234434 +234435 +234436 +234437 +234438 +234439 +234464 +234465 +234466 +234467 +234468 +234469 +234470 +234471 +234496 +234497 +234498 +234499 +234500 +234501 +234502 +234503 +234528 +234529 +234530 +234531 +234532 +234533 +234534 +234535 +234560 +234561 +234562 +234563 +234564 +234565 +234566 +234567 +234592 +234593 +234594 +234595 +234596 +234597 +234598 +234599 +234624 +234625 +234626 +234627 +234628 +234629 +234630 +234631 +234656 +234657 +234658 +234659 +234660 +234661 +234662 +234663 +234688 +234689 +234690 +234691 +234692 +234693 +234694 +234695 +234720 +234721 +234722 +234723 +234724 +234725 +234726 +234727 +234752 +234753 +234754 +234755 +234756 +234757 +234758 +234759 +234784 +234785 +234786 +234787 +234788 +234789 +234790 +234791 +234816 +234817 +234818 +234819 +234820 +234821 +234822 +234823 +234848 +234849 +234850 +234851 +234852 +234853 +234854 +234855 +234880 +234881 +234882 +234883 +234884 +234885 +234886 +234887 +234912 +234913 +234914 +234915 +234916 +234917 +234918 +234919 +234944 +234945 +234946 +234947 +234948 +234949 +234950 +234951 +234976 +234977 +234978 +234979 +234980 +234981 +234982 +234983 +235008 +235009 +235010 +235011 +235012 +235013 +235014 +235015 +235040 +235041 +235042 +235043 +235044 +235045 +235046 +235047 +235072 +235073 +235074 +235075 +235076 +235077 +235078 +235079 +235104 +235105 +235106 +235107 +235108 +235109 +235110 +235111 +235136 +235137 +235138 +235139 +235140 +235141 +235142 +235143 +235168 +235169 +235170 +235171 +235172 +235173 +235174 +235175 +235200 +235201 +235202 +235203 +235204 +235205 +235206 +235207 +235232 +235233 +235234 +235235 +235236 +235237 +235238 +235239 +235264 +235265 +235266 +235267 +235268 +235269 +235270 +235271 +235296 +235297 +235298 +235299 +235300 +235301 +235302 +235303 +235328 +235329 +235330 +235331 +235332 +235333 +235334 +235335 +235360 +235361 +235362 +235363 +235364 +235365 +235366 +235367 +235392 +235393 +235394 +235395 +235396 +235397 +235398 +235399 +235424 +235425 +235426 +235427 +235428 +235429 +235430 +235431 +235456 +235457 +235458 +235459 +235460 +235461 +235462 +235463 +235488 +235489 +235490 +235491 +235492 +235493 +235494 +235495 +235520 +235521 +235522 +235523 +235524 +235525 +235526 +235527 +235552 +235553 +235554 +235555 +235556 +235557 +235558 +235559 +235584 +235585 +235586 +235587 +235588 +235589 +235590 +235591 +235616 +235617 +235618 +235619 +235620 +235621 +235622 +235623 +235648 +235649 +235650 +235651 +235652 +235653 +235654 +235655 +235680 +235681 +235682 +235683 +235684 +235685 +235686 +235687 +235712 +235713 +235714 +235715 +235716 +235717 +235718 +235719 +235744 +235745 +235746 +235747 +235748 +235749 +235750 +235751 +235776 +235777 +235778 +235779 +235780 +235781 +235782 +235783 +235808 +235809 +235810 +235811 +235812 +235813 +235814 +235815 +235840 +235841 +235842 +235843 +235844 +235845 +235846 +235847 +235872 +235873 +235874 +235875 +235876 +235877 +235878 +235879 +235904 +235905 +235906 +235907 +235908 +235909 +235910 +235911 +235936 +235937 +235938 +235939 +235940 +235941 +235942 +235943 +235968 +235969 +235970 +235971 +235972 +235973 +235974 +235975 +236000 +236001 +236002 +236003 +236004 +236005 +236006 +236007 +236032 +236033 +236034 +236035 +236036 +236037 +236038 +236039 +236064 +236065 +236066 +236067 +236068 +236069 +236070 +236071 +236096 +236097 +236098 +236099 +236100 +236101 +236102 +236103 +236128 +236129 +236130 +236131 +236132 +236133 +236134 +236135 +236160 +236161 +236162 +236163 +236164 +236165 +236166 +236167 +236192 +236193 +236194 +236195 +236196 +236197 +236198 +236199 +236224 +236225 +236226 +236227 +236228 +236229 +236230 +236231 +236256 +236257 +236258 +236259 +236260 +236261 +236262 +236263 +236288 +236289 +236290 +236291 +236292 +236293 +236294 +236295 +236320 +236321 +236322 +236323 +236324 +236325 +236326 +236327 +236352 +236353 +236354 +236355 +236356 +236357 +236358 +236359 +236384 +236385 +236386 +236387 +236388 +236389 +236390 +236391 +236416 +236417 +236418 +236419 +236420 +236421 +236422 +236423 +236448 +236449 +236450 +236451 +236452 +236453 +236454 +236455 +236480 +236481 +236482 +236483 +236484 +236485 +236486 +236487 +236512 +236513 +236514 +236515 +236516 +236517 +236518 +236519 +236544 +236545 +236546 +236547 +236548 +236549 +236550 +236551 +236576 +236577 +236578 +236579 +236580 +236581 +236582 +236583 +236608 +236609 +236610 +236611 +236612 +236613 +236614 +236615 +236640 +236641 +236642 +236643 +236644 +236645 +236646 +236647 +236672 +236673 +236674 +236675 +236676 +236677 +236678 +236679 +236704 +236705 +236706 +236707 +236708 +236709 +236710 +236711 +236736 +236737 +236738 +236739 +236740 +236741 +236742 +236743 +236768 +236769 +236770 +236771 +236772 +236773 +236774 +236775 +236800 +236801 +236802 +236803 +236804 +236805 +236806 +236807 +236832 +236833 +236834 +236835 +236836 +236837 +236838 +236839 +236864 +236865 +236866 +236867 +236868 +236869 +236870 +236871 +236896 +236897 +236898 +236899 +236900 +236901 +236902 +236903 +236928 +236929 +236930 +236931 +236932 +236933 +236934 +236935 +236960 +236961 +236962 +236963 +236964 +236965 +236966 +236967 +236992 +236993 +236994 +236995 +236996 +236997 +236998 +236999 +237024 +237025 +237026 +237027 +237028 +237029 +237030 +237031 +237056 +237057 +237058 +237059 +237060 +237061 +237062 +237063 +237088 +237089 +237090 +237091 +237092 +237093 +237094 +237095 +237120 +237121 +237122 +237123 +237124 +237125 +237126 +237127 +237152 +237153 +237154 +237155 +237156 +237157 +237158 +237159 +237184 +237185 +237186 +237187 +237188 +237189 +237190 +237191 +237216 +237217 +237218 +237219 +237220 +237221 +237222 +237223 +237248 +237249 +237250 +237251 +237252 +237253 +237254 +237255 +237280 +237281 +237282 +237283 +237284 +237285 +237286 +237287 +237312 +237313 +237314 +237315 +237316 +237317 +237318 +237319 +237344 +237345 +237346 +237347 +237348 +237349 +237350 +237351 +237376 +237377 +237378 +237379 +237380 +237381 +237382 +237383 +237408 +237409 +237410 +237411 +237412 +237413 +237414 +237415 +237440 +237441 +237442 +237443 +237444 +237445 +237446 +237447 +237472 +237473 +237474 +237475 +237476 +237477 +237478 +237479 +237504 +237505 +237506 +237507 +237508 +237509 +237510 +237511 +237536 +237537 +237538 +237539 +237540 +237541 +237542 +237543 +237568 +237569 +237570 +237571 +237572 +237573 +237574 +237575 +237600 +237601 +237602 +237603 +237604 +237605 +237606 +237607 +237632 +237633 +237634 +237635 +237636 +237637 +237638 +237639 +237664 +237665 +237666 +237667 +237668 +237669 +237670 +237671 +237696 +237697 +237698 +237699 +237700 +237701 +237702 +237703 +237728 +237729 +237730 +237731 +237732 +237733 +237734 +237735 +237760 +237761 +237762 +237763 +237764 +237765 +237766 +237767 +237792 +237793 +237794 +237795 +237796 +237797 +237798 +237799 +237824 +237825 +237826 +237827 +237828 +237829 +237830 +237831 +237856 +237857 +237858 +237859 +237860 +237861 +237862 +237863 +237888 +237889 +237890 +237891 +237892 +237893 +237894 +237895 +237920 +237921 +237922 +237923 +237924 +237925 +237926 +237927 +237952 +237953 +237954 +237955 +237956 +237957 +237958 +237959 +237984 +237985 +237986 +237987 +237988 +237989 +237990 +237991 +238016 +238017 +238018 +238019 +238020 +238021 +238022 +238023 +238048 +238049 +238050 +238051 +238052 +238053 +238054 +238055 +238080 +238081 +238082 +238083 +238084 +238085 +238086 +238087 +238112 +238113 +238114 +238115 +238116 +238117 +238118 +238119 +238144 +238145 +238146 +238147 +238148 +238149 +238150 +238151 +238176 +238177 +238178 +238179 +238180 +238181 +238182 +238183 +238208 +238209 +238210 +238211 +238212 +238213 +238214 +238215 +238240 +238241 +238242 +238243 +238244 +238245 +238246 +238247 +238272 +238273 +238274 +238275 +238276 +238277 +238278 +238279 +238304 +238305 +238306 +238307 +238308 +238309 +238310 +238311 +238336 +238337 +238338 +238339 +238340 +238341 +238342 +238343 +238368 +238369 +238370 +238371 +238372 +238373 +238374 +238375 +238400 +238401 +238402 +238403 +238404 +238405 +238406 +238407 +238432 +238433 +238434 +238435 +238436 +238437 +238438 +238439 +238464 +238465 +238466 +238467 +238468 +238469 +238470 +238471 +238496 +238497 +238498 +238499 +238500 +238501 +238502 +238503 +238528 +238529 +238530 +238531 +238532 +238533 +238534 +238535 +238560 +238561 +238562 +238563 +238564 +238565 +238566 +238567 +238592 +238593 +238594 +238595 +238596 +238597 +238598 +238599 +238624 +238625 +238626 +238627 +238628 +238629 +238630 +238631 +238656 +238657 +238658 +238659 +238660 +238661 +238662 +238663 +238688 +238689 +238690 +238691 +238692 +238693 +238694 +238695 +238720 +238721 +238722 +238723 +238724 +238725 +238726 +238727 +238752 +238753 +238754 +238755 +238756 +238757 +238758 +238759 +238784 +238785 +238786 +238787 +238788 +238789 +238790 +238791 +238816 +238817 +238818 +238819 +238820 +238821 +238822 +238823 +238848 +238849 +238850 +238851 +238852 +238853 +238854 +238855 +238880 +238881 +238882 +238883 +238884 +238885 +238886 +238887 +238912 +238913 +238914 +238915 +238916 +238917 +238918 +238919 +238944 +238945 +238946 +238947 +238948 +238949 +238950 +238951 +238976 +238977 +238978 +238979 +238980 +238981 +238982 +238983 +239008 +239009 +239010 +239011 +239012 +239013 +239014 +239015 +239040 +239041 +239042 +239043 +239044 +239045 +239046 +239047 +239072 +239073 +239074 +239075 +239076 +239077 +239078 +239079 +239104 +239105 +239106 +239107 +239108 +239109 +239110 +239111 +239136 +239137 +239138 +239139 +239140 +239141 +239142 +239143 +239168 +239169 +239170 +239171 +239172 +239173 +239174 +239175 +239200 +239201 +239202 +239203 +239204 +239205 +239206 +239207 +239232 +239233 +239234 +239235 +239236 +239237 +239238 +239239 +239264 +239265 +239266 +239267 +239268 +239269 +239270 +239271 +239296 +239297 +239298 +239299 +239300 +239301 +239302 +239303 +239328 +239329 +239330 +239331 +239332 +239333 +239334 +239335 +239360 +239361 +239362 +239363 +239364 +239365 +239366 +239367 +239392 +239393 +239394 +239395 +239396 +239397 +239398 +239399 +239424 +239425 +239426 +239427 +239428 +239429 +239430 +239431 +239456 +239457 +239458 +239459 +239460 +239461 +239462 +239463 +239488 +239489 +239490 +239491 +239492 +239493 +239494 +239495 +239520 +239521 +239522 +239523 +239524 +239525 +239526 +239527 +239552 +239553 +239554 +239555 +239556 +239557 +239558 +239559 +239584 +239585 +239586 +239587 +239588 +239589 +239590 +239591 +239616 +239617 +239618 +239619 +239620 +239621 +239622 +239623 +239648 +239649 +239650 +239651 +239652 +239653 +239654 +239655 +239680 +239681 +239682 +239683 +239684 +239685 +239686 +239687 +239712 +239713 +239714 +239715 +239716 +239717 +239718 +239719 +239744 +239745 +239746 +239747 +239748 +239749 +239750 +239751 +239776 +239777 +239778 +239779 +239780 +239781 +239782 +239783 +239808 +239809 +239810 +239811 +239812 +239813 +239814 +239815 +239840 +239841 +239842 +239843 +239844 +239845 +239846 +239847 +239872 +239873 +239874 +239875 +239876 +239877 +239878 +239879 +239904 +239905 +239906 +239907 +239908 +239909 +239910 +239911 +239936 +239937 +239938 +239939 +239940 +239941 +239942 +239943 +239968 +239969 +239970 +239971 +239972 +239973 +239974 +239975 +240000 +240001 +240002 +240003 +240004 +240005 +240006 +240007 +240032 +240033 +240034 +240035 +240036 +240037 +240038 +240039 +240064 +240065 +240066 +240067 +240068 +240069 +240070 +240071 +240096 +240097 +240098 +240099 +240100 +240101 +240102 +240103 +240128 +240129 +240130 +240131 +240132 +240133 +240134 +240135 +240160 +240161 +240162 +240163 +240164 +240165 +240166 +240167 +240192 +240193 +240194 +240195 +240196 +240197 +240198 +240199 +240224 +240225 +240226 +240227 +240228 +240229 +240230 +240231 +240256 +240257 +240258 +240259 +240260 +240261 +240262 +240263 +240288 +240289 +240290 +240291 +240292 +240293 +240294 +240295 +240320 +240321 +240322 +240323 +240324 +240325 +240326 +240327 +240352 +240353 +240354 +240355 +240356 +240357 +240358 +240359 +240384 +240385 +240386 +240387 +240388 +240389 +240390 +240391 +240416 +240417 +240418 +240419 +240420 +240421 +240422 +240423 +240448 +240449 +240450 +240451 +240452 +240453 +240454 +240455 +240480 +240481 +240482 +240483 +240484 +240485 +240486 +240487 +240512 +240513 +240514 +240515 +240516 +240517 +240518 +240519 +240544 +240545 +240546 +240547 +240548 +240549 +240550 +240551 +240576 +240577 +240578 +240579 +240580 +240581 +240582 +240583 +240608 +240609 +240610 +240611 +240612 +240613 +240614 +240615 +240640 +240641 +240642 +240643 +240644 +240645 +240646 +240647 +240672 +240673 +240674 +240675 +240676 +240677 +240678 +240679 +240704 +240705 +240706 +240707 +240708 +240709 +240710 +240711 +240736 +240737 +240738 +240739 +240740 +240741 +240742 +240743 +240768 +240769 +240770 +240771 +240772 +240773 +240774 +240775 +240800 +240801 +240802 +240803 +240804 +240805 +240806 +240807 +240832 +240833 +240834 +240835 +240836 +240837 +240838 +240839 +240864 +240865 +240866 +240867 +240868 +240869 +240870 +240871 +240896 +240897 +240898 +240899 +240900 +240901 +240902 +240903 +240928 +240929 +240930 +240931 +240932 +240933 +240934 +240935 +240960 +240961 +240962 +240963 +240964 +240965 +240966 +240967 +240992 +240993 +240994 +240995 +240996 +240997 +240998 +240999 +241024 +241025 +241026 +241027 +241028 +241029 +241030 +241031 +241056 +241057 +241058 +241059 +241060 +241061 +241062 +241063 +241088 +241089 +241090 +241091 +241092 +241093 +241094 +241095 +241120 +241121 +241122 +241123 +241124 +241125 +241126 +241127 +241152 +241153 +241154 +241155 +241156 +241157 +241158 +241159 +241184 +241185 +241186 +241187 +241188 +241189 +241190 +241191 +241216 +241217 +241218 +241219 +241220 +241221 +241222 +241223 +241248 +241249 +241250 +241251 +241252 +241253 +241254 +241255 +241280 +241281 +241282 +241283 +241284 +241285 +241286 +241287 +241312 +241313 +241314 +241315 +241316 +241317 +241318 +241319 +241344 +241345 +241346 +241347 +241348 +241349 +241350 +241351 +241376 +241377 +241378 +241379 +241380 +241381 +241382 +241383 +241408 +241409 +241410 +241411 +241412 +241413 +241414 +241415 +241440 +241441 +241442 +241443 +241444 +241445 +241446 +241447 +241472 +241473 +241474 +241475 +241476 +241477 +241478 +241479 +241504 +241505 +241506 +241507 +241508 +241509 +241510 +241511 +241536 +241537 +241538 +241539 +241540 +241541 +241542 +241543 +241568 +241569 +241570 +241571 +241572 +241573 +241574 +241575 +241600 +241601 +241602 +241603 +241604 +241605 +241606 +241607 +241632 +241633 +241634 +241635 +241636 +241637 +241638 +241639 +241664 +241665 +241666 +241667 +241668 +241669 +241670 +241671 +241696 +241697 +241698 +241699 +241700 +241701 +241702 +241703 +241728 +241729 +241730 +241731 +241732 +241733 +241734 +241735 +241760 +241761 +241762 +241763 +241764 +241765 +241766 +241767 +241792 +241793 +241794 +241795 +241796 +241797 +241798 +241799 +241824 +241825 +241826 +241827 +241828 +241829 +241830 +241831 +241856 +241857 +241858 +241859 +241860 +241861 +241862 +241863 +241888 +241889 +241890 +241891 +241892 +241893 +241894 +241895 +241920 +241921 +241922 +241923 +241924 +241925 +241926 +241927 +241952 +241953 +241954 +241955 +241956 +241957 +241958 +241959 +241984 +241985 +241986 +241987 +241988 +241989 +241990 +241991 +242016 +242017 +242018 +242019 +242020 +242021 +242022 +242023 +242048 +242049 +242050 +242051 +242052 +242053 +242054 +242055 +242080 +242081 +242082 +242083 +242084 +242085 +242086 +242087 +242112 +242113 +242114 +242115 +242116 +242117 +242118 +242119 +242144 +242145 +242146 +242147 +242148 +242149 +242150 +242151 +242176 +242177 +242178 +242179 +242180 +242181 +242182 +242183 +242208 +242209 +242210 +242211 +242212 +242213 +242214 +242215 +242240 +242241 +242242 +242243 +242244 +242245 +242246 +242247 +242272 +242273 +242274 +242275 +242276 +242277 +242278 +242279 +242304 +242305 +242306 +242307 +242308 +242309 +242310 +242311 +242336 +242337 +242338 +242339 +242340 +242341 +242342 +242343 +242368 +242369 +242370 +242371 +242372 +242373 +242374 +242375 +242400 +242401 +242402 +242403 +242404 +242405 +242406 +242407 +242432 +242433 +242434 +242435 +242436 +242437 +242438 +242439 +242464 +242465 +242466 +242467 +242468 +242469 +242470 +242471 +242496 +242497 +242498 +242499 +242500 +242501 +242502 +242503 +242528 +242529 +242530 +242531 +242532 +242533 +242534 +242535 +242560 +242561 +242562 +242563 +242564 +242565 +242566 +242567 +242592 +242593 +242594 +242595 +242596 +242597 +242598 +242599 +242624 +242625 +242626 +242627 +242628 +242629 +242630 +242631 +242656 +242657 +242658 +242659 +242660 +242661 +242662 +242663 +242688 +242689 +242690 +242691 +242692 +242693 +242694 +242695 +242720 +242721 +242722 +242723 +242724 +242725 +242726 +242727 +242752 +242753 +242754 +242755 +242756 +242757 +242758 +242759 +242784 +242785 +242786 +242787 +242788 +242789 +242790 +242791 +242816 +242817 +242818 +242819 +242820 +242821 +242822 +242823 +242848 +242849 +242850 +242851 +242852 +242853 +242854 +242855 +242880 +242881 +242882 +242883 +242884 +242885 +242886 +242887 +242912 +242913 +242914 +242915 +242916 +242917 +242918 +242919 +242944 +242945 +242946 +242947 +242948 +242949 +242950 +242951 +242976 +242977 +242978 +242979 +242980 +242981 +242982 +242983 +243008 +243009 +243010 +243011 +243012 +243013 +243014 +243015 +243040 +243041 +243042 +243043 +243044 +243045 +243046 +243047 +243072 +243073 +243074 +243075 +243076 +243077 +243078 +243079 +243104 +243105 +243106 +243107 +243108 +243109 +243110 +243111 +243136 +243137 +243138 +243139 +243140 +243141 +243142 +243143 +243168 +243169 +243170 +243171 +243172 +243173 +243174 +243175 +243200 +243201 +243202 +243203 +243204 +243205 +243206 +243207 +243232 +243233 +243234 +243235 +243236 +243237 +243238 +243239 +243264 +243265 +243266 +243267 +243268 +243269 +243270 +243271 +243296 +243297 +243298 +243299 +243300 +243301 +243302 +243303 +243328 +243329 +243330 +243331 +243332 +243333 +243334 +243335 +243360 +243361 +243362 +243363 +243364 +243365 +243366 +243367 +243392 +243393 +243394 +243395 +243396 +243397 +243398 +243399 +243424 +243425 +243426 +243427 +243428 +243429 +243430 +243431 +243456 +243457 +243458 +243459 +243460 +243461 +243462 +243463 +243488 +243489 +243490 +243491 +243492 +243493 +243494 +243495 +243520 +243521 +243522 +243523 +243524 +243525 +243526 +243527 +243552 +243553 +243554 +243555 +243556 +243557 +243558 +243559 +243584 +243585 +243586 +243587 +243588 +243589 +243590 +243591 +243616 +243617 +243618 +243619 +243620 +243621 +243622 +243623 +243648 +243649 +243650 +243651 +243652 +243653 +243654 +243655 +243680 +243681 +243682 +243683 +243684 +243685 +243686 +243687 +243712 +243713 +243714 +243715 +243716 +243717 +243718 +243719 +243744 +243745 +243746 +243747 +243748 +243749 +243750 +243751 +243776 +243777 +243778 +243779 +243780 +243781 +243782 +243783 +243808 +243809 +243810 +243811 +243812 +243813 +243814 +243815 +243840 +243841 +243842 +243843 +243844 +243845 +243846 +243847 +243872 +243873 +243874 +243875 +243876 +243877 +243878 +243879 +243904 +243905 +243906 +243907 +243908 +243909 +243910 +243911 +243936 +243937 +243938 +243939 +243940 +243941 +243942 +243943 +243968 +243969 +243970 +243971 +243972 +243973 +243974 +243975 +244000 +244001 +244002 +244003 +244004 +244005 +244006 +244007 +244032 +244033 +244034 +244035 +244036 +244037 +244038 +244039 +244064 +244065 +244066 +244067 +244068 +244069 +244070 +244071 +244096 +244097 +244098 +244099 +244100 +244101 +244102 +244103 +244128 +244129 +244130 +244131 +244132 +244133 +244134 +244135 +244160 +244161 +244162 +244163 +244164 +244165 +244166 +244167 +244192 +244193 +244194 +244195 +244196 +244197 +244198 +244199 +244224 +244225 +244226 +244227 +244228 +244229 +244230 +244231 +244256 +244257 +244258 +244259 +244260 +244261 +244262 +244263 +244288 +244289 +244290 +244291 +244292 +244293 +244294 +244295 +244320 +244321 +244322 +244323 +244324 +244325 +244326 +244327 +244352 +244353 +244354 +244355 +244356 +244357 +244358 +244359 +244384 +244385 +244386 +244387 +244388 +244389 +244390 +244391 +244416 +244417 +244418 +244419 +244420 +244421 +244422 +244423 +244448 +244449 +244450 +244451 +244452 +244453 +244454 +244455 +244480 +244481 +244482 +244483 +244484 +244485 +244486 +244487 +244512 +244513 +244514 +244515 +244516 +244517 +244518 +244519 +244544 +244545 +244546 +244547 +244548 +244549 +244550 +244551 +244576 +244577 +244578 +244579 +244580 +244581 +244582 +244583 +244608 +244609 +244610 +244611 +244612 +244613 +244614 +244615 +244640 +244641 +244642 +244643 +244644 +244645 +244646 +244647 +244672 +244673 +244674 +244675 +244676 +244677 +244678 +244679 +244704 +244705 +244706 +244707 +244708 +244709 +244710 +244711 +244736 +244737 +244738 +244739 +244740 +244741 +244742 +244743 +244768 +244769 +244770 +244771 +244772 +244773 +244774 +244775 +244800 +244801 +244802 +244803 +244804 +244805 +244806 +244807 +244832 +244833 +244834 +244835 +244836 +244837 +244838 +244839 +244864 +244865 +244866 +244867 +244868 +244869 +244870 +244871 +244896 +244897 +244898 +244899 +244900 +244901 +244902 +244903 +244928 +244929 +244930 +244931 +244932 +244933 +244934 +244935 +244960 +244961 +244962 +244963 +244964 +244965 +244966 +244967 +244992 +244993 +244994 +244995 +244996 +244997 +244998 +244999 +245024 +245025 +245026 +245027 +245028 +245029 +245030 +245031 +245056 +245057 +245058 +245059 +245060 +245061 +245062 +245063 +245088 +245089 +245090 +245091 +245092 +245093 +245094 +245095 +245120 +245121 +245122 +245123 +245124 +245125 +245126 +245127 +245152 +245153 +245154 +245155 +245156 +245157 +245158 +245159 +245184 +245185 +245186 +245187 +245188 +245189 +245190 +245191 +245216 +245217 +245218 +245219 +245220 +245221 +245222 +245223 +245248 +245249 +245250 +245251 +245252 +245253 +245254 +245255 +245280 +245281 +245282 +245283 +245284 +245285 +245286 +245287 +245312 +245313 +245314 +245315 +245316 +245317 +245318 +245319 +245344 +245345 +245346 +245347 +245348 +245349 +245350 +245351 +245376 +245377 +245378 +245379 +245380 +245381 +245382 +245383 +245408 +245409 +245410 +245411 +245412 +245413 +245414 +245415 +245440 +245441 +245442 +245443 +245444 +245445 +245446 +245447 +245472 +245473 +245474 +245475 +245476 +245477 +245478 +245479 +245504 +245505 +245506 +245507 +245508 +245509 +245510 +245511 +245536 +245537 +245538 +245539 +245540 +245541 +245542 +245543 +245568 +245569 +245570 +245571 +245572 +245573 +245574 +245575 +245600 +245601 +245602 +245603 +245604 +245605 +245606 +245607 +245632 +245633 +245634 +245635 +245636 +245637 +245638 +245639 +245664 +245665 +245666 +245667 +245668 +245669 +245670 +245671 +245696 +245697 +245698 +245699 +245700 +245701 +245702 +245703 +245728 +245729 +245730 +245731 +245732 +245733 +245734 +245735 +245760 +245761 +245762 +245763 +245764 +245765 +245766 +245767 +245792 +245793 +245794 +245795 +245796 +245797 +245798 +245799 +245824 +245825 +245826 +245827 +245828 +245829 +245830 +245831 +245856 +245857 +245858 +245859 +245860 +245861 +245862 +245863 +245888 +245889 +245890 +245891 +245892 +245893 +245894 +245895 +245920 +245921 +245922 +245923 +245924 +245925 +245926 +245927 +245952 +245953 +245954 +245955 +245956 +245957 +245958 +245959 +245984 +245985 +245986 +245987 +245988 +245989 +245990 +245991 +246016 +246017 +246018 +246019 +246020 +246021 +246022 +246023 +246048 +246049 +246050 +246051 +246052 +246053 +246054 +246055 +246080 +246081 +246082 +246083 +246084 +246085 +246086 +246087 +246112 +246113 +246114 +246115 +246116 +246117 +246118 +246119 +246144 +246145 +246146 +246147 +246148 +246149 +246150 +246151 +246176 +246177 +246178 +246179 +246180 +246181 +246182 +246183 +246208 +246209 +246210 +246211 +246212 +246213 +246214 +246215 +246240 +246241 +246242 +246243 +246244 +246245 +246246 +246247 +246272 +246273 +246274 +246275 +246276 +246277 +246278 +246279 +246304 +246305 +246306 +246307 +246308 +246309 +246310 +246311 +246336 +246337 +246338 +246339 +246340 +246341 +246342 +246343 +246368 +246369 +246370 +246371 +246372 +246373 +246374 +246375 +246400 +246401 +246402 +246403 +246404 +246405 +246406 +246407 +246432 +246433 +246434 +246435 +246436 +246437 +246438 +246439 +246464 +246465 +246466 +246467 +246468 +246469 +246470 +246471 +246496 +246497 +246498 +246499 +246500 +246501 +246502 +246503 +246528 +246529 +246530 +246531 +246532 +246533 +246534 +246535 +246560 +246561 +246562 +246563 +246564 +246565 +246566 +246567 +246592 +246593 +246594 +246595 +246596 +246597 +246598 +246599 +246624 +246625 +246626 +246627 +246628 +246629 +246630 +246631 +246656 +246657 +246658 +246659 +246660 +246661 +246662 +246663 +246688 +246689 +246690 +246691 +246692 +246693 +246694 +246695 +246720 +246721 +246722 +246723 +246724 +246725 +246726 +246727 +246752 +246753 +246754 +246755 +246756 +246757 +246758 +246759 +246784 +246785 +246786 +246787 +246788 +246789 +246790 +246791 +246816 +246817 +246818 +246819 +246820 +246821 +246822 +246823 +246848 +246849 +246850 +246851 +246852 +246853 +246854 +246855 +246880 +246881 +246882 +246883 +246884 +246885 +246886 +246887 +246912 +246913 +246914 +246915 +246916 +246917 +246918 +246919 +246944 +246945 +246946 +246947 +246948 +246949 +246950 +246951 +246976 +246977 +246978 +246979 +246980 +246981 +246982 +246983 +247008 +247009 +247010 +247011 +247012 +247013 +247014 +247015 +247040 +247041 +247042 +247043 +247044 +247045 +247046 +247047 +247072 +247073 +247074 +247075 +247076 +247077 +247078 +247079 +247104 +247105 +247106 +247107 +247108 +247109 +247110 +247111 +247136 +247137 +247138 +247139 +247140 +247141 +247142 +247143 +247168 +247169 +247170 +247171 +247172 +247173 +247174 +247175 +247200 +247201 +247202 +247203 +247204 +247205 +247206 +247207 +247232 +247233 +247234 +247235 +247236 +247237 +247238 +247239 +247264 +247265 +247266 +247267 +247268 +247269 +247270 +247271 +247296 +247297 +247298 +247299 +247300 +247301 +247302 +247303 +247328 +247329 +247330 +247331 +247332 +247333 +247334 +247335 +247360 +247361 +247362 +247363 +247364 +247365 +247366 +247367 +247392 +247393 +247394 +247395 +247396 +247397 +247398 +247399 +247424 +247425 +247426 +247427 +247428 +247429 +247430 +247431 +247456 +247457 +247458 +247459 +247460 +247461 +247462 +247463 +247488 +247489 +247490 +247491 +247492 +247493 +247494 +247495 +247520 +247521 +247522 +247523 +247524 +247525 +247526 +247527 +247552 +247553 +247554 +247555 +247556 +247557 +247558 +247559 +247584 +247585 +247586 +247587 +247588 +247589 +247590 +247591 +247616 +247617 +247618 +247619 +247620 +247621 +247622 +247623 +247648 +247649 +247650 +247651 +247652 +247653 +247654 +247655 +247680 +247681 +247682 +247683 +247684 +247685 +247686 +247687 +247712 +247713 +247714 +247715 +247716 +247717 +247718 +247719 +247744 +247745 +247746 +247747 +247748 +247749 +247750 +247751 +247776 +247777 +247778 +247779 +247780 +247781 +247782 +247783 +247808 +247809 +247810 +247811 +247812 +247813 +247814 +247815 +247840 +247841 +247842 +247843 +247844 +247845 +247846 +247847 +247872 +247873 +247874 +247875 +247876 +247877 +247878 +247879 +247904 +247905 +247906 +247907 +247908 +247909 +247910 +247911 +247936 +247937 +247938 +247939 +247940 +247941 +247942 +247943 +247968 +247969 +247970 +247971 +247972 +247973 +247974 +247975 +248000 +248001 +248002 +248003 +248004 +248005 +248006 +248007 +248032 +248033 +248034 +248035 +248036 +248037 +248038 +248039 +248064 +248065 +248066 +248067 +248068 +248069 +248070 +248071 +248096 +248097 +248098 +248099 +248100 +248101 +248102 +248103 +248128 +248129 +248130 +248131 +248132 +248133 +248134 +248135 +248160 +248161 +248162 +248163 +248164 +248165 +248166 +248167 +248192 +248193 +248194 +248195 +248196 +248197 +248198 +248199 +248224 +248225 +248226 +248227 +248228 +248229 +248230 +248231 +248256 +248257 +248258 +248259 +248260 +248261 +248262 +248263 +248288 +248289 +248290 +248291 +248292 +248293 +248294 +248295 +248320 +248321 +248322 +248323 +248324 +248325 +248326 +248327 +248352 +248353 +248354 +248355 +248356 +248357 +248358 +248359 +248384 +248385 +248386 +248387 +248388 +248389 +248390 +248391 +248416 +248417 +248418 +248419 +248420 +248421 +248422 +248423 +248448 +248449 +248450 +248451 +248452 +248453 +248454 +248455 +248480 +248481 +248482 +248483 +248484 +248485 +248486 +248487 +248512 +248513 +248514 +248515 +248516 +248517 +248518 +248519 +248544 +248545 +248546 +248547 +248548 +248549 +248550 +248551 +248576 +248577 +248578 +248579 +248580 +248581 +248582 +248583 +248608 +248609 +248610 +248611 +248612 +248613 +248614 +248615 +248640 +248641 +248642 +248643 +248644 +248645 +248646 +248647 +248672 +248673 +248674 +248675 +248676 +248677 +248678 +248679 +248704 +248705 +248706 +248707 +248708 +248709 +248710 +248711 +248736 +248737 +248738 +248739 +248740 +248741 +248742 +248743 +248768 +248769 +248770 +248771 +248772 +248773 +248774 +248775 +248800 +248801 +248802 +248803 +248804 +248805 +248806 +248807 +248832 +248833 +248834 +248835 +248836 +248837 +248838 +248839 +248864 +248865 +248866 +248867 +248868 +248869 +248870 +248871 +248896 +248897 +248898 +248899 +248900 +248901 +248902 +248903 +248928 +248929 +248930 +248931 +248932 +248933 +248934 +248935 +248960 +248961 +248962 +248963 +248964 +248965 +248966 +248967 +248992 +248993 +248994 +248995 +248996 +248997 +248998 +248999 +249024 +249025 +249026 +249027 +249028 +249029 +249030 +249031 +249056 +249057 +249058 +249059 +249060 +249061 +249062 +249063 +249088 +249089 +249090 +249091 +249092 +249093 +249094 +249095 +249120 +249121 +249122 +249123 +249124 +249125 +249126 +249127 +249152 +249153 +249154 +249155 +249156 +249157 +249158 +249159 +249184 +249185 +249186 +249187 +249188 +249189 +249190 +249191 +249216 +249217 +249218 +249219 +249220 +249221 +249222 +249223 +249248 +249249 +249250 +249251 +249252 +249253 +249254 +249255 +249280 +249281 +249282 +249283 +249284 +249285 +249286 +249287 +249312 +249313 +249314 +249315 +249316 +249317 +249318 +249319 +249344 +249345 +249346 +249347 +249348 +249349 +249350 +249351 +249376 +249377 +249378 +249379 +249380 +249381 +249382 +249383 +249408 +249409 +249410 +249411 +249412 +249413 +249414 +249415 +249440 +249441 +249442 +249443 +249444 +249445 +249446 +249447 +249472 +249473 +249474 +249475 +249476 +249477 +249478 +249479 +249504 +249505 +249506 +249507 +249508 +249509 +249510 +249511 +249536 +249537 +249538 +249539 +249540 +249541 +249542 +249543 +249568 +249569 +249570 +249571 +249572 +249573 +249574 +249575 +249600 +249601 +249602 +249603 +249604 +249605 +249606 +249607 +249632 +249633 +249634 +249635 +249636 +249637 +249638 +249639 +249664 +249665 +249666 +249667 +249668 +249669 +249670 +249671 +249696 +249697 +249698 +249699 +249700 +249701 +249702 +249703 +249728 +249729 +249730 +249731 +249732 +249733 +249734 +249735 +249760 +249761 +249762 +249763 +249764 +249765 +249766 +249767 +249792 +249793 +249794 +249795 +249796 +249797 +249798 +249799 +249824 +249825 +249826 +249827 +249828 +249829 +249830 +249831 +249856 +249857 +249858 +249859 +249860 +249861 +249862 +249863 +249888 +249889 +249890 +249891 +249892 +249893 +249894 +249895 +249920 +249921 +249922 +249923 +249924 +249925 +249926 +249927 +249952 +249953 +249954 +249955 +249956 +249957 +249958 +249959 +249984 +249985 +249986 +249987 +249988 +249989 +249990 +249991 +250016 +250017 +250018 +250019 +250020 +250021 +250022 +250023 +250048 +250049 +250050 +250051 +250052 +250053 +250054 +250055 +250080 +250081 +250082 +250083 +250084 +250085 +250086 +250087 +250112 +250113 +250114 +250115 +250116 +250117 +250118 +250119 +250144 +250145 +250146 +250147 +250148 +250149 +250150 +250151 +250176 +250177 +250178 +250179 +250180 +250181 +250182 +250183 +250208 +250209 +250210 +250211 +250212 +250213 +250214 +250215 +250240 +250241 +250242 +250243 +250244 +250245 +250246 +250247 +250272 +250273 +250274 +250275 +250276 +250277 +250278 +250279 +250304 +250305 +250306 +250307 +250308 +250309 +250310 +250311 +250336 +250337 +250338 +250339 +250340 +250341 +250342 +250343 +250368 +250369 +250370 +250371 +250372 +250373 +250374 +250375 +250400 +250401 +250402 +250403 +250404 +250405 +250406 +250407 +250432 +250433 +250434 +250435 +250436 +250437 +250438 +250439 +250464 +250465 +250466 +250467 +250468 +250469 +250470 +250471 +250496 +250497 +250498 +250499 +250500 +250501 +250502 +250503 +250528 +250529 +250530 +250531 +250532 +250533 +250534 +250535 +250560 +250561 +250562 +250563 +250564 +250565 +250566 +250567 +250592 +250593 +250594 +250595 +250596 +250597 +250598 +250599 +250624 +250625 +250626 +250627 +250628 +250629 +250630 +250631 +250656 +250657 +250658 +250659 +250660 +250661 +250662 +250663 +250688 +250689 +250690 +250691 +250692 +250693 +250694 +250695 +250720 +250721 +250722 +250723 +250724 +250725 +250726 +250727 +250752 +250753 +250754 +250755 +250756 +250757 +250758 +250759 +250784 +250785 +250786 +250787 +250788 +250789 +250790 +250791 +250816 +250817 +250818 +250819 +250820 +250821 +250822 +250823 +250848 +250849 +250850 +250851 +250852 +250853 +250854 +250855 +250880 +250881 +250882 +250883 +250884 +250885 +250886 +250887 +250912 +250913 +250914 +250915 +250916 +250917 +250918 +250919 +250944 +250945 +250946 +250947 +250948 +250949 +250950 +250951 +250976 +250977 +250978 +250979 +250980 +250981 +250982 +250983 +251008 +251009 +251010 +251011 +251012 +251013 +251014 +251015 +251040 +251041 +251042 +251043 +251044 +251045 +251046 +251047 +251072 +251073 +251074 +251075 +251076 +251077 +251078 +251079 +251104 +251105 +251106 +251107 +251108 +251109 +251110 +251111 +251136 +251137 +251138 +251139 +251140 +251141 +251142 +251143 +251168 +251169 +251170 +251171 +251172 +251173 +251174 +251175 +251200 +251201 +251202 +251203 +251204 +251205 +251206 +251207 +251232 +251233 +251234 +251235 +251236 +251237 +251238 +251239 +251264 +251265 +251266 +251267 +251268 +251269 +251270 +251271 +251296 +251297 +251298 +251299 +251300 +251301 +251302 +251303 +251328 +251329 +251330 +251331 +251332 +251333 +251334 +251335 +251360 +251361 +251362 +251363 +251364 +251365 +251366 +251367 +251392 +251393 +251394 +251395 +251396 +251397 +251398 +251399 +251424 +251425 +251426 +251427 +251428 +251429 +251430 +251431 +251456 +251457 +251458 +251459 +251460 +251461 +251462 +251463 +251488 +251489 +251490 +251491 +251492 +251493 +251494 +251495 +251520 +251521 +251522 +251523 +251524 +251525 +251526 +251527 +251552 +251553 +251554 +251555 +251556 +251557 +251558 +251559 +251584 +251585 +251586 +251587 +251588 +251589 +251590 +251591 +251616 +251617 +251618 +251619 +251620 +251621 +251622 +251623 +251648 +251649 +251650 +251651 +251652 +251653 +251654 +251655 +251680 +251681 +251682 +251683 +251684 +251685 +251686 +251687 +251712 +251713 +251714 +251715 +251716 +251717 +251718 +251719 +251744 +251745 +251746 +251747 +251748 +251749 +251750 +251751 +251776 +251777 +251778 +251779 +251780 +251781 +251782 +251783 +251808 +251809 +251810 +251811 +251812 +251813 +251814 +251815 +251840 +251841 +251842 +251843 +251844 +251845 +251846 +251847 +251872 +251873 +251874 +251875 +251876 +251877 +251878 +251879 +251904 +251905 +251906 +251907 +251908 +251909 +251910 +251911 +251936 +251937 +251938 +251939 +251940 +251941 +251942 +251943 +251968 +251969 +251970 +251971 +251972 +251973 +251974 +251975 +252000 +252001 +252002 +252003 +252004 +252005 +252006 +252007 +252032 +252033 +252034 +252035 +252036 +252037 +252038 +252039 +252064 +252065 +252066 +252067 +252068 +252069 +252070 +252071 +252096 +252097 +252098 +252099 +252100 +252101 +252102 +252103 +252128 +252129 +252130 +252131 +252132 +252133 +252134 +252135 +252160 +252161 +252162 +252163 +252164 +252165 +252166 +252167 +252192 +252193 +252194 +252195 +252196 +252197 +252198 +252199 +252224 +252225 +252226 +252227 +252228 +252229 +252230 +252231 +252256 +252257 +252258 +252259 +252260 +252261 +252262 +252263 +252288 +252289 +252290 +252291 +252292 +252293 +252294 +252295 +252320 +252321 +252322 +252323 +252324 +252325 +252326 +252327 +252352 +252353 +252354 +252355 +252356 +252357 +252358 +252359 +252384 +252385 +252386 +252387 +252388 +252389 +252390 +252391 +252416 +252417 +252418 +252419 +252420 +252421 +252422 +252423 +252448 +252449 +252450 +252451 +252452 +252453 +252454 +252455 +252480 +252481 +252482 +252483 +252484 +252485 +252486 +252487 +252512 +252513 +252514 +252515 +252516 +252517 +252518 +252519 +252544 +252545 +252546 +252547 +252548 +252549 +252550 +252551 +252576 +252577 +252578 +252579 +252580 +252581 +252582 +252583 +252608 +252609 +252610 +252611 +252612 +252613 +252614 +252615 +252640 +252641 +252642 +252643 +252644 +252645 +252646 +252647 +252672 +252673 +252674 +252675 +252676 +252677 +252678 +252679 +252704 +252705 +252706 +252707 +252708 +252709 +252710 +252711 +252736 +252737 +252738 +252739 +252740 +252741 +252742 +252743 +252768 +252769 +252770 +252771 +252772 +252773 +252774 +252775 +252800 +252801 +252802 +252803 +252804 +252805 +252806 +252807 +252832 +252833 +252834 +252835 +252836 +252837 +252838 +252839 +252864 +252865 +252866 +252867 +252868 +252869 +252870 +252871 +252896 +252897 +252898 +252899 +252900 +252901 +252902 +252903 +252928 +252929 +252930 +252931 +252932 +252933 +252934 +252935 +252960 +252961 +252962 +252963 +252964 +252965 +252966 +252967 +252992 +252993 +252994 +252995 +252996 +252997 +252998 +252999 +253024 +253025 +253026 +253027 +253028 +253029 +253030 +253031 +253056 +253057 +253058 +253059 +253060 +253061 +253062 +253063 +253088 +253089 +253090 +253091 +253092 +253093 +253094 +253095 +253120 +253121 +253122 +253123 +253124 +253125 +253126 +253127 +253152 +253153 +253154 +253155 +253156 +253157 +253158 +253159 +253184 +253185 +253186 +253187 +253188 +253189 +253190 +253191 +253216 +253217 +253218 +253219 +253220 +253221 +253222 +253223 +253248 +253249 +253250 +253251 +253252 +253253 +253254 +253255 +253280 +253281 +253282 +253283 +253284 +253285 +253286 +253287 +253312 +253313 +253314 +253315 +253316 +253317 +253318 +253319 +253344 +253345 +253346 +253347 +253348 +253349 +253350 +253351 +253376 +253377 +253378 +253379 +253380 +253381 +253382 +253383 +253408 +253409 +253410 +253411 +253412 +253413 +253414 +253415 +253440 +253441 +253442 +253443 +253444 +253445 +253446 +253447 +253472 +253473 +253474 +253475 +253476 +253477 +253478 +253479 +253504 +253505 +253506 +253507 +253508 +253509 +253510 +253511 +253536 +253537 +253538 +253539 +253540 +253541 +253542 +253543 +253568 +253569 +253570 +253571 +253572 +253573 +253574 +253575 +253600 +253601 +253602 +253603 +253604 +253605 +253606 +253607 +253632 +253633 +253634 +253635 +253636 +253637 +253638 +253639 +253664 +253665 +253666 +253667 +253668 +253669 +253670 +253671 +253696 +253697 +253698 +253699 +253700 +253701 +253702 +253703 +253728 +253729 +253730 +253731 +253732 +253733 +253734 +253735 +253760 +253761 +253762 +253763 +253764 +253765 +253766 +253767 +253792 +253793 +253794 +253795 +253796 +253797 +253798 +253799 +253824 +253825 +253826 +253827 +253828 +253829 +253830 +253831 +253856 +253857 +253858 +253859 +253860 +253861 +253862 +253863 +253888 +253889 +253890 +253891 +253892 +253893 +253894 +253895 +253920 +253921 +253922 +253923 +253924 +253925 +253926 +253927 +253952 +253953 +253954 +253955 +253956 +253957 +253958 +253959 +253984 +253985 +253986 +253987 +253988 +253989 +253990 +253991 +254016 +254017 +254018 +254019 +254020 +254021 +254022 +254023 +254048 +254049 +254050 +254051 +254052 +254053 +254054 +254055 +254080 +254081 +254082 +254083 +254084 +254085 +254086 +254087 +254112 +254113 +254114 +254115 +254116 +254117 +254118 +254119 +254144 +254145 +254146 +254147 +254148 +254149 +254150 +254151 +254176 +254177 +254178 +254179 +254180 +254181 +254182 +254183 +254208 +254209 +254210 +254211 +254212 +254213 +254214 +254215 +254240 +254241 +254242 +254243 +254244 +254245 +254246 +254247 +254272 +254273 +254274 +254275 +254276 +254277 +254278 +254279 +254304 +254305 +254306 +254307 +254308 +254309 +254310 +254311 +254336 +254337 +254338 +254339 +254340 +254341 +254342 +254343 +254368 +254369 +254370 +254371 +254372 +254373 +254374 +254375 +254400 +254401 +254402 +254403 +254404 +254405 +254406 +254407 +254432 +254433 +254434 +254435 +254436 +254437 +254438 +254439 +254464 +254465 +254466 +254467 +254468 +254469 +254470 +254471 +254496 +254497 +254498 +254499 +254500 +254501 +254502 +254503 +254528 +254529 +254530 +254531 +254532 +254533 +254534 +254535 +254560 +254561 +254562 +254563 +254564 +254565 +254566 +254567 +254592 +254593 +254594 +254595 +254596 +254597 +254598 +254599 +254624 +254625 +254626 +254627 +254628 +254629 +254630 +254631 +254656 +254657 +254658 +254659 +254660 +254661 +254662 +254663 +254688 +254689 +254690 +254691 +254692 +254693 +254694 +254695 +254720 +254721 +254722 +254723 +254724 +254725 +254726 +254727 +254752 +254753 +254754 +254755 +254756 +254757 +254758 +254759 +254784 +254785 +254786 +254787 +254788 +254789 +254790 +254791 +254816 +254817 +254818 +254819 +254820 +254821 +254822 +254823 +254848 +254849 +254850 +254851 +254852 +254853 +254854 +254855 +254880 +254881 +254882 +254883 +254884 +254885 +254886 +254887 +254912 +254913 +254914 +254915 +254916 +254917 +254918 +254919 +254944 +254945 +254946 +254947 +254948 +254949 +254950 +254951 +254976 +254977 +254978 +254979 +254980 +254981 +254982 +254983 +255008 +255009 +255010 +255011 +255012 +255013 +255014 +255015 +255040 +255041 +255042 +255043 +255044 +255045 +255046 +255047 +255072 +255073 +255074 +255075 +255076 +255077 +255078 +255079 +255104 +255105 +255106 +255107 +255108 +255109 +255110 +255111 +255136 +255137 +255138 +255139 +255140 +255141 +255142 +255143 +255168 +255169 +255170 +255171 +255172 +255173 +255174 +255175 +255200 +255201 +255202 +255203 +255204 +255205 +255206 +255207 +255232 +255233 +255234 +255235 +255236 +255237 +255238 +255239 +255264 +255265 +255266 +255267 +255268 +255269 +255270 +255271 +255296 +255297 +255298 +255299 +255300 +255301 +255302 +255303 +255328 +255329 +255330 +255331 +255332 +255333 +255334 +255335 +255360 +255361 +255362 +255363 +255364 +255365 +255366 +255367 +255392 +255393 +255394 +255395 +255396 +255397 +255398 +255399 +255424 +255425 +255426 +255427 +255428 +255429 +255430 +255431 +255456 +255457 +255458 +255459 +255460 +255461 +255462 +255463 +255488 +255489 +255490 +255491 +255492 +255493 +255494 +255495 +255520 +255521 +255522 +255523 +255524 +255525 +255526 +255527 +255552 +255553 +255554 +255555 +255556 +255557 +255558 +255559 +255584 +255585 +255586 +255587 +255588 +255589 +255590 +255591 +255616 +255617 +255618 +255619 +255620 +255621 +255622 +255623 +255648 +255649 +255650 +255651 +255652 +255653 +255654 +255655 +255680 +255681 +255682 +255683 +255684 +255685 +255686 +255687 +255712 +255713 +255714 +255715 +255716 +255717 +255718 +255719 +255744 +255745 +255746 +255747 +255748 +255749 +255750 +255751 +255776 +255777 +255778 +255779 +255780 +255781 +255782 +255783 +255808 +255809 +255810 +255811 +255812 +255813 +255814 +255815 +255840 +255841 +255842 +255843 +255844 +255845 +255846 +255847 +255872 +255873 +255874 +255875 +255876 +255877 +255878 +255879 +255904 +255905 +255906 +255907 +255908 +255909 +255910 +255911 +255936 +255937 +255938 +255939 +255940 +255941 +255942 +255943 +255968 +255969 +255970 +255971 +255972 +255973 +255974 +255975 +256000 +256001 +256002 +256003 +256004 +256005 +256006 +256007 +256032 +256033 +256034 +256035 +256036 +256037 +256038 +256039 +256064 +256065 +256066 +256067 +256068 +256069 +256070 +256071 +256096 +256097 +256098 +256099 +256100 +256101 +256102 +256103 +256128 +256129 +256130 +256131 +256132 +256133 +256134 +256135 +256160 +256161 +256162 +256163 +256164 +256165 +256166 +256167 +256192 +256193 +256194 +256195 +256196 +256197 +256198 +256199 +256224 +256225 +256226 +256227 +256228 +256229 +256230 +256231 +256256 +256257 +256258 +256259 +256260 +256261 +256262 +256263 +256288 +256289 +256290 +256291 +256292 +256293 +256294 +256295 +256320 +256321 +256322 +256323 +256324 +256325 +256326 +256327 +256352 +256353 +256354 +256355 +256356 +256357 +256358 +256359 +256384 +256385 +256386 +256387 +256388 +256389 +256390 +256391 +256416 +256417 +256418 +256419 +256420 +256421 +256422 +256423 +256448 +256449 +256450 +256451 +256452 +256453 +256454 +256455 +256480 +256481 +256482 +256483 +256484 +256485 +256486 +256487 +256512 +256513 +256514 +256515 +256516 +256517 +256518 +256519 +256544 +256545 +256546 +256547 +256548 +256549 +256550 +256551 +256576 +256577 +256578 +256579 +256580 +256581 +256582 +256583 +256608 +256609 +256610 +256611 +256612 +256613 +256614 +256615 +256640 +256641 +256642 +256643 +256644 +256645 +256646 +256647 +256672 +256673 +256674 +256675 +256676 +256677 +256678 +256679 +256704 +256705 +256706 +256707 +256708 +256709 +256710 +256711 +256736 +256737 +256738 +256739 +256740 +256741 +256742 +256743 +256768 +256769 +256770 +256771 +256772 +256773 +256774 +256775 +256800 +256801 +256802 +256803 +256804 +256805 +256806 +256807 +256832 +256833 +256834 +256835 +256836 +256837 +256838 +256839 +256864 +256865 +256866 +256867 +256868 +256869 +256870 +256871 +256896 +256897 +256898 +256899 +256900 +256901 +256902 +256903 +256928 +256929 +256930 +256931 +256932 +256933 +256934 +256935 +256960 +256961 +256962 +256963 +256964 +256965 +256966 +256967 +256992 +256993 +256994 +256995 +256996 +256997 +256998 +256999 +257024 +257025 +257026 +257027 +257028 +257029 +257030 +257031 +257056 +257057 +257058 +257059 +257060 +257061 +257062 +257063 +257088 +257089 +257090 +257091 +257092 +257093 +257094 +257095 +257120 +257121 +257122 +257123 +257124 +257125 +257126 +257127 +257152 +257153 +257154 +257155 +257156 +257157 +257158 +257159 +257184 +257185 +257186 +257187 +257188 +257189 +257190 +257191 +257216 +257217 +257218 +257219 +257220 +257221 +257222 +257223 +257248 +257249 +257250 +257251 +257252 +257253 +257254 +257255 +257280 +257281 +257282 +257283 +257284 +257285 +257286 +257287 +257312 +257313 +257314 +257315 +257316 +257317 +257318 +257319 +257344 +257345 +257346 +257347 +257348 +257349 +257350 +257351 +257376 +257377 +257378 +257379 +257380 +257381 +257382 +257383 +257408 +257409 +257410 +257411 +257412 +257413 +257414 +257415 +257440 +257441 +257442 +257443 +257444 +257445 +257446 +257447 +257472 +257473 +257474 +257475 +257476 +257477 +257478 +257479 +257504 +257505 +257506 +257507 +257508 +257509 +257510 +257511 +257536 +257537 +257538 +257539 +257540 +257541 +257542 +257543 +257568 +257569 +257570 +257571 +257572 +257573 +257574 +257575 +257600 +257601 +257602 +257603 +257604 +257605 +257606 +257607 +257632 +257633 +257634 +257635 +257636 +257637 +257638 +257639 +257664 +257665 +257666 +257667 +257668 +257669 +257670 +257671 +257696 +257697 +257698 +257699 +257700 +257701 +257702 +257703 +257728 +257729 +257730 +257731 +257732 +257733 +257734 +257735 +257760 +257761 +257762 +257763 +257764 +257765 +257766 +257767 +257792 +257793 +257794 +257795 +257796 +257797 +257798 +257799 +257824 +257825 +257826 +257827 +257828 +257829 +257830 +257831 +257856 +257857 +257858 +257859 +257860 +257861 +257862 +257863 +257888 +257889 +257890 +257891 +257892 +257893 +257894 +257895 +257920 +257921 +257922 +257923 +257924 +257925 +257926 +257927 +257952 +257953 +257954 +257955 +257956 +257957 +257958 +257959 +257984 +257985 +257986 +257987 +257988 +257989 +257990 +257991 +258016 +258017 +258018 +258019 +258020 +258021 +258022 +258023 +258048 +258049 +258050 +258051 +258052 +258053 +258054 +258055 +258080 +258081 +258082 +258083 +258084 +258085 +258086 +258087 +258112 +258113 +258114 +258115 +258116 +258117 +258118 +258119 +258144 +258145 +258146 +258147 +258148 +258149 +258150 +258151 +258176 +258177 +258178 +258179 +258180 +258181 +258182 +258183 +258208 +258209 +258210 +258211 +258212 +258213 +258214 +258215 +258240 +258241 +258242 +258243 +258244 +258245 +258246 +258247 +258272 +258273 +258274 +258275 +258276 +258277 +258278 +258279 +258304 +258305 +258306 +258307 +258308 +258309 +258310 +258311 +258336 +258337 +258338 +258339 +258340 +258341 +258342 +258343 +258368 +258369 +258370 +258371 +258372 +258373 +258374 +258375 +258400 +258401 +258402 +258403 +258404 +258405 +258406 +258407 +258432 +258433 +258434 +258435 +258436 +258437 +258438 +258439 +258464 +258465 +258466 +258467 +258468 +258469 +258470 +258471 +258496 +258497 +258498 +258499 +258500 +258501 +258502 +258503 +258528 +258529 +258530 +258531 +258532 +258533 +258534 +258535 +258560 +258561 +258562 +258563 +258564 +258565 +258566 +258567 +258592 +258593 +258594 +258595 +258596 +258597 +258598 +258599 +258624 +258625 +258626 +258627 +258628 +258629 +258630 +258631 +258656 +258657 +258658 +258659 +258660 +258661 +258662 +258663 +258688 +258689 +258690 +258691 +258692 +258693 +258694 +258695 +258720 +258721 +258722 +258723 +258724 +258725 +258726 +258727 +258752 +258753 +258754 +258755 +258756 +258757 +258758 +258759 +258784 +258785 +258786 +258787 +258788 +258789 +258790 +258791 +258816 +258817 +258818 +258819 +258820 +258821 +258822 +258823 +258848 +258849 +258850 +258851 +258852 +258853 +258854 +258855 +258880 +258881 +258882 +258883 +258884 +258885 +258886 +258887 +258912 +258913 +258914 +258915 +258916 +258917 +258918 +258919 +258944 +258945 +258946 +258947 +258948 +258949 +258950 +258951 +258976 +258977 +258978 +258979 +258980 +258981 +258982 +258983 +259008 +259009 +259010 +259011 +259012 +259013 +259014 +259015 +259040 +259041 +259042 +259043 +259044 +259045 +259046 +259047 +259072 +259073 +259074 +259075 +259076 +259077 +259078 +259079 +259104 +259105 +259106 +259107 +259108 +259109 +259110 +259111 +259136 +259137 +259138 +259139 +259140 +259141 +259142 +259143 +259168 +259169 +259170 +259171 +259172 +259173 +259174 +259175 +259200 +259201 +259202 +259203 +259204 +259205 +259206 +259207 +259232 +259233 +259234 +259235 +259236 +259237 +259238 +259239 +259264 +259265 +259266 +259267 +259268 +259269 +259270 +259271 +259296 +259297 +259298 +259299 +259300 +259301 +259302 +259303 +259328 +259329 +259330 +259331 +259332 +259333 +259334 +259335 +259360 +259361 +259362 +259363 +259364 +259365 +259366 +259367 +259392 +259393 +259394 +259395 +259396 +259397 +259398 +259399 +259424 +259425 +259426 +259427 +259428 +259429 +259430 +259431 +259456 +259457 +259458 +259459 +259460 +259461 +259462 +259463 +259488 +259489 +259490 +259491 +259492 +259493 +259494 +259495 +259520 +259521 +259522 +259523 +259524 +259525 +259526 +259527 +259552 +259553 +259554 +259555 +259556 +259557 +259558 +259559 +259584 +259585 +259586 +259587 +259588 +259589 +259590 +259591 +259616 +259617 +259618 +259619 +259620 +259621 +259622 +259623 +259648 +259649 +259650 +259651 +259652 +259653 +259654 +259655 +259680 +259681 +259682 +259683 +259684 +259685 +259686 +259687 +259712 +259713 +259714 +259715 +259716 +259717 +259718 +259719 +259744 +259745 +259746 +259747 +259748 +259749 +259750 +259751 +259776 +259777 +259778 +259779 +259780 +259781 +259782 +259783 +259808 +259809 +259810 +259811 +259812 +259813 +259814 +259815 +259840 +259841 +259842 +259843 +259844 +259845 +259846 +259847 +259872 +259873 +259874 +259875 +259876 +259877 +259878 +259879 +259904 +259905 +259906 +259907 +259908 +259909 +259910 +259911 +259936 +259937 +259938 +259939 +259940 +259941 +259942 +259943 +259968 +259969 +259970 +259971 +259972 +259973 +259974 +259975 +260000 +260001 +260002 +260003 +260004 +260005 +260006 +260007 +260032 +260033 +260034 +260035 +260036 +260037 +260038 +260039 +260064 +260065 +260066 +260067 +260068 +260069 +260070 +260071 +260096 +260097 +260098 +260099 +260100 +260101 +260102 +260103 +260128 +260129 +260130 +260131 +260132 +260133 +260134 +260135 +260160 +260161 +260162 +260163 +260164 +260165 +260166 +260167 +260192 +260193 +260194 +260195 +260196 +260197 +260198 +260199 +260224 +260225 +260226 +260227 +260228 +260229 +260230 +260231 +260256 +260257 +260258 +260259 +260260 +260261 +260262 +260263 +260288 +260289 +260290 +260291 +260292 +260293 +260294 +260295 +260320 +260321 +260322 +260323 +260324 +260325 +260326 +260327 +260352 +260353 +260354 +260355 +260356 +260357 +260358 +260359 +260384 +260385 +260386 +260387 +260388 +260389 +260390 +260391 +260416 +260417 +260418 +260419 +260420 +260421 +260422 +260423 +260448 +260449 +260450 +260451 +260452 +260453 +260454 +260455 +260480 +260481 +260482 +260483 +260484 +260485 +260486 +260487 +260512 +260513 +260514 +260515 +260516 +260517 +260518 +260519 +260544 +260545 +260546 +260547 +260548 +260549 +260550 +260551 +260576 +260577 +260578 +260579 +260580 +260581 +260582 +260583 +260608 +260609 +260610 +260611 +260612 +260613 +260614 +260615 +260640 +260641 +260642 +260643 +260644 +260645 +260646 +260647 +260672 +260673 +260674 +260675 +260676 +260677 +260678 +260679 +260704 +260705 +260706 +260707 +260708 +260709 +260710 +260711 +260736 +260737 +260738 +260739 +260740 +260741 +260742 +260743 +260768 +260769 +260770 +260771 +260772 +260773 +260774 +260775 +260800 +260801 +260802 +260803 +260804 +260805 +260806 +260807 +260832 +260833 +260834 +260835 +260836 +260837 +260838 +260839 +260864 +260865 +260866 +260867 +260868 +260869 +260870 +260871 +260896 +260897 +260898 +260899 +260900 +260901 +260902 +260903 +260928 +260929 +260930 +260931 +260932 +260933 +260934 +260935 +260960 +260961 +260962 +260963 +260964 +260965 +260966 +260967 +260992 +260993 +260994 +260995 +260996 +260997 +260998 +260999 +261024 +261025 +261026 +261027 +261028 +261029 +261030 +261031 +261056 +261057 +261058 +261059 +261060 +261061 +261062 +261063 +261088 +261089 +261090 +261091 +261092 +261093 +261094 +261095 +261120 +261121 +261122 +261123 +261124 +261125 +261126 +261127 +261152 +261153 +261154 +261155 +261156 +261157 +261158 +261159 +261184 +261185 +261186 +261187 +261188 +261189 +261190 +261191 +261216 +261217 +261218 +261219 +261220 +261221 +261222 +261223 +261248 +261249 +261250 +261251 +261252 +261253 +261254 +261255 +261280 +261281 +261282 +261283 +261284 +261285 +261286 +261287 +261312 +261313 +261314 +261315 +261316 +261317 +261318 +261319 +261344 +261345 +261346 +261347 +261348 +261349 +261350 +261351 +261376 +261377 +261378 +261379 +261380 +261381 +261382 +261383 +261408 +261409 +261410 +261411 +261412 +261413 +261414 +261415 +261440 +261441 +261442 +261443 +261444 +261445 +261446 +261447 +261472 +261473 +261474 +261475 +261476 +261477 +261478 +261479 +261504 +261505 +261506 +261507 +261508 +261509 +261510 +261511 +261536 +261537 +261538 +261539 +261540 +261541 +261542 +261543 +261568 +261569 +261570 +261571 +261572 +261573 +261574 +261575 +261600 +261601 +261602 +261603 +261604 +261605 +261606 +261607 +261632 +261633 +261634 +261635 +261636 +261637 +261638 +261639 +261664 +261665 +261666 +261667 +261668 +261669 +261670 +261671 +261696 +261697 +261698 +261699 +261700 +261701 +261702 +261703 +261728 +261729 +261730 +261731 +261732 +261733 +261734 +261735 +261760 +261761 +261762 +261763 +261764 +261765 +261766 +261767 +261792 +261793 +261794 +261795 +261796 +261797 +261798 +261799 +261824 +261825 +261826 +261827 +261828 +261829 +261830 +261831 +261856 +261857 +261858 +261859 +261860 +261861 +261862 +261863 +261888 +261889 +261890 +261891 +261892 +261893 +261894 +261895 +261920 +261921 +261922 +261923 +261924 +261925 +261926 +261927 +261952 +261953 +261954 +261955 +261956 +261957 +261958 +261959 +261984 +261985 +261986 +261987 +261988 +261989 +261990 +261991 +262016 +262017 +262018 +262019 +262020 +262021 +262022 +262023 +262048 +262049 +262050 +262051 +262052 +262053 +262054 +262055 +262080 +262081 +262082 +262083 +262084 +262085 +262086 +262087 +262112 +262113 +262114 +262115 +262116 +262117 +262118 +262119 +262144 +262145 +262146 +262147 +262148 +262149 +262150 +262151 +262176 +262177 +262178 +262179 +262180 +262181 +262182 +262183 +262208 +262209 +262210 +262211 +262212 +262213 +262214 +262215 +262240 +262241 +262242 +262243 +262244 +262245 +262246 +262247 +262272 +262273 +262274 +262275 +262276 +262277 +262278 +262279 +262304 +262305 +262306 +262307 +262308 +262309 +262310 +262311 +262336 +262337 +262338 +262339 +262340 +262341 +262342 +262343 +262368 +262369 +262370 +262371 +262372 +262373 +262374 +262375 +262400 +262401 +262402 +262403 +262404 +262405 +262406 +262407 +262432 +262433 +262434 +262435 +262436 +262437 +262438 +262439 +262464 +262465 +262466 +262467 +262468 +262469 +262470 +262471 +262496 +262497 +262498 +262499 +262500 +262501 +262502 +262503 +262528 +262529 +262530 +262531 +262532 +262533 +262534 +262535 +262560 +262561 +262562 +262563 +262564 +262565 +262566 +262567 +262592 +262593 +262594 +262595 +262596 +262597 +262598 +262599 +262624 +262625 +262626 +262627 +262628 +262629 +262630 +262631 +262656 +262657 +262658 +262659 +262660 +262661 +262662 +262663 +262688 +262689 +262690 +262691 +262692 +262693 +262694 +262695 +262720 +262721 +262722 +262723 +262724 +262725 +262726 +262727 +262752 +262753 +262754 +262755 +262756 +262757 +262758 +262759 +262784 +262785 +262786 +262787 +262788 +262789 +262790 +262791 +262816 +262817 +262818 +262819 +262820 +262821 +262822 +262823 +262848 +262849 +262850 +262851 +262852 +262853 +262854 +262855 +262880 +262881 +262882 +262883 +262884 +262885 +262886 +262887 +262912 +262913 +262914 +262915 +262916 +262917 +262918 +262919 +262944 +262945 +262946 +262947 +262948 +262949 +262950 +262951 +262976 +262977 +262978 +262979 +262980 +262981 +262982 +262983 +263008 +263009 +263010 +263011 +263012 +263013 +263014 +263015 +263040 +263041 +263042 +263043 +263044 +263045 +263046 +263047 +263072 +263073 +263074 +263075 +263076 +263077 +263078 +263079 +263104 +263105 +263106 +263107 +263108 +263109 +263110 +263111 +263136 +263137 +263138 +263139 +263140 +263141 +263142 +263143 +263168 +263169 +263170 +263171 +263172 +263173 +263174 +263175 +263200 +263201 +263202 +263203 +263204 +263205 +263206 +263207 +263232 +263233 +263234 +263235 +263236 +263237 +263238 +263239 +263264 +263265 +263266 +263267 +263268 +263269 +263270 +263271 +263296 +263297 +263298 +263299 +263300 +263301 +263302 +263303 +263328 +263329 +263330 +263331 +263332 +263333 +263334 +263335 +263360 +263361 +263362 +263363 +263364 +263365 +263366 +263367 +263392 +263393 +263394 +263395 +263396 +263397 +263398 +263399 +263424 +263425 +263426 +263427 +263428 +263429 +263430 +263431 +263456 +263457 +263458 +263459 +263460 +263461 +263462 +263463 +263488 +263489 +263490 +263491 +263492 +263493 +263494 +263495 +263520 +263521 +263522 +263523 +263524 +263525 +263526 +263527 +263552 +263553 +263554 +263555 +263556 +263557 +263558 +263559 +263584 +263585 +263586 +263587 +263588 +263589 +263590 +263591 +263616 +263617 +263618 +263619 +263620 +263621 +263622 +263623 +263648 +263649 +263650 +263651 +263652 +263653 +263654 +263655 +263680 +263681 +263682 +263683 +263684 +263685 +263686 +263687 +263712 +263713 +263714 +263715 +263716 +263717 +263718 +263719 +263744 +263745 +263746 +263747 +263748 +263749 +263750 +263751 +263776 +263777 +263778 +263779 +263780 +263781 +263782 +263783 +263808 +263809 +263810 +263811 +263812 +263813 +263814 +263815 +263840 +263841 +263842 +263843 +263844 +263845 +263846 +263847 +263872 +263873 +263874 +263875 +263876 +263877 +263878 +263879 +263904 +263905 +263906 +263907 +263908 +263909 +263910 +263911 +263936 +263937 +263938 +263939 +263940 +263941 +263942 +263943 +263968 +263969 +263970 +263971 +263972 +263973 +263974 +263975 +264000 +264001 +264002 +264003 +264004 +264005 +264006 +264007 +264032 +264033 +264034 +264035 +264036 +264037 +264038 +264039 +264064 +264065 +264066 +264067 +264068 +264069 +264070 +264071 +264096 +264097 +264098 +264099 +264100 +264101 +264102 +264103 +264128 +264129 +264130 +264131 +264132 +264133 +264134 +264135 +264160 +264161 +264162 +264163 +264164 +264165 +264166 +264167 +264192 +264193 +264194 +264195 +264196 +264197 +264198 +264199 +264224 +264225 +264226 +264227 +264228 +264229 +264230 +264231 +264256 +264257 +264258 +264259 +264260 +264261 +264262 +264263 +264288 +264289 +264290 +264291 +264292 +264293 +264294 +264295 +264320 +264321 +264322 +264323 +264324 +264325 +264326 +264327 +264352 +264353 +264354 +264355 +264356 +264357 +264358 +264359 +264384 +264385 +264386 +264387 +264388 +264389 +264390 +264391 +264416 +264417 +264418 +264419 +264420 +264421 +264422 +264423 +264448 +264449 +264450 +264451 +264452 +264453 +264454 +264455 +264480 +264481 +264482 +264483 +264484 +264485 +264486 +264487 +264512 +264513 +264514 +264515 +264516 +264517 +264518 +264519 +264544 +264545 +264546 +264547 +264548 +264549 +264550 +264551 +264576 +264577 +264578 +264579 +264580 +264581 +264582 +264583 +264608 +264609 +264610 +264611 +264612 +264613 +264614 +264615 +264640 +264641 +264642 +264643 +264644 +264645 +264646 +264647 +264672 +264673 +264674 +264675 +264676 +264677 +264678 +264679 +264704 +264705 +264706 +264707 +264708 +264709 +264710 +264711 +264736 +264737 +264738 +264739 +264740 +264741 +264742 +264743 +264768 +264769 +264770 +264771 +264772 +264773 +264774 +264775 +264800 +264801 +264802 +264803 +264804 +264805 +264806 +264807 +264832 +264833 +264834 +264835 +264836 +264837 +264838 +264839 +264864 +264865 +264866 +264867 +264868 +264869 +264870 +264871 +264896 +264897 +264898 +264899 +264900 +264901 +264902 +264903 +264928 +264929 +264930 +264931 +264932 +264933 +264934 +264935 +264960 +264961 +264962 +264963 +264964 +264965 +264966 +264967 +264992 +264993 +264994 +264995 +264996 +264997 +264998 +264999 +265024 +265025 +265026 +265027 +265028 +265029 +265030 +265031 +265056 +265057 +265058 +265059 +265060 +265061 +265062 +265063 +265088 +265089 +265090 +265091 +265092 +265093 +265094 +265095 +265120 +265121 +265122 +265123 +265124 +265125 +265126 +265127 +265152 +265153 +265154 +265155 +265156 +265157 +265158 +265159 +265184 +265185 +265186 +265187 +265188 +265189 +265190 +265191 +265216 +265217 +265218 +265219 +265220 +265221 +265222 +265223 +265248 +265249 +265250 +265251 +265252 +265253 +265254 +265255 +265280 +265281 +265282 +265283 +265284 +265285 +265286 +265287 +265312 +265313 +265314 +265315 +265316 +265317 +265318 +265319 +265344 +265345 +265346 +265347 +265348 +265349 +265350 +265351 +265376 +265377 +265378 +265379 +265380 +265381 +265382 +265383 +265408 +265409 +265410 +265411 +265412 +265413 +265414 +265415 +265440 +265441 +265442 +265443 +265444 +265445 +265446 +265447 +265472 +265473 +265474 +265475 +265476 +265477 +265478 +265479 +265504 +265505 +265506 +265507 +265508 +265509 +265510 +265511 +265536 +265537 +265538 +265539 +265540 +265541 +265542 +265543 +265568 +265569 +265570 +265571 +265572 +265573 +265574 +265575 +265600 +265601 +265602 +265603 +265604 +265605 +265606 +265607 +265632 +265633 +265634 +265635 +265636 +265637 +265638 +265639 +265664 +265665 +265666 +265667 +265668 +265669 +265670 +265671 +265696 +265697 +265698 +265699 +265700 +265701 +265702 +265703 +265728 +265729 +265730 +265731 +265732 +265733 +265734 +265735 +265760 +265761 +265762 +265763 +265764 +265765 +265766 +265767 +265792 +265793 +265794 +265795 +265796 +265797 +265798 +265799 +265824 +265825 +265826 +265827 +265828 +265829 +265830 +265831 +265856 +265857 +265858 +265859 +265860 +265861 +265862 +265863 +265888 +265889 +265890 +265891 +265892 +265893 +265894 +265895 +265920 +265921 +265922 +265923 +265924 +265925 +265926 +265927 +265952 +265953 +265954 +265955 +265956 +265957 +265958 +265959 +265984 +265985 +265986 +265987 +265988 +265989 +265990 +265991 +266016 +266017 +266018 +266019 +266020 +266021 +266022 +266023 +266048 +266049 +266050 +266051 +266052 +266053 +266054 +266055 +266080 +266081 +266082 +266083 +266084 +266085 +266086 +266087 +266112 +266113 +266114 +266115 +266116 +266117 +266118 +266119 +266144 +266145 +266146 +266147 +266148 +266149 +266150 +266151 +266176 +266177 +266178 +266179 +266180 +266181 +266182 +266183 +266208 +266209 +266210 +266211 +266212 +266213 +266214 +266215 +266240 +266241 +266242 +266243 +266244 +266245 +266246 +266247 +266272 +266273 +266274 +266275 +266276 +266277 +266278 +266279 +266304 +266305 +266306 +266307 +266308 +266309 +266310 +266311 +266336 +266337 +266338 +266339 +266340 +266341 +266342 +266343 +266368 +266369 +266370 +266371 +266372 +266373 +266374 +266375 +266400 +266401 +266402 +266403 +266404 +266405 +266406 +266407 +266432 +266433 +266434 +266435 +266436 +266437 +266438 +266439 +266464 +266465 +266466 +266467 +266468 +266469 +266470 +266471 +266496 +266497 +266498 +266499 +266500 +266501 +266502 +266503 +266528 +266529 +266530 +266531 +266532 +266533 +266534 +266535 +266560 +266561 +266562 +266563 +266564 +266565 +266566 +266567 +266592 +266593 +266594 +266595 +266596 +266597 +266598 +266599 +266624 +266625 +266626 +266627 +266628 +266629 +266630 +266631 +266656 +266657 +266658 +266659 +266660 +266661 +266662 +266663 +266688 +266689 +266690 +266691 +266692 +266693 +266694 +266695 +266720 +266721 +266722 +266723 +266724 +266725 +266726 +266727 +266752 +266753 +266754 +266755 +266756 +266757 +266758 +266759 +266784 +266785 +266786 +266787 +266788 +266789 +266790 +266791 +266816 +266817 +266818 +266819 +266820 +266821 +266822 +266823 +266848 +266849 +266850 +266851 +266852 +266853 +266854 +266855 +266880 +266881 +266882 +266883 +266884 +266885 +266886 +266887 +266912 +266913 +266914 +266915 +266916 +266917 +266918 +266919 +266944 +266945 +266946 +266947 +266948 +266949 +266950 +266951 +266976 +266977 +266978 +266979 +266980 +266981 +266982 +266983 +267008 +267009 +267010 +267011 +267012 +267013 +267014 +267015 +267040 +267041 +267042 +267043 +267044 +267045 +267046 +267047 +267072 +267073 +267074 +267075 +267076 +267077 +267078 +267079 +267104 +267105 +267106 +267107 +267108 +267109 +267110 +267111 +267136 +267137 +267138 +267139 +267140 +267141 +267142 +267143 +267168 +267169 +267170 +267171 +267172 +267173 +267174 +267175 +267200 +267201 +267202 +267203 +267204 +267205 +267206 +267207 +267232 +267233 +267234 +267235 +267236 +267237 +267238 +267239 +267264 +267265 +267266 +267267 +267268 +267269 +267270 +267271 +267296 +267297 +267298 +267299 +267300 +267301 +267302 +267303 +267328 +267329 +267330 +267331 +267332 +267333 +267334 +267335 +267360 +267361 +267362 +267363 +267364 +267365 +267366 +267367 +267392 +267393 +267394 +267395 +267396 +267397 +267398 +267399 +267424 +267425 +267426 +267427 +267428 +267429 +267430 +267431 +267456 +267457 +267458 +267459 +267460 +267461 +267462 +267463 +267488 +267489 +267490 +267491 +267492 +267493 +267494 +267495 +267520 +267521 +267522 +267523 +267524 +267525 +267526 +267527 +267552 +267553 +267554 +267555 +267556 +267557 +267558 +267559 +267584 +267585 +267586 +267587 +267588 +267589 +267590 +267591 +267616 +267617 +267618 +267619 +267620 +267621 +267622 +267623 +267648 +267649 +267650 +267651 +267652 +267653 +267654 +267655 +267680 +267681 +267682 +267683 +267684 +267685 +267686 +267687 +267712 +267713 +267714 +267715 +267716 +267717 +267718 +267719 +267744 +267745 +267746 +267747 +267748 +267749 +267750 +267751 +267776 +267777 +267778 +267779 +267780 +267781 +267782 +267783 +267808 +267809 +267810 +267811 +267812 +267813 +267814 +267815 +267840 +267841 +267842 +267843 +267844 +267845 +267846 +267847 +267872 +267873 +267874 +267875 +267876 +267877 +267878 +267879 +267904 +267905 +267906 +267907 +267908 +267909 +267910 +267911 +267936 +267937 +267938 +267939 +267940 +267941 +267942 +267943 +267968 +267969 +267970 +267971 +267972 +267973 +267974 +267975 +268000 +268001 +268002 +268003 +268004 +268005 +268006 +268007 +268032 +268033 +268034 +268035 +268036 +268037 +268038 +268039 +268064 +268065 +268066 +268067 +268068 +268069 +268070 +268071 +268096 +268097 +268098 +268099 +268100 +268101 +268102 +268103 +268128 +268129 +268130 +268131 +268132 +268133 +268134 +268135 +268160 +268161 +268162 +268163 +268164 +268165 +268166 +268167 +268192 +268193 +268194 +268195 +268196 +268197 +268198 +268199 +268224 +268225 +268226 +268227 +268228 +268229 +268230 +268231 +268256 +268257 +268258 +268259 +268260 +268261 +268262 +268263 +268288 +268289 +268290 +268291 +268292 +268293 +268294 +268295 +268320 +268321 +268322 +268323 +268324 +268325 +268326 +268327 +268352 +268353 +268354 +268355 +268356 +268357 +268358 +268359 +268384 +268385 +268386 +268387 +268388 +268389 +268390 +268391 +268416 +268417 +268418 +268419 +268420 +268421 +268422 +268423 +268448 +268449 +268450 +268451 +268452 +268453 +268454 +268455 +268480 +268481 +268482 +268483 +268484 +268485 +268486 +268487 +268512 +268513 +268514 +268515 +268516 +268517 +268518 +268519 +268544 +268545 +268546 +268547 +268548 +268549 +268550 +268551 +268576 +268577 +268578 +268579 +268580 +268581 +268582 +268583 +268608 +268609 +268610 +268611 +268612 +268613 +268614 +268615 +268640 +268641 +268642 +268643 +268644 +268645 +268646 +268647 +268672 +268673 +268674 +268675 +268676 +268677 +268678 +268679 +268704 +268705 +268706 +268707 +268708 +268709 +268710 +268711 +268736 +268737 +268738 +268739 +268740 +268741 +268742 +268743 +268768 +268769 +268770 +268771 +268772 +268773 +268774 +268775 +268800 +268801 +268802 +268803 +268804 +268805 +268806 +268807 +268832 +268833 +268834 +268835 +268836 +268837 +268838 +268839 +268864 +268865 +268866 +268867 +268868 +268869 +268870 +268871 +268896 +268897 +268898 +268899 +268900 +268901 +268902 +268903 +268928 +268929 +268930 +268931 +268932 +268933 +268934 +268935 +268960 +268961 +268962 +268963 +268964 +268965 +268966 +268967 +268992 +268993 +268994 +268995 +268996 +268997 +268998 +268999 +269024 +269025 +269026 +269027 +269028 +269029 +269030 +269031 +269056 +269057 +269058 +269059 +269060 +269061 +269062 +269063 +269088 +269089 +269090 +269091 +269092 +269093 +269094 +269095 +269120 +269121 +269122 +269123 +269124 +269125 +269126 +269127 +269152 +269153 +269154 +269155 +269156 +269157 +269158 +269159 +269184 +269185 +269186 +269187 +269188 +269189 +269190 +269191 +269216 +269217 +269218 +269219 +269220 +269221 +269222 +269223 +269248 +269249 +269250 +269251 +269252 +269253 +269254 +269255 +269280 +269281 +269282 +269283 +269284 +269285 +269286 +269287 +269312 +269313 +269314 +269315 +269316 +269317 +269318 +269319 +269344 +269345 +269346 +269347 +269348 +269349 +269350 +269351 +269376 +269377 +269378 +269379 +269380 +269381 +269382 +269383 +269408 +269409 +269410 +269411 +269412 +269413 +269414 +269415 +269440 +269441 +269442 +269443 +269444 +269445 +269446 +269447 +269472 +269473 +269474 +269475 +269476 +269477 +269478 +269479 +269504 +269505 +269506 +269507 +269508 +269509 +269510 +269511 +269536 +269537 +269538 +269539 +269540 +269541 +269542 +269543 +269568 +269569 +269570 +269571 +269572 +269573 +269574 +269575 +269600 +269601 +269602 +269603 +269604 +269605 +269606 +269607 +269632 +269633 +269634 +269635 +269636 +269637 +269638 +269639 +269664 +269665 +269666 +269667 +269668 +269669 +269670 +269671 +269696 +269697 +269698 +269699 +269700 +269701 +269702 +269703 +269728 +269729 +269730 +269731 +269732 +269733 +269734 +269735 +269760 +269761 +269762 +269763 +269764 +269765 +269766 +269767 +269792 +269793 +269794 +269795 +269796 +269797 +269798 +269799 +269824 +269825 +269826 +269827 +269828 +269829 +269830 +269831 +269856 +269857 +269858 +269859 +269860 +269861 +269862 +269863 +269888 +269889 +269890 +269891 +269892 +269893 +269894 +269895 +269920 +269921 +269922 +269923 +269924 +269925 +269926 +269927 +269952 +269953 +269954 +269955 +269956 +269957 +269958 +269959 +269984 +269985 +269986 +269987 +269988 +269989 +269990 +269991 +270016 +270017 +270018 +270019 +270020 +270021 +270022 +270023 +270048 +270049 +270050 +270051 +270052 +270053 +270054 +270055 +270080 +270081 +270082 +270083 +270084 +270085 +270086 +270087 +270112 +270113 +270114 +270115 +270116 +270117 +270118 +270119 +270144 +270145 +270146 +270147 +270148 +270149 +270150 +270151 +270176 +270177 +270178 +270179 +270180 +270181 +270182 +270183 +270208 +270209 +270210 +270211 +270212 +270213 +270214 +270215 +270240 +270241 +270242 +270243 +270244 +270245 +270246 +270247 +270272 +270273 +270274 +270275 +270276 +270277 +270278 +270279 +270304 +270305 +270306 +270307 +270308 +270309 +270310 +270311 +270336 +270337 +270338 +270339 +270340 +270341 +270342 +270343 +270368 +270369 +270370 +270371 +270372 +270373 +270374 +270375 +270400 +270401 +270402 +270403 +270404 +270405 +270406 +270407 +270432 +270433 +270434 +270435 +270436 +270437 +270438 +270439 +270464 +270465 +270466 +270467 +270468 +270469 +270470 +270471 +270496 +270497 +270498 +270499 +270500 +270501 +270502 +270503 +270528 +270529 +270530 +270531 +270532 +270533 +270534 +270535 +270560 +270561 +270562 +270563 +270564 +270565 +270566 +270567 +270592 +270593 +270594 +270595 +270596 +270597 +270598 +270599 +270624 +270625 +270626 +270627 +270628 +270629 +270630 +270631 +270656 +270657 +270658 +270659 +270660 +270661 +270662 +270663 +270688 +270689 +270690 +270691 +270692 +270693 +270694 +270695 +270720 +270721 +270722 +270723 +270724 +270725 +270726 +270727 +270752 +270753 +270754 +270755 +270756 +270757 +270758 +270759 +270784 +270785 +270786 +270787 +270788 +270789 +270790 +270791 +270816 +270817 +270818 +270819 +270820 +270821 +270822 +270823 +270848 +270849 +270850 +270851 +270852 +270853 +270854 +270855 +270880 +270881 +270882 +270883 +270884 +270885 +270886 +270887 +270912 +270913 +270914 +270915 +270916 +270917 +270918 +270919 +270944 +270945 +270946 +270947 +270948 +270949 +270950 +270951 +270976 +270977 +270978 +270979 +270980 +270981 +270982 +270983 +271008 +271009 +271010 +271011 +271012 +271013 +271014 +271015 +271040 +271041 +271042 +271043 +271044 +271045 +271046 +271047 +271072 +271073 +271074 +271075 +271076 +271077 +271078 +271079 +271104 +271105 +271106 +271107 +271108 +271109 +271110 +271111 +271136 +271137 +271138 +271139 +271140 +271141 +271142 +271143 +271168 +271169 +271170 +271171 +271172 +271173 +271174 +271175 +271200 +271201 +271202 +271203 +271204 +271205 +271206 +271207 +271232 +271233 +271234 +271235 +271236 +271237 +271238 +271239 +271264 +271265 +271266 +271267 +271268 +271269 +271270 +271271 +271296 +271297 +271298 +271299 +271300 +271301 +271302 +271303 +271328 +271329 +271330 +271331 +271332 +271333 +271334 +271335 +271360 +271361 +271362 +271363 +271364 +271365 +271366 +271367 +271392 +271393 +271394 +271395 +271396 +271397 +271398 +271399 +271424 +271425 +271426 +271427 +271428 +271429 +271430 +271431 +271456 +271457 +271458 +271459 +271460 +271461 +271462 +271463 +271488 +271489 +271490 +271491 +271492 +271493 +271494 +271495 +271520 +271521 +271522 +271523 +271524 +271525 +271526 +271527 +271552 +271553 +271554 +271555 +271556 +271557 +271558 +271559 +271584 +271585 +271586 +271587 +271588 +271589 +271590 +271591 +271616 +271617 +271618 +271619 +271620 +271621 +271622 +271623 +271648 +271649 +271650 +271651 +271652 +271653 +271654 +271655 +271680 +271681 +271682 +271683 +271684 +271685 +271686 +271687 +271712 +271713 +271714 +271715 +271716 +271717 +271718 +271719 +271744 +271745 +271746 +271747 +271748 +271749 +271750 +271751 +271776 +271777 +271778 +271779 +271780 +271781 +271782 +271783 +271808 +271809 +271810 +271811 +271812 +271813 +271814 +271815 +271840 +271841 +271842 +271843 +271844 +271845 +271846 +271847 +271872 +271873 +271874 +271875 +271876 +271877 +271878 +271879 +271904 +271905 +271906 +271907 +271908 +271909 +271910 +271911 +271936 +271937 +271938 +271939 +271940 +271941 +271942 +271943 +271968 +271969 +271970 +271971 +271972 +271973 +271974 +271975 +272000 +272001 +272002 +272003 +272004 +272005 +272006 +272007 +272032 +272033 +272034 +272035 +272036 +272037 +272038 +272039 +272064 +272065 +272066 +272067 +272068 +272069 +272070 +272071 +272096 +272097 +272098 +272099 +272100 +272101 +272102 +272103 +272128 +272129 +272130 +272131 +272132 +272133 +272134 +272135 +272160 +272161 +272162 +272163 +272164 +272165 +272166 +272167 +272192 +272193 +272194 +272195 +272196 +272197 +272198 +272199 +272224 +272225 +272226 +272227 +272228 +272229 +272230 +272231 +272256 +272257 +272258 +272259 +272260 +272261 +272262 +272263 +272288 +272289 +272290 +272291 +272292 +272293 +272294 +272295 +272320 +272321 +272322 +272323 +272324 +272325 +272326 +272327 +272352 +272353 +272354 +272355 +272356 +272357 +272358 +272359 +272384 +272385 +272386 +272387 +272388 +272389 +272390 +272391 +272416 +272417 +272418 +272419 +272420 +272421 +272422 +272423 +272448 +272449 +272450 +272451 +272452 +272453 +272454 +272455 +272480 +272481 +272482 +272483 +272484 +272485 +272486 +272487 +272512 +272513 +272514 +272515 +272516 +272517 +272518 +272519 +272544 +272545 +272546 +272547 +272548 +272549 +272550 +272551 +272576 +272577 +272578 +272579 +272580 +272581 +272582 +272583 +272608 +272609 +272610 +272611 +272612 +272613 +272614 +272615 +272640 +272641 +272642 +272643 +272644 +272645 +272646 +272647 +272672 +272673 +272674 +272675 +272676 +272677 +272678 +272679 +272704 +272705 +272706 +272707 +272708 +272709 +272710 +272711 +272736 +272737 +272738 +272739 +272740 +272741 +272742 +272743 +272768 +272769 +272770 +272771 +272772 +272773 +272774 +272775 +272800 +272801 +272802 +272803 +272804 +272805 +272806 +272807 +272832 +272833 +272834 +272835 +272836 +272837 +272838 +272839 +272864 +272865 +272866 +272867 +272868 +272869 +272870 +272871 +272896 +272897 +272898 +272899 +272900 +272901 +272902 +272903 +272928 +272929 +272930 +272931 +272932 +272933 +272934 +272935 +272960 +272961 +272962 +272963 +272964 +272965 +272966 +272967 +272992 +272993 +272994 +272995 +272996 +272997 +272998 +272999 +273024 +273025 +273026 +273027 +273028 +273029 +273030 +273031 +273056 +273057 +273058 +273059 +273060 +273061 +273062 +273063 +273088 +273089 +273090 +273091 +273092 +273093 +273094 +273095 +273120 +273121 +273122 +273123 +273124 +273125 +273126 +273127 +273152 +273153 +273154 +273155 +273156 +273157 +273158 +273159 +273184 +273185 +273186 +273187 +273188 +273189 +273190 +273191 +273216 +273217 +273218 +273219 +273220 +273221 +273222 +273223 +273248 +273249 +273250 +273251 +273252 +273253 +273254 +273255 +273280 +273281 +273282 +273283 +273284 +273285 +273286 +273287 +273312 +273313 +273314 +273315 +273316 +273317 +273318 +273319 +273344 +273345 +273346 +273347 +273348 +273349 +273350 +273351 +273376 +273377 +273378 +273379 +273380 +273381 +273382 +273383 +273408 +273409 +273410 +273411 +273412 +273413 +273414 +273415 +273440 +273441 +273442 +273443 +273444 +273445 +273446 +273447 +273472 +273473 +273474 +273475 +273476 +273477 +273478 +273479 +273504 +273505 +273506 +273507 +273508 +273509 +273510 +273511 +273536 +273537 +273538 +273539 +273540 +273541 +273542 +273543 +273568 +273569 +273570 +273571 +273572 +273573 +273574 +273575 +273600 +273601 +273602 +273603 +273604 +273605 +273606 +273607 +273632 +273633 +273634 +273635 +273636 +273637 +273638 +273639 +273664 +273665 +273666 +273667 +273668 +273669 +273670 +273671 +273696 +273697 +273698 +273699 +273700 +273701 +273702 +273703 +273728 +273729 +273730 +273731 +273732 +273733 +273734 +273735 +273760 +273761 +273762 +273763 +273764 +273765 +273766 +273767 +273792 +273793 +273794 +273795 +273796 +273797 +273798 +273799 +273824 +273825 +273826 +273827 +273828 +273829 +273830 +273831 +273856 +273857 +273858 +273859 +273860 +273861 +273862 +273863 +273888 +273889 +273890 +273891 +273892 +273893 +273894 +273895 +273920 +273921 +273922 +273923 +273924 +273925 +273926 +273927 +273952 +273953 +273954 +273955 +273956 +273957 +273958 +273959 +273984 +273985 +273986 +273987 +273988 +273989 +273990 +273991 +274016 +274017 +274018 +274019 +274020 +274021 +274022 +274023 +274048 +274049 +274050 +274051 +274052 +274053 +274054 +274055 +274080 +274081 +274082 +274083 +274084 +274085 +274086 +274087 +274112 +274113 +274114 +274115 +274116 +274117 +274118 +274119 +274144 +274145 +274146 +274147 +274148 +274149 +274150 +274151 +274176 +274177 +274178 +274179 +274180 +274181 +274182 +274183 +274208 +274209 +274210 +274211 +274212 +274213 +274214 +274215 +274240 +274241 +274242 +274243 +274244 +274245 +274246 +274247 +274272 +274273 +274274 +274275 +274276 +274277 +274278 +274279 +274304 +274305 +274306 +274307 +274308 +274309 +274310 +274311 +274336 +274337 +274338 +274339 +274340 +274341 +274342 +274343 +274368 +274369 +274370 +274371 +274372 +274373 +274374 +274375 +274400 +274401 +274402 +274403 +274404 +274405 +274406 +274407 +274432 +274433 +274434 +274435 +274436 +274437 +274438 +274439 +274464 +274465 +274466 +274467 +274468 +274469 +274470 +274471 +274496 +274497 +274498 +274499 +274500 +274501 +274502 +274503 +274528 +274529 +274530 +274531 +274532 +274533 +274534 +274535 +274560 +274561 +274562 +274563 +274564 +274565 +274566 +274567 +274592 +274593 +274594 +274595 +274596 +274597 +274598 +274599 +274624 +274625 +274626 +274627 +274628 +274629 +274630 +274631 +274656 +274657 +274658 +274659 +274660 +274661 +274662 +274663 +274688 +274689 +274690 +274691 +274692 +274693 +274694 +274695 +274720 +274721 +274722 +274723 +274724 +274725 +274726 +274727 +274752 +274753 +274754 +274755 +274756 +274757 +274758 +274759 +274784 +274785 +274786 +274787 +274788 +274789 +274790 +274791 +274816 +274817 +274818 +274819 +274820 +274821 +274822 +274823 +274848 +274849 +274850 +274851 +274852 +274853 +274854 +274855 +274880 +274881 +274882 +274883 +274884 +274885 +274886 +274887 +274912 +274913 +274914 +274915 +274916 +274917 +274918 +274919 +274944 +274945 +274946 +274947 +274948 +274949 +274950 +274951 +274976 +274977 +274978 +274979 +274980 +274981 +274982 +274983 +275008 +275009 +275010 +275011 +275012 +275013 +275014 +275015 +275040 +275041 +275042 +275043 +275044 +275045 +275046 +275047 +275072 +275073 +275074 +275075 +275076 +275077 +275078 +275079 +275104 +275105 +275106 +275107 +275108 +275109 +275110 +275111 +275136 +275137 +275138 +275139 +275140 +275141 +275142 +275143 +275168 +275169 +275170 +275171 +275172 +275173 +275174 +275175 +275200 +275201 +275202 +275203 +275204 +275205 +275206 +275207 +275232 +275233 +275234 +275235 +275236 +275237 +275238 +275239 +275264 +275265 +275266 +275267 +275268 +275269 +275270 +275271 +275296 +275297 +275298 +275299 +275300 +275301 +275302 +275303 +275328 +275329 +275330 +275331 +275332 +275333 +275334 +275335 +275360 +275361 +275362 +275363 +275364 +275365 +275366 +275367 +275392 +275393 +275394 +275395 +275396 +275397 +275398 +275399 +275424 +275425 +275426 +275427 +275428 +275429 +275430 +275431 +275456 +275457 +275458 +275459 +275460 +275461 +275462 +275463 +275488 +275489 +275490 +275491 +275492 +275493 +275494 +275495 +275520 +275521 +275522 +275523 +275524 +275525 +275526 +275527 +275552 +275553 +275554 +275555 +275556 +275557 +275558 +275559 +275584 +275585 +275586 +275587 +275588 +275589 +275590 +275591 +275616 +275617 +275618 +275619 +275620 +275621 +275622 +275623 +275648 +275649 +275650 +275651 +275652 +275653 +275654 +275655 +275680 +275681 +275682 +275683 +275684 +275685 +275686 +275687 +275712 +275713 +275714 +275715 +275716 +275717 +275718 +275719 +275744 +275745 +275746 +275747 +275748 +275749 +275750 +275751 +275776 +275777 +275778 +275779 +275780 +275781 +275782 +275783 +275808 +275809 +275810 +275811 +275812 +275813 +275814 +275815 +275840 +275841 +275842 +275843 +275844 +275845 +275846 +275847 +275872 +275873 +275874 +275875 +275876 +275877 +275878 +275879 +275904 +275905 +275906 +275907 +275908 +275909 +275910 +275911 +275936 +275937 +275938 +275939 +275940 +275941 +275942 +275943 +275968 +275969 +275970 +275971 +275972 +275973 +275974 +275975 +276000 +276001 +276002 +276003 +276004 +276005 +276006 +276007 +276032 +276033 +276034 +276035 +276036 +276037 +276038 +276039 +276064 +276065 +276066 +276067 +276068 +276069 +276070 +276071 +276096 +276097 +276098 +276099 +276100 +276101 +276102 +276103 +276128 +276129 +276130 +276131 +276132 +276133 +276134 +276135 +276160 +276161 +276162 +276163 +276164 +276165 +276166 +276167 +276192 +276193 +276194 +276195 +276196 +276197 +276198 +276199 +276224 +276225 +276226 +276227 +276228 +276229 +276230 +276231 +276256 +276257 +276258 +276259 +276260 +276261 +276262 +276263 +276288 +276289 +276290 +276291 +276292 +276293 +276294 +276295 +276320 +276321 +276322 +276323 +276324 +276325 +276326 +276327 +276352 +276353 +276354 +276355 +276356 +276357 +276358 +276359 +276384 +276385 +276386 +276387 +276388 +276389 +276390 +276391 +276416 +276417 +276418 +276419 +276420 +276421 +276422 +276423 +276448 +276449 +276450 +276451 +276452 +276453 +276454 +276455 +276480 +276481 +276482 +276483 +276484 +276485 +276486 +276487 +276512 +276513 +276514 +276515 +276516 +276517 +276518 +276519 +276544 +276545 +276546 +276547 +276548 +276549 +276550 +276551 +276576 +276577 +276578 +276579 +276580 +276581 +276582 +276583 +276608 +276609 +276610 +276611 +276612 +276613 +276614 +276615 +276640 +276641 +276642 +276643 +276644 +276645 +276646 +276647 +276672 +276673 +276674 +276675 +276676 +276677 +276678 +276679 +276704 +276705 +276706 +276707 +276708 +276709 +276710 +276711 +276736 +276737 +276738 +276739 +276740 +276741 +276742 +276743 +276768 +276769 +276770 +276771 +276772 +276773 +276774 +276775 +276800 +276801 +276802 +276803 +276804 +276805 +276806 +276807 +276832 +276833 +276834 +276835 +276836 +276837 +276838 +276839 +276864 +276865 +276866 +276867 +276868 +276869 +276870 +276871 +276896 +276897 +276898 +276899 +276900 +276901 +276902 +276903 +276928 +276929 +276930 +276931 +276932 +276933 +276934 +276935 +276960 +276961 +276962 +276963 +276964 +276965 +276966 +276967 +276992 +276993 +276994 +276995 +276996 +276997 +276998 +276999 +277024 +277025 +277026 +277027 +277028 +277029 +277030 +277031 +277056 +277057 +277058 +277059 +277060 +277061 +277062 +277063 +277088 +277089 +277090 +277091 +277092 +277093 +277094 +277095 +277120 +277121 +277122 +277123 +277124 +277125 +277126 +277127 +277152 +277153 +277154 +277155 +277156 +277157 +277158 +277159 +277184 +277185 +277186 +277187 +277188 +277189 +277190 +277191 +277216 +277217 +277218 +277219 +277220 +277221 +277222 +277223 +277248 +277249 +277250 +277251 +277252 +277253 +277254 +277255 +277280 +277281 +277282 +277283 +277284 +277285 +277286 +277287 +277312 +277313 +277314 +277315 +277316 +277317 +277318 +277319 +277344 +277345 +277346 +277347 +277348 +277349 +277350 +277351 +277376 +277377 +277378 +277379 +277380 +277381 +277382 +277383 +277408 +277409 +277410 +277411 +277412 +277413 +277414 +277415 +277440 +277441 +277442 +277443 +277444 +277445 +277446 +277447 +277472 +277473 +277474 +277475 +277476 +277477 +277478 +277479 +277504 +277505 +277506 +277507 +277508 +277509 +277510 +277511 +277536 +277537 +277538 +277539 +277540 +277541 +277542 +277543 +277568 +277569 +277570 +277571 +277572 +277573 +277574 +277575 +277600 +277601 +277602 +277603 +277604 +277605 +277606 +277607 +277632 +277633 +277634 +277635 +277636 +277637 +277638 +277639 +277664 +277665 +277666 +277667 +277668 +277669 +277670 +277671 +277696 +277697 +277698 +277699 +277700 +277701 +277702 +277703 +277728 +277729 +277730 +277731 +277732 +277733 +277734 +277735 +277760 +277761 +277762 +277763 +277764 +277765 +277766 +277767 +277792 +277793 +277794 +277795 +277796 +277797 +277798 +277799 +277824 +277825 +277826 +277827 +277828 +277829 +277830 +277831 +277856 +277857 +277858 +277859 +277860 +277861 +277862 +277863 +277888 +277889 +277890 +277891 +277892 +277893 +277894 +277895 +277920 +277921 +277922 +277923 +277924 +277925 +277926 +277927 +277952 +277953 +277954 +277955 +277956 +277957 +277958 +277959 +277984 +277985 +277986 +277987 +277988 +277989 +277990 +277991 +278016 +278017 +278018 +278019 +278020 +278021 +278022 +278023 +278048 +278049 +278050 +278051 +278052 +278053 +278054 +278055 +278080 +278081 +278082 +278083 +278084 +278085 +278086 +278087 +278112 +278113 +278114 +278115 +278116 +278117 +278118 +278119 +278144 +278145 +278146 +278147 +278148 +278149 +278150 +278151 +278176 +278177 +278178 +278179 +278180 +278181 +278182 +278183 +278208 +278209 +278210 +278211 +278212 +278213 +278214 +278215 +278240 +278241 +278242 +278243 +278244 +278245 +278246 +278247 +278272 +278273 +278274 +278275 +278276 +278277 +278278 +278279 +278304 +278305 +278306 +278307 +278308 +278309 +278310 +278311 +278336 +278337 +278338 +278339 +278340 +278341 +278342 +278343 +278368 +278369 +278370 +278371 +278372 +278373 +278374 +278375 +278400 +278401 +278402 +278403 +278404 +278405 +278406 +278407 +278432 +278433 +278434 +278435 +278436 +278437 +278438 +278439 +278464 +278465 +278466 +278467 +278468 +278469 +278470 +278471 +278496 +278497 +278498 +278499 +278500 +278501 +278502 +278503 +278528 +278529 +278530 +278531 +278532 +278533 +278534 +278535 +278560 +278561 +278562 +278563 +278564 +278565 +278566 +278567 +278592 +278593 +278594 +278595 +278596 +278597 +278598 +278599 +278624 +278625 +278626 +278627 +278628 +278629 +278630 +278631 +278656 +278657 +278658 +278659 +278660 +278661 +278662 +278663 +278688 +278689 +278690 +278691 +278692 +278693 +278694 +278695 +278720 +278721 +278722 +278723 +278724 +278725 +278726 +278727 +278752 +278753 +278754 +278755 +278756 +278757 +278758 +278759 +278784 +278785 +278786 +278787 +278788 +278789 +278790 +278791 +278816 +278817 +278818 +278819 +278820 +278821 +278822 +278823 +278848 +278849 +278850 +278851 +278852 +278853 +278854 +278855 +278880 +278881 +278882 +278883 +278884 +278885 +278886 +278887 +278912 +278913 +278914 +278915 +278916 +278917 +278918 +278919 +278944 +278945 +278946 +278947 +278948 +278949 +278950 +278951 +278976 +278977 +278978 +278979 +278980 +278981 +278982 +278983 +279008 +279009 +279010 +279011 +279012 +279013 +279014 +279015 +279040 +279041 +279042 +279043 +279044 +279045 +279046 +279047 +279072 +279073 +279074 +279075 +279076 +279077 +279078 +279079 +279104 +279105 +279106 +279107 +279108 +279109 +279110 +279111 +279136 +279137 +279138 +279139 +279140 +279141 +279142 +279143 +279168 +279169 +279170 +279171 +279172 +279173 +279174 +279175 +279200 +279201 +279202 +279203 +279204 +279205 +279206 +279207 +279232 +279233 +279234 +279235 +279236 +279237 +279238 +279239 +279264 +279265 +279266 +279267 +279268 +279269 +279270 +279271 +279296 +279297 +279298 +279299 +279300 +279301 +279302 +279303 +279328 +279329 +279330 +279331 +279332 +279333 +279334 +279335 +279360 +279361 +279362 +279363 +279364 +279365 +279366 +279367 +279392 +279393 +279394 +279395 +279396 +279397 +279398 +279399 +279424 +279425 +279426 +279427 +279428 +279429 +279430 +279431 +279456 +279457 +279458 +279459 +279460 +279461 +279462 +279463 +279488 +279489 +279490 +279491 +279492 +279493 +279494 +279495 +279520 +279521 +279522 +279523 +279524 +279525 +279526 +279527 +279552 +279553 +279554 +279555 +279556 +279557 +279558 +279559 +279584 +279585 +279586 +279587 +279588 +279589 +279590 +279591 +279616 +279617 +279618 +279619 +279620 +279621 +279622 +279623 +279648 +279649 +279650 +279651 +279652 +279653 +279654 +279655 +279680 +279681 +279682 +279683 +279684 +279685 +279686 +279687 +279712 +279713 +279714 +279715 +279716 +279717 +279718 +279719 +279744 +279745 +279746 +279747 +279748 +279749 +279750 +279751 +279776 +279777 +279778 +279779 +279780 +279781 +279782 +279783 +279808 +279809 +279810 +279811 +279812 +279813 +279814 +279815 +279840 +279841 +279842 +279843 +279844 +279845 +279846 +279847 +279872 +279873 +279874 +279875 +279876 +279877 +279878 +279879 +279904 +279905 +279906 +279907 +279908 +279909 +279910 +279911 +279936 +279937 +279938 +279939 +279940 +279941 +279942 +279943 +279968 +279969 +279970 +279971 +279972 +279973 +279974 +279975 +280000 +280001 +280002 +280003 +280004 +280005 +280006 +280007 +280032 +280033 +280034 +280035 +280036 +280037 +280038 +280039 +280064 +280065 +280066 +280067 +280068 +280069 +280070 +280071 +280096 +280097 +280098 +280099 +280100 +280101 +280102 +280103 +280128 +280129 +280130 +280131 +280132 +280133 +280134 +280135 +280160 +280161 +280162 +280163 +280164 +280165 +280166 +280167 +280192 +280193 +280194 +280195 +280196 +280197 +280198 +280199 +280224 +280225 +280226 +280227 +280228 +280229 +280230 +280231 +280256 +280257 +280258 +280259 +280260 +280261 +280262 +280263 +280288 +280289 +280290 +280291 +280292 +280293 +280294 +280295 +280320 +280321 +280322 +280323 +280324 +280325 +280326 +280327 +280352 +280353 +280354 +280355 +280356 +280357 +280358 +280359 +280384 +280385 +280386 +280387 +280388 +280389 +280390 +280391 +280416 +280417 +280418 +280419 +280420 +280421 +280422 +280423 +280448 +280449 +280450 +280451 +280452 +280453 +280454 +280455 +280480 +280481 +280482 +280483 +280484 +280485 +280486 +280487 +280512 +280513 +280514 +280515 +280516 +280517 +280518 +280519 +280544 +280545 +280546 +280547 +280548 +280549 +280550 +280551 +280576 +280577 +280578 +280579 +280580 +280581 +280582 +280583 +280608 +280609 +280610 +280611 +280612 +280613 +280614 +280615 +280640 +280641 +280642 +280643 +280644 +280645 +280646 +280647 +280672 +280673 +280674 +280675 +280676 +280677 +280678 +280679 +280704 +280705 +280706 +280707 +280708 +280709 +280710 +280711 +280736 +280737 +280738 +280739 +280740 +280741 +280742 +280743 +280768 +280769 +280770 +280771 +280772 +280773 +280774 +280775 +280800 +280801 +280802 +280803 +280804 +280805 +280806 +280807 +280832 +280833 +280834 +280835 +280836 +280837 +280838 +280839 +280864 +280865 +280866 +280867 +280868 +280869 +280870 +280871 +280896 +280897 +280898 +280899 +280900 +280901 +280902 +280903 +280928 +280929 +280930 +280931 +280932 +280933 +280934 +280935 +280960 +280961 +280962 +280963 +280964 +280965 +280966 +280967 +280992 +280993 +280994 +280995 +280996 +280997 +280998 +280999 +281024 +281025 +281026 +281027 +281028 +281029 +281030 +281031 +281056 +281057 +281058 +281059 +281060 +281061 +281062 +281063 +281088 +281089 +281090 +281091 +281092 +281093 +281094 +281095 +281120 +281121 +281122 +281123 +281124 +281125 +281126 +281127 +281152 +281153 +281154 +281155 +281156 +281157 +281158 +281159 +281184 +281185 +281186 +281187 +281188 +281189 +281190 +281191 +281216 +281217 +281218 +281219 +281220 +281221 +281222 +281223 +281248 +281249 +281250 +281251 +281252 +281253 +281254 +281255 +281280 +281281 +281282 +281283 +281284 +281285 +281286 +281287 +281312 +281313 +281314 +281315 +281316 +281317 +281318 +281319 +281344 +281345 +281346 +281347 +281348 +281349 +281350 +281351 +281376 +281377 +281378 +281379 +281380 +281381 +281382 +281383 +281408 +281409 +281410 +281411 +281412 +281413 +281414 +281415 +281440 +281441 +281442 +281443 +281444 +281445 +281446 +281447 +281472 +281473 +281474 +281475 +281476 +281477 +281478 +281479 +281504 +281505 +281506 +281507 +281508 +281509 +281510 +281511 +281536 +281537 +281538 +281539 +281540 +281541 +281542 +281543 +281568 +281569 +281570 +281571 +281572 +281573 +281574 +281575 +281600 +281601 +281602 +281603 +281604 +281605 +281606 +281607 +281632 +281633 +281634 +281635 +281636 +281637 +281638 +281639 +281664 +281665 +281666 +281667 +281668 +281669 +281670 +281671 +281696 +281697 +281698 +281699 +281700 +281701 +281702 +281703 +281728 +281729 +281730 +281731 +281732 +281733 +281734 +281735 +281760 +281761 +281762 +281763 +281764 +281765 +281766 +281767 +281792 +281793 +281794 +281795 +281796 +281797 +281798 +281799 +281824 +281825 +281826 +281827 +281828 +281829 +281830 +281831 +281856 +281857 +281858 +281859 +281860 +281861 +281862 +281863 +281888 +281889 +281890 +281891 +281892 +281893 +281894 +281895 +281920 +281921 +281922 +281923 +281924 +281925 +281926 +281927 +281952 +281953 +281954 +281955 +281956 +281957 +281958 +281959 +281984 +281985 +281986 +281987 +281988 +281989 +281990 +281991 +282016 +282017 +282018 +282019 +282020 +282021 +282022 +282023 +282048 +282049 +282050 +282051 +282052 +282053 +282054 +282055 +282080 +282081 +282082 +282083 +282084 +282085 +282086 +282087 +282112 +282113 +282114 +282115 +282116 +282117 +282118 +282119 +282144 +282145 +282146 +282147 +282148 +282149 +282150 +282151 +282176 +282177 +282178 +282179 +282180 +282181 +282182 +282183 +282208 +282209 +282210 +282211 +282212 +282213 +282214 +282215 +282240 +282241 +282242 +282243 +282244 +282245 +282246 +282247 +282272 +282273 +282274 +282275 +282276 +282277 +282278 +282279 +282304 +282305 +282306 +282307 +282308 +282309 +282310 +282311 +282336 +282337 +282338 +282339 +282340 +282341 +282342 +282343 +282368 +282369 +282370 +282371 +282372 +282373 +282374 +282375 +282400 +282401 +282402 +282403 +282404 +282405 +282406 +282407 +282432 +282433 +282434 +282435 +282436 +282437 +282438 +282439 +282464 +282465 +282466 +282467 +282468 +282469 +282470 +282471 +282496 +282497 +282498 +282499 +282500 +282501 +282502 +282503 +282528 +282529 +282530 +282531 +282532 +282533 +282534 +282535 +282560 +282561 +282562 +282563 +282564 +282565 +282566 +282567 +282592 +282593 +282594 +282595 +282596 +282597 +282598 +282599 +282624 +282625 +282626 +282627 +282628 +282629 +282630 +282631 +282656 +282657 +282658 +282659 +282660 +282661 +282662 +282663 +282688 +282689 +282690 +282691 +282692 +282693 +282694 +282695 +282720 +282721 +282722 +282723 +282724 +282725 +282726 +282727 +282752 +282753 +282754 +282755 +282756 +282757 +282758 +282759 +282784 +282785 +282786 +282787 +282788 +282789 +282790 +282791 +282816 +282817 +282818 +282819 +282820 +282821 +282822 +282823 +282848 +282849 +282850 +282851 +282852 +282853 +282854 +282855 +282880 +282881 +282882 +282883 +282884 +282885 +282886 +282887 +282912 +282913 +282914 +282915 +282916 +282917 +282918 +282919 +282944 +282945 +282946 +282947 +282948 +282949 +282950 +282951 +282976 +282977 +282978 +282979 +282980 +282981 +282982 +282983 +283008 +283009 +283010 +283011 +283012 +283013 +283014 +283015 +283040 +283041 +283042 +283043 +283044 +283045 +283046 +283047 +283072 +283073 +283074 +283075 +283076 +283077 +283078 +283079 +283104 +283105 +283106 +283107 +283108 +283109 +283110 +283111 +283136 +283137 +283138 +283139 +283140 +283141 +283142 +283143 +283168 +283169 +283170 +283171 +283172 +283173 +283174 +283175 +283200 +283201 +283202 +283203 +283204 +283205 +283206 +283207 +283232 +283233 +283234 +283235 +283236 +283237 +283238 +283239 +283264 +283265 +283266 +283267 +283268 +283269 +283270 +283271 +283296 +283297 +283298 +283299 +283300 +283301 +283302 +283303 +283328 +283329 +283330 +283331 +283332 +283333 +283334 +283335 +283360 +283361 +283362 +283363 +283364 +283365 +283366 +283367 +283392 +283393 +283394 +283395 +283396 +283397 +283398 +283399 +283424 +283425 +283426 +283427 +283428 +283429 +283430 +283431 +283456 +283457 +283458 +283459 +283460 +283461 +283462 +283463 +283488 +283489 +283490 +283491 +283492 +283493 +283494 +283495 +283520 +283521 +283522 +283523 +283524 +283525 +283526 +283527 +283552 +283553 +283554 +283555 +283556 +283557 +283558 +283559 +283584 +283585 +283586 +283587 +283588 +283589 +283590 +283591 +283616 +283617 +283618 +283619 +283620 +283621 +283622 +283623 +283648 +283649 +283650 +283651 +283652 +283653 +283654 +283655 +283680 +283681 +283682 +283683 +283684 +283685 +283686 +283687 +283712 +283713 +283714 +283715 +283716 +283717 +283718 +283719 +283744 +283745 +283746 +283747 +283748 +283749 +283750 +283751 +283776 +283777 +283778 +283779 +283780 +283781 +283782 +283783 +283808 +283809 +283810 +283811 +283812 +283813 +283814 +283815 +283840 +283841 +283842 +283843 +283844 +283845 +283846 +283847 +283872 +283873 +283874 +283875 +283876 +283877 +283878 +283879 +283904 +283905 +283906 +283907 +283908 +283909 +283910 +283911 +283936 +283937 +283938 +283939 +283940 +283941 +283942 +283943 +283968 +283969 +283970 +283971 +283972 +283973 +283974 +283975 +284000 +284001 +284002 +284003 +284004 +284005 +284006 +284007 +284032 +284033 +284034 +284035 +284036 +284037 +284038 +284039 +284064 +284065 +284066 +284067 +284068 +284069 +284070 +284071 +284096 +284097 +284098 +284099 +284100 +284101 +284102 +284103 +284128 +284129 +284130 +284131 +284132 +284133 +284134 +284135 +284160 +284161 +284162 +284163 +284164 +284165 +284166 +284167 +284192 +284193 +284194 +284195 +284196 +284197 +284198 +284199 +284224 +284225 +284226 +284227 +284228 +284229 +284230 +284231 +284256 +284257 +284258 +284259 +284260 +284261 +284262 +284263 +284288 +284289 +284290 +284291 +284292 +284293 +284294 +284295 +284320 +284321 +284322 +284323 +284324 +284325 +284326 +284327 +284352 +284353 +284354 +284355 +284356 +284357 +284358 +284359 +284384 +284385 +284386 +284387 +284388 +284389 +284390 +284391 +284416 +284417 +284418 +284419 +284420 +284421 +284422 +284423 +284448 +284449 +284450 +284451 +284452 +284453 +284454 +284455 +284480 +284481 +284482 +284483 +284484 +284485 +284486 +284487 +284512 +284513 +284514 +284515 +284516 +284517 +284518 +284519 +284544 +284545 +284546 +284547 +284548 +284549 +284550 +284551 +284576 +284577 +284578 +284579 +284580 +284581 +284582 +284583 +284608 +284609 +284610 +284611 +284612 +284613 +284614 +284615 +284640 +284641 +284642 +284643 +284644 +284645 +284646 +284647 +284672 +284673 +284674 +284675 +284676 +284677 +284678 +284679 +284704 +284705 +284706 +284707 +284708 +284709 +284710 +284711 +284736 +284737 +284738 +284739 +284740 +284741 +284742 +284743 +284768 +284769 +284770 +284771 +284772 +284773 +284774 +284775 +284800 +284801 +284802 +284803 +284804 +284805 +284806 +284807 +284832 +284833 +284834 +284835 +284836 +284837 +284838 +284839 +284864 +284865 +284866 +284867 +284868 +284869 +284870 +284871 +284896 +284897 +284898 +284899 +284900 +284901 +284902 +284903 +284928 +284929 +284930 +284931 +284932 +284933 +284934 +284935 +284960 +284961 +284962 +284963 +284964 +284965 +284966 +284967 +284992 +284993 +284994 +284995 +284996 +284997 +284998 +284999 +285024 +285025 +285026 +285027 +285028 +285029 +285030 +285031 +285056 +285057 +285058 +285059 +285060 +285061 +285062 +285063 +285088 +285089 +285090 +285091 +285092 +285093 +285094 +285095 +285120 +285121 +285122 +285123 +285124 +285125 +285126 +285127 +285152 +285153 +285154 +285155 +285156 +285157 +285158 +285159 +285184 +285185 +285186 +285187 +285188 +285189 +285190 +285191 +285216 +285217 +285218 +285219 +285220 +285221 +285222 +285223 +285248 +285249 +285250 +285251 +285252 +285253 +285254 +285255 +285280 +285281 +285282 +285283 +285284 +285285 +285286 +285287 +285312 +285313 +285314 +285315 +285316 +285317 +285318 +285319 +285344 +285345 +285346 +285347 +285348 +285349 +285350 +285351 +285376 +285377 +285378 +285379 +285380 +285381 +285382 +285383 +285408 +285409 +285410 +285411 +285412 +285413 +285414 +285415 +285440 +285441 +285442 +285443 +285444 +285445 +285446 +285447 +285472 +285473 +285474 +285475 +285476 +285477 +285478 +285479 +285504 +285505 +285506 +285507 +285508 +285509 +285510 +285511 +285536 +285537 +285538 +285539 +285540 +285541 +285542 +285543 +285568 +285569 +285570 +285571 +285572 +285573 +285574 +285575 +285600 +285601 +285602 +285603 +285604 +285605 +285606 +285607 +285632 +285633 +285634 +285635 +285636 +285637 +285638 +285639 +285664 +285665 +285666 +285667 +285668 +285669 +285670 +285671 +285696 +285697 +285698 +285699 +285700 +285701 +285702 +285703 +285728 +285729 +285730 +285731 +285732 +285733 +285734 +285735 +285760 +285761 +285762 +285763 +285764 +285765 +285766 +285767 +285792 +285793 +285794 +285795 +285796 +285797 +285798 +285799 +285824 +285825 +285826 +285827 +285828 +285829 +285830 +285831 +285856 +285857 +285858 +285859 +285860 +285861 +285862 +285863 +285888 +285889 +285890 +285891 +285892 +285893 +285894 +285895 +285920 +285921 +285922 +285923 +285924 +285925 +285926 +285927 +285952 +285953 +285954 +285955 +285956 +285957 +285958 +285959 +285984 +285985 +285986 +285987 +285988 +285989 +285990 +285991 +286016 +286017 +286018 +286019 +286020 +286021 +286022 +286023 +286048 +286049 +286050 +286051 +286052 +286053 +286054 +286055 +286080 +286081 +286082 +286083 +286084 +286085 +286086 +286087 +286112 +286113 +286114 +286115 +286116 +286117 +286118 +286119 +286144 +286145 +286146 +286147 +286148 +286149 +286150 +286151 +286176 +286177 +286178 +286179 +286180 +286181 +286182 +286183 +286208 +286209 +286210 +286211 +286212 +286213 +286214 +286215 +286240 +286241 +286242 +286243 +286244 +286245 +286246 +286247 +286272 +286273 +286274 +286275 +286276 +286277 +286278 +286279 +286304 +286305 +286306 +286307 +286308 +286309 +286310 +286311 +286336 +286337 +286338 +286339 +286340 +286341 +286342 +286343 +286368 +286369 +286370 +286371 +286372 +286373 +286374 +286375 +286400 +286401 +286402 +286403 +286404 +286405 +286406 +286407 +286432 +286433 +286434 +286435 +286436 +286437 +286438 +286439 +286464 +286465 +286466 +286467 +286468 +286469 +286470 +286471 +286496 +286497 +286498 +286499 +286500 +286501 +286502 +286503 +286528 +286529 +286530 +286531 +286532 +286533 +286534 +286535 +286560 +286561 +286562 +286563 +286564 +286565 +286566 +286567 +286592 +286593 +286594 +286595 +286596 +286597 +286598 +286599 +286624 +286625 +286626 +286627 +286628 +286629 +286630 +286631 +286656 +286657 +286658 +286659 +286660 +286661 +286662 +286663 +286688 +286689 +286690 +286691 +286692 +286693 +286694 +286695 +286720 +286721 +286722 +286723 +286724 +286725 +286726 +286727 +286752 +286753 +286754 +286755 +286756 +286757 +286758 +286759 +286784 +286785 +286786 +286787 +286788 +286789 +286790 +286791 +286816 +286817 +286818 +286819 +286820 +286821 +286822 +286823 +286848 +286849 +286850 +286851 +286852 +286853 +286854 +286855 +286880 +286881 +286882 +286883 +286884 +286885 +286886 +286887 +286912 +286913 +286914 +286915 +286916 +286917 +286918 +286919 +286944 +286945 +286946 +286947 +286948 +286949 +286950 +286951 +286976 +286977 +286978 +286979 +286980 +286981 +286982 +286983 +287008 +287009 +287010 +287011 +287012 +287013 +287014 +287015 +287040 +287041 +287042 +287043 +287044 +287045 +287046 +287047 +287072 +287073 +287074 +287075 +287076 +287077 +287078 +287079 +287104 +287105 +287106 +287107 +287108 +287109 +287110 +287111 +287136 +287137 +287138 +287139 +287140 +287141 +287142 +287143 +287168 +287169 +287170 +287171 +287172 +287173 +287174 +287175 +287200 +287201 +287202 +287203 +287204 +287205 +287206 +287207 +287232 +287233 +287234 +287235 +287236 +287237 +287238 +287239 +287264 +287265 +287266 +287267 +287268 +287269 +287270 +287271 +287296 +287297 +287298 +287299 +287300 +287301 +287302 +287303 +287328 +287329 +287330 +287331 +287332 +287333 +287334 +287335 +287360 +287361 +287362 +287363 +287364 +287365 +287366 +287367 +287392 +287393 +287394 +287395 +287396 +287397 +287398 +287399 +287424 +287425 +287426 +287427 +287428 +287429 +287430 +287431 +287456 +287457 +287458 +287459 +287460 +287461 +287462 +287463 +287488 +287489 +287490 +287491 +287492 +287493 +287494 +287495 +287520 +287521 +287522 +287523 +287524 +287525 +287526 +287527 +287552 +287553 +287554 +287555 +287556 +287557 +287558 +287559 +287584 +287585 +287586 +287587 +287588 +287589 +287590 +287591 +287616 +287617 +287618 +287619 +287620 +287621 +287622 +287623 +287648 +287649 +287650 +287651 +287652 +287653 +287654 +287655 +287680 +287681 +287682 +287683 +287684 +287685 +287686 +287687 +287712 +287713 +287714 +287715 +287716 +287717 +287718 +287719 +287744 +287745 +287746 +287747 +287748 +287749 +287750 +287751 +287776 +287777 +287778 +287779 +287780 +287781 +287782 +287783 +287808 +287809 +287810 +287811 +287812 +287813 +287814 +287815 +287840 +287841 +287842 +287843 +287844 +287845 +287846 +287847 +287872 +287873 +287874 +287875 +287876 +287877 +287878 +287879 +287904 +287905 +287906 +287907 +287908 +287909 +287910 +287911 +287936 +287937 +287938 +287939 +287940 +287941 +287942 +287943 +287968 +287969 +287970 +287971 +287972 +287973 +287974 +287975 +288000 +288001 +288002 +288003 +288004 +288005 +288006 +288007 +288032 +288033 +288034 +288035 +288036 +288037 +288038 +288039 +288064 +288065 +288066 +288067 +288068 +288069 +288070 +288071 +288096 +288097 +288098 +288099 +288100 +288101 +288102 +288103 +288128 +288129 +288130 +288131 +288132 +288133 +288134 +288135 +288160 +288161 +288162 +288163 +288164 +288165 +288166 +288167 +288192 +288193 +288194 +288195 +288196 +288197 +288198 +288199 +288224 +288225 +288226 +288227 +288228 +288229 +288230 +288231 +288256 +288257 +288258 +288259 +288260 +288261 +288262 +288263 +288288 +288289 +288290 +288291 +288292 +288293 +288294 +288295 +288320 +288321 +288322 +288323 +288324 +288325 +288326 +288327 +288352 +288353 +288354 +288355 +288356 +288357 +288358 +288359 +288384 +288385 +288386 +288387 +288388 +288389 +288390 +288391 +288416 +288417 +288418 +288419 +288420 +288421 +288422 +288423 +288448 +288449 +288450 +288451 +288452 +288453 +288454 +288455 +288480 +288481 +288482 +288483 +288484 +288485 +288486 +288487 +288512 +288513 +288514 +288515 +288516 +288517 +288518 +288519 +288544 +288545 +288546 +288547 +288548 +288549 +288550 +288551 +288576 +288577 +288578 +288579 +288580 +288581 +288582 +288583 +288608 +288609 +288610 +288611 +288612 +288613 +288614 +288615 +288640 +288641 +288642 +288643 +288644 +288645 +288646 +288647 +288672 +288673 +288674 +288675 +288676 +288677 +288678 +288679 +288704 +288705 +288706 +288707 +288708 +288709 +288710 +288711 +288736 +288737 +288738 +288739 +288740 +288741 +288742 +288743 +288768 +288769 +288770 +288771 +288772 +288773 +288774 +288775 +288800 +288801 +288802 +288803 +288804 +288805 +288806 +288807 +288832 +288833 +288834 +288835 +288836 +288837 +288838 +288839 +288864 +288865 +288866 +288867 +288868 +288869 +288870 +288871 +288896 +288897 +288898 +288899 +288900 +288901 +288902 +288903 +288928 +288929 +288930 +288931 +288932 +288933 +288934 +288935 +288960 +288961 +288962 +288963 +288964 +288965 +288966 +288967 +288992 +288993 +288994 +288995 +288996 +288997 +288998 +288999 +289024 +289025 +289026 +289027 +289028 +289029 +289030 +289031 +289056 +289057 +289058 +289059 +289060 +289061 +289062 +289063 +289088 +289089 +289090 +289091 +289092 +289093 +289094 +289095 +289120 +289121 +289122 +289123 +289124 +289125 +289126 +289127 +289152 +289153 +289154 +289155 +289156 +289157 +289158 +289159 +289184 +289185 +289186 +289187 +289188 +289189 +289190 +289191 +289216 +289217 +289218 +289219 +289220 +289221 +289222 +289223 +289248 +289249 +289250 +289251 +289252 +289253 +289254 +289255 +289280 +289281 +289282 +289283 +289284 +289285 +289286 +289287 +289312 +289313 +289314 +289315 +289316 +289317 +289318 +289319 +289344 +289345 +289346 +289347 +289348 +289349 +289350 +289351 +289376 +289377 +289378 +289379 +289380 +289381 +289382 +289383 +289408 +289409 +289410 +289411 +289412 +289413 +289414 +289415 +289440 +289441 +289442 +289443 +289444 +289445 +289446 +289447 +289472 +289473 +289474 +289475 +289476 +289477 +289478 +289479 +289504 +289505 +289506 +289507 +289508 +289509 +289510 +289511 +289536 +289537 +289538 +289539 +289540 +289541 +289542 +289543 +289568 +289569 +289570 +289571 +289572 +289573 +289574 +289575 +289600 +289601 +289602 +289603 +289604 +289605 +289606 +289607 +289632 +289633 +289634 +289635 +289636 +289637 +289638 +289639 +289664 +289665 +289666 +289667 +289668 +289669 +289670 +289671 +289696 +289697 +289698 +289699 +289700 +289701 +289702 +289703 +289728 +289729 +289730 +289731 +289732 +289733 +289734 +289735 +289760 +289761 +289762 +289763 +289764 +289765 +289766 +289767 +289792 +289793 +289794 +289795 +289796 +289797 +289798 +289799 +289824 +289825 +289826 +289827 +289828 +289829 +289830 +289831 +289856 +289857 +289858 +289859 +289860 +289861 +289862 +289863 +289888 +289889 +289890 +289891 +289892 +289893 +289894 +289895 +289920 +289921 +289922 +289923 +289924 +289925 +289926 +289927 +289952 +289953 +289954 +289955 +289956 +289957 +289958 +289959 +289984 +289985 +289986 +289987 +289988 +289989 +289990 +289991 +290016 +290017 +290018 +290019 +290020 +290021 +290022 +290023 +290048 +290049 +290050 +290051 +290052 +290053 +290054 +290055 +290080 +290081 +290082 +290083 +290084 +290085 +290086 +290087 +290112 +290113 +290114 +290115 +290116 +290117 +290118 +290119 +290144 +290145 +290146 +290147 +290148 +290149 +290150 +290151 +290176 +290177 +290178 +290179 +290180 +290181 +290182 +290183 +290208 +290209 +290210 +290211 +290212 +290213 +290214 +290215 +290240 +290241 +290242 +290243 +290244 +290245 +290246 +290247 +290272 +290273 +290274 +290275 +290276 +290277 +290278 +290279 +290304 +290305 +290306 +290307 +290308 +290309 +290310 +290311 +290336 +290337 +290338 +290339 +290340 +290341 +290342 +290343 +290368 +290369 +290370 +290371 +290372 +290373 +290374 +290375 +290400 +290401 +290402 +290403 +290404 +290405 +290406 +290407 +290432 +290433 +290434 +290435 +290436 +290437 +290438 +290439 +290464 +290465 +290466 +290467 +290468 +290469 +290470 +290471 +290496 +290497 +290498 +290499 +290500 +290501 +290502 +290503 +290528 +290529 +290530 +290531 +290532 +290533 +290534 +290535 +290560 +290561 +290562 +290563 +290564 +290565 +290566 +290567 +290592 +290593 +290594 +290595 +290596 +290597 +290598 +290599 +290624 +290625 +290626 +290627 +290628 +290629 +290630 +290631 +290656 +290657 +290658 +290659 +290660 +290661 +290662 +290663 +290688 +290689 +290690 +290691 +290692 +290693 +290694 +290695 +290720 +290721 +290722 +290723 +290724 +290725 +290726 +290727 +290752 +290753 +290754 +290755 +290756 +290757 +290758 +290759 +290784 +290785 +290786 +290787 +290788 +290789 +290790 +290791 +290816 +290817 +290818 +290819 +290820 +290821 +290822 +290823 +290848 +290849 +290850 +290851 +290852 +290853 +290854 +290855 +290880 +290881 +290882 +290883 +290884 +290885 +290886 +290887 +290912 +290913 +290914 +290915 +290916 +290917 +290918 +290919 +290944 +290945 +290946 +290947 +290948 +290949 +290950 +290951 +290976 +290977 +290978 +290979 +290980 +290981 +290982 +290983 +291008 +291009 +291010 +291011 +291012 +291013 +291014 +291015 +291040 +291041 +291042 +291043 +291044 +291045 +291046 +291047 +291072 +291073 +291074 +291075 +291076 +291077 +291078 +291079 +291104 +291105 +291106 +291107 +291108 +291109 +291110 +291111 +291136 +291137 +291138 +291139 +291140 +291141 +291142 +291143 +291168 +291169 +291170 +291171 +291172 +291173 +291174 +291175 +291200 +291201 +291202 +291203 +291204 +291205 +291206 +291207 +291232 +291233 +291234 +291235 +291236 +291237 +291238 +291239 +291264 +291265 +291266 +291267 +291268 +291269 +291270 +291271 +291296 +291297 +291298 +291299 +291300 +291301 +291302 +291303 +291328 +291329 +291330 +291331 +291332 +291333 +291334 +291335 +291360 +291361 +291362 +291363 +291364 +291365 +291366 +291367 +291392 +291393 +291394 +291395 +291396 +291397 +291398 +291399 +291424 +291425 +291426 +291427 +291428 +291429 +291430 +291431 +291456 +291457 +291458 +291459 +291460 +291461 +291462 +291463 +291488 +291489 +291490 +291491 +291492 +291493 +291494 +291495 +291520 +291521 +291522 +291523 +291524 +291525 +291526 +291527 +291552 +291553 +291554 +291555 +291556 +291557 +291558 +291559 +291584 +291585 +291586 +291587 +291588 +291589 +291590 +291591 +291616 +291617 +291618 +291619 +291620 +291621 +291622 +291623 +291648 +291649 +291650 +291651 +291652 +291653 +291654 +291655 +291680 +291681 +291682 +291683 +291684 +291685 +291686 +291687 +291712 +291713 +291714 +291715 +291716 +291717 +291718 +291719 +291744 +291745 +291746 +291747 +291748 +291749 +291750 +291751 +291776 +291777 +291778 +291779 +291780 +291781 +291782 +291783 +291808 +291809 +291810 +291811 +291812 +291813 +291814 +291815 +291840 +291841 +291842 +291843 +291844 +291845 +291846 +291847 +291872 +291873 +291874 +291875 +291876 +291877 +291878 +291879 +291904 +291905 +291906 +291907 +291908 +291909 +291910 +291911 +291936 +291937 +291938 +291939 +291940 +291941 +291942 +291943 +291968 +291969 +291970 +291971 +291972 +291973 +291974 +291975 +292000 +292001 +292002 +292003 +292004 +292005 +292006 +292007 +292032 +292033 +292034 +292035 +292036 +292037 +292038 +292039 +292064 +292065 +292066 +292067 +292068 +292069 +292070 +292071 +292096 +292097 +292098 +292099 +292100 +292101 +292102 +292103 +292128 +292129 +292130 +292131 +292132 +292133 +292134 +292135 +292160 +292161 +292162 +292163 +292164 +292165 +292166 +292167 +292192 +292193 +292194 +292195 +292196 +292197 +292198 +292199 +292224 +292225 +292226 +292227 +292228 +292229 +292230 +292231 +292256 +292257 +292258 +292259 +292260 +292261 +292262 +292263 +292288 +292289 +292290 +292291 +292292 +292293 +292294 +292295 +292320 +292321 +292322 +292323 +292324 +292325 +292326 +292327 +292352 +292353 +292354 +292355 +292356 +292357 +292358 +292359 +292384 +292385 +292386 +292387 +292388 +292389 +292390 +292391 +292416 +292417 +292418 +292419 +292420 +292421 +292422 +292423 +292448 +292449 +292450 +292451 +292452 +292453 +292454 +292455 +292480 +292481 +292482 +292483 +292484 +292485 +292486 +292487 +292512 +292513 +292514 +292515 +292516 +292517 +292518 +292519 +292544 +292545 +292546 +292547 +292548 +292549 +292550 +292551 +292576 +292577 +292578 +292579 +292580 +292581 +292582 +292583 +292608 +292609 +292610 +292611 +292612 +292613 +292614 +292615 +292640 +292641 +292642 +292643 +292644 +292645 +292646 +292647 +292672 +292673 +292674 +292675 +292676 +292677 +292678 +292679 +292704 +292705 +292706 +292707 +292708 +292709 +292710 +292711 +292736 +292737 +292738 +292739 +292740 +292741 +292742 +292743 +292768 +292769 +292770 +292771 +292772 +292773 +292774 +292775 +292800 +292801 +292802 +292803 +292804 +292805 +292806 +292807 +292832 +292833 +292834 +292835 +292836 +292837 +292838 +292839 +292864 +292865 +292866 +292867 +292868 +292869 +292870 +292871 +292896 +292897 +292898 +292899 +292900 +292901 +292902 +292903 +292928 +292929 +292930 +292931 +292932 +292933 +292934 +292935 +292960 +292961 +292962 +292963 +292964 +292965 +292966 +292967 +292992 +292993 +292994 +292995 +292996 +292997 +292998 +292999 +293024 +293025 +293026 +293027 +293028 +293029 +293030 +293031 +293056 +293057 +293058 +293059 +293060 +293061 +293062 +293063 +293088 +293089 +293090 +293091 +293092 +293093 +293094 +293095 +293120 +293121 +293122 +293123 +293124 +293125 +293126 +293127 +293152 +293153 +293154 +293155 +293156 +293157 +293158 +293159 +293184 +293185 +293186 +293187 +293188 +293189 +293190 +293191 +293216 +293217 +293218 +293219 +293220 +293221 +293222 +293223 +293248 +293249 +293250 +293251 +293252 +293253 +293254 +293255 +293280 +293281 +293282 +293283 +293284 +293285 +293286 +293287 +293312 +293313 +293314 +293315 +293316 +293317 +293318 +293319 +293344 +293345 +293346 +293347 +293348 +293349 +293350 +293351 +293376 +293377 +293378 +293379 +293380 +293381 +293382 +293383 +293408 +293409 +293410 +293411 +293412 +293413 +293414 +293415 +293440 +293441 +293442 +293443 +293444 +293445 +293446 +293447 +293472 +293473 +293474 +293475 +293476 +293477 +293478 +293479 +293504 +293505 +293506 +293507 +293508 +293509 +293510 +293511 +293536 +293537 +293538 +293539 +293540 +293541 +293542 +293543 +293568 +293569 +293570 +293571 +293572 +293573 +293574 +293575 +293600 +293601 +293602 +293603 +293604 +293605 +293606 +293607 +293632 +293633 +293634 +293635 +293636 +293637 +293638 +293639 +293664 +293665 +293666 +293667 +293668 +293669 +293670 +293671 +293696 +293697 +293698 +293699 +293700 +293701 +293702 +293703 +293728 +293729 +293730 +293731 +293732 +293733 +293734 +293735 +293760 +293761 +293762 +293763 +293764 +293765 +293766 +293767 +293792 +293793 +293794 +293795 +293796 +293797 +293798 +293799 +293824 +293825 +293826 +293827 +293828 +293829 +293830 +293831 +293856 +293857 +293858 +293859 +293860 +293861 +293862 +293863 +293888 +293889 +293890 +293891 +293892 +293893 +293894 +293895 +293920 +293921 +293922 +293923 +293924 +293925 +293926 +293927 +293952 +293953 +293954 +293955 +293956 +293957 +293958 +293959 +293984 +293985 +293986 +293987 +293988 +293989 +293990 +293991 +294016 +294017 +294018 +294019 +294020 +294021 +294022 +294023 +294048 +294049 +294050 +294051 +294052 +294053 +294054 +294055 +294080 +294081 +294082 +294083 +294084 +294085 +294086 +294087 +294112 +294113 +294114 +294115 +294116 +294117 +294118 +294119 +294144 +294145 +294146 +294147 +294148 +294149 +294150 +294151 +294176 +294177 +294178 +294179 +294180 +294181 +294182 +294183 +294208 +294209 +294210 +294211 +294212 +294213 +294214 +294215 +294240 +294241 +294242 +294243 +294244 +294245 +294246 +294247 +294272 +294273 +294274 +294275 +294276 +294277 +294278 +294279 +294304 +294305 +294306 +294307 +294308 +294309 +294310 +294311 +294336 +294337 +294338 +294339 +294340 +294341 +294342 +294343 +294368 +294369 +294370 +294371 +294372 +294373 +294374 +294375 +294400 +294401 +294402 +294403 +294404 +294405 +294406 +294407 +294432 +294433 +294434 +294435 +294436 +294437 +294438 +294439 +294464 +294465 +294466 +294467 +294468 +294469 +294470 +294471 +294496 +294497 +294498 +294499 +294500 +294501 +294502 +294503 +294528 +294529 +294530 +294531 +294532 +294533 +294534 +294535 +294560 +294561 +294562 +294563 +294564 +294565 +294566 +294567 +294592 +294593 +294594 +294595 +294596 +294597 +294598 +294599 +294624 +294625 +294626 +294627 +294628 +294629 +294630 +294631 +294656 +294657 +294658 +294659 +294660 +294661 +294662 +294663 +294688 +294689 +294690 +294691 +294692 +294693 +294694 +294695 +294720 +294721 +294722 +294723 +294724 +294725 +294726 +294727 +294752 +294753 +294754 +294755 +294756 +294757 +294758 +294759 +294784 +294785 +294786 +294787 +294788 +294789 +294790 +294791 +294816 +294817 +294818 +294819 +294820 +294821 +294822 +294823 +294848 +294849 +294850 +294851 +294852 +294853 +294854 +294855 +294880 +294881 +294882 +294883 +294884 +294885 +294886 +294887 +294912 +294913 +294914 +294915 +294916 +294917 +294918 +294919 +294944 +294945 +294946 +294947 +294948 +294949 +294950 +294951 +294976 +294977 +294978 +294979 +294980 +294981 +294982 +294983 +295008 +295009 +295010 +295011 +295012 +295013 +295014 +295015 +295040 +295041 +295042 +295043 +295044 +295045 +295046 +295047 +295072 +295073 +295074 +295075 +295076 +295077 +295078 +295079 +295104 +295105 +295106 +295107 +295108 +295109 +295110 +295111 +295136 +295137 +295138 +295139 +295140 +295141 +295142 +295143 +295168 +295169 +295170 +295171 +295172 +295173 +295174 +295175 +295200 +295201 +295202 +295203 +295204 +295205 +295206 +295207 +295232 +295233 +295234 +295235 +295236 +295237 +295238 +295239 +295264 +295265 +295266 +295267 +295268 +295269 +295270 +295271 +295296 +295297 +295298 +295299 +295300 +295301 +295302 +295303 +295328 +295329 +295330 +295331 +295332 +295333 +295334 +295335 +295360 +295361 +295362 +295363 +295364 +295365 +295366 +295367 +295392 +295393 +295394 +295395 +295396 +295397 +295398 +295399 +295424 +295425 +295426 +295427 +295428 +295429 +295430 +295431 +295456 +295457 +295458 +295459 +295460 +295461 +295462 +295463 +295488 +295489 +295490 +295491 +295492 +295493 +295494 +295495 +295520 +295521 +295522 +295523 +295524 +295525 +295526 +295527 +295552 +295553 +295554 +295555 +295556 +295557 +295558 +295559 +295584 +295585 +295586 +295587 +295588 +295589 +295590 +295591 +295616 +295617 +295618 +295619 +295620 +295621 +295622 +295623 +295648 +295649 +295650 +295651 +295652 +295653 +295654 +295655 +295680 +295681 +295682 +295683 +295684 +295685 +295686 +295687 +295712 +295713 +295714 +295715 +295716 +295717 +295718 +295719 +295744 +295745 +295746 +295747 +295748 +295749 +295750 +295751 +295776 +295777 +295778 +295779 +295780 +295781 +295782 +295783 +295808 +295809 +295810 +295811 +295812 +295813 +295814 +295815 +295840 +295841 +295842 +295843 +295844 +295845 +295846 +295847 +295872 +295873 +295874 +295875 +295876 +295877 +295878 +295879 +295904 +295905 +295906 +295907 +295908 +295909 +295910 +295911 +295936 +295937 +295938 +295939 +295940 +295941 +295942 +295943 +295968 +295969 +295970 +295971 +295972 +295973 +295974 +295975 +296000 +296001 +296002 +296003 +296004 +296005 +296006 +296007 +296032 +296033 +296034 +296035 +296036 +296037 +296038 +296039 +296064 +296065 +296066 +296067 +296068 +296069 +296070 +296071 +296096 +296097 +296098 +296099 +296100 +296101 +296102 +296103 +296128 +296129 +296130 +296131 +296132 +296133 +296134 +296135 +296160 +296161 +296162 +296163 +296164 +296165 +296166 +296167 +296192 +296193 +296194 +296195 +296196 +296197 +296198 +296199 +296224 +296225 +296226 +296227 +296228 +296229 +296230 +296231 +296256 +296257 +296258 +296259 +296260 +296261 +296262 +296263 +296288 +296289 +296290 +296291 +296292 +296293 +296294 +296295 +296320 +296321 +296322 +296323 +296324 +296325 +296326 +296327 +296352 +296353 +296354 +296355 +296356 +296357 +296358 +296359 +296384 +296385 +296386 +296387 +296388 +296389 +296390 +296391 +296416 +296417 +296418 +296419 +296420 +296421 +296422 +296423 +296448 +296449 +296450 +296451 +296452 +296453 +296454 +296455 +296480 +296481 +296482 +296483 +296484 +296485 +296486 +296487 +296512 +296513 +296514 +296515 +296516 +296517 +296518 +296519 +296544 +296545 +296546 +296547 +296548 +296549 +296550 +296551 +296576 +296577 +296578 +296579 +296580 +296581 +296582 +296583 +296608 +296609 +296610 +296611 +296612 +296613 +296614 +296615 +296640 +296641 +296642 +296643 +296644 +296645 +296646 +296647 +296672 +296673 +296674 +296675 +296676 +296677 +296678 +296679 +296704 +296705 +296706 +296707 +296708 +296709 +296710 +296711 +296736 +296737 +296738 +296739 +296740 +296741 +296742 +296743 +296768 +296769 +296770 +296771 +296772 +296773 +296774 +296775 +296800 +296801 +296802 +296803 +296804 +296805 +296806 +296807 +296832 +296833 +296834 +296835 +296836 +296837 +296838 +296839 +296864 +296865 +296866 +296867 +296868 +296869 +296870 +296871 +296896 +296897 +296898 +296899 +296900 +296901 +296902 +296903 +296928 +296929 +296930 +296931 +296932 +296933 +296934 +296935 +296960 +296961 +296962 +296963 +296964 +296965 +296966 +296967 +296992 +296993 +296994 +296995 +296996 +296997 +296998 +296999 +297024 +297025 +297026 +297027 +297028 +297029 +297030 +297031 +297056 +297057 +297058 +297059 +297060 +297061 +297062 +297063 +297088 +297089 +297090 +297091 +297092 +297093 +297094 +297095 +297120 +297121 +297122 +297123 +297124 +297125 +297126 +297127 +297152 +297153 +297154 +297155 +297156 +297157 +297158 +297159 +297184 +297185 +297186 +297187 +297188 +297189 +297190 +297191 +297216 +297217 +297218 +297219 +297220 +297221 +297222 +297223 +297248 +297249 +297250 +297251 +297252 +297253 +297254 +297255 +297280 +297281 +297282 +297283 +297284 +297285 +297286 +297287 +297312 +297313 +297314 +297315 +297316 +297317 +297318 +297319 +297344 +297345 +297346 +297347 +297348 +297349 +297350 +297351 +297376 +297377 +297378 +297379 +297380 +297381 +297382 +297383 +297408 +297409 +297410 +297411 +297412 +297413 +297414 +297415 +297440 +297441 +297442 +297443 +297444 +297445 +297446 +297447 +297472 +297473 +297474 +297475 +297476 +297477 +297478 +297479 +297504 +297505 +297506 +297507 +297508 +297509 +297510 +297511 +297536 +297537 +297538 +297539 +297540 +297541 +297542 +297543 +297568 +297569 +297570 +297571 +297572 +297573 +297574 +297575 +297600 +297601 +297602 +297603 +297604 +297605 +297606 +297607 +297632 +297633 +297634 +297635 +297636 +297637 +297638 +297639 +297664 +297665 +297666 +297667 +297668 +297669 +297670 +297671 +297696 +297697 +297698 +297699 +297700 +297701 +297702 +297703 +297728 +297729 +297730 +297731 +297732 +297733 +297734 +297735 +297760 +297761 +297762 +297763 +297764 +297765 +297766 +297767 +297792 +297793 +297794 +297795 +297796 +297797 +297798 +297799 +297824 +297825 +297826 +297827 +297828 +297829 +297830 +297831 +297856 +297857 +297858 +297859 +297860 +297861 +297862 +297863 +297888 +297889 +297890 +297891 +297892 +297893 +297894 +297895 +297920 +297921 +297922 +297923 +297924 +297925 +297926 +297927 +297952 +297953 +297954 +297955 +297956 +297957 +297958 +297959 +297984 +297985 +297986 +297987 +297988 +297989 +297990 +297991 +298016 +298017 +298018 +298019 +298020 +298021 +298022 +298023 +298048 +298049 +298050 +298051 +298052 +298053 +298054 +298055 +298080 +298081 +298082 +298083 +298084 +298085 +298086 +298087 +298112 +298113 +298114 +298115 +298116 +298117 +298118 +298119 +298144 +298145 +298146 +298147 +298148 +298149 +298150 +298151 +298176 +298177 +298178 +298179 +298180 +298181 +298182 +298183 +298208 +298209 +298210 +298211 +298212 +298213 +298214 +298215 +298240 +298241 +298242 +298243 +298244 +298245 +298246 +298247 +298272 +298273 +298274 +298275 +298276 +298277 +298278 +298279 +298304 +298305 +298306 +298307 +298308 +298309 +298310 +298311 +298336 +298337 +298338 +298339 +298340 +298341 +298342 +298343 +298368 +298369 +298370 +298371 +298372 +298373 +298374 +298375 +298400 +298401 +298402 +298403 +298404 +298405 +298406 +298407 +298432 +298433 +298434 +298435 +298436 +298437 +298438 +298439 +298464 +298465 +298466 +298467 +298468 +298469 +298470 +298471 +298496 +298497 +298498 +298499 +298500 +298501 +298502 +298503 +298528 +298529 +298530 +298531 +298532 +298533 +298534 +298535 +298560 +298561 +298562 +298563 +298564 +298565 +298566 +298567 +298592 +298593 +298594 +298595 +298596 +298597 +298598 +298599 +298624 +298625 +298626 +298627 +298628 +298629 +298630 +298631 +298656 +298657 +298658 +298659 +298660 +298661 +298662 +298663 +298688 +298689 +298690 +298691 +298692 +298693 +298694 +298695 +298720 +298721 +298722 +298723 +298724 +298725 +298726 +298727 +298752 +298753 +298754 +298755 +298756 +298757 +298758 +298759 +298784 +298785 +298786 +298787 +298788 +298789 +298790 +298791 +298816 +298817 +298818 +298819 +298820 +298821 +298822 +298823 +298848 +298849 +298850 +298851 +298852 +298853 +298854 +298855 +298880 +298881 +298882 +298883 +298884 +298885 +298886 +298887 +298912 +298913 +298914 +298915 +298916 +298917 +298918 +298919 +298944 +298945 +298946 +298947 +298948 +298949 +298950 +298951 +298976 +298977 +298978 +298979 +298980 +298981 +298982 +298983 +299008 +299009 +299010 +299011 +299012 +299013 +299014 +299015 +299040 +299041 +299042 +299043 +299044 +299045 +299046 +299047 +299072 +299073 +299074 +299075 +299076 +299077 +299078 +299079 +299104 +299105 +299106 +299107 +299108 +299109 +299110 +299111 +299136 +299137 +299138 +299139 +299140 +299141 +299142 +299143 +299168 +299169 +299170 +299171 +299172 +299173 +299174 +299175 +299200 +299201 +299202 +299203 +299204 +299205 +299206 +299207 +299232 +299233 +299234 +299235 +299236 +299237 +299238 +299239 +299264 +299265 +299266 +299267 +299268 +299269 +299270 +299271 +299296 +299297 +299298 +299299 +299300 +299301 +299302 +299303 +299328 +299329 +299330 +299331 +299332 +299333 +299334 +299335 +299360 +299361 +299362 +299363 +299364 +299365 +299366 +299367 +299392 +299393 +299394 +299395 +299396 +299397 +299398 +299399 +299424 +299425 +299426 +299427 +299428 +299429 +299430 +299431 +299456 +299457 +299458 +299459 +299460 +299461 +299462 +299463 +299488 +299489 +299490 +299491 +299492 +299493 +299494 +299495 +299520 +299521 +299522 +299523 +299524 +299525 +299526 +299527 +299552 +299553 +299554 +299555 +299556 +299557 +299558 +299559 +299584 +299585 +299586 +299587 +299588 +299589 +299590 +299591 +299616 +299617 +299618 +299619 +299620 +299621 +299622 +299623 +299648 +299649 +299650 +299651 +299652 +299653 +299654 +299655 +299680 +299681 +299682 +299683 +299684 +299685 +299686 +299687 +299712 +299713 +299714 +299715 +299716 +299717 +299718 +299719 +299744 +299745 +299746 +299747 +299748 +299749 +299750 +299751 +299776 +299777 +299778 +299779 +299780 +299781 +299782 +299783 +299808 +299809 +299810 +299811 +299812 +299813 +299814 +299815 +299840 +299841 +299842 +299843 +299844 +299845 +299846 +299847 +299872 +299873 +299874 +299875 +299876 +299877 +299878 +299879 +299904 +299905 +299906 +299907 +299908 +299909 +299910 +299911 +299936 +299937 +299938 +299939 +299940 +299941 +299942 +299943 +299968 +299969 +299970 +299971 +299972 +299973 +299974 +299975 +300000 +300001 +300002 +300003 +300004 +300005 +300006 +300007 +300032 +300033 +300034 +300035 +300036 +300037 +300038 +300039 +300064 +300065 +300066 +300067 +300068 +300069 +300070 +300071 +300096 +300097 +300098 +300099 +300100 +300101 +300102 +300103 +300128 +300129 +300130 +300131 +300132 +300133 +300134 +300135 +300160 +300161 +300162 +300163 +300164 +300165 +300166 +300167 +300192 +300193 +300194 +300195 +300196 +300197 +300198 +300199 +300224 +300225 +300226 +300227 +300228 +300229 +300230 +300231 +300256 +300257 +300258 +300259 +300260 +300261 +300262 +300263 +300288 +300289 +300290 +300291 +300292 +300293 +300294 +300295 +300320 +300321 +300322 +300323 +300324 +300325 +300326 +300327 +300352 +300353 +300354 +300355 +300356 +300357 +300358 +300359 +300384 +300385 +300386 +300387 +300388 +300389 +300390 +300391 +300416 +300417 +300418 +300419 +300420 +300421 +300422 +300423 +300448 +300449 +300450 +300451 +300452 +300453 +300454 +300455 +300480 +300481 +300482 +300483 +300484 +300485 +300486 +300487 +300512 +300513 +300514 +300515 +300516 +300517 +300518 +300519 +300544 +300545 +300546 +300547 +300548 +300549 +300550 +300551 +300576 +300577 +300578 +300579 +300580 +300581 +300582 +300583 +300608 +300609 +300610 +300611 +300612 +300613 +300614 +300615 +300640 +300641 +300642 +300643 +300644 +300645 +300646 +300647 +300672 +300673 +300674 +300675 +300676 +300677 +300678 +300679 +300704 +300705 +300706 +300707 +300708 +300709 +300710 +300711 +300736 +300737 +300738 +300739 +300740 +300741 +300742 +300743 +300768 +300769 +300770 +300771 +300772 +300773 +300774 +300775 +300800 +300801 +300802 +300803 +300804 +300805 +300806 +300807 +300832 +300833 +300834 +300835 +300836 +300837 +300838 +300839 +300864 +300865 +300866 +300867 +300868 +300869 +300870 +300871 +300896 +300897 +300898 +300899 +300900 +300901 +300902 +300903 +300928 +300929 +300930 +300931 +300932 +300933 +300934 +300935 +300960 +300961 +300962 +300963 +300964 +300965 +300966 +300967 +300992 +300993 +300994 +300995 +300996 +300997 +300998 +300999 +301024 +301025 +301026 +301027 +301028 +301029 +301030 +301031 +301056 +301057 +301058 +301059 +301060 +301061 +301062 +301063 +301088 +301089 +301090 +301091 +301092 +301093 +301094 +301095 +301120 +301121 +301122 +301123 +301124 +301125 +301126 +301127 +301152 +301153 +301154 +301155 +301156 +301157 +301158 +301159 +301184 +301185 +301186 +301187 +301188 +301189 +301190 +301191 +301216 +301217 +301218 +301219 +301220 +301221 +301222 +301223 +301248 +301249 +301250 +301251 +301252 +301253 +301254 +301255 +301280 +301281 +301282 +301283 +301284 +301285 +301286 +301287 +301312 +301313 +301314 +301315 +301316 +301317 +301318 +301319 +301344 +301345 +301346 +301347 +301348 +301349 +301350 +301351 +301376 +301377 +301378 +301379 +301380 +301381 +301382 +301383 +301408 +301409 +301410 +301411 +301412 +301413 +301414 +301415 +301440 +301441 +301442 +301443 +301444 +301445 +301446 +301447 +301472 +301473 +301474 +301475 +301476 +301477 +301478 +301479 +301504 +301505 +301506 +301507 +301508 +301509 +301510 +301511 +301536 +301537 +301538 +301539 +301540 +301541 +301542 +301543 +301568 +301569 +301570 +301571 +301572 +301573 +301574 +301575 +301600 +301601 +301602 +301603 +301604 +301605 +301606 +301607 +301632 +301633 +301634 +301635 +301636 +301637 +301638 +301639 +301664 +301665 +301666 +301667 +301668 +301669 +301670 +301671 +301696 +301697 +301698 +301699 +301700 +301701 +301702 +301703 +301728 +301729 +301730 +301731 +301732 +301733 +301734 +301735 +301760 +301761 +301762 +301763 +301764 +301765 +301766 +301767 +301792 +301793 +301794 +301795 +301796 +301797 +301798 +301799 +301824 +301825 +301826 +301827 +301828 +301829 +301830 +301831 +301856 +301857 +301858 +301859 +301860 +301861 +301862 +301863 +301888 +301889 +301890 +301891 +301892 +301893 +301894 +301895 +301920 +301921 +301922 +301923 +301924 +301925 +301926 +301927 +301952 +301953 +301954 +301955 +301956 +301957 +301958 +301959 +301984 +301985 +301986 +301987 +301988 +301989 +301990 +301991 +302016 +302017 +302018 +302019 +302020 +302021 +302022 +302023 +302048 +302049 +302050 +302051 +302052 +302053 +302054 +302055 +302080 +302081 +302082 +302083 +302084 +302085 +302086 +302087 +302112 +302113 +302114 +302115 +302116 +302117 +302118 +302119 +302144 +302145 +302146 +302147 +302148 +302149 +302150 +302151 +302176 +302177 +302178 +302179 +302180 +302181 +302182 +302183 +302208 +302209 +302210 +302211 +302212 +302213 +302214 +302215 +302240 +302241 +302242 +302243 +302244 +302245 +302246 +302247 +302272 +302273 +302274 +302275 +302276 +302277 +302278 +302279 +302304 +302305 +302306 +302307 +302308 +302309 +302310 +302311 +302336 +302337 +302338 +302339 +302340 +302341 +302342 +302343 +302368 +302369 +302370 +302371 +302372 +302373 +302374 +302375 +302400 +302401 +302402 +302403 +302404 +302405 +302406 +302407 +302432 +302433 +302434 +302435 +302436 +302437 +302438 +302439 +302464 +302465 +302466 +302467 +302468 +302469 +302470 +302471 +302496 +302497 +302498 +302499 +302500 +302501 +302502 +302503 +302528 +302529 +302530 +302531 +302532 +302533 +302534 +302535 +302560 +302561 +302562 +302563 +302564 +302565 +302566 +302567 +302592 +302593 +302594 +302595 +302596 +302597 +302598 +302599 +302624 +302625 +302626 +302627 +302628 +302629 +302630 +302631 +302656 +302657 +302658 +302659 +302660 +302661 +302662 +302663 +302688 +302689 +302690 +302691 +302692 +302693 +302694 +302695 +302720 +302721 +302722 +302723 +302724 +302725 +302726 +302727 +302752 +302753 +302754 +302755 +302756 +302757 +302758 +302759 +302784 +302785 +302786 +302787 +302788 +302789 +302790 +302791 +302816 +302817 +302818 +302819 +302820 +302821 +302822 +302823 +302848 +302849 +302850 +302851 +302852 +302853 +302854 +302855 +302880 +302881 +302882 +302883 +302884 +302885 +302886 +302887 +302912 +302913 +302914 +302915 +302916 +302917 +302918 +302919 +302944 +302945 +302946 +302947 +302948 +302949 +302950 +302951 +302976 +302977 +302978 +302979 +302980 +302981 +302982 +302983 +303008 +303009 +303010 +303011 +303012 +303013 +303014 +303015 +303040 +303041 +303042 +303043 +303044 +303045 +303046 +303047 +303072 +303073 +303074 +303075 +303076 +303077 +303078 +303079 +303104 +303105 +303106 +303107 +303108 +303109 +303110 +303111 +303136 +303137 +303138 +303139 +303140 +303141 +303142 +303143 +303168 +303169 +303170 +303171 +303172 +303173 +303174 +303175 +303200 +303201 +303202 +303203 +303204 +303205 +303206 +303207 +303232 +303233 +303234 +303235 +303236 +303237 +303238 +303239 +303264 +303265 +303266 +303267 +303268 +303269 +303270 +303271 +303296 +303297 +303298 +303299 +303300 +303301 +303302 +303303 +303328 +303329 +303330 +303331 +303332 +303333 +303334 +303335 +303360 +303361 +303362 +303363 +303364 +303365 +303366 +303367 +303392 +303393 +303394 +303395 +303396 +303397 +303398 +303399 +303424 +303425 +303426 +303427 +303428 +303429 +303430 +303431 +303456 +303457 +303458 +303459 +303460 +303461 +303462 +303463 +303488 +303489 +303490 +303491 +303492 +303493 +303494 +303495 +303520 +303521 +303522 +303523 +303524 +303525 +303526 +303527 +303552 +303553 +303554 +303555 +303556 +303557 +303558 +303559 +303584 +303585 +303586 +303587 +303588 +303589 +303590 +303591 +303616 +303617 +303618 +303619 +303620 +303621 +303622 +303623 +303648 +303649 +303650 +303651 +303652 +303653 +303654 +303655 +303680 +303681 +303682 +303683 +303684 +303685 +303686 +303687 +303712 +303713 +303714 +303715 +303716 +303717 +303718 +303719 +303744 +303745 +303746 +303747 +303748 +303749 +303750 +303751 +303776 +303777 +303778 +303779 +303780 +303781 +303782 +303783 +303808 +303809 +303810 +303811 +303812 +303813 +303814 +303815 +303840 +303841 +303842 +303843 +303844 +303845 +303846 +303847 +303872 +303873 +303874 +303875 +303876 +303877 +303878 +303879 +303904 +303905 +303906 +303907 +303908 +303909 +303910 +303911 +303936 +303937 +303938 +303939 +303940 +303941 +303942 +303943 +303968 +303969 +303970 +303971 +303972 +303973 +303974 +303975 +304000 +304001 +304002 +304003 +304004 +304005 +304006 +304007 +304032 +304033 +304034 +304035 +304036 +304037 +304038 +304039 +304064 +304065 +304066 +304067 +304068 +304069 +304070 +304071 +304096 +304097 +304098 +304099 +304100 +304101 +304102 +304103 +304128 +304129 +304130 +304131 +304132 +304133 +304134 +304135 +304160 +304161 +304162 +304163 +304164 +304165 +304166 +304167 +304192 +304193 +304194 +304195 +304196 +304197 +304198 +304199 +304224 +304225 +304226 +304227 +304228 +304229 +304230 +304231 +304256 +304257 +304258 +304259 +304260 +304261 +304262 +304263 +304288 +304289 +304290 +304291 +304292 +304293 +304294 +304295 +304320 +304321 +304322 +304323 +304324 +304325 +304326 +304327 +304352 +304353 +304354 +304355 +304356 +304357 +304358 +304359 +304384 +304385 +304386 +304387 +304388 +304389 +304390 +304391 +304416 +304417 +304418 +304419 +304420 +304421 +304422 +304423 +304448 +304449 +304450 +304451 +304452 +304453 +304454 +304455 +304480 +304481 +304482 +304483 +304484 +304485 +304486 +304487 +304512 +304513 +304514 +304515 +304516 +304517 +304518 +304519 +304544 +304545 +304546 +304547 +304548 +304549 +304550 +304551 +304576 +304577 +304578 +304579 +304580 +304581 +304582 +304583 +304608 +304609 +304610 +304611 +304612 +304613 +304614 +304615 +304640 +304641 +304642 +304643 +304644 +304645 +304646 +304647 +304672 +304673 +304674 +304675 +304676 +304677 +304678 +304679 +304704 +304705 +304706 +304707 +304708 +304709 +304710 +304711 +304736 +304737 +304738 +304739 +304740 +304741 +304742 +304743 +304768 +304769 +304770 +304771 +304772 +304773 +304774 +304775 +304800 +304801 +304802 +304803 +304804 +304805 +304806 +304807 +304832 +304833 +304834 +304835 +304836 +304837 +304838 +304839 +304864 +304865 +304866 +304867 +304868 +304869 +304870 +304871 +304896 +304897 +304898 +304899 +304900 +304901 +304902 +304903 +304928 +304929 +304930 +304931 +304932 +304933 +304934 +304935 +304960 +304961 +304962 +304963 +304964 +304965 +304966 +304967 +304992 +304993 +304994 +304995 +304996 +304997 +304998 +304999 +305024 +305025 +305026 +305027 +305028 +305029 +305030 +305031 +305056 +305057 +305058 +305059 +305060 +305061 +305062 +305063 +305088 +305089 +305090 +305091 +305092 +305093 +305094 +305095 +305120 +305121 +305122 +305123 +305124 +305125 +305126 +305127 +305152 +305153 +305154 +305155 +305156 +305157 +305158 +305159 +305184 +305185 +305186 +305187 +305188 +305189 +305190 +305191 +305216 +305217 +305218 +305219 +305220 +305221 +305222 +305223 +305248 +305249 +305250 +305251 +305252 +305253 +305254 +305255 +305280 +305281 +305282 +305283 +305284 +305285 +305286 +305287 +305312 +305313 +305314 +305315 +305316 +305317 +305318 +305319 +305344 +305345 +305346 +305347 +305348 +305349 +305350 +305351 +305376 +305377 +305378 +305379 +305380 +305381 +305382 +305383 +305408 +305409 +305410 +305411 +305412 +305413 +305414 +305415 +305440 +305441 +305442 +305443 +305444 +305445 +305446 +305447 +305472 +305473 +305474 +305475 +305476 +305477 +305478 +305479 +305504 +305505 +305506 +305507 +305508 +305509 +305510 +305511 +305536 +305537 +305538 +305539 +305540 +305541 +305542 +305543 +305568 +305569 +305570 +305571 +305572 +305573 +305574 +305575 +305600 +305601 +305602 +305603 +305604 +305605 +305606 +305607 +305632 +305633 +305634 +305635 +305636 +305637 +305638 +305639 +305664 +305665 +305666 +305667 +305668 +305669 +305670 +305671 +305696 +305697 +305698 +305699 +305700 +305701 +305702 +305703 +305728 +305729 +305730 +305731 +305732 +305733 +305734 +305735 +305760 +305761 +305762 +305763 +305764 +305765 +305766 +305767 +305792 +305793 +305794 +305795 +305796 +305797 +305798 +305799 +305824 +305825 +305826 +305827 +305828 +305829 +305830 +305831 +305856 +305857 +305858 +305859 +305860 +305861 +305862 +305863 +305888 +305889 +305890 +305891 +305892 +305893 +305894 +305895 +305920 +305921 +305922 +305923 +305924 +305925 +305926 +305927 +305952 +305953 +305954 +305955 +305956 +305957 +305958 +305959 +305984 +305985 +305986 +305987 +305988 +305989 +305990 +305991 +306016 +306017 +306018 +306019 +306020 +306021 +306022 +306023 +306048 +306049 +306050 +306051 +306052 +306053 +306054 +306055 +306080 +306081 +306082 +306083 +306084 +306085 +306086 +306087 +306112 +306113 +306114 +306115 +306116 +306117 +306118 +306119 +306144 +306145 +306146 +306147 +306148 +306149 +306150 +306151 +306176 +306177 +306178 +306179 +306180 +306181 +306182 +306183 +306208 +306209 +306210 +306211 +306212 +306213 +306214 +306215 +306240 +306241 +306242 +306243 +306244 +306245 +306246 +306247 +306272 +306273 +306274 +306275 +306276 +306277 +306278 +306279 +306304 +306305 +306306 +306307 +306308 +306309 +306310 +306311 +306336 +306337 +306338 +306339 +306340 +306341 +306342 +306343 +306368 +306369 +306370 +306371 +306372 +306373 +306374 +306375 +306400 +306401 +306402 +306403 +306404 +306405 +306406 +306407 +306432 +306433 +306434 +306435 +306436 +306437 +306438 +306439 +306464 +306465 +306466 +306467 +306468 +306469 +306470 +306471 +306496 +306497 +306498 +306499 +306500 +306501 +306502 +306503 +306528 +306529 +306530 +306531 +306532 +306533 +306534 +306535 +306560 +306561 +306562 +306563 +306564 +306565 +306566 +306567 +306592 +306593 +306594 +306595 +306596 +306597 +306598 +306599 +306624 +306625 +306626 +306627 +306628 +306629 +306630 +306631 +306656 +306657 +306658 +306659 +306660 +306661 +306662 +306663 +306688 +306689 +306690 +306691 +306692 +306693 +306694 +306695 +306720 +306721 +306722 +306723 +306724 +306725 +306726 +306727 +306752 +306753 +306754 +306755 +306756 +306757 +306758 +306759 +306784 +306785 +306786 +306787 +306788 +306789 +306790 +306791 +306816 +306817 +306818 +306819 +306820 +306821 +306822 +306823 +306848 +306849 +306850 +306851 +306852 +306853 +306854 +306855 +306880 +306881 +306882 +306883 +306884 +306885 +306886 +306887 +306912 +306913 +306914 +306915 +306916 +306917 +306918 +306919 +306944 +306945 +306946 +306947 +306948 +306949 +306950 +306951 +306976 +306977 +306978 +306979 +306980 +306981 +306982 +306983 +307008 +307009 +307010 +307011 +307012 +307013 +307014 +307015 +307040 +307041 +307042 +307043 +307044 +307045 +307046 +307047 +307072 +307073 +307074 +307075 +307076 +307077 +307078 +307079 +307104 +307105 +307106 +307107 +307108 +307109 +307110 +307111 +307136 +307137 +307138 +307139 +307140 +307141 +307142 +307143 +307168 +307169 +307170 +307171 +307172 +307173 +307174 +307175 +307200 +307201 +307202 +307203 +307204 +307205 +307206 +307207 +307232 +307233 +307234 +307235 +307236 +307237 +307238 +307239 +307264 +307265 +307266 +307267 +307268 +307269 +307270 +307271 +307296 +307297 +307298 +307299 +307300 +307301 +307302 +307303 +307328 +307329 +307330 +307331 +307332 +307333 +307334 +307335 +307360 +307361 +307362 +307363 +307364 +307365 +307366 +307367 +307392 +307393 +307394 +307395 +307396 +307397 +307398 +307399 +307424 +307425 +307426 +307427 +307428 +307429 +307430 +307431 +307456 +307457 +307458 +307459 +307460 +307461 +307462 +307463 +307488 +307489 +307490 +307491 +307492 +307493 +307494 +307495 +307520 +307521 +307522 +307523 +307524 +307525 +307526 +307527 +307552 +307553 +307554 +307555 +307556 +307557 +307558 +307559 +307584 +307585 +307586 +307587 +307588 +307589 +307590 +307591 +307616 +307617 +307618 +307619 +307620 +307621 +307622 +307623 +307648 +307649 +307650 +307651 +307652 +307653 +307654 +307655 +307680 +307681 +307682 +307683 +307684 +307685 +307686 +307687 +307712 +307713 +307714 +307715 +307716 +307717 +307718 +307719 +307744 +307745 +307746 +307747 +307748 +307749 +307750 +307751 +307776 +307777 +307778 +307779 +307780 +307781 +307782 +307783 +307808 +307809 +307810 +307811 +307812 +307813 +307814 +307815 +307840 +307841 +307842 +307843 +307844 +307845 +307846 +307847 +307872 +307873 +307874 +307875 +307876 +307877 +307878 +307879 +307904 +307905 +307906 +307907 +307908 +307909 +307910 +307911 +307936 +307937 +307938 +307939 +307940 +307941 +307942 +307943 +307968 +307969 +307970 +307971 +307972 +307973 +307974 +307975 +308000 +308001 +308002 +308003 +308004 +308005 +308006 +308007 +308032 +308033 +308034 +308035 +308036 +308037 +308038 +308039 +308064 +308065 +308066 +308067 +308068 +308069 +308070 +308071 +308096 +308097 +308098 +308099 +308100 +308101 +308102 +308103 +308128 +308129 +308130 +308131 +308132 +308133 +308134 +308135 +308160 +308161 +308162 +308163 +308164 +308165 +308166 +308167 +308192 +308193 +308194 +308195 +308196 +308197 +308198 +308199 +308224 +308225 +308226 +308227 +308228 +308229 +308230 +308231 +308256 +308257 +308258 +308259 +308260 +308261 +308262 +308263 +308288 +308289 +308290 +308291 +308292 +308293 +308294 +308295 +308320 +308321 +308322 +308323 +308324 +308325 +308326 +308327 +308352 +308353 +308354 +308355 +308356 +308357 +308358 +308359 +308384 +308385 +308386 +308387 +308388 +308389 +308390 +308391 +308416 +308417 +308418 +308419 +308420 +308421 +308422 +308423 +308448 +308449 +308450 +308451 +308452 +308453 +308454 +308455 +308480 +308481 +308482 +308483 +308484 +308485 +308486 +308487 +308512 +308513 +308514 +308515 +308516 +308517 +308518 +308519 +308544 +308545 +308546 +308547 +308548 +308549 +308550 +308551 +308576 +308577 +308578 +308579 +308580 +308581 +308582 +308583 +308608 +308609 +308610 +308611 +308612 +308613 +308614 +308615 +308640 +308641 +308642 +308643 +308644 +308645 +308646 +308647 +308672 +308673 +308674 +308675 +308676 +308677 +308678 +308679 +308704 +308705 +308706 +308707 +308708 +308709 +308710 +308711 +308736 +308737 +308738 +308739 +308740 +308741 +308742 +308743 +308768 +308769 +308770 +308771 +308772 +308773 +308774 +308775 +308800 +308801 +308802 +308803 +308804 +308805 +308806 +308807 +308832 +308833 +308834 +308835 +308836 +308837 +308838 +308839 +308864 +308865 +308866 +308867 +308868 +308869 +308870 +308871 +308896 +308897 +308898 +308899 +308900 +308901 +308902 +308903 +308928 +308929 +308930 +308931 +308932 +308933 +308934 +308935 +308960 +308961 +308962 +308963 +308964 +308965 +308966 +308967 +308992 +308993 +308994 +308995 +308996 +308997 +308998 +308999 +309024 +309025 +309026 +309027 +309028 +309029 +309030 +309031 +309056 +309057 +309058 +309059 +309060 +309061 +309062 +309063 +309088 +309089 +309090 +309091 +309092 +309093 +309094 +309095 +309120 +309121 +309122 +309123 +309124 +309125 +309126 +309127 +309152 +309153 +309154 +309155 +309156 +309157 +309158 +309159 +309184 +309185 +309186 +309187 +309188 +309189 +309190 +309191 +309216 +309217 +309218 +309219 +309220 +309221 +309222 +309223 +309248 +309249 +309250 +309251 +309252 +309253 +309254 +309255 +309280 +309281 +309282 +309283 +309284 +309285 +309286 +309287 +309312 +309313 +309314 +309315 +309316 +309317 +309318 +309319 +309344 +309345 +309346 +309347 +309348 +309349 +309350 +309351 +309376 +309377 +309378 +309379 +309380 +309381 +309382 +309383 +309408 +309409 +309410 +309411 +309412 +309413 +309414 +309415 +309440 +309441 +309442 +309443 +309444 +309445 +309446 +309447 +309472 +309473 +309474 +309475 +309476 +309477 +309478 +309479 +309504 +309505 +309506 +309507 +309508 +309509 +309510 +309511 +309536 +309537 +309538 +309539 +309540 +309541 +309542 +309543 +309568 +309569 +309570 +309571 +309572 +309573 +309574 +309575 +309600 +309601 +309602 +309603 +309604 +309605 +309606 +309607 +309632 +309633 +309634 +309635 +309636 +309637 +309638 +309639 +309664 +309665 +309666 +309667 +309668 +309669 +309670 +309671 +309696 +309697 +309698 +309699 +309700 +309701 +309702 +309703 +309728 +309729 +309730 +309731 +309732 +309733 +309734 +309735 +309760 +309761 +309762 +309763 +309764 +309765 +309766 +309767 +309792 +309793 +309794 +309795 +309796 +309797 +309798 +309799 +309824 +309825 +309826 +309827 +309828 +309829 +309830 +309831 +309856 +309857 +309858 +309859 +309860 +309861 +309862 +309863 +309888 +309889 +309890 +309891 +309892 +309893 +309894 +309895 +309920 +309921 +309922 +309923 +309924 +309925 +309926 +309927 +309952 +309953 +309954 +309955 +309956 +309957 +309958 +309959 +309984 +309985 +309986 +309987 +309988 +309989 +309990 +309991 +310016 +310017 +310018 +310019 +310020 +310021 +310022 +310023 +310048 +310049 +310050 +310051 +310052 +310053 +310054 +310055 +310080 +310081 +310082 +310083 +310084 +310085 +310086 +310087 +310112 +310113 +310114 +310115 +310116 +310117 +310118 +310119 +310144 +310145 +310146 +310147 +310148 +310149 +310150 +310151 +310176 +310177 +310178 +310179 +310180 +310181 +310182 +310183 +310208 +310209 +310210 +310211 +310212 +310213 +310214 +310215 +310240 +310241 +310242 +310243 +310244 +310245 +310246 +310247 +310272 +310273 +310274 +310275 +310276 +310277 +310278 +310279 +310304 +310305 +310306 +310307 +310308 +310309 +310310 +310311 +310336 +310337 +310338 +310339 +310340 +310341 +310342 +310343 +310368 +310369 +310370 +310371 +310372 +310373 +310374 +310375 +310400 +310401 +310402 +310403 +310404 +310405 +310406 +310407 +310432 +310433 +310434 +310435 +310436 +310437 +310438 +310439 +310464 +310465 +310466 +310467 +310468 +310469 +310470 +310471 +310496 +310497 +310498 +310499 +310500 +310501 +310502 +310503 +310528 +310529 +310530 +310531 +310532 +310533 +310534 +310535 +310560 +310561 +310562 +310563 +310564 +310565 +310566 +310567 +310592 +310593 +310594 +310595 +310596 +310597 +310598 +310599 +310624 +310625 +310626 +310627 +310628 +310629 +310630 +310631 +310656 +310657 +310658 +310659 +310660 +310661 +310662 +310663 +310688 +310689 +310690 +310691 +310692 +310693 +310694 +310695 +310720 +310721 +310722 +310723 +310724 +310725 +310726 +310727 +310752 +310753 +310754 +310755 +310756 +310757 +310758 +310759 +310784 +310785 +310786 +310787 +310788 +310789 +310790 +310791 +310816 +310817 +310818 +310819 +310820 +310821 +310822 +310823 +310848 +310849 +310850 +310851 +310852 +310853 +310854 +310855 +310880 +310881 +310882 +310883 +310884 +310885 +310886 +310887 +310912 +310913 +310914 +310915 +310916 +310917 +310918 +310919 +310944 +310945 +310946 +310947 +310948 +310949 +310950 +310951 +310976 +310977 +310978 +310979 +310980 +310981 +310982 +310983 +311008 +311009 +311010 +311011 +311012 +311013 +311014 +311015 +311040 +311041 +311042 +311043 +311044 +311045 +311046 +311047 +311072 +311073 +311074 +311075 +311076 +311077 +311078 +311079 +311104 +311105 +311106 +311107 +311108 +311109 +311110 +311111 +311136 +311137 +311138 +311139 +311140 +311141 +311142 +311143 +311168 +311169 +311170 +311171 +311172 +311173 +311174 +311175 +311200 +311201 +311202 +311203 +311204 +311205 +311206 +311207 +311232 +311233 +311234 +311235 +311236 +311237 +311238 +311239 +311264 +311265 +311266 +311267 +311268 +311269 +311270 +311271 +311296 +311297 +311298 +311299 +311300 +311301 +311302 +311303 +311328 +311329 +311330 +311331 +311332 +311333 +311334 +311335 +311360 +311361 +311362 +311363 +311364 +311365 +311366 +311367 +311392 +311393 +311394 +311395 +311396 +311397 +311398 +311399 +311424 +311425 +311426 +311427 +311428 +311429 +311430 +311431 +311456 +311457 +311458 +311459 +311460 +311461 +311462 +311463 +311488 +311489 +311490 +311491 +311492 +311493 +311494 +311495 +311520 +311521 +311522 +311523 +311524 +311525 +311526 +311527 +311552 +311553 +311554 +311555 +311556 +311557 +311558 +311559 +311584 +311585 +311586 +311587 +311588 +311589 +311590 +311591 +311616 +311617 +311618 +311619 +311620 +311621 +311622 +311623 +311648 +311649 +311650 +311651 +311652 +311653 +311654 +311655 +311680 +311681 +311682 +311683 +311684 +311685 +311686 +311687 +311712 +311713 +311714 +311715 +311716 +311717 +311718 +311719 +311744 +311745 +311746 +311747 +311748 +311749 +311750 +311751 +311776 +311777 +311778 +311779 +311780 +311781 +311782 +311783 +311808 +311809 +311810 +311811 +311812 +311813 +311814 +311815 +311840 +311841 +311842 +311843 +311844 +311845 +311846 +311847 +311872 +311873 +311874 +311875 +311876 +311877 +311878 +311879 +311904 +311905 +311906 +311907 +311908 +311909 +311910 +311911 +311936 +311937 +311938 +311939 +311940 +311941 +311942 +311943 +311968 +311969 +311970 +311971 +311972 +311973 +311974 +311975 +312000 +312001 +312002 +312003 +312004 +312005 +312006 +312007 +312032 +312033 +312034 +312035 +312036 +312037 +312038 +312039 +312064 +312065 +312066 +312067 +312068 +312069 +312070 +312071 +312096 +312097 +312098 +312099 +312100 +312101 +312102 +312103 +312128 +312129 +312130 +312131 +312132 +312133 +312134 +312135 +312160 +312161 +312162 +312163 +312164 +312165 +312166 +312167 +312192 +312193 +312194 +312195 +312196 +312197 +312198 +312199 +312224 +312225 +312226 +312227 +312228 +312229 +312230 +312231 +312256 +312257 +312258 +312259 +312260 +312261 +312262 +312263 +312288 +312289 +312290 +312291 +312292 +312293 +312294 +312295 +312320 +312321 +312322 +312323 +312324 +312325 +312326 +312327 +312352 +312353 +312354 +312355 +312356 +312357 +312358 +312359 +312384 +312385 +312386 +312387 +312388 +312389 +312390 +312391 +312416 +312417 +312418 +312419 +312420 +312421 +312422 +312423 +312448 +312449 +312450 +312451 +312452 +312453 +312454 +312455 +312480 +312481 +312482 +312483 +312484 +312485 +312486 +312487 +312512 +312513 +312514 +312515 +312516 +312517 +312518 +312519 +312544 +312545 +312546 +312547 +312548 +312549 +312550 +312551 +312576 +312577 +312578 +312579 +312580 +312581 +312582 +312583 +312608 +312609 +312610 +312611 +312612 +312613 +312614 +312615 +312640 +312641 +312642 +312643 +312644 +312645 +312646 +312647 +312672 +312673 +312674 +312675 +312676 +312677 +312678 +312679 +312704 +312705 +312706 +312707 +312708 +312709 +312710 +312711 +312736 +312737 +312738 +312739 +312740 +312741 +312742 +312743 +312768 +312769 +312770 +312771 +312772 +312773 +312774 +312775 +312800 +312801 +312802 +312803 +312804 +312805 +312806 +312807 +312832 +312833 +312834 +312835 +312836 +312837 +312838 +312839 +312864 +312865 +312866 +312867 +312868 +312869 +312870 +312871 +312896 +312897 +312898 +312899 +312900 +312901 +312902 +312903 +312928 +312929 +312930 +312931 +312932 +312933 +312934 +312935 +312960 +312961 +312962 +312963 +312964 +312965 +312966 +312967 +312992 +312993 +312994 +312995 +312996 +312997 +312998 +312999 +313024 +313025 +313026 +313027 +313028 +313029 +313030 +313031 +313056 +313057 +313058 +313059 +313060 +313061 +313062 +313063 +313088 +313089 +313090 +313091 +313092 +313093 +313094 +313095 +313120 +313121 +313122 +313123 +313124 +313125 +313126 +313127 +313152 +313153 +313154 +313155 +313156 +313157 +313158 +313159 +313184 +313185 +313186 +313187 +313188 +313189 +313190 +313191 +313216 +313217 +313218 +313219 +313220 +313221 +313222 +313223 +313248 +313249 +313250 +313251 +313252 +313253 +313254 +313255 +313280 +313281 +313282 +313283 +313284 +313285 +313286 +313287 +313312 +313313 +313314 +313315 +313316 +313317 +313318 +313319 +313344 +313345 +313346 +313347 +313348 +313349 +313350 +313351 +313376 +313377 +313378 +313379 +313380 +313381 +313382 +313383 +313408 +313409 +313410 +313411 +313412 +313413 +313414 +313415 +313440 +313441 +313442 +313443 +313444 +313445 +313446 +313447 +313472 +313473 +313474 +313475 +313476 +313477 +313478 +313479 +313504 +313505 +313506 +313507 +313508 +313509 +313510 +313511 +313536 +313537 +313538 +313539 +313540 +313541 +313542 +313543 +313568 +313569 +313570 +313571 +313572 +313573 +313574 +313575 +313600 +313601 +313602 +313603 +313604 +313605 +313606 +313607 +313632 +313633 +313634 +313635 +313636 +313637 +313638 +313639 +313664 +313665 +313666 +313667 +313668 +313669 +313670 +313671 +313696 +313697 +313698 +313699 +313700 +313701 +313702 +313703 +313728 +313729 +313730 +313731 +313732 +313733 +313734 +313735 +313760 +313761 +313762 +313763 +313764 +313765 +313766 +313767 +313792 +313793 +313794 +313795 +313796 +313797 +313798 +313799 +313824 +313825 +313826 +313827 +313828 +313829 +313830 +313831 +313856 +313857 +313858 +313859 +313860 +313861 +313862 +313863 +313888 +313889 +313890 +313891 +313892 +313893 +313894 +313895 +313920 +313921 +313922 +313923 +313924 +313925 +313926 +313927 +313952 +313953 +313954 +313955 +313956 +313957 +313958 +313959 +313984 +313985 +313986 +313987 +313988 +313989 +313990 +313991 +314016 +314017 +314018 +314019 +314020 +314021 +314022 +314023 +314048 +314049 +314050 +314051 +314052 +314053 +314054 +314055 +314080 +314081 +314082 +314083 +314084 +314085 +314086 +314087 +314112 +314113 +314114 +314115 +314116 +314117 +314118 +314119 +314144 +314145 +314146 +314147 +314148 +314149 +314150 +314151 +314176 +314177 +314178 +314179 +314180 +314181 +314182 +314183 +314208 +314209 +314210 +314211 +314212 +314213 +314214 +314215 +314240 +314241 +314242 +314243 +314244 +314245 +314246 +314247 +314272 +314273 +314274 +314275 +314276 +314277 +314278 +314279 +314304 +314305 +314306 +314307 +314308 +314309 +314310 +314311 +314336 +314337 +314338 +314339 +314340 +314341 +314342 +314343 +314368 +314369 +314370 +314371 +314372 +314373 +314374 +314375 +314400 +314401 +314402 +314403 +314404 +314405 +314406 +314407 +314432 +314433 +314434 +314435 +314436 +314437 +314438 +314439 +314464 +314465 +314466 +314467 +314468 +314469 +314470 +314471 +314496 +314497 +314498 +314499 +314500 +314501 +314502 +314503 +314528 +314529 +314530 +314531 +314532 +314533 +314534 +314535 +314560 +314561 +314562 +314563 +314564 +314565 +314566 +314567 +314592 +314593 +314594 +314595 +314596 +314597 +314598 +314599 +314624 +314625 +314626 +314627 +314628 +314629 +314630 +314631 +314656 +314657 +314658 +314659 +314660 +314661 +314662 +314663 +314688 +314689 +314690 +314691 +314692 +314693 +314694 +314695 +314720 +314721 +314722 +314723 +314724 +314725 +314726 +314727 +314752 +314753 +314754 +314755 +314756 +314757 +314758 +314759 +314784 +314785 +314786 +314787 +314788 +314789 +314790 +314791 +314816 +314817 +314818 +314819 +314820 +314821 +314822 +314823 +314848 +314849 +314850 +314851 +314852 +314853 +314854 +314855 +314880 +314881 +314882 +314883 +314884 +314885 +314886 +314887 +314912 +314913 +314914 +314915 +314916 +314917 +314918 +314919 +314944 +314945 +314946 +314947 +314948 +314949 +314950 +314951 +314976 +314977 +314978 +314979 +314980 +314981 +314982 +314983 +315008 +315009 +315010 +315011 +315012 +315013 +315014 +315015 +315040 +315041 +315042 +315043 +315044 +315045 +315046 +315047 +315072 +315073 +315074 +315075 +315076 +315077 +315078 +315079 +315104 +315105 +315106 +315107 +315108 +315109 +315110 +315111 +315136 +315137 +315138 +315139 +315140 +315141 +315142 +315143 +315168 +315169 +315170 +315171 +315172 +315173 +315174 +315175 +315200 +315201 +315202 +315203 +315204 +315205 +315206 +315207 +315232 +315233 +315234 +315235 +315236 +315237 +315238 +315239 +315264 +315265 +315266 +315267 +315268 +315269 +315270 +315271 +315296 +315297 +315298 +315299 +315300 +315301 +315302 +315303 +315328 +315329 +315330 +315331 +315332 +315333 +315334 +315335 +315360 +315361 +315362 +315363 +315364 +315365 +315366 +315367 +315392 +315393 +315394 +315395 +315396 +315397 +315398 +315399 +315424 +315425 +315426 +315427 +315428 +315429 +315430 +315431 +315456 +315457 +315458 +315459 +315460 +315461 +315462 +315463 +315488 +315489 +315490 +315491 +315492 +315493 +315494 +315495 +315520 +315521 +315522 +315523 +315524 +315525 +315526 +315527 +315552 +315553 +315554 +315555 +315556 +315557 +315558 +315559 +315584 +315585 +315586 +315587 +315588 +315589 +315590 +315591 +315616 +315617 +315618 +315619 +315620 +315621 +315622 +315623 +315648 +315649 +315650 +315651 +315652 +315653 +315654 +315655 +315680 +315681 +315682 +315683 +315684 +315685 +315686 +315687 +315712 +315713 +315714 +315715 +315716 +315717 +315718 +315719 +315744 +315745 +315746 +315747 +315748 +315749 +315750 +315751 +315776 +315777 +315778 +315779 +315780 +315781 +315782 +315783 +315808 +315809 +315810 +315811 +315812 +315813 +315814 +315815 +315840 +315841 +315842 +315843 +315844 +315845 +315846 +315847 +315872 +315873 +315874 +315875 +315876 +315877 +315878 +315879 +315904 +315905 +315906 +315907 +315908 +315909 +315910 +315911 +315936 +315937 +315938 +315939 +315940 +315941 +315942 +315943 +315968 +315969 +315970 +315971 +315972 +315973 +315974 +315975 +316000 +316001 +316002 +316003 +316004 +316005 +316006 +316007 +316032 +316033 +316034 +316035 +316036 +316037 +316038 +316039 +316064 +316065 +316066 +316067 +316068 +316069 +316070 +316071 +316096 +316097 +316098 +316099 +316100 +316101 +316102 +316103 +316128 +316129 +316130 +316131 +316132 +316133 +316134 +316135 +316160 +316161 +316162 +316163 +316164 +316165 +316166 +316167 +316192 +316193 +316194 +316195 +316196 +316197 +316198 +316199 +316224 +316225 +316226 +316227 +316228 +316229 +316230 +316231 +316256 +316257 +316258 +316259 +316260 +316261 +316262 +316263 +316288 +316289 +316290 +316291 +316292 +316293 +316294 +316295 +316320 +316321 +316322 +316323 +316324 +316325 +316326 +316327 +316352 +316353 +316354 +316355 +316356 +316357 +316358 +316359 +316384 +316385 +316386 +316387 +316388 +316389 +316390 +316391 +316416 +316417 +316418 +316419 +316420 +316421 +316422 +316423 +316448 +316449 +316450 +316451 +316452 +316453 +316454 +316455 +316480 +316481 +316482 +316483 +316484 +316485 +316486 +316487 +316512 +316513 +316514 +316515 +316516 +316517 +316518 +316519 +316544 +316545 +316546 +316547 +316548 +316549 +316550 +316551 +316576 +316577 +316578 +316579 +316580 +316581 +316582 +316583 +316608 +316609 +316610 +316611 +316612 +316613 +316614 +316615 +316640 +316641 +316642 +316643 +316644 +316645 +316646 +316647 +316672 +316673 +316674 +316675 +316676 +316677 +316678 +316679 +316704 +316705 +316706 +316707 +316708 +316709 +316710 +316711 +316736 +316737 +316738 +316739 +316740 +316741 +316742 +316743 +316768 +316769 +316770 +316771 +316772 +316773 +316774 +316775 +316800 +316801 +316802 +316803 +316804 +316805 +316806 +316807 +316832 +316833 +316834 +316835 +316836 +316837 +316838 +316839 +316864 +316865 +316866 +316867 +316868 +316869 +316870 +316871 +316896 +316897 +316898 +316899 +316900 +316901 +316902 +316903 +316928 +316929 +316930 +316931 +316932 +316933 +316934 +316935 +316960 +316961 +316962 +316963 +316964 +316965 +316966 +316967 +316992 +316993 +316994 +316995 +316996 +316997 +316998 +316999 +317024 +317025 +317026 +317027 +317028 +317029 +317030 +317031 +317056 +317057 +317058 +317059 +317060 +317061 +317062 +317063 +317088 +317089 +317090 +317091 +317092 +317093 +317094 +317095 +317120 +317121 +317122 +317123 +317124 +317125 +317126 +317127 +317152 +317153 +317154 +317155 +317156 +317157 +317158 +317159 +317184 +317185 +317186 +317187 +317188 +317189 +317190 +317191 +317216 +317217 +317218 +317219 +317220 +317221 +317222 +317223 +317248 +317249 +317250 +317251 +317252 +317253 +317254 +317255 +317280 +317281 +317282 +317283 +317284 +317285 +317286 +317287 +317312 +317313 +317314 +317315 +317316 +317317 +317318 +317319 +317344 +317345 +317346 +317347 +317348 +317349 +317350 +317351 +317376 +317377 +317378 +317379 +317380 +317381 +317382 +317383 +317408 +317409 +317410 +317411 +317412 +317413 +317414 +317415 +317440 +317441 +317442 +317443 +317444 +317445 +317446 +317447 +317472 +317473 +317474 +317475 +317476 +317477 +317478 +317479 +317504 +317505 +317506 +317507 +317508 +317509 +317510 +317511 +317536 +317537 +317538 +317539 +317540 +317541 +317542 +317543 +317568 +317569 +317570 +317571 +317572 +317573 +317574 +317575 +317600 +317601 +317602 +317603 +317604 +317605 +317606 +317607 +317632 +317633 +317634 +317635 +317636 +317637 +317638 +317639 +317664 +317665 +317666 +317667 +317668 +317669 +317670 +317671 +317696 +317697 +317698 +317699 +317700 +317701 +317702 +317703 +317728 +317729 +317730 +317731 +317732 +317733 +317734 +317735 +317760 +317761 +317762 +317763 +317764 +317765 +317766 +317767 +317792 +317793 +317794 +317795 +317796 +317797 +317798 +317799 +317824 +317825 +317826 +317827 +317828 +317829 +317830 +317831 +317856 +317857 +317858 +317859 +317860 +317861 +317862 +317863 +317888 +317889 +317890 +317891 +317892 +317893 +317894 +317895 +317920 +317921 +317922 +317923 +317924 +317925 +317926 +317927 +317952 +317953 +317954 +317955 +317956 +317957 +317958 +317959 +317984 +317985 +317986 +317987 +317988 +317989 +317990 +317991 +318016 +318017 +318018 +318019 +318020 +318021 +318022 +318023 +318048 +318049 +318050 +318051 +318052 +318053 +318054 +318055 +318080 +318081 +318082 +318083 +318084 +318085 +318086 +318087 +318112 +318113 +318114 +318115 +318116 +318117 +318118 +318119 +318144 +318145 +318146 +318147 +318148 +318149 +318150 +318151 +318176 +318177 +318178 +318179 +318180 +318181 +318182 +318183 +318208 +318209 +318210 +318211 +318212 +318213 +318214 +318215 +318240 +318241 +318242 +318243 +318244 +318245 +318246 +318247 +318272 +318273 +318274 +318275 +318276 +318277 +318278 +318279 +318304 +318305 +318306 +318307 +318308 +318309 +318310 +318311 +318336 +318337 +318338 +318339 +318340 +318341 +318342 +318343 +318368 +318369 +318370 +318371 +318372 +318373 +318374 +318375 +318400 +318401 +318402 +318403 +318404 +318405 +318406 +318407 +318432 +318433 +318434 +318435 +318436 +318437 +318438 +318439 +318464 +318465 +318466 +318467 +318468 +318469 +318470 +318471 +318496 +318497 +318498 +318499 +318500 +318501 +318502 +318503 +318528 +318529 +318530 +318531 +318532 +318533 +318534 +318535 +318560 +318561 +318562 +318563 +318564 +318565 +318566 +318567 +318592 +318593 +318594 +318595 +318596 +318597 +318598 +318599 +318624 +318625 +318626 +318627 +318628 +318629 +318630 +318631 +318656 +318657 +318658 +318659 +318660 +318661 +318662 +318663 +318688 +318689 +318690 +318691 +318692 +318693 +318694 +318695 +318720 +318721 +318722 +318723 +318724 +318725 +318726 +318727 +318752 +318753 +318754 +318755 +318756 +318757 +318758 +318759 +318784 +318785 +318786 +318787 +318788 +318789 +318790 +318791 +318816 +318817 +318818 +318819 +318820 +318821 +318822 +318823 +318848 +318849 +318850 +318851 +318852 +318853 +318854 +318855 +318880 +318881 +318882 +318883 +318884 +318885 +318886 +318887 +318912 +318913 +318914 +318915 +318916 +318917 +318918 +318919 +318944 +318945 +318946 +318947 +318948 +318949 +318950 +318951 +318976 +318977 +318978 +318979 +318980 +318981 +318982 +318983 +319008 +319009 +319010 +319011 +319012 +319013 +319014 +319015 +319040 +319041 +319042 +319043 +319044 +319045 +319046 +319047 +319072 +319073 +319074 +319075 +319076 +319077 +319078 +319079 +319104 +319105 +319106 +319107 +319108 +319109 +319110 +319111 +319136 +319137 +319138 +319139 +319140 +319141 +319142 +319143 +319168 +319169 +319170 +319171 +319172 +319173 +319174 +319175 +319200 +319201 +319202 +319203 +319204 +319205 +319206 +319207 +319232 +319233 +319234 +319235 +319236 +319237 +319238 +319239 +319264 +319265 +319266 +319267 +319268 +319269 +319270 +319271 +319296 +319297 +319298 +319299 +319300 +319301 +319302 +319303 +319328 +319329 +319330 +319331 +319332 +319333 +319334 +319335 +319360 +319361 +319362 +319363 +319364 +319365 +319366 +319367 +319392 +319393 +319394 +319395 +319396 +319397 +319398 +319399 +319424 +319425 +319426 +319427 +319428 +319429 +319430 +319431 +319456 +319457 +319458 +319459 +319460 +319461 +319462 +319463 +319488 +319489 +319490 +319491 +319492 +319493 +319494 +319495 +319520 +319521 +319522 +319523 +319524 +319525 +319526 +319527 +319552 +319553 +319554 +319555 +319556 +319557 +319558 +319559 +319584 +319585 +319586 +319587 +319588 +319589 +319590 +319591 +319616 +319617 +319618 +319619 +319620 +319621 +319622 +319623 +319648 +319649 +319650 +319651 +319652 +319653 +319654 +319655 +319680 +319681 +319682 +319683 +319684 +319685 +319686 +319687 +319712 +319713 +319714 +319715 +319716 +319717 +319718 +319719 +319744 +319745 +319746 +319747 +319748 +319749 +319750 +319751 +319776 +319777 +319778 +319779 +319780 +319781 +319782 +319783 +319808 +319809 +319810 +319811 +319812 +319813 +319814 +319815 +319840 +319841 +319842 +319843 +319844 +319845 +319846 +319847 +319872 +319873 +319874 +319875 +319876 +319877 +319878 +319879 +319904 +319905 +319906 +319907 +319908 +319909 +319910 +319911 +319936 +319937 +319938 +319939 +319940 +319941 +319942 +319943 +319968 +319969 +319970 +319971 +319972 +319973 +319974 +319975 +320000 +320001 +320002 +320003 +320004 +320005 +320006 +320007 +320032 +320033 +320034 +320035 +320036 +320037 +320038 +320039 +320064 +320065 +320066 +320067 +320068 +320069 +320070 +320071 +320096 +320097 +320098 +320099 +320100 +320101 +320102 +320103 +320128 +320129 +320130 +320131 +320132 +320133 +320134 +320135 +320160 +320161 +320162 +320163 +320164 +320165 +320166 +320167 +320192 +320193 +320194 +320195 +320196 +320197 +320198 +320199 +320224 +320225 +320226 +320227 +320228 +320229 +320230 +320231 +320256 +320257 +320258 +320259 +320260 +320261 +320262 +320263 +320288 +320289 +320290 +320291 +320292 +320293 +320294 +320295 +320320 +320321 +320322 +320323 +320324 +320325 +320326 +320327 +320352 +320353 +320354 +320355 +320356 +320357 +320358 +320359 +320384 +320385 +320386 +320387 +320388 +320389 +320390 +320391 +320416 +320417 +320418 +320419 +320420 +320421 +320422 +320423 +320448 +320449 +320450 +320451 +320452 +320453 +320454 +320455 +320480 +320481 +320482 +320483 +320484 +320485 +320486 +320487 +320512 +320513 +320514 +320515 +320516 +320517 +320518 +320519 +320544 +320545 +320546 +320547 +320548 +320549 +320550 +320551 +320576 +320577 +320578 +320579 +320580 +320581 +320582 +320583 +320608 +320609 +320610 +320611 +320612 +320613 +320614 +320615 +320640 +320641 +320642 +320643 +320644 +320645 +320646 +320647 +320672 +320673 +320674 +320675 +320676 +320677 +320678 +320679 +320704 +320705 +320706 +320707 +320708 +320709 +320710 +320711 +320736 +320737 +320738 +320739 +320740 +320741 +320742 +320743 +320768 +320769 +320770 +320771 +320772 +320773 +320774 +320775 +320800 +320801 +320802 +320803 +320804 +320805 +320806 +320807 +320832 +320833 +320834 +320835 +320836 +320837 +320838 +320839 +320864 +320865 +320866 +320867 +320868 +320869 +320870 +320871 +320896 +320897 +320898 +320899 +320900 +320901 +320902 +320903 +320928 +320929 +320930 +320931 +320932 +320933 +320934 +320935 +320960 +320961 +320962 +320963 +320964 +320965 +320966 +320967 +320992 +320993 +320994 +320995 +320996 +320997 +320998 +320999 +321024 +321025 +321026 +321027 +321028 +321029 +321030 +321031 +321056 +321057 +321058 +321059 +321060 +321061 +321062 +321063 +321088 +321089 +321090 +321091 +321092 +321093 +321094 +321095 +321120 +321121 +321122 +321123 +321124 +321125 +321126 +321127 +321152 +321153 +321154 +321155 +321156 +321157 +321158 +321159 +321184 +321185 +321186 +321187 +321188 +321189 +321190 +321191 +321216 +321217 +321218 +321219 +321220 +321221 +321222 +321223 +321248 +321249 +321250 +321251 +321252 +321253 +321254 +321255 +321280 +321281 +321282 +321283 +321284 +321285 +321286 +321287 +321312 +321313 +321314 +321315 +321316 +321317 +321318 +321319 +321344 +321345 +321346 +321347 +321348 +321349 +321350 +321351 +321376 +321377 +321378 +321379 +321380 +321381 +321382 +321383 +321408 +321409 +321410 +321411 +321412 +321413 +321414 +321415 +321440 +321441 +321442 +321443 +321444 +321445 +321446 +321447 +321472 +321473 +321474 +321475 +321476 +321477 +321478 +321479 +321504 +321505 +321506 +321507 +321508 +321509 +321510 +321511 +321536 +321537 +321538 +321539 +321540 +321541 +321542 +321543 +321568 +321569 +321570 +321571 +321572 +321573 +321574 +321575 +321600 +321601 +321602 +321603 +321604 +321605 +321606 +321607 +321632 +321633 +321634 +321635 +321636 +321637 +321638 +321639 +321664 +321665 +321666 +321667 +321668 +321669 +321670 +321671 +321696 +321697 +321698 +321699 +321700 +321701 +321702 +321703 +321728 +321729 +321730 +321731 +321732 +321733 +321734 +321735 +321760 +321761 +321762 +321763 +321764 +321765 +321766 +321767 +321792 +321793 +321794 +321795 +321796 +321797 +321798 +321799 +321824 +321825 +321826 +321827 +321828 +321829 +321830 +321831 +321856 +321857 +321858 +321859 +321860 +321861 +321862 +321863 +321888 +321889 +321890 +321891 +321892 +321893 +321894 +321895 +321920 +321921 +321922 +321923 +321924 +321925 +321926 +321927 +321952 +321953 +321954 +321955 +321956 +321957 +321958 +321959 +321984 +321985 +321986 +321987 +321988 +321989 +321990 +321991 +322016 +322017 +322018 +322019 +322020 +322021 +322022 +322023 +322048 +322049 +322050 +322051 +322052 +322053 +322054 +322055 +322080 +322081 +322082 +322083 +322084 +322085 +322086 +322087 +322112 +322113 +322114 +322115 +322116 +322117 +322118 +322119 +322144 +322145 +322146 +322147 +322148 +322149 +322150 +322151 +322176 +322177 +322178 +322179 +322180 +322181 +322182 +322183 +322208 +322209 +322210 +322211 +322212 +322213 +322214 +322215 +322240 +322241 +322242 +322243 +322244 +322245 +322246 +322247 +322272 +322273 +322274 +322275 +322276 +322277 +322278 +322279 +322304 +322305 +322306 +322307 +322308 +322309 +322310 +322311 +322336 +322337 +322338 +322339 +322340 +322341 +322342 +322343 +322368 +322369 +322370 +322371 +322372 +322373 +322374 +322375 +322400 +322401 +322402 +322403 +322404 +322405 +322406 +322407 +322432 +322433 +322434 +322435 +322436 +322437 +322438 +322439 +322464 +322465 +322466 +322467 +322468 +322469 +322470 +322471 +322496 +322497 +322498 +322499 +322500 +322501 +322502 +322503 +322528 +322529 +322530 +322531 +322532 +322533 +322534 +322535 +322560 +322561 +322562 +322563 +322564 +322565 +322566 +322567 +322592 +322593 +322594 +322595 +322596 +322597 +322598 +322599 +322624 +322625 +322626 +322627 +322628 +322629 +322630 +322631 +322656 +322657 +322658 +322659 +322660 +322661 +322662 +322663 +322688 +322689 +322690 +322691 +322692 +322693 +322694 +322695 +322720 +322721 +322722 +322723 +322724 +322725 +322726 +322727 +322752 +322753 +322754 +322755 +322756 +322757 +322758 +322759 +322784 +322785 +322786 +322787 +322788 +322789 +322790 +322791 +322816 +322817 +322818 +322819 +322820 +322821 +322822 +322823 +322848 +322849 +322850 +322851 +322852 +322853 +322854 +322855 +322880 +322881 +322882 +322883 +322884 +322885 +322886 +322887 +322912 +322913 +322914 +322915 +322916 +322917 +322918 +322919 +322944 +322945 +322946 +322947 +322948 +322949 +322950 +322951 +322976 +322977 +322978 +322979 +322980 +322981 +322982 +322983 +323008 +323009 +323010 +323011 +323012 +323013 +323014 +323015 +323040 +323041 +323042 +323043 +323044 +323045 +323046 +323047 +323072 +323073 +323074 +323075 +323076 +323077 +323078 +323079 +323104 +323105 +323106 +323107 +323108 +323109 +323110 +323111 +323136 +323137 +323138 +323139 +323140 +323141 +323142 +323143 +323168 +323169 +323170 +323171 +323172 +323173 +323174 +323175 +323200 +323201 +323202 +323203 +323204 +323205 +323206 +323207 +323232 +323233 +323234 +323235 +323236 +323237 +323238 +323239 +323264 +323265 +323266 +323267 +323268 +323269 +323270 +323271 +323296 +323297 +323298 +323299 +323300 +323301 +323302 +323303 +323328 +323329 +323330 +323331 +323332 +323333 +323334 +323335 +323360 +323361 +323362 +323363 +323364 +323365 +323366 +323367 +323392 +323393 +323394 +323395 +323396 +323397 +323398 +323399 +323424 +323425 +323426 +323427 +323428 +323429 +323430 +323431 +323456 +323457 +323458 +323459 +323460 +323461 +323462 +323463 +323488 +323489 +323490 +323491 +323492 +323493 +323494 +323495 +323520 +323521 +323522 +323523 +323524 +323525 +323526 +323527 +323552 +323553 +323554 +323555 +323556 +323557 +323558 +323559 +323584 +323585 +323586 +323587 +323588 +323589 +323590 +323591 +323616 +323617 +323618 +323619 +323620 +323621 +323622 +323623 +323648 +323649 +323650 +323651 +323652 +323653 +323654 +323655 +323680 +323681 +323682 +323683 +323684 +323685 +323686 +323687 +323712 +323713 +323714 +323715 +323716 +323717 +323718 +323719 +323744 +323745 +323746 +323747 +323748 +323749 +323750 +323751 +323776 +323777 +323778 +323779 +323780 +323781 +323782 +323783 +323808 +323809 +323810 +323811 +323812 +323813 +323814 +323815 +323840 +323841 +323842 +323843 +323844 +323845 +323846 +323847 +323872 +323873 +323874 +323875 +323876 +323877 +323878 +323879 +323904 +323905 +323906 +323907 +323908 +323909 +323910 +323911 +323936 +323937 +323938 +323939 +323940 +323941 +323942 +323943 +323968 +323969 +323970 +323971 +323972 +323973 +323974 +323975 +324000 +324001 +324002 +324003 +324004 +324005 +324006 +324007 +324032 +324033 +324034 +324035 +324036 +324037 +324038 +324039 +324064 +324065 +324066 +324067 +324068 +324069 +324070 +324071 +324096 +324097 +324098 +324099 +324100 +324101 +324102 +324103 +324128 +324129 +324130 +324131 +324132 +324133 +324134 +324135 +324160 +324161 +324162 +324163 +324164 +324165 +324166 +324167 +324192 +324193 +324194 +324195 +324196 +324197 +324198 +324199 +324224 +324225 +324226 +324227 +324228 +324229 +324230 +324231 +324256 +324257 +324258 +324259 +324260 +324261 +324262 +324263 +324288 +324289 +324290 +324291 +324292 +324293 +324294 +324295 +324320 +324321 +324322 +324323 +324324 +324325 +324326 +324327 +324352 +324353 +324354 +324355 +324356 +324357 +324358 +324359 +324384 +324385 +324386 +324387 +324388 +324389 +324390 +324391 +324416 +324417 +324418 +324419 +324420 +324421 +324422 +324423 +324448 +324449 +324450 +324451 +324452 +324453 +324454 +324455 +324480 +324481 +324482 +324483 +324484 +324485 +324486 +324487 +324512 +324513 +324514 +324515 +324516 +324517 +324518 +324519 +324544 +324545 +324546 +324547 +324548 +324549 +324550 +324551 +324576 +324577 +324578 +324579 +324580 +324581 +324582 +324583 +324608 +324609 +324610 +324611 +324612 +324613 +324614 +324615 +324640 +324641 +324642 +324643 +324644 +324645 +324646 +324647 +324672 +324673 +324674 +324675 +324676 +324677 +324678 +324679 +324704 +324705 +324706 +324707 +324708 +324709 +324710 +324711 +324736 +324737 +324738 +324739 +324740 +324741 +324742 +324743 +324768 +324769 +324770 +324771 +324772 +324773 +324774 +324775 +324800 +324801 +324802 +324803 +324804 +324805 +324806 +324807 +324832 +324833 +324834 +324835 +324836 +324837 +324838 +324839 +324864 +324865 +324866 +324867 +324868 +324869 +324870 +324871 +324896 +324897 +324898 +324899 +324900 +324901 +324902 +324903 +324928 +324929 +324930 +324931 +324932 +324933 +324934 +324935 +324960 +324961 +324962 +324963 +324964 +324965 +324966 +324967 +324992 +324993 +324994 +324995 +324996 +324997 +324998 +324999 +325024 +325025 +325026 +325027 +325028 +325029 +325030 +325031 +325056 +325057 +325058 +325059 +325060 +325061 +325062 +325063 +325088 +325089 +325090 +325091 +325092 +325093 +325094 +325095 +325120 +325121 +325122 +325123 +325124 +325125 +325126 +325127 +325152 +325153 +325154 +325155 +325156 +325157 +325158 +325159 +325184 +325185 +325186 +325187 +325188 +325189 +325190 +325191 +325216 +325217 +325218 +325219 +325220 +325221 +325222 +325223 +325248 +325249 +325250 +325251 +325252 +325253 +325254 +325255 +325280 +325281 +325282 +325283 +325284 +325285 +325286 +325287 +325312 +325313 +325314 +325315 +325316 +325317 +325318 +325319 +325344 +325345 +325346 +325347 +325348 +325349 +325350 +325351 +325376 +325377 +325378 +325379 +325380 +325381 +325382 +325383 +325408 +325409 +325410 +325411 +325412 +325413 +325414 +325415 +325440 +325441 +325442 +325443 +325444 +325445 +325446 +325447 +325472 +325473 +325474 +325475 +325476 +325477 +325478 +325479 +325504 +325505 +325506 +325507 +325508 +325509 +325510 +325511 +325536 +325537 +325538 +325539 +325540 +325541 +325542 +325543 +325568 +325569 +325570 +325571 +325572 +325573 +325574 +325575 +325600 +325601 +325602 +325603 +325604 +325605 +325606 +325607 +325632 +325633 +325634 +325635 +325636 +325637 +325638 +325639 +325664 +325665 +325666 +325667 +325668 +325669 +325670 +325671 +325696 +325697 +325698 +325699 +325700 +325701 +325702 +325703 +325728 +325729 +325730 +325731 +325732 +325733 +325734 +325735 +325760 +325761 +325762 +325763 +325764 +325765 +325766 +325767 +325792 +325793 +325794 +325795 +325796 +325797 +325798 +325799 +325824 +325825 +325826 +325827 +325828 +325829 +325830 +325831 +325856 +325857 +325858 +325859 +325860 +325861 +325862 +325863 +325888 +325889 +325890 +325891 +325892 +325893 +325894 +325895 +325920 +325921 +325922 +325923 +325924 +325925 +325926 +325927 +325952 +325953 +325954 +325955 +325956 +325957 +325958 +325959 +325984 +325985 +325986 +325987 +325988 +325989 +325990 +325991 +326016 +326017 +326018 +326019 +326020 +326021 +326022 +326023 +326048 +326049 +326050 +326051 +326052 +326053 +326054 +326055 +326080 +326081 +326082 +326083 +326084 +326085 +326086 +326087 +326112 +326113 +326114 +326115 +326116 +326117 +326118 +326119 +326144 +326145 +326146 +326147 +326148 +326149 +326150 +326151 +326176 +326177 +326178 +326179 +326180 +326181 +326182 +326183 +326208 +326209 +326210 +326211 +326212 +326213 +326214 +326215 +326240 +326241 +326242 +326243 +326244 +326245 +326246 +326247 +326272 +326273 +326274 +326275 +326276 +326277 +326278 +326279 +326304 +326305 +326306 +326307 +326308 +326309 +326310 +326311 +326336 +326337 +326338 +326339 +326340 +326341 +326342 +326343 +326368 +326369 +326370 +326371 +326372 +326373 +326374 +326375 +326400 +326401 +326402 +326403 +326404 +326405 +326406 +326407 +326432 +326433 +326434 +326435 +326436 +326437 +326438 +326439 +326464 +326465 +326466 +326467 +326468 +326469 +326470 +326471 +326496 +326497 +326498 +326499 +326500 +326501 +326502 +326503 +326528 +326529 +326530 +326531 +326532 +326533 +326534 +326535 +326560 +326561 +326562 +326563 +326564 +326565 +326566 +326567 +326592 +326593 +326594 +326595 +326596 +326597 +326598 +326599 +326624 +326625 +326626 +326627 +326628 +326629 +326630 +326631 +326656 +326657 +326658 +326659 +326660 +326661 +326662 +326663 +326688 +326689 +326690 +326691 +326692 +326693 +326694 +326695 +326720 +326721 +326722 +326723 +326724 +326725 +326726 +326727 +326752 +326753 +326754 +326755 +326756 +326757 +326758 +326759 +326784 +326785 +326786 +326787 +326788 +326789 +326790 +326791 +326816 +326817 +326818 +326819 +326820 +326821 +326822 +326823 +326848 +326849 +326850 +326851 +326852 +326853 +326854 +326855 +326880 +326881 +326882 +326883 +326884 +326885 +326886 +326887 +326912 +326913 +326914 +326915 +326916 +326917 +326918 +326919 +326944 +326945 +326946 +326947 +326948 +326949 +326950 +326951 +326976 +326977 +326978 +326979 +326980 +326981 +326982 +326983 +327008 +327009 +327010 +327011 +327012 +327013 +327014 +327015 +327040 +327041 +327042 +327043 +327044 +327045 +327046 +327047 +327072 +327073 +327074 +327075 +327076 +327077 +327078 +327079 +327104 +327105 +327106 +327107 +327108 +327109 +327110 +327111 +327136 +327137 +327138 +327139 +327140 +327141 +327142 +327143 +327168 +327169 +327170 +327171 +327172 +327173 +327174 +327175 +327200 +327201 +327202 +327203 +327204 +327205 +327206 +327207 +327232 +327233 +327234 +327235 +327236 +327237 +327238 +327239 +327264 +327265 +327266 +327267 +327268 +327269 +327270 +327271 +327296 +327297 +327298 +327299 +327300 +327301 +327302 +327303 +327328 +327329 +327330 +327331 +327332 +327333 +327334 +327335 +327360 +327361 +327362 +327363 +327364 +327365 +327366 +327367 +327392 +327393 +327394 +327395 +327396 +327397 +327398 +327399 +327424 +327425 +327426 +327427 +327428 +327429 +327430 +327431 +327456 +327457 +327458 +327459 +327460 +327461 +327462 +327463 +327488 +327489 +327490 +327491 +327492 +327493 +327494 +327495 +327520 +327521 +327522 +327523 +327524 +327525 +327526 +327527 +327552 +327553 +327554 +327555 +327556 +327557 +327558 +327559 +327584 +327585 +327586 +327587 +327588 +327589 +327590 +327591 +327616 +327617 +327618 +327619 +327620 +327621 +327622 +327623 +327648 +327649 +327650 +327651 +327652 +327653 +327654 +327655 +327680 +327681 +327682 +327683 +327684 +327685 +327686 +327687 +327712 +327713 +327714 +327715 +327716 +327717 +327718 +327719 +327744 +327745 +327746 +327747 +327748 +327749 +327750 +327751 +327776 +327777 +327778 +327779 +327780 +327781 +327782 +327783 +327808 +327809 +327810 +327811 +327812 +327813 +327814 +327815 +327840 +327841 +327842 +327843 +327844 +327845 +327846 +327847 +327872 +327873 +327874 +327875 +327876 +327877 +327878 +327879 +327904 +327905 +327906 +327907 +327908 +327909 +327910 +327911 +327936 +327937 +327938 +327939 +327940 +327941 +327942 +327943 +327968 +327969 +327970 +327971 +327972 +327973 +327974 +327975 +328000 +328001 +328002 +328003 +328004 +328005 +328006 +328007 +328032 +328033 +328034 +328035 +328036 +328037 +328038 +328039 +328064 +328065 +328066 +328067 +328068 +328069 +328070 +328071 +328096 +328097 +328098 +328099 +328100 +328101 +328102 +328103 +328128 +328129 +328130 +328131 +328132 +328133 +328134 +328135 +328160 +328161 +328162 +328163 +328164 +328165 +328166 +328167 +328192 +328193 +328194 +328195 +328196 +328197 +328198 +328199 +328224 +328225 +328226 +328227 +328228 +328229 +328230 +328231 +328256 +328257 +328258 +328259 +328260 +328261 +328262 +328263 +328288 +328289 +328290 +328291 +328292 +328293 +328294 +328295 +328320 +328321 +328322 +328323 +328324 +328325 +328326 +328327 +328352 +328353 +328354 +328355 +328356 +328357 +328358 +328359 +328384 +328385 +328386 +328387 +328388 +328389 +328390 +328391 +328416 +328417 +328418 +328419 +328420 +328421 +328422 +328423 +328448 +328449 +328450 +328451 +328452 +328453 +328454 +328455 +328480 +328481 +328482 +328483 +328484 +328485 +328486 +328487 +328512 +328513 +328514 +328515 +328516 +328517 +328518 +328519 +328544 +328545 +328546 +328547 +328548 +328549 +328550 +328551 +328576 +328577 +328578 +328579 +328580 +328581 +328582 +328583 +328608 +328609 +328610 +328611 +328612 +328613 +328614 +328615 +328640 +328641 +328642 +328643 +328644 +328645 +328646 +328647 +328672 +328673 +328674 +328675 +328676 +328677 +328678 +328679 +328704 +328705 +328706 +328707 +328708 +328709 +328710 +328711 +328736 +328737 +328738 +328739 +328740 +328741 +328742 +328743 +328768 +328769 +328770 +328771 +328772 +328773 +328774 +328775 +328800 +328801 +328802 +328803 +328804 +328805 +328806 +328807 +328832 +328833 +328834 +328835 +328836 +328837 +328838 +328839 +328864 +328865 +328866 +328867 +328868 +328869 +328870 +328871 +328896 +328897 +328898 +328899 +328900 +328901 +328902 +328903 +328928 +328929 +328930 +328931 +328932 +328933 +328934 +328935 +328960 +328961 +328962 +328963 +328964 +328965 +328966 +328967 +328992 +328993 +328994 +328995 +328996 +328997 +328998 +328999 +329024 +329025 +329026 +329027 +329028 +329029 +329030 +329031 +329056 +329057 +329058 +329059 +329060 +329061 +329062 +329063 +329088 +329089 +329090 +329091 +329092 +329093 +329094 +329095 +329120 +329121 +329122 +329123 +329124 +329125 +329126 +329127 +329152 +329153 +329154 +329155 +329156 +329157 +329158 +329159 +329184 +329185 +329186 +329187 +329188 +329189 +329190 +329191 +329216 +329217 +329218 +329219 +329220 +329221 +329222 +329223 +329248 +329249 +329250 +329251 +329252 +329253 +329254 +329255 +329280 +329281 +329282 +329283 +329284 +329285 +329286 +329287 +329312 +329313 +329314 +329315 +329316 +329317 +329318 +329319 +329344 +329345 +329346 +329347 +329348 +329349 +329350 +329351 +329376 +329377 +329378 +329379 +329380 +329381 +329382 +329383 +329408 +329409 +329410 +329411 +329412 +329413 +329414 +329415 +329440 +329441 +329442 +329443 +329444 +329445 +329446 +329447 +329472 +329473 +329474 +329475 +329476 +329477 +329478 +329479 +329504 +329505 +329506 +329507 +329508 +329509 +329510 +329511 +329536 +329537 +329538 +329539 +329540 +329541 +329542 +329543 +329568 +329569 +329570 +329571 +329572 +329573 +329574 +329575 +329600 +329601 +329602 +329603 +329604 +329605 +329606 +329607 +329632 +329633 +329634 +329635 +329636 +329637 +329638 +329639 +329664 +329665 +329666 +329667 +329668 +329669 +329670 +329671 +329696 +329697 +329698 +329699 +329700 +329701 +329702 +329703 +329728 +329729 +329730 +329731 +329732 +329733 +329734 +329735 +329760 +329761 +329762 +329763 +329764 +329765 +329766 +329767 +329792 +329793 +329794 +329795 +329796 +329797 +329798 +329799 +329824 +329825 +329826 +329827 +329828 +329829 +329830 +329831 +329856 +329857 +329858 +329859 +329860 +329861 +329862 +329863 +329888 +329889 +329890 +329891 +329892 +329893 +329894 +329895 +329920 +329921 +329922 +329923 +329924 +329925 +329926 +329927 +329952 +329953 +329954 +329955 +329956 +329957 +329958 +329959 +329984 +329985 +329986 +329987 +329988 +329989 +329990 +329991 +330016 +330017 +330018 +330019 +330020 +330021 +330022 +330023 +330048 +330049 +330050 +330051 +330052 +330053 +330054 +330055 +330080 +330081 +330082 +330083 +330084 +330085 +330086 +330087 +330112 +330113 +330114 +330115 +330116 +330117 +330118 +330119 +330144 +330145 +330146 +330147 +330148 +330149 +330150 +330151 +330176 +330177 +330178 +330179 +330180 +330181 +330182 +330183 +330208 +330209 +330210 +330211 +330212 +330213 +330214 +330215 +330240 +330241 +330242 +330243 +330244 +330245 +330246 +330247 +330272 +330273 +330274 +330275 +330276 +330277 +330278 +330279 +330304 +330305 +330306 +330307 +330308 +330309 +330310 +330311 +330336 +330337 +330338 +330339 +330340 +330341 +330342 +330343 +330368 +330369 +330370 +330371 +330372 +330373 +330374 +330375 +330400 +330401 +330402 +330403 +330404 +330405 +330406 +330407 +330432 +330433 +330434 +330435 +330436 +330437 +330438 +330439 +330464 +330465 +330466 +330467 +330468 +330469 +330470 +330471 +330496 +330497 +330498 +330499 +330500 +330501 +330502 +330503 +330528 +330529 +330530 +330531 +330532 +330533 +330534 +330535 +330560 +330561 +330562 +330563 +330564 +330565 +330566 +330567 +330592 +330593 +330594 +330595 +330596 +330597 +330598 +330599 +330624 +330625 +330626 +330627 +330628 +330629 +330630 +330631 +330656 +330657 +330658 +330659 +330660 +330661 +330662 +330663 +330688 +330689 +330690 +330691 +330692 +330693 +330694 +330695 +330720 +330721 +330722 +330723 +330724 +330725 +330726 +330727 +330752 +330753 +330754 +330755 +330756 +330757 +330758 +330759 +330784 +330785 +330786 +330787 +330788 +330789 +330790 +330791 +330816 +330817 +330818 +330819 +330820 +330821 +330822 +330823 +330848 +330849 +330850 +330851 +330852 +330853 +330854 +330855 +330880 +330881 +330882 +330883 +330884 +330885 +330886 +330887 +330912 +330913 +330914 +330915 +330916 +330917 +330918 +330919 +330944 +330945 +330946 +330947 +330948 +330949 +330950 +330951 +330976 +330977 +330978 +330979 +330980 +330981 +330982 +330983 +331008 +331009 +331010 +331011 +331012 +331013 +331014 +331015 +331040 +331041 +331042 +331043 +331044 +331045 +331046 +331047 +331072 +331073 +331074 +331075 +331076 +331077 +331078 +331079 +331104 +331105 +331106 +331107 +331108 +331109 +331110 +331111 +331136 +331137 +331138 +331139 +331140 +331141 +331142 +331143 +331168 +331169 +331170 +331171 +331172 +331173 +331174 +331175 +331200 +331201 +331202 +331203 +331204 +331205 +331206 +331207 +331232 +331233 +331234 +331235 +331236 +331237 +331238 +331239 +331264 +331265 +331266 +331267 +331268 +331269 +331270 +331271 +331296 +331297 +331298 +331299 +331300 +331301 +331302 +331303 +331328 +331329 +331330 +331331 +331332 +331333 +331334 +331335 +331360 +331361 +331362 +331363 +331364 +331365 +331366 +331367 +331392 +331393 +331394 +331395 +331396 +331397 +331398 +331399 +331424 +331425 +331426 +331427 +331428 +331429 +331430 +331431 +331456 +331457 +331458 +331459 +331460 +331461 +331462 +331463 +331488 +331489 +331490 +331491 +331492 +331493 +331494 +331495 +331520 +331521 +331522 +331523 +331524 +331525 +331526 +331527 +331552 +331553 +331554 +331555 +331556 +331557 +331558 +331559 +331584 +331585 +331586 +331587 +331588 +331589 +331590 +331591 +331616 +331617 +331618 +331619 +331620 +331621 +331622 +331623 +331648 +331649 +331650 +331651 +331652 +331653 +331654 +331655 +331680 +331681 +331682 +331683 +331684 +331685 +331686 +331687 +331712 +331713 +331714 +331715 +331716 +331717 +331718 +331719 +331744 +331745 +331746 +331747 +331748 +331749 +331750 +331751 +331776 +331777 +331778 +331779 +331780 +331781 +331782 +331783 +331808 +331809 +331810 +331811 +331812 +331813 +331814 +331815 +331840 +331841 +331842 +331843 +331844 +331845 +331846 +331847 +331872 +331873 +331874 +331875 +331876 +331877 +331878 +331879 +331904 +331905 +331906 +331907 +331908 +331909 +331910 +331911 +331936 +331937 +331938 +331939 +331940 +331941 +331942 +331943 +331968 +331969 +331970 +331971 +331972 +331973 +331974 +331975 +332000 +332001 +332002 +332003 +332004 +332005 +332006 +332007 +332032 +332033 +332034 +332035 +332036 +332037 +332038 +332039 +332064 +332065 +332066 +332067 +332068 +332069 +332070 +332071 +332096 +332097 +332098 +332099 +332100 +332101 +332102 +332103 +332128 +332129 +332130 +332131 +332132 +332133 +332134 +332135 +332160 +332161 +332162 +332163 +332164 +332165 +332166 +332167 +332192 +332193 +332194 +332195 +332196 +332197 +332198 +332199 +332224 +332225 +332226 +332227 +332228 +332229 +332230 +332231 +332256 +332257 +332258 +332259 +332260 +332261 +332262 +332263 +332288 +332289 +332290 +332291 +332292 +332293 +332294 +332295 +332320 +332321 +332322 +332323 +332324 +332325 +332326 +332327 +332352 +332353 +332354 +332355 +332356 +332357 +332358 +332359 +332384 +332385 +332386 +332387 +332388 +332389 +332390 +332391 +332416 +332417 +332418 +332419 +332420 +332421 +332422 +332423 +332448 +332449 +332450 +332451 +332452 +332453 +332454 +332455 +332480 +332481 +332482 +332483 +332484 +332485 +332486 +332487 +332512 +332513 +332514 +332515 +332516 +332517 +332518 +332519 +332544 +332545 +332546 +332547 +332548 +332549 +332550 +332551 +332576 +332577 +332578 +332579 +332580 +332581 +332582 +332583 +332608 +332609 +332610 +332611 +332612 +332613 +332614 +332615 +332640 +332641 +332642 +332643 +332644 +332645 +332646 +332647 +332672 +332673 +332674 +332675 +332676 +332677 +332678 +332679 +332704 +332705 +332706 +332707 +332708 +332709 +332710 +332711 +332736 +332737 +332738 +332739 +332740 +332741 +332742 +332743 +332768 +332769 +332770 +332771 +332772 +332773 +332774 +332775 +332800 +332801 +332802 +332803 +332804 +332805 +332806 +332807 +332832 +332833 +332834 +332835 +332836 +332837 +332838 +332839 +332864 +332865 +332866 +332867 +332868 +332869 +332870 +332871 +332896 +332897 +332898 +332899 +332900 +332901 +332902 +332903 +332928 +332929 +332930 +332931 +332932 +332933 +332934 +332935 +332960 +332961 +332962 +332963 +332964 +332965 +332966 +332967 +332992 +332993 +332994 +332995 +332996 +332997 +332998 +332999 +333024 +333025 +333026 +333027 +333028 +333029 +333030 +333031 +333056 +333057 +333058 +333059 +333060 +333061 +333062 +333063 +333088 +333089 +333090 +333091 +333092 +333093 +333094 +333095 +333120 +333121 +333122 +333123 +333124 +333125 +333126 +333127 +333152 +333153 +333154 +333155 +333156 +333157 +333158 +333159 +333184 +333185 +333186 +333187 +333188 +333189 +333190 +333191 +333216 +333217 +333218 +333219 +333220 +333221 +333222 +333223 +333248 +333249 +333250 +333251 +333252 +333253 +333254 +333255 +333280 +333281 +333282 +333283 +333284 +333285 +333286 +333287 +333312 +333313 +333314 +333315 +333316 +333317 +333318 +333319 +333344 +333345 +333346 +333347 +333348 +333349 +333350 +333351 +333376 +333377 +333378 +333379 +333380 +333381 +333382 +333383 +333408 +333409 +333410 +333411 +333412 +333413 +333414 +333415 +333440 +333441 +333442 +333443 +333444 +333445 +333446 +333447 +333472 +333473 +333474 +333475 +333476 +333477 +333478 +333479 +333504 +333505 +333506 +333507 +333508 +333509 +333510 +333511 +333536 +333537 +333538 +333539 +333540 +333541 +333542 +333543 +333568 +333569 +333570 +333571 +333572 +333573 +333574 +333575 +333600 +333601 +333602 +333603 +333604 +333605 +333606 +333607 +333632 +333633 +333634 +333635 +333636 +333637 +333638 +333639 +333664 +333665 +333666 +333667 +333668 +333669 +333670 +333671 +333696 +333697 +333698 +333699 +333700 +333701 +333702 +333703 +333728 +333729 +333730 +333731 +333732 +333733 +333734 +333735 +333760 +333761 +333762 +333763 +333764 +333765 +333766 +333767 +333792 +333793 +333794 +333795 +333796 +333797 +333798 +333799 +333824 +333825 +333826 +333827 +333828 +333829 +333830 +333831 +333856 +333857 +333858 +333859 +333860 +333861 +333862 +333863 +333888 +333889 +333890 +333891 +333892 +333893 +333894 +333895 +333920 +333921 +333922 +333923 +333924 +333925 +333926 +333927 +333952 +333953 +333954 +333955 +333956 +333957 +333958 +333959 +333984 +333985 +333986 +333987 +333988 +333989 +333990 +333991 +334016 +334017 +334018 +334019 +334020 +334021 +334022 +334023 +334048 +334049 +334050 +334051 +334052 +334053 +334054 +334055 +334080 +334081 +334082 +334083 +334084 +334085 +334086 +334087 +334112 +334113 +334114 +334115 +334116 +334117 +334118 +334119 +334144 +334145 +334146 +334147 +334148 +334149 +334150 +334151 +334176 +334177 +334178 +334179 +334180 +334181 +334182 +334183 +334208 +334209 +334210 +334211 +334212 +334213 +334214 +334215 +334240 +334241 +334242 +334243 +334244 +334245 +334246 +334247 +334272 +334273 +334274 +334275 +334276 +334277 +334278 +334279 +334304 +334305 +334306 +334307 +334308 +334309 +334310 +334311 +334336 +334337 +334338 +334339 +334340 +334341 +334342 +334343 +334368 +334369 +334370 +334371 +334372 +334373 +334374 +334375 +334400 +334401 +334402 +334403 +334404 +334405 +334406 +334407 +334432 +334433 +334434 +334435 +334436 +334437 +334438 +334439 +334464 +334465 +334466 +334467 +334468 +334469 +334470 +334471 +334496 +334497 +334498 +334499 +334500 +334501 +334502 +334503 +334528 +334529 +334530 +334531 +334532 +334533 +334534 +334535 +334560 +334561 +334562 +334563 +334564 +334565 +334566 +334567 +334592 +334593 +334594 +334595 +334596 +334597 +334598 +334599 +334624 +334625 +334626 +334627 +334628 +334629 +334630 +334631 +334656 +334657 +334658 +334659 +334660 +334661 +334662 +334663 +334688 +334689 +334690 +334691 +334692 +334693 +334694 +334695 +334720 +334721 +334722 +334723 +334724 +334725 +334726 +334727 +334752 +334753 +334754 +334755 +334756 +334757 +334758 +334759 +334784 +334785 +334786 +334787 +334788 +334789 +334790 +334791 +334816 +334817 +334818 +334819 +334820 +334821 +334822 +334823 +334848 +334849 +334850 +334851 +334852 +334853 +334854 +334855 +334880 +334881 +334882 +334883 +334884 +334885 +334886 +334887 +334912 +334913 +334914 +334915 +334916 +334917 +334918 +334919 +334944 +334945 +334946 +334947 +334948 +334949 +334950 +334951 +334976 +334977 +334978 +334979 +334980 +334981 +334982 +334983 +335008 +335009 +335010 +335011 +335012 +335013 +335014 +335015 +335040 +335041 +335042 +335043 +335044 +335045 +335046 +335047 +335072 +335073 +335074 +335075 +335076 +335077 +335078 +335079 +335104 +335105 +335106 +335107 +335108 +335109 +335110 +335111 +335136 +335137 +335138 +335139 +335140 +335141 +335142 +335143 +335168 +335169 +335170 +335171 +335172 +335173 +335174 +335175 +335200 +335201 +335202 +335203 +335204 +335205 +335206 +335207 +335232 +335233 +335234 +335235 +335236 +335237 +335238 +335239 +335264 +335265 +335266 +335267 +335268 +335269 +335270 +335271 +335296 +335297 +335298 +335299 +335300 +335301 +335302 +335303 +335328 +335329 +335330 +335331 +335332 +335333 +335334 +335335 +335360 +335361 +335362 +335363 +335364 +335365 +335366 +335367 +335392 +335393 +335394 +335395 +335396 +335397 +335398 +335399 +335424 +335425 +335426 +335427 +335428 +335429 +335430 +335431 +335456 +335457 +335458 +335459 +335460 +335461 +335462 +335463 +335488 +335489 +335490 +335491 +335492 +335493 +335494 +335495 +335520 +335521 +335522 +335523 +335524 +335525 +335526 +335527 +335552 +335553 +335554 +335555 +335556 +335557 +335558 +335559 +335584 +335585 +335586 +335587 +335588 +335589 +335590 +335591 +335616 +335617 +335618 +335619 +335620 +335621 +335622 +335623 +335648 +335649 +335650 +335651 +335652 +335653 +335654 +335655 +335680 +335681 +335682 +335683 +335684 +335685 +335686 +335687 +335712 +335713 +335714 +335715 +335716 +335717 +335718 +335719 +335744 +335745 +335746 +335747 +335748 +335749 +335750 +335751 +335776 +335777 +335778 +335779 +335780 +335781 +335782 +335783 +335808 +335809 +335810 +335811 +335812 +335813 +335814 +335815 +335840 +335841 +335842 +335843 +335844 +335845 +335846 +335847 +335872 +335873 +335874 +335875 +335876 +335877 +335878 +335879 +335904 +335905 +335906 +335907 +335908 +335909 +335910 +335911 +335936 +335937 +335938 +335939 +335940 +335941 +335942 +335943 +335968 +335969 +335970 +335971 +335972 +335973 +335974 +335975 +336000 +336001 +336002 +336003 +336004 +336005 +336006 +336007 +336032 +336033 +336034 +336035 +336036 +336037 +336038 +336039 +336064 +336065 +336066 +336067 +336068 +336069 +336070 +336071 +336096 +336097 +336098 +336099 +336100 +336101 +336102 +336103 +336128 +336129 +336130 +336131 +336132 +336133 +336134 +336135 +336160 +336161 +336162 +336163 +336164 +336165 +336166 +336167 +336192 +336193 +336194 +336195 +336196 +336197 +336198 +336199 +336224 +336225 +336226 +336227 +336228 +336229 +336230 +336231 +336256 +336257 +336258 +336259 +336260 +336261 +336262 +336263 +336288 +336289 +336290 +336291 +336292 +336293 +336294 +336295 +336320 +336321 +336322 +336323 +336324 +336325 +336326 +336327 +336352 +336353 +336354 +336355 +336356 +336357 +336358 +336359 +336384 +336385 +336386 +336387 +336388 +336389 +336390 +336391 +336416 +336417 +336418 +336419 +336420 +336421 +336422 +336423 +336448 +336449 +336450 +336451 +336452 +336453 +336454 +336455 +336480 +336481 +336482 +336483 +336484 +336485 +336486 +336487 +336512 +336513 +336514 +336515 +336516 +336517 +336518 +336519 +336544 +336545 +336546 +336547 +336548 +336549 +336550 +336551 +336576 +336577 +336578 +336579 +336580 +336581 +336582 +336583 +336608 +336609 +336610 +336611 +336612 +336613 +336614 +336615 +336640 +336641 +336642 +336643 +336644 +336645 +336646 +336647 +336672 +336673 +336674 +336675 +336676 +336677 +336678 +336679 +336704 +336705 +336706 +336707 +336708 +336709 +336710 +336711 +336736 +336737 +336738 +336739 +336740 +336741 +336742 +336743 +336768 +336769 +336770 +336771 +336772 +336773 +336774 +336775 +336800 +336801 +336802 +336803 +336804 +336805 +336806 +336807 +336832 +336833 +336834 +336835 +336836 +336837 +336838 +336839 +336864 +336865 +336866 +336867 +336868 +336869 +336870 +336871 +336896 +336897 +336898 +336899 +336900 +336901 +336902 +336903 +336928 +336929 +336930 +336931 +336932 +336933 +336934 +336935 +336960 +336961 +336962 +336963 +336964 +336965 +336966 +336967 +336992 +336993 +336994 +336995 +336996 +336997 +336998 +336999 +337024 +337025 +337026 +337027 +337028 +337029 +337030 +337031 +337056 +337057 +337058 +337059 +337060 +337061 +337062 +337063 +337088 +337089 +337090 +337091 +337092 +337093 +337094 +337095 +337120 +337121 +337122 +337123 +337124 +337125 +337126 +337127 +337152 +337153 +337154 +337155 +337156 +337157 +337158 +337159 +337184 +337185 +337186 +337187 +337188 +337189 +337190 +337191 +337216 +337217 +337218 +337219 +337220 +337221 +337222 +337223 +337248 +337249 +337250 +337251 +337252 +337253 +337254 +337255 +337280 +337281 +337282 +337283 +337284 +337285 +337286 +337287 +337312 +337313 +337314 +337315 +337316 +337317 +337318 +337319 +337344 +337345 +337346 +337347 +337348 +337349 +337350 +337351 +337376 +337377 +337378 +337379 +337380 +337381 +337382 +337383 +337408 +337409 +337410 +337411 +337412 +337413 +337414 +337415 +337440 +337441 +337442 +337443 +337444 +337445 +337446 +337447 +337472 +337473 +337474 +337475 +337476 +337477 +337478 +337479 +337504 +337505 +337506 +337507 +337508 +337509 +337510 +337511 +337536 +337537 +337538 +337539 +337540 +337541 +337542 +337543 +337568 +337569 +337570 +337571 +337572 +337573 +337574 +337575 +337600 +337601 +337602 +337603 +337604 +337605 +337606 +337607 +337632 +337633 +337634 +337635 +337636 +337637 +337638 +337639 +337664 +337665 +337666 +337667 +337668 +337669 +337670 +337671 +337696 +337697 +337698 +337699 +337700 +337701 +337702 +337703 +337728 +337729 +337730 +337731 +337732 +337733 +337734 +337735 +337760 +337761 +337762 +337763 +337764 +337765 +337766 +337767 +337792 +337793 +337794 +337795 +337796 +337797 +337798 +337799 +337824 +337825 +337826 +337827 +337828 +337829 +337830 +337831 +337856 +337857 +337858 +337859 +337860 +337861 +337862 +337863 +337888 +337889 +337890 +337891 +337892 +337893 +337894 +337895 +337920 +337921 +337922 +337923 +337924 +337925 +337926 +337927 +337952 +337953 +337954 +337955 +337956 +337957 +337958 +337959 +337984 +337985 +337986 +337987 +337988 +337989 +337990 +337991 +338016 +338017 +338018 +338019 +338020 +338021 +338022 +338023 +338048 +338049 +338050 +338051 +338052 +338053 +338054 +338055 +338080 +338081 +338082 +338083 +338084 +338085 +338086 +338087 +338112 +338113 +338114 +338115 +338116 +338117 +338118 +338119 +338144 +338145 +338146 +338147 +338148 +338149 +338150 +338151 +338176 +338177 +338178 +338179 +338180 +338181 +338182 +338183 +338208 +338209 +338210 +338211 +338212 +338213 +338214 +338215 +338240 +338241 +338242 +338243 +338244 +338245 +338246 +338247 +338272 +338273 +338274 +338275 +338276 +338277 +338278 +338279 +338304 +338305 +338306 +338307 +338308 +338309 +338310 +338311 +338336 +338337 +338338 +338339 +338340 +338341 +338342 +338343 +338368 +338369 +338370 +338371 +338372 +338373 +338374 +338375 +338400 +338401 +338402 +338403 +338404 +338405 +338406 +338407 +338432 +338433 +338434 +338435 +338436 +338437 +338438 +338439 +338464 +338465 +338466 +338467 +338468 +338469 +338470 +338471 +338496 +338497 +338498 +338499 +338500 +338501 +338502 +338503 +338528 +338529 +338530 +338531 +338532 +338533 +338534 +338535 +338560 +338561 +338562 +338563 +338564 +338565 +338566 +338567 +338592 +338593 +338594 +338595 +338596 +338597 +338598 +338599 +338624 +338625 +338626 +338627 +338628 +338629 +338630 +338631 +338656 +338657 +338658 +338659 +338660 +338661 +338662 +338663 +338688 +338689 +338690 +338691 +338692 +338693 +338694 +338695 +338720 +338721 +338722 +338723 +338724 +338725 +338726 +338727 +338752 +338753 +338754 +338755 +338756 +338757 +338758 +338759 +338784 +338785 +338786 +338787 +338788 +338789 +338790 +338791 +338816 +338817 +338818 +338819 +338820 +338821 +338822 +338823 +338848 +338849 +338850 +338851 +338852 +338853 +338854 +338855 +338880 +338881 +338882 +338883 +338884 +338885 +338886 +338887 +338912 +338913 +338914 +338915 +338916 +338917 +338918 +338919 +338944 +338945 +338946 +338947 +338948 +338949 +338950 +338951 +338976 +338977 +338978 +338979 +338980 +338981 +338982 +338983 +339008 +339009 +339010 +339011 +339012 +339013 +339014 +339015 +339040 +339041 +339042 +339043 +339044 +339045 +339046 +339047 +339072 +339073 +339074 +339075 +339076 +339077 +339078 +339079 +339104 +339105 +339106 +339107 +339108 +339109 +339110 +339111 +339136 +339137 +339138 +339139 +339140 +339141 +339142 +339143 +339168 +339169 +339170 +339171 +339172 +339173 +339174 +339175 +339200 +339201 +339202 +339203 +339204 +339205 +339206 +339207 +339232 +339233 +339234 +339235 +339236 +339237 +339238 +339239 +339264 +339265 +339266 +339267 +339268 +339269 +339270 +339271 +339296 +339297 +339298 +339299 +339300 +339301 +339302 +339303 +339328 +339329 +339330 +339331 +339332 +339333 +339334 +339335 +339360 +339361 +339362 +339363 +339364 +339365 +339366 +339367 +339392 +339393 +339394 +339395 +339396 +339397 +339398 +339399 +339424 +339425 +339426 +339427 +339428 +339429 +339430 +339431 +339456 +339457 +339458 +339459 +339460 +339461 +339462 +339463 +339488 +339489 +339490 +339491 +339492 +339493 +339494 +339495 +339520 +339521 +339522 +339523 +339524 +339525 +339526 +339527 +339552 +339553 +339554 +339555 +339556 +339557 +339558 +339559 +339584 +339585 +339586 +339587 +339588 +339589 +339590 +339591 +339616 +339617 +339618 +339619 +339620 +339621 +339622 +339623 +339648 +339649 +339650 +339651 +339652 +339653 +339654 +339655 +339680 +339681 +339682 +339683 +339684 +339685 +339686 +339687 +339712 +339713 +339714 +339715 +339716 +339717 +339718 +339719 +339744 +339745 +339746 +339747 +339748 +339749 +339750 +339751 +339776 +339777 +339778 +339779 +339780 +339781 +339782 +339783 +339808 +339809 +339810 +339811 +339812 +339813 +339814 +339815 +339840 +339841 +339842 +339843 +339844 +339845 +339846 +339847 +339872 +339873 +339874 +339875 +339876 +339877 +339878 +339879 +339904 +339905 +339906 +339907 +339908 +339909 +339910 +339911 +339936 +339937 +339938 +339939 +339940 +339941 +339942 +339943 +339968 +339969 +339970 +339971 +339972 +339973 +339974 +339975 +340000 +340001 +340002 +340003 +340004 +340005 +340006 +340007 +340032 +340033 +340034 +340035 +340036 +340037 +340038 +340039 +340064 +340065 +340066 +340067 +340068 +340069 +340070 +340071 +340096 +340097 +340098 +340099 +340100 +340101 +340102 +340103 +340128 +340129 +340130 +340131 +340132 +340133 +340134 +340135 +340160 +340161 +340162 +340163 +340164 +340165 +340166 +340167 +340192 +340193 +340194 +340195 +340196 +340197 +340198 +340199 +340224 +340225 +340226 +340227 +340228 +340229 +340230 +340231 +340256 +340257 +340258 +340259 +340260 +340261 +340262 +340263 +340288 +340289 +340290 +340291 +340292 +340293 +340294 +340295 +340320 +340321 +340322 +340323 +340324 +340325 +340326 +340327 +340352 +340353 +340354 +340355 +340356 +340357 +340358 +340359 +340384 +340385 +340386 +340387 +340388 +340389 +340390 +340391 +340416 +340417 +340418 +340419 +340420 +340421 +340422 +340423 +340448 +340449 +340450 +340451 +340452 +340453 +340454 +340455 +340480 +340481 +340482 +340483 +340484 +340485 +340486 +340487 +340512 +340513 +340514 +340515 +340516 +340517 +340518 +340519 +340544 +340545 +340546 +340547 +340548 +340549 +340550 +340551 +340576 +340577 +340578 +340579 +340580 +340581 +340582 +340583 +340608 +340609 +340610 +340611 +340612 +340613 +340614 +340615 +340640 +340641 +340642 +340643 +340644 +340645 +340646 +340647 +340672 +340673 +340674 +340675 +340676 +340677 +340678 +340679 +340704 +340705 +340706 +340707 +340708 +340709 +340710 +340711 +340736 +340737 +340738 +340739 +340740 +340741 +340742 +340743 +340768 +340769 +340770 +340771 +340772 +340773 +340774 +340775 +340800 +340801 +340802 +340803 +340804 +340805 +340806 +340807 +340832 +340833 +340834 +340835 +340836 +340837 +340838 +340839 +340864 +340865 +340866 +340867 +340868 +340869 +340870 +340871 +340896 +340897 +340898 +340899 +340900 +340901 +340902 +340903 +340928 +340929 +340930 +340931 +340932 +340933 +340934 +340935 +340960 +340961 +340962 +340963 +340964 +340965 +340966 +340967 +340992 +340993 +340994 +340995 +340996 +340997 +340998 +340999 +341024 +341025 +341026 +341027 +341028 +341029 +341030 +341031 +341056 +341057 +341058 +341059 +341060 +341061 +341062 +341063 +341088 +341089 +341090 +341091 +341092 +341093 +341094 +341095 +341120 +341121 +341122 +341123 +341124 +341125 +341126 +341127 +341152 +341153 +341154 +341155 +341156 +341157 +341158 +341159 +341184 +341185 +341186 +341187 +341188 +341189 +341190 +341191 +341216 +341217 +341218 +341219 +341220 +341221 +341222 +341223 +341248 +341249 +341250 +341251 +341252 +341253 +341254 +341255 +341280 +341281 +341282 +341283 +341284 +341285 +341286 +341287 +341312 +341313 +341314 +341315 +341316 +341317 +341318 +341319 +341344 +341345 +341346 +341347 +341348 +341349 +341350 +341351 +341376 +341377 +341378 +341379 +341380 +341381 +341382 +341383 +341408 +341409 +341410 +341411 +341412 +341413 +341414 +341415 +341440 +341441 +341442 +341443 +341444 +341445 +341446 +341447 +341472 +341473 +341474 +341475 +341476 +341477 +341478 +341479 +341504 +341505 +341506 +341507 +341508 +341509 +341510 +341511 +341536 +341537 +341538 +341539 +341540 +341541 +341542 +341543 +341568 +341569 +341570 +341571 +341572 +341573 +341574 +341575 +341600 +341601 +341602 +341603 +341604 +341605 +341606 +341607 +341632 +341633 +341634 +341635 +341636 +341637 +341638 +341639 +341664 +341665 +341666 +341667 +341668 +341669 +341670 +341671 +341696 +341697 +341698 +341699 +341700 +341701 +341702 +341703 +341728 +341729 +341730 +341731 +341732 +341733 +341734 +341735 +341760 +341761 +341762 +341763 +341764 +341765 +341766 +341767 +341792 +341793 +341794 +341795 +341796 +341797 +341798 +341799 +341824 +341825 +341826 +341827 +341828 +341829 +341830 +341831 +341856 +341857 +341858 +341859 +341860 +341861 +341862 +341863 +341888 +341889 +341890 +341891 +341892 +341893 +341894 +341895 +341920 +341921 +341922 +341923 +341924 +341925 +341926 +341927 +341952 +341953 +341954 +341955 +341956 +341957 +341958 +341959 +341984 +341985 +341986 +341987 +341988 +341989 +341990 +341991 +342016 +342017 +342018 +342019 +342020 +342021 +342022 +342023 +342048 +342049 +342050 +342051 +342052 +342053 +342054 +342055 +342080 +342081 +342082 +342083 +342084 +342085 +342086 +342087 +342112 +342113 +342114 +342115 +342116 +342117 +342118 +342119 +342144 +342145 +342146 +342147 +342148 +342149 +342150 +342151 +342176 +342177 +342178 +342179 +342180 +342181 +342182 +342183 +342208 +342209 +342210 +342211 +342212 +342213 +342214 +342215 +342240 +342241 +342242 +342243 +342244 +342245 +342246 +342247 +342272 +342273 +342274 +342275 +342276 +342277 +342278 +342279 +342304 +342305 +342306 +342307 +342308 +342309 +342310 +342311 +342336 +342337 +342338 +342339 +342340 +342341 +342342 +342343 +342368 +342369 +342370 +342371 +342372 +342373 +342374 +342375 +342400 +342401 +342402 +342403 +342404 +342405 +342406 +342407 +342432 +342433 +342434 +342435 +342436 +342437 +342438 +342439 +342464 +342465 +342466 +342467 +342468 +342469 +342470 +342471 +342496 +342497 +342498 +342499 +342500 +342501 +342502 +342503 +342528 +342529 +342530 +342531 +342532 +342533 +342534 +342535 +342560 +342561 +342562 +342563 +342564 +342565 +342566 +342567 +342592 +342593 +342594 +342595 +342596 +342597 +342598 +342599 +342624 +342625 +342626 +342627 +342628 +342629 +342630 +342631 +342656 +342657 +342658 +342659 +342660 +342661 +342662 +342663 +342688 +342689 +342690 +342691 +342692 +342693 +342694 +342695 +342720 +342721 +342722 +342723 +342724 +342725 +342726 +342727 +342752 +342753 +342754 +342755 +342756 +342757 +342758 +342759 +342784 +342785 +342786 +342787 +342788 +342789 +342790 +342791 +342816 +342817 +342818 +342819 +342820 +342821 +342822 +342823 +342848 +342849 +342850 +342851 +342852 +342853 +342854 +342855 +342880 +342881 +342882 +342883 +342884 +342885 +342886 +342887 +342912 +342913 +342914 +342915 +342916 +342917 +342918 +342919 +342944 +342945 +342946 +342947 +342948 +342949 +342950 +342951 +342976 +342977 +342978 +342979 +342980 +342981 +342982 +342983 +343008 +343009 +343010 +343011 +343012 +343013 +343014 +343015 +343040 +343041 +343042 +343043 +343044 +343045 +343046 +343047 +343072 +343073 +343074 +343075 +343076 +343077 +343078 +343079 +343104 +343105 +343106 +343107 +343108 +343109 +343110 +343111 +343136 +343137 +343138 +343139 +343140 +343141 +343142 +343143 +343168 +343169 +343170 +343171 +343172 +343173 +343174 +343175 +343200 +343201 +343202 +343203 +343204 +343205 +343206 +343207 +343232 +343233 +343234 +343235 +343236 +343237 +343238 +343239 +343264 +343265 +343266 +343267 +343268 +343269 +343270 +343271 +343296 +343297 +343298 +343299 +343300 +343301 +343302 +343303 +343328 +343329 +343330 +343331 +343332 +343333 +343334 +343335 +343360 +343361 +343362 +343363 +343364 +343365 +343366 +343367 +343392 +343393 +343394 +343395 +343396 +343397 +343398 +343399 +343424 +343425 +343426 +343427 +343428 +343429 +343430 +343431 +343456 +343457 +343458 +343459 +343460 +343461 +343462 +343463 +343488 +343489 +343490 +343491 +343492 +343493 +343494 +343495 +343520 +343521 +343522 +343523 +343524 +343525 +343526 +343527 +343552 +343553 +343554 +343555 +343556 +343557 +343558 +343559 +343584 +343585 +343586 +343587 +343588 +343589 +343590 +343591 +343616 +343617 +343618 +343619 +343620 +343621 +343622 +343623 +343648 +343649 +343650 +343651 +343652 +343653 +343654 +343655 +343680 +343681 +343682 +343683 +343684 +343685 +343686 +343687 +343712 +343713 +343714 +343715 +343716 +343717 +343718 +343719 +343744 +343745 +343746 +343747 +343748 +343749 +343750 +343751 +343776 +343777 +343778 +343779 +343780 +343781 +343782 +343783 +343808 +343809 +343810 +343811 +343812 +343813 +343814 +343815 +343840 +343841 +343842 +343843 +343844 +343845 +343846 +343847 +343872 +343873 +343874 +343875 +343876 +343877 +343878 +343879 +343904 +343905 +343906 +343907 +343908 +343909 +343910 +343911 +343936 +343937 +343938 +343939 +343940 +343941 +343942 +343943 +343968 +343969 +343970 +343971 +343972 +343973 +343974 +343975 +344000 +344001 +344002 +344003 +344004 +344005 +344006 +344007 +344032 +344033 +344034 +344035 +344036 +344037 +344038 +344039 +344064 +344065 +344066 +344067 +344068 +344069 +344070 +344071 +344096 +344097 +344098 +344099 +344100 +344101 +344102 +344103 +344128 +344129 +344130 +344131 +344132 +344133 +344134 +344135 +344160 +344161 +344162 +344163 +344164 +344165 +344166 +344167 +344192 +344193 +344194 +344195 +344196 +344197 +344198 +344199 +344224 +344225 +344226 +344227 +344228 +344229 +344230 +344231 +344256 +344257 +344258 +344259 +344260 +344261 +344262 +344263 +344288 +344289 +344290 +344291 +344292 +344293 +344294 +344295 +344320 +344321 +344322 +344323 +344324 +344325 +344326 +344327 +344352 +344353 +344354 +344355 +344356 +344357 +344358 +344359 +344384 +344385 +344386 +344387 +344388 +344389 +344390 +344391 +344416 +344417 +344418 +344419 +344420 +344421 +344422 +344423 +344448 +344449 +344450 +344451 +344452 +344453 +344454 +344455 +344480 +344481 +344482 +344483 +344484 +344485 +344486 +344487 +344512 +344513 +344514 +344515 +344516 +344517 +344518 +344519 +344544 +344545 +344546 +344547 +344548 +344549 +344550 +344551 +344576 +344577 +344578 +344579 +344580 +344581 +344582 +344583 +344608 +344609 +344610 +344611 +344612 +344613 +344614 +344615 +344640 +344641 +344642 +344643 +344644 +344645 +344646 +344647 +344672 +344673 +344674 +344675 +344676 +344677 +344678 +344679 +344704 +344705 +344706 +344707 +344708 +344709 +344710 +344711 +344736 +344737 +344738 +344739 +344740 +344741 +344742 +344743 +344768 +344769 +344770 +344771 +344772 +344773 +344774 +344775 +344800 +344801 +344802 +344803 +344804 +344805 +344806 +344807 +344832 +344833 +344834 +344835 +344836 +344837 +344838 +344839 +344864 +344865 +344866 +344867 +344868 +344869 +344870 +344871 +344896 +344897 +344898 +344899 +344900 +344901 +344902 +344903 +344928 +344929 +344930 +344931 +344932 +344933 +344934 +344935 +344960 +344961 +344962 +344963 +344964 +344965 +344966 +344967 +344992 +344993 +344994 +344995 +344996 +344997 +344998 +344999 +345024 +345025 +345026 +345027 +345028 +345029 +345030 +345031 +345056 +345057 +345058 +345059 +345060 +345061 +345062 +345063 +345088 +345089 +345090 +345091 +345092 +345093 +345094 +345095 +345120 +345121 +345122 +345123 +345124 +345125 +345126 +345127 +345152 +345153 +345154 +345155 +345156 +345157 +345158 +345159 +345184 +345185 +345186 +345187 +345188 +345189 +345190 +345191 +345216 +345217 +345218 +345219 +345220 +345221 +345222 +345223 +345248 +345249 +345250 +345251 +345252 +345253 +345254 +345255 +345280 +345281 +345282 +345283 +345284 +345285 +345286 +345287 +345312 +345313 +345314 +345315 +345316 +345317 +345318 +345319 +345344 +345345 +345346 +345347 +345348 +345349 +345350 +345351 +345376 +345377 +345378 +345379 +345380 +345381 +345382 +345383 +345408 +345409 +345410 +345411 +345412 +345413 +345414 +345415 +345440 +345441 +345442 +345443 +345444 +345445 +345446 +345447 +345472 +345473 +345474 +345475 +345476 +345477 +345478 +345479 +345504 +345505 +345506 +345507 +345508 +345509 +345510 +345511 +345536 +345537 +345538 +345539 +345540 +345541 +345542 +345543 +345568 +345569 +345570 +345571 +345572 +345573 +345574 +345575 +345600 +345601 +345602 +345603 +345604 +345605 +345606 +345607 +345632 +345633 +345634 +345635 +345636 +345637 +345638 +345639 +345664 +345665 +345666 +345667 +345668 +345669 +345670 +345671 +345696 +345697 +345698 +345699 +345700 +345701 +345702 +345703 +345728 +345729 +345730 +345731 +345732 +345733 +345734 +345735 +345760 +345761 +345762 +345763 +345764 +345765 +345766 +345767 +345792 +345793 +345794 +345795 +345796 +345797 +345798 +345799 +345824 +345825 +345826 +345827 +345828 +345829 +345830 +345831 +345856 +345857 +345858 +345859 +345860 +345861 +345862 +345863 +345888 +345889 +345890 +345891 +345892 +345893 +345894 +345895 +345920 +345921 +345922 +345923 +345924 +345925 +345926 +345927 +345952 +345953 +345954 +345955 +345956 +345957 +345958 +345959 +345984 +345985 +345986 +345987 +345988 +345989 +345990 +345991 +346016 +346017 +346018 +346019 +346020 +346021 +346022 +346023 +346048 +346049 +346050 +346051 +346052 +346053 +346054 +346055 +346080 +346081 +346082 +346083 +346084 +346085 +346086 +346087 +346112 +346113 +346114 +346115 +346116 +346117 +346118 +346119 +346144 +346145 +346146 +346147 +346148 +346149 +346150 +346151 +346176 +346177 +346178 +346179 +346180 +346181 +346182 +346183 +346208 +346209 +346210 +346211 +346212 +346213 +346214 +346215 +346240 +346241 +346242 +346243 +346244 +346245 +346246 +346247 +346272 +346273 +346274 +346275 +346276 +346277 +346278 +346279 +346304 +346305 +346306 +346307 +346308 +346309 +346310 +346311 +346336 +346337 +346338 +346339 +346340 +346341 +346342 +346343 +346368 +346369 +346370 +346371 +346372 +346373 +346374 +346375 +346400 +346401 +346402 +346403 +346404 +346405 +346406 +346407 +346432 +346433 +346434 +346435 +346436 +346437 +346438 +346439 +346464 +346465 +346466 +346467 +346468 +346469 +346470 +346471 +346496 +346497 +346498 +346499 +346500 +346501 +346502 +346503 +346528 +346529 +346530 +346531 +346532 +346533 +346534 +346535 +346560 +346561 +346562 +346563 +346564 +346565 +346566 +346567 +346592 +346593 +346594 +346595 +346596 +346597 +346598 +346599 +346624 +346625 +346626 +346627 +346628 +346629 +346630 +346631 +346656 +346657 +346658 +346659 +346660 +346661 +346662 +346663 +346688 +346689 +346690 +346691 +346692 +346693 +346694 +346695 +346720 +346721 +346722 +346723 +346724 +346725 +346726 +346727 +346752 +346753 +346754 +346755 +346756 +346757 +346758 +346759 +346784 +346785 +346786 +346787 +346788 +346789 +346790 +346791 +346816 +346817 +346818 +346819 +346820 +346821 +346822 +346823 +346848 +346849 +346850 +346851 +346852 +346853 +346854 +346855 +346880 +346881 +346882 +346883 +346884 +346885 +346886 +346887 +346912 +346913 +346914 +346915 +346916 +346917 +346918 +346919 +346944 +346945 +346946 +346947 +346948 +346949 +346950 +346951 +346976 +346977 +346978 +346979 +346980 +346981 +346982 +346983 +347008 +347009 +347010 +347011 +347012 +347013 +347014 +347015 +347040 +347041 +347042 +347043 +347044 +347045 +347046 +347047 +347072 +347073 +347074 +347075 +347076 +347077 +347078 +347079 +347104 +347105 +347106 +347107 +347108 +347109 +347110 +347111 +347136 +347137 +347138 +347139 +347140 +347141 +347142 +347143 +347168 +347169 +347170 +347171 +347172 +347173 +347174 +347175 +347200 +347201 +347202 +347203 +347204 +347205 +347206 +347207 +347232 +347233 +347234 +347235 +347236 +347237 +347238 +347239 +347264 +347265 +347266 +347267 +347268 +347269 +347270 +347271 +347296 +347297 +347298 +347299 +347300 +347301 +347302 +347303 +347328 +347329 +347330 +347331 +347332 +347333 +347334 +347335 +347360 +347361 +347362 +347363 +347364 +347365 +347366 +347367 +347392 +347393 +347394 +347395 +347396 +347397 +347398 +347399 +347424 +347425 +347426 +347427 +347428 +347429 +347430 +347431 +347456 +347457 +347458 +347459 +347460 +347461 +347462 +347463 +347488 +347489 +347490 +347491 +347492 +347493 +347494 +347495 +347520 +347521 +347522 +347523 +347524 +347525 +347526 +347527 +347552 +347553 +347554 +347555 +347556 +347557 +347558 +347559 +347584 +347585 +347586 +347587 +347588 +347589 +347590 +347591 +347616 +347617 +347618 +347619 +347620 +347621 +347622 +347623 +347648 +347649 +347650 +347651 +347652 +347653 +347654 +347655 +347680 +347681 +347682 +347683 +347684 +347685 +347686 +347687 +347712 +347713 +347714 +347715 +347716 +347717 +347718 +347719 +347744 +347745 +347746 +347747 +347748 +347749 +347750 +347751 +347776 +347777 +347778 +347779 +347780 +347781 +347782 +347783 +347808 +347809 +347810 +347811 +347812 +347813 +347814 +347815 +347840 +347841 +347842 +347843 +347844 +347845 +347846 +347847 +347872 +347873 +347874 +347875 +347876 +347877 +347878 +347879 +347904 +347905 +347906 +347907 +347908 +347909 +347910 +347911 +347936 +347937 +347938 +347939 +347940 +347941 +347942 +347943 +347968 +347969 +347970 +347971 +347972 +347973 +347974 +347975 +348000 +348001 +348002 +348003 +348004 +348005 +348006 +348007 +348032 +348033 +348034 +348035 +348036 +348037 +348038 +348039 +348064 +348065 +348066 +348067 +348068 +348069 +348070 +348071 +348096 +348097 +348098 +348099 +348100 +348101 +348102 +348103 +348128 +348129 +348130 +348131 +348132 +348133 +348134 +348135 +348160 +348161 +348162 +348163 +348164 +348165 +348166 +348167 +348192 +348193 +348194 +348195 +348196 +348197 +348198 +348199 +348224 +348225 +348226 +348227 +348228 +348229 +348230 +348231 +348256 +348257 +348258 +348259 +348260 +348261 +348262 +348263 +348288 +348289 +348290 +348291 +348292 +348293 +348294 +348295 +348320 +348321 +348322 +348323 +348324 +348325 +348326 +348327 +348352 +348353 +348354 +348355 +348356 +348357 +348358 +348359 +348384 +348385 +348386 +348387 +348388 +348389 +348390 +348391 +348416 +348417 +348418 +348419 +348420 +348421 +348422 +348423 +348448 +348449 +348450 +348451 +348452 +348453 +348454 +348455 +348480 +348481 +348482 +348483 +348484 +348485 +348486 +348487 +348512 +348513 +348514 +348515 +348516 +348517 +348518 +348519 +348544 +348545 +348546 +348547 +348548 +348549 +348550 +348551 +348576 +348577 +348578 +348579 +348580 +348581 +348582 +348583 +348608 +348609 +348610 +348611 +348612 +348613 +348614 +348615 +348640 +348641 +348642 +348643 +348644 +348645 +348646 +348647 +348672 +348673 +348674 +348675 +348676 +348677 +348678 +348679 +348704 +348705 +348706 +348707 +348708 +348709 +348710 +348711 +348736 +348737 +348738 +348739 +348740 +348741 +348742 +348743 +348768 +348769 +348770 +348771 +348772 +348773 +348774 +348775 +348800 +348801 +348802 +348803 +348804 +348805 +348806 +348807 +348832 +348833 +348834 +348835 +348836 +348837 +348838 +348839 +348864 +348865 +348866 +348867 +348868 +348869 +348870 +348871 +348896 +348897 +348898 +348899 +348900 +348901 +348902 +348903 +348928 +348929 +348930 +348931 +348932 +348933 +348934 +348935 +348960 +348961 +348962 +348963 +348964 +348965 +348966 +348967 +348992 +348993 +348994 +348995 +348996 +348997 +348998 +348999 +349024 +349025 +349026 +349027 +349028 +349029 +349030 +349031 +349056 +349057 +349058 +349059 +349060 +349061 +349062 +349063 +349088 +349089 +349090 +349091 +349092 +349093 +349094 +349095 +349120 +349121 +349122 +349123 +349124 +349125 +349126 +349127 +349152 +349153 +349154 +349155 +349156 +349157 +349158 +349159 +349184 +349185 +349186 +349187 +349188 +349189 +349190 +349191 +349216 +349217 +349218 +349219 +349220 +349221 +349222 +349223 +349248 +349249 +349250 +349251 +349252 +349253 +349254 +349255 +349280 +349281 +349282 +349283 +349284 +349285 +349286 +349287 +349312 +349313 +349314 +349315 +349316 +349317 +349318 +349319 +349344 +349345 +349346 +349347 +349348 +349349 +349350 +349351 +349376 +349377 +349378 +349379 +349380 +349381 +349382 +349383 +349408 +349409 +349410 +349411 +349412 +349413 +349414 +349415 +349440 +349441 +349442 +349443 +349444 +349445 +349446 +349447 +349472 +349473 +349474 +349475 +349476 +349477 +349478 +349479 +349504 +349505 +349506 +349507 +349508 +349509 +349510 +349511 +349536 +349537 +349538 +349539 +349540 +349541 +349542 +349543 +349568 +349569 +349570 +349571 +349572 +349573 +349574 +349575 +349600 +349601 +349602 +349603 +349604 +349605 +349606 +349607 +349632 +349633 +349634 +349635 +349636 +349637 +349638 +349639 +349664 +349665 +349666 +349667 +349668 +349669 +349670 +349671 +349696 +349697 +349698 +349699 +349700 +349701 +349702 +349703 +349728 +349729 +349730 +349731 +349732 +349733 +349734 +349735 +349760 +349761 +349762 +349763 +349764 +349765 +349766 +349767 +349792 +349793 +349794 +349795 +349796 +349797 +349798 +349799 +349824 +349825 +349826 +349827 +349828 +349829 +349830 +349831 +349856 +349857 +349858 +349859 +349860 +349861 +349862 +349863 +349888 +349889 +349890 +349891 +349892 +349893 +349894 +349895 +349920 +349921 +349922 +349923 +349924 +349925 +349926 +349927 +349952 +349953 +349954 +349955 +349956 +349957 +349958 +349959 +349984 +349985 +349986 +349987 +349988 +349989 +349990 +349991 +350016 +350017 +350018 +350019 +350020 +350021 +350022 +350023 +350048 +350049 +350050 +350051 +350052 +350053 +350054 +350055 +350080 +350081 +350082 +350083 +350084 +350085 +350086 +350087 +350112 +350113 +350114 +350115 +350116 +350117 +350118 +350119 +350144 +350145 +350146 +350147 +350148 +350149 +350150 +350151 +350176 +350177 +350178 +350179 +350180 +350181 +350182 +350183 +350208 +350209 +350210 +350211 +350212 +350213 +350214 +350215 +350240 +350241 +350242 +350243 +350244 +350245 +350246 +350247 +350272 +350273 +350274 +350275 +350276 +350277 +350278 +350279 +350304 +350305 +350306 +350307 +350308 +350309 +350310 +350311 +350336 +350337 +350338 +350339 +350340 +350341 +350342 +350343 +350368 +350369 +350370 +350371 +350372 +350373 +350374 +350375 +350400 +350401 +350402 +350403 +350404 +350405 +350406 +350407 +350432 +350433 +350434 +350435 +350436 +350437 +350438 +350439 +350464 +350465 +350466 +350467 +350468 +350469 +350470 +350471 +350496 +350497 +350498 +350499 +350500 +350501 +350502 +350503 +350528 +350529 +350530 +350531 +350532 +350533 +350534 +350535 +350560 +350561 +350562 +350563 +350564 +350565 +350566 +350567 +350592 +350593 +350594 +350595 +350596 +350597 +350598 +350599 +350624 +350625 +350626 +350627 +350628 +350629 +350630 +350631 +350656 +350657 +350658 +350659 +350660 +350661 +350662 +350663 +350688 +350689 +350690 +350691 +350692 +350693 +350694 +350695 +350720 +350721 +350722 +350723 +350724 +350725 +350726 +350727 +350752 +350753 +350754 +350755 +350756 +350757 +350758 +350759 +350784 +350785 +350786 +350787 +350788 +350789 +350790 +350791 +350816 +350817 +350818 +350819 +350820 +350821 +350822 +350823 +350848 +350849 +350850 +350851 +350852 +350853 +350854 +350855 +350880 +350881 +350882 +350883 +350884 +350885 +350886 +350887 +350912 +350913 +350914 +350915 +350916 +350917 +350918 +350919 +350944 +350945 +350946 +350947 +350948 +350949 +350950 +350951 +350976 +350977 +350978 +350979 +350980 +350981 +350982 +350983 +351008 +351009 +351010 +351011 +351012 +351013 +351014 +351015 +351040 +351041 +351042 +351043 +351044 +351045 +351046 +351047 +351072 +351073 +351074 +351075 +351076 +351077 +351078 +351079 +351104 +351105 +351106 +351107 +351108 +351109 +351110 +351111 +351136 +351137 +351138 +351139 +351140 +351141 +351142 +351143 +351168 +351169 +351170 +351171 +351172 +351173 +351174 +351175 +351200 +351201 +351202 +351203 +351204 +351205 +351206 +351207 +351232 +351233 +351234 +351235 +351236 +351237 +351238 +351239 +351264 +351265 +351266 +351267 +351268 +351269 +351270 +351271 +351296 +351297 +351298 +351299 +351300 +351301 +351302 +351303 +351328 +351329 +351330 +351331 +351332 +351333 +351334 +351335 +351360 +351361 +351362 +351363 +351364 +351365 +351366 +351367 +351392 +351393 +351394 +351395 +351396 +351397 +351398 +351399 +351424 +351425 +351426 +351427 +351428 +351429 +351430 +351431 +351456 +351457 +351458 +351459 +351460 +351461 +351462 +351463 +351488 +351489 +351490 +351491 +351492 +351493 +351494 +351495 +351520 +351521 +351522 +351523 +351524 +351525 +351526 +351527 +351552 +351553 +351554 +351555 +351556 +351557 +351558 +351559 +351584 +351585 +351586 +351587 +351588 +351589 +351590 +351591 +351616 +351617 +351618 +351619 +351620 +351621 +351622 +351623 +351648 +351649 +351650 +351651 +351652 +351653 +351654 +351655 +351680 +351681 +351682 +351683 +351684 +351685 +351686 +351687 +351712 +351713 +351714 +351715 +351716 +351717 +351718 +351719 +351744 +351745 +351746 +351747 +351748 +351749 +351750 +351751 +351776 +351777 +351778 +351779 +351780 +351781 +351782 +351783 +351808 +351809 +351810 +351811 +351812 +351813 +351814 +351815 +351840 +351841 +351842 +351843 +351844 +351845 +351846 +351847 +351872 +351873 +351874 +351875 +351876 +351877 +351878 +351879 +351904 +351905 +351906 +351907 +351908 +351909 +351910 +351911 +351936 +351937 +351938 +351939 +351940 +351941 +351942 +351943 +351968 +351969 +351970 +351971 +351972 +351973 +351974 +351975 +352000 +352001 +352002 +352003 +352004 +352005 +352006 +352007 +352032 +352033 +352034 +352035 +352036 +352037 +352038 +352039 +352064 +352065 +352066 +352067 +352068 +352069 +352070 +352071 +352096 +352097 +352098 +352099 +352100 +352101 +352102 +352103 +352128 +352129 +352130 +352131 +352132 +352133 +352134 +352135 +352160 +352161 +352162 +352163 +352164 +352165 +352166 +352167 +352192 +352193 +352194 +352195 +352196 +352197 +352198 +352199 +352224 +352225 +352226 +352227 +352228 +352229 +352230 +352231 +352256 +352257 +352258 +352259 +352260 +352261 +352262 +352263 +352288 +352289 +352290 +352291 +352292 +352293 +352294 +352295 +352320 +352321 +352322 +352323 +352324 +352325 +352326 +352327 +352352 +352353 +352354 +352355 +352356 +352357 +352358 +352359 +352384 +352385 +352386 +352387 +352388 +352389 +352390 +352391 +352416 +352417 +352418 +352419 +352420 +352421 +352422 +352423 +352448 +352449 +352450 +352451 +352452 +352453 +352454 +352455 +352480 +352481 +352482 +352483 +352484 +352485 +352486 +352487 +352512 +352513 +352514 +352515 +352516 +352517 +352518 +352519 +352544 +352545 +352546 +352547 +352548 +352549 +352550 +352551 +352576 +352577 +352578 +352579 +352580 +352581 +352582 +352583 +352608 +352609 +352610 +352611 +352612 +352613 +352614 +352615 +352640 +352641 +352642 +352643 +352644 +352645 +352646 +352647 +352672 +352673 +352674 +352675 +352676 +352677 +352678 +352679 +352704 +352705 +352706 +352707 +352708 +352709 +352710 +352711 +352736 +352737 +352738 +352739 +352740 +352741 +352742 +352743 +352768 +352769 +352770 +352771 +352772 +352773 +352774 +352775 +352800 +352801 +352802 +352803 +352804 +352805 +352806 +352807 +352832 +352833 +352834 +352835 +352836 +352837 +352838 +352839 +352864 +352865 +352866 +352867 +352868 +352869 +352870 +352871 +352896 +352897 +352898 +352899 +352900 +352901 +352902 +352903 +352928 +352929 +352930 +352931 +352932 +352933 +352934 +352935 +352960 +352961 +352962 +352963 +352964 +352965 +352966 +352967 +352992 +352993 +352994 +352995 +352996 +352997 +352998 +352999 +353024 +353025 +353026 +353027 +353028 +353029 +353030 +353031 +353056 +353057 +353058 +353059 +353060 +353061 +353062 +353063 +353088 +353089 +353090 +353091 +353092 +353093 +353094 +353095 +353120 +353121 +353122 +353123 +353124 +353125 +353126 +353127 +353152 +353153 +353154 +353155 +353156 +353157 +353158 +353159 +353184 +353185 +353186 +353187 +353188 +353189 +353190 +353191 +353216 +353217 +353218 +353219 +353220 +353221 +353222 +353223 +353248 +353249 +353250 +353251 +353252 +353253 +353254 +353255 +353280 +353281 +353282 +353283 +353284 +353285 +353286 +353287 +353312 +353313 +353314 +353315 +353316 +353317 +353318 +353319 +353344 +353345 +353346 +353347 +353348 +353349 +353350 +353351 +353376 +353377 +353378 +353379 +353380 +353381 +353382 +353383 +353408 +353409 +353410 +353411 +353412 +353413 +353414 +353415 +353440 +353441 +353442 +353443 +353444 +353445 +353446 +353447 +353472 +353473 +353474 +353475 +353476 +353477 +353478 +353479 +353504 +353505 +353506 +353507 +353508 +353509 +353510 +353511 +353536 +353537 +353538 +353539 +353540 +353541 +353542 +353543 +353568 +353569 +353570 +353571 +353572 +353573 +353574 +353575 +353600 +353601 +353602 +353603 +353604 +353605 +353606 +353607 +353632 +353633 +353634 +353635 +353636 +353637 +353638 +353639 +353664 +353665 +353666 +353667 +353668 +353669 +353670 +353671 +353696 +353697 +353698 +353699 +353700 +353701 +353702 +353703 +353728 +353729 +353730 +353731 +353732 +353733 +353734 +353735 +353760 +353761 +353762 +353763 +353764 +353765 +353766 +353767 +353792 +353793 +353794 +353795 +353796 +353797 +353798 +353799 +353824 +353825 +353826 +353827 +353828 +353829 +353830 +353831 +353856 +353857 +353858 +353859 +353860 +353861 +353862 +353863 +353888 +353889 +353890 +353891 +353892 +353893 +353894 +353895 +353920 +353921 +353922 +353923 +353924 +353925 +353926 +353927 +353952 +353953 +353954 +353955 +353956 +353957 +353958 +353959 +353984 +353985 +353986 +353987 +353988 +353989 +353990 +353991 +354016 +354017 +354018 +354019 +354020 +354021 +354022 +354023 +354048 +354049 +354050 +354051 +354052 +354053 +354054 +354055 +354080 +354081 +354082 +354083 +354084 +354085 +354086 +354087 +354112 +354113 +354114 +354115 +354116 +354117 +354118 +354119 +354144 +354145 +354146 +354147 +354148 +354149 +354150 +354151 +354176 +354177 +354178 +354179 +354180 +354181 +354182 +354183 +354208 +354209 +354210 +354211 +354212 +354213 +354214 +354215 +354240 +354241 +354242 +354243 +354244 +354245 +354246 +354247 +354272 +354273 +354274 +354275 +354276 +354277 +354278 +354279 +354304 +354305 +354306 +354307 +354308 +354309 +354310 +354311 +354336 +354337 +354338 +354339 +354340 +354341 +354342 +354343 +354368 +354369 +354370 +354371 +354372 +354373 +354374 +354375 +354400 +354401 +354402 +354403 +354404 +354405 +354406 +354407 +354432 +354433 +354434 +354435 +354436 +354437 +354438 +354439 +354464 +354465 +354466 +354467 +354468 +354469 +354470 +354471 +354496 +354497 +354498 +354499 +354500 +354501 +354502 +354503 +354528 +354529 +354530 +354531 +354532 +354533 +354534 +354535 +354560 +354561 +354562 +354563 +354564 +354565 +354566 +354567 +354592 +354593 +354594 +354595 +354596 +354597 +354598 +354599 +354624 +354625 +354626 +354627 +354628 +354629 +354630 +354631 +354656 +354657 +354658 +354659 +354660 +354661 +354662 +354663 +354688 +354689 +354690 +354691 +354692 +354693 +354694 +354695 +354720 +354721 +354722 +354723 +354724 +354725 +354726 +354727 +354752 +354753 +354754 +354755 +354756 +354757 +354758 +354759 +354784 +354785 +354786 +354787 +354788 +354789 +354790 +354791 +354816 +354817 +354818 +354819 +354820 +354821 +354822 +354823 +354848 +354849 +354850 +354851 +354852 +354853 +354854 +354855 +354880 +354881 +354882 +354883 +354884 +354885 +354886 +354887 +354912 +354913 +354914 +354915 +354916 +354917 +354918 +354919 +354944 +354945 +354946 +354947 +354948 +354949 +354950 +354951 +354976 +354977 +354978 +354979 +354980 +354981 +354982 +354983 +355008 +355009 +355010 +355011 +355012 +355013 +355014 +355015 +355040 +355041 +355042 +355043 +355044 +355045 +355046 +355047 +355072 +355073 +355074 +355075 +355076 +355077 +355078 +355079 +355104 +355105 +355106 +355107 +355108 +355109 +355110 +355111 +355136 +355137 +355138 +355139 +355140 +355141 +355142 +355143 +355168 +355169 +355170 +355171 +355172 +355173 +355174 +355175 +355200 +355201 +355202 +355203 +355204 +355205 +355206 +355207 +355232 +355233 +355234 +355235 +355236 +355237 +355238 +355239 +355264 +355265 +355266 +355267 +355268 +355269 +355270 +355271 +355296 +355297 +355298 +355299 +355300 +355301 +355302 +355303 +355328 +355329 +355330 +355331 +355332 +355333 +355334 +355335 +355360 +355361 +355362 +355363 +355364 +355365 +355366 +355367 +355392 +355393 +355394 +355395 +355396 +355397 +355398 +355399 +355424 +355425 +355426 +355427 +355428 +355429 +355430 +355431 +355456 +355457 +355458 +355459 +355460 +355461 +355462 +355463 +355488 +355489 +355490 +355491 +355492 +355493 +355494 +355495 +355520 +355521 +355522 +355523 +355524 +355525 +355526 +355527 +355552 +355553 +355554 +355555 +355556 +355557 +355558 +355559 +355584 +355585 +355586 +355587 +355588 +355589 +355590 +355591 +355616 +355617 +355618 +355619 +355620 +355621 +355622 +355623 +355648 +355649 +355650 +355651 +355652 +355653 +355654 +355655 +355680 +355681 +355682 +355683 +355684 +355685 +355686 +355687 +355712 +355713 +355714 +355715 +355716 +355717 +355718 +355719 +355744 +355745 +355746 +355747 +355748 +355749 +355750 +355751 +355776 +355777 +355778 +355779 +355780 +355781 +355782 +355783 +355808 +355809 +355810 +355811 +355812 +355813 +355814 +355815 +355840 +355841 +355842 +355843 +355844 +355845 +355846 +355847 +355872 +355873 +355874 +355875 +355876 +355877 +355878 +355879 +355904 +355905 +355906 +355907 +355908 +355909 +355910 +355911 +355936 +355937 +355938 +355939 +355940 +355941 +355942 +355943 +355968 +355969 +355970 +355971 +355972 +355973 +355974 +355975 +356000 +356001 +356002 +356003 +356004 +356005 +356006 +356007 +356032 +356033 +356034 +356035 +356036 +356037 +356038 +356039 +356064 +356065 +356066 +356067 +356068 +356069 +356070 +356071 +356096 +356097 +356098 +356099 +356100 +356101 +356102 +356103 +356128 +356129 +356130 +356131 +356132 +356133 +356134 +356135 +356160 +356161 +356162 +356163 +356164 +356165 +356166 +356167 +356192 +356193 +356194 +356195 +356196 +356197 +356198 +356199 +356224 +356225 +356226 +356227 +356228 +356229 +356230 +356231 +356256 +356257 +356258 +356259 +356260 +356261 +356262 +356263 +356288 +356289 +356290 +356291 +356292 +356293 +356294 +356295 +356320 +356321 +356322 +356323 +356324 +356325 +356326 +356327 +356352 +356353 +356354 +356355 +356356 +356357 +356358 +356359 +356384 +356385 +356386 +356387 +356388 +356389 +356390 +356391 +356416 +356417 +356418 +356419 +356420 +356421 +356422 +356423 +356448 +356449 +356450 +356451 +356452 +356453 +356454 +356455 +356480 +356481 +356482 +356483 +356484 +356485 +356486 +356487 +356512 +356513 +356514 +356515 +356516 +356517 +356518 +356519 +356544 +356545 +356546 +356547 +356548 +356549 +356550 +356551 +356576 +356577 +356578 +356579 +356580 +356581 +356582 +356583 +356608 +356609 +356610 +356611 +356612 +356613 +356614 +356615 +356640 +356641 +356642 +356643 +356644 +356645 +356646 +356647 +356672 +356673 +356674 +356675 +356676 +356677 +356678 +356679 +356704 +356705 +356706 +356707 +356708 +356709 +356710 +356711 +356736 +356737 +356738 +356739 +356740 +356741 +356742 +356743 +356768 +356769 +356770 +356771 +356772 +356773 +356774 +356775 +356800 +356801 +356802 +356803 +356804 +356805 +356806 +356807 +356832 +356833 +356834 +356835 +356836 +356837 +356838 +356839 +356864 +356865 +356866 +356867 +356868 +356869 +356870 +356871 +356896 +356897 +356898 +356899 +356900 +356901 +356902 +356903 +356928 +356929 +356930 +356931 +356932 +356933 +356934 +356935 +356960 +356961 +356962 +356963 +356964 +356965 +356966 +356967 +356992 +356993 +356994 +356995 +356996 +356997 +356998 +356999 +357024 +357025 +357026 +357027 +357028 +357029 +357030 +357031 +357056 +357057 +357058 +357059 +357060 +357061 +357062 +357063 +357088 +357089 +357090 +357091 +357092 +357093 +357094 +357095 +357120 +357121 +357122 +357123 +357124 +357125 +357126 +357127 +357152 +357153 +357154 +357155 +357156 +357157 +357158 +357159 +357184 +357185 +357186 +357187 +357188 +357189 +357190 +357191 +357216 +357217 +357218 +357219 +357220 +357221 +357222 +357223 +357248 +357249 +357250 +357251 +357252 +357253 +357254 +357255 +357280 +357281 +357282 +357283 +357284 +357285 +357286 +357287 +357312 +357313 +357314 +357315 +357316 +357317 +357318 +357319 +357344 +357345 +357346 +357347 +357348 +357349 +357350 +357351 +357376 +357377 +357378 +357379 +357380 +357381 +357382 +357383 +357408 +357409 +357410 +357411 +357412 +357413 +357414 +357415 +357440 +357441 +357442 +357443 +357444 +357445 +357446 +357447 +357472 +357473 +357474 +357475 +357476 +357477 +357478 +357479 +357504 +357505 +357506 +357507 +357508 +357509 +357510 +357511 +357536 +357537 +357538 +357539 +357540 +357541 +357542 +357543 +357568 +357569 +357570 +357571 +357572 +357573 +357574 +357575 +357600 +357601 +357602 +357603 +357604 +357605 +357606 +357607 +357632 +357633 +357634 +357635 +357636 +357637 +357638 +357639 +357664 +357665 +357666 +357667 +357668 +357669 +357670 +357671 +357696 +357697 +357698 +357699 +357700 +357701 +357702 +357703 +357728 +357729 +357730 +357731 +357732 +357733 +357734 +357735 +357760 +357761 +357762 +357763 +357764 +357765 +357766 +357767 +357792 +357793 +357794 +357795 +357796 +357797 +357798 +357799 +357824 +357825 +357826 +357827 +357828 +357829 +357830 +357831 +357856 +357857 +357858 +357859 +357860 +357861 +357862 +357863 +357888 +357889 +357890 +357891 +357892 +357893 +357894 +357895 +357920 +357921 +357922 +357923 +357924 +357925 +357926 +357927 +357952 +357953 +357954 +357955 +357956 +357957 +357958 +357959 +357984 +357985 +357986 +357987 +357988 +357989 +357990 +357991 +358016 +358017 +358018 +358019 +358020 +358021 +358022 +358023 +358048 +358049 +358050 +358051 +358052 +358053 +358054 +358055 +358080 +358081 +358082 +358083 +358084 +358085 +358086 +358087 +358112 +358113 +358114 +358115 +358116 +358117 +358118 +358119 +358144 +358145 +358146 +358147 +358148 +358149 +358150 +358151 +358176 +358177 +358178 +358179 +358180 +358181 +358182 +358183 +358208 +358209 +358210 +358211 +358212 +358213 +358214 +358215 +358240 +358241 +358242 +358243 +358244 +358245 +358246 +358247 +358272 +358273 +358274 +358275 +358276 +358277 +358278 +358279 +358304 +358305 +358306 +358307 +358308 +358309 +358310 +358311 +358336 +358337 +358338 +358339 +358340 +358341 +358342 +358343 +358368 +358369 +358370 +358371 +358372 +358373 +358374 +358375 +358400 +358401 +358402 +358403 +358404 +358405 +358406 +358407 +358432 +358433 +358434 +358435 +358436 +358437 +358438 +358439 +358464 +358465 +358466 +358467 +358468 +358469 +358470 +358471 +358496 +358497 +358498 +358499 +358500 +358501 +358502 +358503 +358528 +358529 +358530 +358531 +358532 +358533 +358534 +358535 +358560 +358561 +358562 +358563 +358564 +358565 +358566 +358567 +358592 +358593 +358594 +358595 +358596 +358597 +358598 +358599 +358624 +358625 +358626 +358627 +358628 +358629 +358630 +358631 +358656 +358657 +358658 +358659 +358660 +358661 +358662 +358663 +358688 +358689 +358690 +358691 +358692 +358693 +358694 +358695 +358720 +358721 +358722 +358723 +358724 +358725 +358726 +358727 +358752 +358753 +358754 +358755 +358756 +358757 +358758 +358759 +358784 +358785 +358786 +358787 +358788 +358789 +358790 +358791 +358816 +358817 +358818 +358819 +358820 +358821 +358822 +358823 +358848 +358849 +358850 +358851 +358852 +358853 +358854 +358855 +358880 +358881 +358882 +358883 +358884 +358885 +358886 +358887 +358912 +358913 +358914 +358915 +358916 +358917 +358918 +358919 +358944 +358945 +358946 +358947 +358948 +358949 +358950 +358951 +358976 +358977 +358978 +358979 +358980 +358981 +358982 +358983 +359008 +359009 +359010 +359011 +359012 +359013 +359014 +359015 +359040 +359041 +359042 +359043 +359044 +359045 +359046 +359047 +359072 +359073 +359074 +359075 +359076 +359077 +359078 +359079 +359104 +359105 +359106 +359107 +359108 +359109 +359110 +359111 +359136 +359137 +359138 +359139 +359140 +359141 +359142 +359143 +359168 +359169 +359170 +359171 +359172 +359173 +359174 +359175 +359200 +359201 +359202 +359203 +359204 +359205 +359206 +359207 +359232 +359233 +359234 +359235 +359236 +359237 +359238 +359239 +359264 +359265 +359266 +359267 +359268 +359269 +359270 +359271 +359296 +359297 +359298 +359299 +359300 +359301 +359302 +359303 +359328 +359329 +359330 +359331 +359332 +359333 +359334 +359335 +359360 +359361 +359362 +359363 +359364 +359365 +359366 +359367 +359392 +359393 +359394 +359395 +359396 +359397 +359398 +359399 +359424 +359425 +359426 +359427 +359428 +359429 +359430 +359431 +359456 +359457 +359458 +359459 +359460 +359461 +359462 +359463 +359488 +359489 +359490 +359491 +359492 +359493 +359494 +359495 +359520 +359521 +359522 +359523 +359524 +359525 +359526 +359527 +359552 +359553 +359554 +359555 +359556 +359557 +359558 +359559 +359584 +359585 +359586 +359587 +359588 +359589 +359590 +359591 +359616 +359617 +359618 +359619 +359620 +359621 +359622 +359623 +359648 +359649 +359650 +359651 +359652 +359653 +359654 +359655 +359680 +359681 +359682 +359683 +359684 +359685 +359686 +359687 +359712 +359713 +359714 +359715 +359716 +359717 +359718 +359719 +359744 +359745 +359746 +359747 +359748 +359749 +359750 +359751 +359776 +359777 +359778 +359779 +359780 +359781 +359782 +359783 +359808 +359809 +359810 +359811 +359812 +359813 +359814 +359815 +359840 +359841 +359842 +359843 +359844 +359845 +359846 +359847 +359872 +359873 +359874 +359875 +359876 +359877 +359878 +359879 +359904 +359905 +359906 +359907 +359908 +359909 +359910 +359911 +359936 +359937 +359938 +359939 +359940 +359941 +359942 +359943 +359968 +359969 +359970 +359971 +359972 +359973 +359974 +359975 +360000 +360001 +360002 +360003 +360004 +360005 +360006 +360007 +360032 +360033 +360034 +360035 +360036 +360037 +360038 +360039 +360064 +360065 +360066 +360067 +360068 +360069 +360070 +360071 +360096 +360097 +360098 +360099 +360100 +360101 +360102 +360103 +360128 +360129 +360130 +360131 +360132 +360133 +360134 +360135 +360160 +360161 +360162 +360163 +360164 +360165 +360166 +360167 +360192 +360193 +360194 +360195 +360196 +360197 +360198 +360199 +360224 +360225 +360226 +360227 +360228 +360229 +360230 +360231 +360256 +360257 +360258 +360259 +360260 +360261 +360262 +360263 +360288 +360289 +360290 +360291 +360292 +360293 +360294 +360295 +360320 +360321 +360322 +360323 +360324 +360325 +360326 +360327 +360352 +360353 +360354 +360355 +360356 +360357 +360358 +360359 +360384 +360385 +360386 +360387 +360388 +360389 +360390 +360391 +360416 +360417 +360418 +360419 +360420 +360421 +360422 +360423 +360448 +360449 +360450 +360451 +360452 +360453 +360454 +360455 +360480 +360481 +360482 +360483 +360484 +360485 +360486 +360487 +360512 +360513 +360514 +360515 +360516 +360517 +360518 +360519 +360544 +360545 +360546 +360547 +360548 +360549 +360550 +360551 +360576 +360577 +360578 +360579 +360580 +360581 +360582 +360583 +360608 +360609 +360610 +360611 +360612 +360613 +360614 +360615 +360640 +360641 +360642 +360643 +360644 +360645 +360646 +360647 +360672 +360673 +360674 +360675 +360676 +360677 +360678 +360679 +360704 +360705 +360706 +360707 +360708 +360709 +360710 +360711 +360736 +360737 +360738 +360739 +360740 +360741 +360742 +360743 +360768 +360769 +360770 +360771 +360772 +360773 +360774 +360775 +360800 +360801 +360802 +360803 +360804 +360805 +360806 +360807 +360832 +360833 +360834 +360835 +360836 +360837 +360838 +360839 +360864 +360865 +360866 +360867 +360868 +360869 +360870 +360871 +360896 +360897 +360898 +360899 +360900 +360901 +360902 +360903 +360928 +360929 +360930 +360931 +360932 +360933 +360934 +360935 +360960 +360961 +360962 +360963 +360964 +360965 +360966 +360967 +360992 +360993 +360994 +360995 +360996 +360997 +360998 +360999 +361024 +361025 +361026 +361027 +361028 +361029 +361030 +361031 +361056 +361057 +361058 +361059 +361060 +361061 +361062 +361063 +361088 +361089 +361090 +361091 +361092 +361093 +361094 +361095 +361120 +361121 +361122 +361123 +361124 +361125 +361126 +361127 +361152 +361153 +361154 +361155 +361156 +361157 +361158 +361159 +361184 +361185 +361186 +361187 +361188 +361189 +361190 +361191 +361216 +361217 +361218 +361219 +361220 +361221 +361222 +361223 +361248 +361249 +361250 +361251 +361252 +361253 +361254 +361255 +361280 +361281 +361282 +361283 +361284 +361285 +361286 +361287 +361312 +361313 +361314 +361315 +361316 +361317 +361318 +361319 +361344 +361345 +361346 +361347 +361348 +361349 +361350 +361351 +361376 +361377 +361378 +361379 +361380 +361381 +361382 +361383 +361408 +361409 +361410 +361411 +361412 +361413 +361414 +361415 +361440 +361441 +361442 +361443 +361444 +361445 +361446 +361447 +361472 +361473 +361474 +361475 +361476 +361477 +361478 +361479 +361504 +361505 +361506 +361507 +361508 +361509 +361510 +361511 +361536 +361537 +361538 +361539 +361540 +361541 +361542 +361543 +361568 +361569 +361570 +361571 +361572 +361573 +361574 +361575 +361600 +361601 +361602 +361603 +361604 +361605 +361606 +361607 +361632 +361633 +361634 +361635 +361636 +361637 +361638 +361639 +361664 +361665 +361666 +361667 +361668 +361669 +361670 +361671 +361696 +361697 +361698 +361699 +361700 +361701 +361702 +361703 +361728 +361729 +361730 +361731 +361732 +361733 +361734 +361735 +361760 +361761 +361762 +361763 +361764 +361765 +361766 +361767 +361792 +361793 +361794 +361795 +361796 +361797 +361798 +361799 +361824 +361825 +361826 +361827 +361828 +361829 +361830 +361831 +361856 +361857 +361858 +361859 +361860 +361861 +361862 +361863 +361888 +361889 +361890 +361891 +361892 +361893 +361894 +361895 +361920 +361921 +361922 +361923 +361924 +361925 +361926 +361927 +361952 +361953 +361954 +361955 +361956 +361957 +361958 +361959 +361984 +361985 +361986 +361987 +361988 +361989 +361990 +361991 +362016 +362017 +362018 +362019 +362020 +362021 +362022 +362023 +362048 +362049 +362050 +362051 +362052 +362053 +362054 +362055 +362080 +362081 +362082 +362083 +362084 +362085 +362086 +362087 +362112 +362113 +362114 +362115 +362116 +362117 +362118 +362119 +362144 +362145 +362146 +362147 +362148 +362149 +362150 +362151 +362176 +362177 +362178 +362179 +362180 +362181 +362182 +362183 +362208 +362209 +362210 +362211 +362212 +362213 +362214 +362215 +362240 +362241 +362242 +362243 +362244 +362245 +362246 +362247 +362272 +362273 +362274 +362275 +362276 +362277 +362278 +362279 +362304 +362305 +362306 +362307 +362308 +362309 +362310 +362311 +362336 +362337 +362338 +362339 +362340 +362341 +362342 +362343 +362368 +362369 +362370 +362371 +362372 +362373 +362374 +362375 +362400 +362401 +362402 +362403 +362404 +362405 +362406 +362407 +362432 +362433 +362434 +362435 +362436 +362437 +362438 +362439 +362464 +362465 +362466 +362467 +362468 +362469 +362470 +362471 +362496 +362497 +362498 +362499 +362500 +362501 +362502 +362503 +362528 +362529 +362530 +362531 +362532 +362533 +362534 +362535 +362560 +362561 +362562 +362563 +362564 +362565 +362566 +362567 +362592 +362593 +362594 +362595 +362596 +362597 +362598 +362599 +362624 +362625 +362626 +362627 +362628 +362629 +362630 +362631 +362656 +362657 +362658 +362659 +362660 +362661 +362662 +362663 +362688 +362689 +362690 +362691 +362692 +362693 +362694 +362695 +362720 +362721 +362722 +362723 +362724 +362725 +362726 +362727 +362752 +362753 +362754 +362755 +362756 +362757 +362758 +362759 +362784 +362785 +362786 +362787 +362788 +362789 +362790 +362791 +362816 +362817 +362818 +362819 +362820 +362821 +362822 +362823 +362848 +362849 +362850 +362851 +362852 +362853 +362854 +362855 +362880 +362881 +362882 +362883 +362884 +362885 +362886 +362887 +362912 +362913 +362914 +362915 +362916 +362917 +362918 +362919 +362944 +362945 +362946 +362947 +362948 +362949 +362950 +362951 +362976 +362977 +362978 +362979 +362980 +362981 +362982 +362983 +363008 +363009 +363010 +363011 +363012 +363013 +363014 +363015 +363040 +363041 +363042 +363043 +363044 +363045 +363046 +363047 +363072 +363073 +363074 +363075 +363076 +363077 +363078 +363079 +363104 +363105 +363106 +363107 +363108 +363109 +363110 +363111 +363136 +363137 +363138 +363139 +363140 +363141 +363142 +363143 +363168 +363169 +363170 +363171 +363172 +363173 +363174 +363175 +363200 +363201 +363202 +363203 +363204 +363205 +363206 +363207 +363232 +363233 +363234 +363235 +363236 +363237 +363238 +363239 +363264 +363265 +363266 +363267 +363268 +363269 +363270 +363271 +363296 +363297 +363298 +363299 +363300 +363301 +363302 +363303 +363328 +363329 +363330 +363331 +363332 +363333 +363334 +363335 +363360 +363361 +363362 +363363 +363364 +363365 +363366 +363367 +363392 +363393 +363394 +363395 +363396 +363397 +363398 +363399 +363424 +363425 +363426 +363427 +363428 +363429 +363430 +363431 +363456 +363457 +363458 +363459 +363460 +363461 +363462 +363463 +363488 +363489 +363490 +363491 +363492 +363493 +363494 +363495 +363520 +363521 +363522 +363523 +363524 +363525 +363526 +363527 +363552 +363553 +363554 +363555 +363556 +363557 +363558 +363559 +363584 +363585 +363586 +363587 +363588 +363589 +363590 +363591 +363616 +363617 +363618 +363619 +363620 +363621 +363622 +363623 +363648 +363649 +363650 +363651 +363652 +363653 +363654 +363655 +363680 +363681 +363682 +363683 +363684 +363685 +363686 +363687 +363712 +363713 +363714 +363715 +363716 +363717 +363718 +363719 +363744 +363745 +363746 +363747 +363748 +363749 +363750 +363751 +363776 +363777 +363778 +363779 +363780 +363781 +363782 +363783 +363808 +363809 +363810 +363811 +363812 +363813 +363814 +363815 +363840 +363841 +363842 +363843 +363844 +363845 +363846 +363847 +363872 +363873 +363874 +363875 +363876 +363877 +363878 +363879 +363904 +363905 +363906 +363907 +363908 +363909 +363910 +363911 +363936 +363937 +363938 +363939 +363940 +363941 +363942 +363943 +363968 +363969 +363970 +363971 +363972 +363973 +363974 +363975 +364000 +364001 +364002 +364003 +364004 +364005 +364006 +364007 +364032 +364033 +364034 +364035 +364036 +364037 +364038 +364039 +364064 +364065 +364066 +364067 +364068 +364069 +364070 +364071 +364096 +364097 +364098 +364099 +364100 +364101 +364102 +364103 +364128 +364129 +364130 +364131 +364132 +364133 +364134 +364135 +364160 +364161 +364162 +364163 +364164 +364165 +364166 +364167 +364192 +364193 +364194 +364195 +364196 +364197 +364198 +364199 +364224 +364225 +364226 +364227 +364228 +364229 +364230 +364231 +364256 +364257 +364258 +364259 +364260 +364261 +364262 +364263 +364288 +364289 +364290 +364291 +364292 +364293 +364294 +364295 +364320 +364321 +364322 +364323 +364324 +364325 +364326 +364327 +364352 +364353 +364354 +364355 +364356 +364357 +364358 +364359 +364384 +364385 +364386 +364387 +364388 +364389 +364390 +364391 +364416 +364417 +364418 +364419 +364420 +364421 +364422 +364423 +364448 +364449 +364450 +364451 +364452 +364453 +364454 +364455 +364480 +364481 +364482 +364483 +364484 +364485 +364486 +364487 +364512 +364513 +364514 +364515 +364516 +364517 +364518 +364519 +364544 +364545 +364546 +364547 +364548 +364549 +364550 +364551 +364576 +364577 +364578 +364579 +364580 +364581 +364582 +364583 +364608 +364609 +364610 +364611 +364612 +364613 +364614 +364615 +364640 +364641 +364642 +364643 +364644 +364645 +364646 +364647 +364672 +364673 +364674 +364675 +364676 +364677 +364678 +364679 +364704 +364705 +364706 +364707 +364708 +364709 +364710 +364711 +364736 +364737 +364738 +364739 +364740 +364741 +364742 +364743 +364768 +364769 +364770 +364771 +364772 +364773 +364774 +364775 +364800 +364801 +364802 +364803 +364804 +364805 +364806 +364807 +364832 +364833 +364834 +364835 +364836 +364837 +364838 +364839 +364864 +364865 +364866 +364867 +364868 +364869 +364870 +364871 +364896 +364897 +364898 +364899 +364900 +364901 +364902 +364903 +364928 +364929 +364930 +364931 +364932 +364933 +364934 +364935 +364960 +364961 +364962 +364963 +364964 +364965 +364966 +364967 +364992 +364993 +364994 +364995 +364996 +364997 +364998 +364999 +365024 +365025 +365026 +365027 +365028 +365029 +365030 +365031 +365056 +365057 +365058 +365059 +365060 +365061 +365062 +365063 +365088 +365089 +365090 +365091 +365092 +365093 +365094 +365095 +365120 +365121 +365122 +365123 +365124 +365125 +365126 +365127 +365152 +365153 +365154 +365155 +365156 +365157 +365158 +365159 +365184 +365185 +365186 +365187 +365188 +365189 +365190 +365191 +365216 +365217 +365218 +365219 +365220 +365221 +365222 +365223 +365248 +365249 +365250 +365251 +365252 +365253 +365254 +365255 +365280 +365281 +365282 +365283 +365284 +365285 +365286 +365287 +365312 +365313 +365314 +365315 +365316 +365317 +365318 +365319 +365344 +365345 +365346 +365347 +365348 +365349 +365350 +365351 +365376 +365377 +365378 +365379 +365380 +365381 +365382 +365383 +365408 +365409 +365410 +365411 +365412 +365413 +365414 +365415 +365440 +365441 +365442 +365443 +365444 +365445 +365446 +365447 +365472 +365473 +365474 +365475 +365476 +365477 +365478 +365479 +365504 +365505 +365506 +365507 +365508 +365509 +365510 +365511 +365536 +365537 +365538 +365539 +365540 +365541 +365542 +365543 +365568 +365569 +365570 +365571 +365572 +365573 +365574 +365575 +365600 +365601 +365602 +365603 +365604 +365605 +365606 +365607 +365632 +365633 +365634 +365635 +365636 +365637 +365638 +365639 +365664 +365665 +365666 +365667 +365668 +365669 +365670 +365671 +365696 +365697 +365698 +365699 +365700 +365701 +365702 +365703 +365728 +365729 +365730 +365731 +365732 +365733 +365734 +365735 +365760 +365761 +365762 +365763 +365764 +365765 +365766 +365767 +365792 +365793 +365794 +365795 +365796 +365797 +365798 +365799 +365824 +365825 +365826 +365827 +365828 +365829 +365830 +365831 +365856 +365857 +365858 +365859 +365860 +365861 +365862 +365863 +365888 +365889 +365890 +365891 +365892 +365893 +365894 +365895 +365920 +365921 +365922 +365923 +365924 +365925 +365926 +365927 +365952 +365953 +365954 +365955 +365956 +365957 +365958 +365959 +365984 +365985 +365986 +365987 +365988 +365989 +365990 +365991 +366016 +366017 +366018 +366019 +366020 +366021 +366022 +366023 +366048 +366049 +366050 +366051 +366052 +366053 +366054 +366055 +366080 +366081 +366082 +366083 +366084 +366085 +366086 +366087 +366112 +366113 +366114 +366115 +366116 +366117 +366118 +366119 +366144 +366145 +366146 +366147 +366148 +366149 +366150 +366151 +366176 +366177 +366178 +366179 +366180 +366181 +366182 +366183 +366208 +366209 +366210 +366211 +366212 +366213 +366214 +366215 +366240 +366241 +366242 +366243 +366244 +366245 +366246 +366247 +366272 +366273 +366274 +366275 +366276 +366277 +366278 +366279 +366304 +366305 +366306 +366307 +366308 +366309 +366310 +366311 +366336 +366337 +366338 +366339 +366340 +366341 +366342 +366343 +366368 +366369 +366370 +366371 +366372 +366373 +366374 +366375 +366400 +366401 +366402 +366403 +366404 +366405 +366406 +366407 +366432 +366433 +366434 +366435 +366436 +366437 +366438 +366439 +366464 +366465 +366466 +366467 +366468 +366469 +366470 +366471 +366496 +366497 +366498 +366499 +366500 +366501 +366502 +366503 +366528 +366529 +366530 +366531 +366532 +366533 +366534 +366535 +366560 +366561 +366562 +366563 +366564 +366565 +366566 +366567 +366592 +366593 +366594 +366595 +366596 +366597 +366598 +366599 +366624 +366625 +366626 +366627 +366628 +366629 +366630 +366631 +366656 +366657 +366658 +366659 +366660 +366661 +366662 +366663 +366688 +366689 +366690 +366691 +366692 +366693 +366694 +366695 +366720 +366721 +366722 +366723 +366724 +366725 +366726 +366727 +366752 +366753 +366754 +366755 +366756 +366757 +366758 +366759 +366784 +366785 +366786 +366787 +366788 +366789 +366790 +366791 +366816 +366817 +366818 +366819 +366820 +366821 +366822 +366823 +366848 +366849 +366850 +366851 +366852 +366853 +366854 +366855 +366880 +366881 +366882 +366883 +366884 +366885 +366886 +366887 +366912 +366913 +366914 +366915 +366916 +366917 +366918 +366919 +366944 +366945 +366946 +366947 +366948 +366949 +366950 +366951 +366976 +366977 +366978 +366979 +366980 +366981 +366982 +366983 +367008 +367009 +367010 +367011 +367012 +367013 +367014 +367015 +367040 +367041 +367042 +367043 +367044 +367045 +367046 +367047 +367072 +367073 +367074 +367075 +367076 +367077 +367078 +367079 +367104 +367105 +367106 +367107 +367108 +367109 +367110 +367111 +367136 +367137 +367138 +367139 +367140 +367141 +367142 +367143 +367168 +367169 +367170 +367171 +367172 +367173 +367174 +367175 +367200 +367201 +367202 +367203 +367204 +367205 +367206 +367207 +367232 +367233 +367234 +367235 +367236 +367237 +367238 +367239 +367264 +367265 +367266 +367267 +367268 +367269 +367270 +367271 +367296 +367297 +367298 +367299 +367300 +367301 +367302 +367303 +367328 +367329 +367330 +367331 +367332 +367333 +367334 +367335 +367360 +367361 +367362 +367363 +367364 +367365 +367366 +367367 +367392 +367393 +367394 +367395 +367396 +367397 +367398 +367399 +367424 +367425 +367426 +367427 +367428 +367429 +367430 +367431 +367456 +367457 +367458 +367459 +367460 +367461 +367462 +367463 +367488 +367489 +367490 +367491 +367492 +367493 +367494 +367495 +367520 +367521 +367522 +367523 +367524 +367525 +367526 +367527 +367552 +367553 +367554 +367555 +367556 +367557 +367558 +367559 +367584 +367585 +367586 +367587 +367588 +367589 +367590 +367591 +367616 +367617 +367618 +367619 +367620 +367621 +367622 +367623 +367648 +367649 +367650 +367651 +367652 +367653 +367654 +367655 +367680 +367681 +367682 +367683 +367684 +367685 +367686 +367687 +367712 +367713 +367714 +367715 +367716 +367717 +367718 +367719 +367744 +367745 +367746 +367747 +367748 +367749 +367750 +367751 +367776 +367777 +367778 +367779 +367780 +367781 +367782 +367783 +367808 +367809 +367810 +367811 +367812 +367813 +367814 +367815 +367840 +367841 +367842 +367843 +367844 +367845 +367846 +367847 +367872 +367873 +367874 +367875 +367876 +367877 +367878 +367879 +367904 +367905 +367906 +367907 +367908 +367909 +367910 +367911 +367936 +367937 +367938 +367939 +367940 +367941 +367942 +367943 +367968 +367969 +367970 +367971 +367972 +367973 +367974 +367975 +368000 +368001 +368002 +368003 +368004 +368005 +368006 +368007 +368032 +368033 +368034 +368035 +368036 +368037 +368038 +368039 +368064 +368065 +368066 +368067 +368068 +368069 +368070 +368071 +368096 +368097 +368098 +368099 +368100 +368101 +368102 +368103 +368128 +368129 +368130 +368131 +368132 +368133 +368134 +368135 +368160 +368161 +368162 +368163 +368164 +368165 +368166 +368167 +368192 +368193 +368194 +368195 +368196 +368197 +368198 +368199 +368224 +368225 +368226 +368227 +368228 +368229 +368230 +368231 +368256 +368257 +368258 +368259 +368260 +368261 +368262 +368263 +368288 +368289 +368290 +368291 +368292 +368293 +368294 +368295 +368320 +368321 +368322 +368323 +368324 +368325 +368326 +368327 +368352 +368353 +368354 +368355 +368356 +368357 +368358 +368359 +368384 +368385 +368386 +368387 +368388 +368389 +368390 +368391 +368416 +368417 +368418 +368419 +368420 +368421 +368422 +368423 +368448 +368449 +368450 +368451 +368452 +368453 +368454 +368455 +368480 +368481 +368482 +368483 +368484 +368485 +368486 +368487 +368512 +368513 +368514 +368515 +368516 +368517 +368518 +368519 +368544 +368545 +368546 +368547 +368548 +368549 +368550 +368551 +368576 +368577 +368578 +368579 +368580 +368581 +368582 +368583 +368608 +368609 +368610 +368611 +368612 +368613 +368614 +368615 +368640 +368641 +368642 +368643 +368644 +368645 +368646 +368647 +368672 +368673 +368674 +368675 +368676 +368677 +368678 +368679 +368704 +368705 +368706 +368707 +368708 +368709 +368710 +368711 +368736 +368737 +368738 +368739 +368740 +368741 +368742 +368743 +368768 +368769 +368770 +368771 +368772 +368773 +368774 +368775 +368800 +368801 +368802 +368803 +368804 +368805 +368806 +368807 +368832 +368833 +368834 +368835 +368836 +368837 +368838 +368839 +368864 +368865 +368866 +368867 +368868 +368869 +368870 +368871 +368896 +368897 +368898 +368899 +368900 +368901 +368902 +368903 +368928 +368929 +368930 +368931 +368932 +368933 +368934 +368935 +368960 +368961 +368962 +368963 +368964 +368965 +368966 +368967 +368992 +368993 +368994 +368995 +368996 +368997 +368998 +368999 +369024 +369025 +369026 +369027 +369028 +369029 +369030 +369031 +369056 +369057 +369058 +369059 +369060 +369061 +369062 +369063 +369088 +369089 +369090 +369091 +369092 +369093 +369094 +369095 +369120 +369121 +369122 +369123 +369124 +369125 +369126 +369127 +369152 +369153 +369154 +369155 +369156 +369157 +369158 +369159 +369184 +369185 +369186 +369187 +369188 +369189 +369190 +369191 +369216 +369217 +369218 +369219 +369220 +369221 +369222 +369223 +369248 +369249 +369250 +369251 +369252 +369253 +369254 +369255 +369280 +369281 +369282 +369283 +369284 +369285 +369286 +369287 +369312 +369313 +369314 +369315 +369316 +369317 +369318 +369319 +369344 +369345 +369346 +369347 +369348 +369349 +369350 +369351 +369376 +369377 +369378 +369379 +369380 +369381 +369382 +369383 +369408 +369409 +369410 +369411 +369412 +369413 +369414 +369415 +369440 +369441 +369442 +369443 +369444 +369445 +369446 +369447 +369472 +369473 +369474 +369475 +369476 +369477 +369478 +369479 +369504 +369505 +369506 +369507 +369508 +369509 +369510 +369511 +369536 +369537 +369538 +369539 +369540 +369541 +369542 +369543 +369568 +369569 +369570 +369571 +369572 +369573 +369574 +369575 +369600 +369601 +369602 +369603 +369604 +369605 +369606 +369607 +369632 +369633 +369634 +369635 +369636 +369637 +369638 +369639 +369664 +369665 +369666 +369667 +369668 +369669 +369670 +369671 +369696 +369697 +369698 +369699 +369700 +369701 +369702 +369703 +369728 +369729 +369730 +369731 +369732 +369733 +369734 +369735 +369760 +369761 +369762 +369763 +369764 +369765 +369766 +369767 +369792 +369793 +369794 +369795 +369796 +369797 +369798 +369799 +369824 +369825 +369826 +369827 +369828 +369829 +369830 +369831 +369856 +369857 +369858 +369859 +369860 +369861 +369862 +369863 +369888 +369889 +369890 +369891 +369892 +369893 +369894 +369895 +369920 +369921 +369922 +369923 +369924 +369925 +369926 +369927 +369952 +369953 +369954 +369955 +369956 +369957 +369958 +369959 +369984 +369985 +369986 +369987 +369988 +369989 +369990 +369991 +370016 +370017 +370018 +370019 +370020 +370021 +370022 +370023 +370048 +370049 +370050 +370051 +370052 +370053 +370054 +370055 +370080 +370081 +370082 +370083 +370084 +370085 +370086 +370087 +370112 +370113 +370114 +370115 +370116 +370117 +370118 +370119 +370144 +370145 +370146 +370147 +370148 +370149 +370150 +370151 +370176 +370177 +370178 +370179 +370180 +370181 +370182 +370183 +370208 +370209 +370210 +370211 +370212 +370213 +370214 +370215 +370240 +370241 +370242 +370243 +370244 +370245 +370246 +370247 +370272 +370273 +370274 +370275 +370276 +370277 +370278 +370279 +370304 +370305 +370306 +370307 +370308 +370309 +370310 +370311 +370336 +370337 +370338 +370339 +370340 +370341 +370342 +370343 +370368 +370369 +370370 +370371 +370372 +370373 +370374 +370375 +370400 +370401 +370402 +370403 +370404 +370405 +370406 +370407 +370432 +370433 +370434 +370435 +370436 +370437 +370438 +370439 +370464 +370465 +370466 +370467 +370468 +370469 +370470 +370471 +370496 +370497 +370498 +370499 +370500 +370501 +370502 +370503 +370528 +370529 +370530 +370531 +370532 +370533 +370534 +370535 +370560 +370561 +370562 +370563 +370564 +370565 +370566 +370567 +370592 +370593 +370594 +370595 +370596 +370597 +370598 +370599 +370624 +370625 +370626 +370627 +370628 +370629 +370630 +370631 +370656 +370657 +370658 +370659 +370660 +370661 +370662 +370663 +370688 +370689 +370690 +370691 +370692 +370693 +370694 +370695 +370720 +370721 +370722 +370723 +370724 +370725 +370726 +370727 +370752 +370753 +370754 +370755 +370756 +370757 +370758 +370759 +370784 +370785 +370786 +370787 +370788 +370789 +370790 +370791 +370816 +370817 +370818 +370819 +370820 +370821 +370822 +370823 +370848 +370849 +370850 +370851 +370852 +370853 +370854 +370855 +370880 +370881 +370882 +370883 +370884 +370885 +370886 +370887 +370912 +370913 +370914 +370915 +370916 +370917 +370918 +370919 +370944 +370945 +370946 +370947 +370948 +370949 +370950 +370951 +370976 +370977 +370978 +370979 +370980 +370981 +370982 +370983 +371008 +371009 +371010 +371011 +371012 +371013 +371014 +371015 +371040 +371041 +371042 +371043 +371044 +371045 +371046 +371047 +371072 +371073 +371074 +371075 +371076 +371077 +371078 +371079 +371104 +371105 +371106 +371107 +371108 +371109 +371110 +371111 +371136 +371137 +371138 +371139 +371140 +371141 +371142 +371143 +371168 +371169 +371170 +371171 +371172 +371173 +371174 +371175 +371200 +371201 +371202 +371203 +371204 +371205 +371206 +371207 +371232 +371233 +371234 +371235 +371236 +371237 +371238 +371239 +371264 +371265 +371266 +371267 +371268 +371269 +371270 +371271 +371296 +371297 +371298 +371299 +371300 +371301 +371302 +371303 +371328 +371329 +371330 +371331 +371332 +371333 +371334 +371335 +371360 +371361 +371362 +371363 +371364 +371365 +371366 +371367 +371392 +371393 +371394 +371395 +371396 +371397 +371398 +371399 +371424 +371425 +371426 +371427 +371428 +371429 +371430 +371431 +371456 +371457 +371458 +371459 +371460 +371461 +371462 +371463 +371488 +371489 +371490 +371491 +371492 +371493 +371494 +371495 +371520 +371521 +371522 +371523 +371524 +371525 +371526 +371527 +371552 +371553 +371554 +371555 +371556 +371557 +371558 +371559 +371584 +371585 +371586 +371587 +371588 +371589 +371590 +371591 +371616 +371617 +371618 +371619 +371620 +371621 +371622 +371623 +371648 +371649 +371650 +371651 +371652 +371653 +371654 +371655 +371680 +371681 +371682 +371683 +371684 +371685 +371686 +371687 +371712 +371713 +371714 +371715 +371716 +371717 +371718 +371719 +371744 +371745 +371746 +371747 +371748 +371749 +371750 +371751 +371776 +371777 +371778 +371779 +371780 +371781 +371782 +371783 +371808 +371809 +371810 +371811 +371812 +371813 +371814 +371815 +371840 +371841 +371842 +371843 +371844 +371845 +371846 +371847 +371872 +371873 +371874 +371875 +371876 +371877 +371878 +371879 +371904 +371905 +371906 +371907 +371908 +371909 +371910 +371911 +371936 +371937 +371938 +371939 +371940 +371941 +371942 +371943 +371968 +371969 +371970 +371971 +371972 +371973 +371974 +371975 +372000 +372001 +372002 +372003 +372004 +372005 +372006 +372007 +372032 +372033 +372034 +372035 +372036 +372037 +372038 +372039 +372064 +372065 +372066 +372067 +372068 +372069 +372070 +372071 +372096 +372097 +372098 +372099 +372100 +372101 +372102 +372103 +372128 +372129 +372130 +372131 +372132 +372133 +372134 +372135 +372160 +372161 +372162 +372163 +372164 +372165 +372166 +372167 +372192 +372193 +372194 +372195 +372196 +372197 +372198 +372199 +372224 +372225 +372226 +372227 +372228 +372229 +372230 +372231 +372256 +372257 +372258 +372259 +372260 +372261 +372262 +372263 +372288 +372289 +372290 +372291 +372292 +372293 +372294 +372295 +372320 +372321 +372322 +372323 +372324 +372325 +372326 +372327 +372352 +372353 +372354 +372355 +372356 +372357 +372358 +372359 +372384 +372385 +372386 +372387 +372388 +372389 +372390 +372391 +372416 +372417 +372418 +372419 +372420 +372421 +372422 +372423 +372448 +372449 +372450 +372451 +372452 +372453 +372454 +372455 +372480 +372481 +372482 +372483 +372484 +372485 +372486 +372487 +372512 +372513 +372514 +372515 +372516 +372517 +372518 +372519 +372544 +372545 +372546 +372547 +372548 +372549 +372550 +372551 +372576 +372577 +372578 +372579 +372580 +372581 +372582 +372583 +372608 +372609 +372610 +372611 +372612 +372613 +372614 +372615 +372640 +372641 +372642 +372643 +372644 +372645 +372646 +372647 +372672 +372673 +372674 +372675 +372676 +372677 +372678 +372679 +372704 +372705 +372706 +372707 +372708 +372709 +372710 +372711 +372736 +372737 +372738 +372739 +372740 +372741 +372742 +372743 +372768 +372769 +372770 +372771 +372772 +372773 +372774 +372775 +372800 +372801 +372802 +372803 +372804 +372805 +372806 +372807 +372832 +372833 +372834 +372835 +372836 +372837 +372838 +372839 +372864 +372865 +372866 +372867 +372868 +372869 +372870 +372871 +372896 +372897 +372898 +372899 +372900 +372901 +372902 +372903 +372928 +372929 +372930 +372931 +372932 +372933 +372934 +372935 +372960 +372961 +372962 +372963 +372964 +372965 +372966 +372967 +372992 +372993 +372994 +372995 +372996 +372997 +372998 +372999 +373024 +373025 +373026 +373027 +373028 +373029 +373030 +373031 +373056 +373057 +373058 +373059 +373060 +373061 +373062 +373063 +373088 +373089 +373090 +373091 +373092 +373093 +373094 +373095 +373120 +373121 +373122 +373123 +373124 +373125 +373126 +373127 +373152 +373153 +373154 +373155 +373156 +373157 +373158 +373159 +373184 +373185 +373186 +373187 +373188 +373189 +373190 +373191 +373216 +373217 +373218 +373219 +373220 +373221 +373222 +373223 +373248 +373249 +373250 +373251 +373252 +373253 +373254 +373255 +373280 +373281 +373282 +373283 +373284 +373285 +373286 +373287 +373312 +373313 +373314 +373315 +373316 +373317 +373318 +373319 +373344 +373345 +373346 +373347 +373348 +373349 +373350 +373351 +373376 +373377 +373378 +373379 +373380 +373381 +373382 +373383 +373408 +373409 +373410 +373411 +373412 +373413 +373414 +373415 +373440 +373441 +373442 +373443 +373444 +373445 +373446 +373447 +373472 +373473 +373474 +373475 +373476 +373477 +373478 +373479 +373504 +373505 +373506 +373507 +373508 +373509 +373510 +373511 +373536 +373537 +373538 +373539 +373540 +373541 +373542 +373543 +373568 +373569 +373570 +373571 +373572 +373573 +373574 +373575 +373600 +373601 +373602 +373603 +373604 +373605 +373606 +373607 +373632 +373633 +373634 +373635 +373636 +373637 +373638 +373639 +373664 +373665 +373666 +373667 +373668 +373669 +373670 +373671 +373696 +373697 +373698 +373699 +373700 +373701 +373702 +373703 +373728 +373729 +373730 +373731 +373732 +373733 +373734 +373735 +373760 +373761 +373762 +373763 +373764 +373765 +373766 +373767 +373792 +373793 +373794 +373795 +373796 +373797 +373798 +373799 +373824 +373825 +373826 +373827 +373828 +373829 +373830 +373831 +373856 +373857 +373858 +373859 +373860 +373861 +373862 +373863 +373888 +373889 +373890 +373891 +373892 +373893 +373894 +373895 +373920 +373921 +373922 +373923 +373924 +373925 +373926 +373927 +373952 +373953 +373954 +373955 +373956 +373957 +373958 +373959 +373984 +373985 +373986 +373987 +373988 +373989 +373990 +373991 +374016 +374017 +374018 +374019 +374020 +374021 +374022 +374023 +374048 +374049 +374050 +374051 +374052 +374053 +374054 +374055 +374080 +374081 +374082 +374083 +374084 +374085 +374086 +374087 +374112 +374113 +374114 +374115 +374116 +374117 +374118 +374119 +374144 +374145 +374146 +374147 +374148 +374149 +374150 +374151 +374176 +374177 +374178 +374179 +374180 +374181 +374182 +374183 +374208 +374209 +374210 +374211 +374212 +374213 +374214 +374215 +374240 +374241 +374242 +374243 +374244 +374245 +374246 +374247 +374272 +374273 +374274 +374275 +374276 +374277 +374278 +374279 +374304 +374305 +374306 +374307 +374308 +374309 +374310 +374311 +374336 +374337 +374338 +374339 +374340 +374341 +374342 +374343 +374368 +374369 +374370 +374371 +374372 +374373 +374374 +374375 +374400 +374401 +374402 +374403 +374404 +374405 +374406 +374407 +374432 +374433 +374434 +374435 +374436 +374437 +374438 +374439 +374464 +374465 +374466 +374467 +374468 +374469 +374470 +374471 +374496 +374497 +374498 +374499 +374500 +374501 +374502 +374503 +374528 +374529 +374530 +374531 +374532 +374533 +374534 +374535 +374560 +374561 +374562 +374563 +374564 +374565 +374566 +374567 +374592 +374593 +374594 +374595 +374596 +374597 +374598 +374599 +374624 +374625 +374626 +374627 +374628 +374629 +374630 +374631 +374656 +374657 +374658 +374659 +374660 +374661 +374662 +374663 +374688 +374689 +374690 +374691 +374692 +374693 +374694 +374695 +374720 +374721 +374722 +374723 +374724 +374725 +374726 +374727 +374752 +374753 +374754 +374755 +374756 +374757 +374758 +374759 +374784 +374785 +374786 +374787 +374788 +374789 +374790 +374791 +374816 +374817 +374818 +374819 +374820 +374821 +374822 +374823 +374848 +374849 +374850 +374851 +374852 +374853 +374854 +374855 +374880 +374881 +374882 +374883 +374884 +374885 +374886 +374887 +374912 +374913 +374914 +374915 +374916 +374917 +374918 +374919 +374944 +374945 +374946 +374947 +374948 +374949 +374950 +374951 +374976 +374977 +374978 +374979 +374980 +374981 +374982 +374983 +375008 +375009 +375010 +375011 +375012 +375013 +375014 +375015 +375040 +375041 +375042 +375043 +375044 +375045 +375046 +375047 +375072 +375073 +375074 +375075 +375076 +375077 +375078 +375079 +375104 +375105 +375106 +375107 +375108 +375109 +375110 +375111 +375136 +375137 +375138 +375139 +375140 +375141 +375142 +375143 +375168 +375169 +375170 +375171 +375172 +375173 +375174 +375175 +375200 +375201 +375202 +375203 +375204 +375205 +375206 +375207 +375232 +375233 +375234 +375235 +375236 +375237 +375238 +375239 +375264 +375265 +375266 +375267 +375268 +375269 +375270 +375271 +375296 +375297 +375298 +375299 +375300 +375301 +375302 +375303 +375328 +375329 +375330 +375331 +375332 +375333 +375334 +375335 +375360 +375361 +375362 +375363 +375364 +375365 +375366 +375367 +375392 +375393 +375394 +375395 +375396 +375397 +375398 +375399 +375424 +375425 +375426 +375427 +375428 +375429 +375430 +375431 +375456 +375457 +375458 +375459 +375460 +375461 +375462 +375463 +375488 +375489 +375490 +375491 +375492 +375493 +375494 +375495 +375520 +375521 +375522 +375523 +375524 +375525 +375526 +375527 +375552 +375553 +375554 +375555 +375556 +375557 +375558 +375559 +375584 +375585 +375586 +375587 +375588 +375589 +375590 +375591 +375616 +375617 +375618 +375619 +375620 +375621 +375622 +375623 +375648 +375649 +375650 +375651 +375652 +375653 +375654 +375655 +375680 +375681 +375682 +375683 +375684 +375685 +375686 +375687 +375712 +375713 +375714 +375715 +375716 +375717 +375718 +375719 +375744 +375745 +375746 +375747 +375748 +375749 +375750 +375751 +375776 +375777 +375778 +375779 +375780 +375781 +375782 +375783 +375808 +375809 +375810 +375811 +375812 +375813 +375814 +375815 +375840 +375841 +375842 +375843 +375844 +375845 +375846 +375847 +375872 +375873 +375874 +375875 +375876 +375877 +375878 +375879 +375904 +375905 +375906 +375907 +375908 +375909 +375910 +375911 +375936 +375937 +375938 +375939 +375940 +375941 +375942 +375943 +375968 +375969 +375970 +375971 +375972 +375973 +375974 +375975 +376000 +376001 +376002 +376003 +376004 +376005 +376006 +376007 +376032 +376033 +376034 +376035 +376036 +376037 +376038 +376039 +376064 +376065 +376066 +376067 +376068 +376069 +376070 +376071 +376096 +376097 +376098 +376099 +376100 +376101 +376102 +376103 +376128 +376129 +376130 +376131 +376132 +376133 +376134 +376135 +376160 +376161 +376162 +376163 +376164 +376165 +376166 +376167 +376192 +376193 +376194 +376195 +376196 +376197 +376198 +376199 +376224 +376225 +376226 +376227 +376228 +376229 +376230 +376231 +376256 +376257 +376258 +376259 +376260 +376261 +376262 +376263 +376288 +376289 +376290 +376291 +376292 +376293 +376294 +376295 +376320 +376321 +376322 +376323 +376324 +376325 +376326 +376327 +376352 +376353 +376354 +376355 +376356 +376357 +376358 +376359 +376384 +376385 +376386 +376387 +376388 +376389 +376390 +376391 +376416 +376417 +376418 +376419 +376420 +376421 +376422 +376423 +376448 +376449 +376450 +376451 +376452 +376453 +376454 +376455 +376480 +376481 +376482 +376483 +376484 +376485 +376486 +376487 +376512 +376513 +376514 +376515 +376516 +376517 +376518 +376519 +376544 +376545 +376546 +376547 +376548 +376549 +376550 +376551 +376576 +376577 +376578 +376579 +376580 +376581 +376582 +376583 +376608 +376609 +376610 +376611 +376612 +376613 +376614 +376615 +376640 +376641 +376642 +376643 +376644 +376645 +376646 +376647 +376672 +376673 +376674 +376675 +376676 +376677 +376678 +376679 +376704 +376705 +376706 +376707 +376708 +376709 +376710 +376711 +376736 +376737 +376738 +376739 +376740 +376741 +376742 +376743 +376768 +376769 +376770 +376771 +376772 +376773 +376774 +376775 +376800 +376801 +376802 +376803 +376804 +376805 +376806 +376807 +376832 +376833 +376834 +376835 +376836 +376837 +376838 +376839 +376864 +376865 +376866 +376867 +376868 +376869 +376870 +376871 +376896 +376897 +376898 +376899 +376900 +376901 +376902 +376903 +376928 +376929 +376930 +376931 +376932 +376933 +376934 +376935 +376960 +376961 +376962 +376963 +376964 +376965 +376966 +376967 +376992 +376993 +376994 +376995 +376996 +376997 +376998 +376999 +377024 +377025 +377026 +377027 +377028 +377029 +377030 +377031 +377056 +377057 +377058 +377059 +377060 +377061 +377062 +377063 +377088 +377089 +377090 +377091 +377092 +377093 +377094 +377095 +377120 +377121 +377122 +377123 +377124 +377125 +377126 +377127 +377152 +377153 +377154 +377155 +377156 +377157 +377158 +377159 +377184 +377185 +377186 +377187 +377188 +377189 +377190 +377191 +377216 +377217 +377218 +377219 +377220 +377221 +377222 +377223 +377248 +377249 +377250 +377251 +377252 +377253 +377254 +377255 +377280 +377281 +377282 +377283 +377284 +377285 +377286 +377287 +377312 +377313 +377314 +377315 +377316 +377317 +377318 +377319 +377344 +377345 +377346 +377347 +377348 +377349 +377350 +377351 +377376 +377377 +377378 +377379 +377380 +377381 +377382 +377383 +377408 +377409 +377410 +377411 +377412 +377413 +377414 +377415 +377440 +377441 +377442 +377443 +377444 +377445 +377446 +377447 +377472 +377473 +377474 +377475 +377476 +377477 +377478 +377479 +377504 +377505 +377506 +377507 +377508 +377509 +377510 +377511 +377536 +377537 +377538 +377539 +377540 +377541 +377542 +377543 +377568 +377569 +377570 +377571 +377572 +377573 +377574 +377575 +377600 +377601 +377602 +377603 +377604 +377605 +377606 +377607 +377632 +377633 +377634 +377635 +377636 +377637 +377638 +377639 +377664 +377665 +377666 +377667 +377668 +377669 +377670 +377671 +377696 +377697 +377698 +377699 +377700 +377701 +377702 +377703 +377728 +377729 +377730 +377731 +377732 +377733 +377734 +377735 +377760 +377761 +377762 +377763 +377764 +377765 +377766 +377767 +377792 +377793 +377794 +377795 +377796 +377797 +377798 +377799 +377824 +377825 +377826 +377827 +377828 +377829 +377830 +377831 +377856 +377857 +377858 +377859 +377860 +377861 +377862 +377863 +377888 +377889 +377890 +377891 +377892 +377893 +377894 +377895 +377920 +377921 +377922 +377923 +377924 +377925 +377926 +377927 +377952 +377953 +377954 +377955 +377956 +377957 +377958 +377959 +377984 +377985 +377986 +377987 +377988 +377989 +377990 +377991 +378016 +378017 +378018 +378019 +378020 +378021 +378022 +378023 +378048 +378049 +378050 +378051 +378052 +378053 +378054 +378055 +378080 +378081 +378082 +378083 +378084 +378085 +378086 +378087 +378112 +378113 +378114 +378115 +378116 +378117 +378118 +378119 +378144 +378145 +378146 +378147 +378148 +378149 +378150 +378151 +378176 +378177 +378178 +378179 +378180 +378181 +378182 +378183 +378208 +378209 +378210 +378211 +378212 +378213 +378214 +378215 +378240 +378241 +378242 +378243 +378244 +378245 +378246 +378247 +378272 +378273 +378274 +378275 +378276 +378277 +378278 +378279 +378304 +378305 +378306 +378307 +378308 +378309 +378310 +378311 +378336 +378337 +378338 +378339 +378340 +378341 +378342 +378343 +378368 +378369 +378370 +378371 +378372 +378373 +378374 +378375 +378400 +378401 +378402 +378403 +378404 +378405 +378406 +378407 +378432 +378433 +378434 +378435 +378436 +378437 +378438 +378439 +378464 +378465 +378466 +378467 +378468 +378469 +378470 +378471 +378496 +378497 +378498 +378499 +378500 +378501 +378502 +378503 +378528 +378529 +378530 +378531 +378532 +378533 +378534 +378535 +378560 +378561 +378562 +378563 +378564 +378565 +378566 +378567 +378592 +378593 +378594 +378595 +378596 +378597 +378598 +378599 +378624 +378625 +378626 +378627 +378628 +378629 +378630 +378631 +378656 +378657 +378658 +378659 +378660 +378661 +378662 +378663 +378688 +378689 +378690 +378691 +378692 +378693 +378694 +378695 +378720 +378721 +378722 +378723 +378724 +378725 +378726 +378727 +378752 +378753 +378754 +378755 +378756 +378757 +378758 +378759 +378784 +378785 +378786 +378787 +378788 +378789 +378790 +378791 +378816 +378817 +378818 +378819 +378820 +378821 +378822 +378823 +378848 +378849 +378850 +378851 +378852 +378853 +378854 +378855 +378880 +378881 +378882 +378883 +378884 +378885 +378886 +378887 +378912 +378913 +378914 +378915 +378916 +378917 +378918 +378919 +378944 +378945 +378946 +378947 +378948 +378949 +378950 +378951 +378976 +378977 +378978 +378979 +378980 +378981 +378982 +378983 +379008 +379009 +379010 +379011 +379012 +379013 +379014 +379015 +379040 +379041 +379042 +379043 +379044 +379045 +379046 +379047 +379072 +379073 +379074 +379075 +379076 +379077 +379078 +379079 +379104 +379105 +379106 +379107 +379108 +379109 +379110 +379111 +379136 +379137 +379138 +379139 +379140 +379141 +379142 +379143 +379168 +379169 +379170 +379171 +379172 +379173 +379174 +379175 +379200 +379201 +379202 +379203 +379204 +379205 +379206 +379207 +379232 +379233 +379234 +379235 +379236 +379237 +379238 +379239 +379264 +379265 +379266 +379267 +379268 +379269 +379270 +379271 +379296 +379297 +379298 +379299 +379300 +379301 +379302 +379303 +379328 +379329 +379330 +379331 +379332 +379333 +379334 +379335 +379360 +379361 +379362 +379363 +379364 +379365 +379366 +379367 +379392 +379393 +379394 +379395 +379396 +379397 +379398 +379399 +379424 +379425 +379426 +379427 +379428 +379429 +379430 +379431 +379456 +379457 +379458 +379459 +379460 +379461 +379462 +379463 +379488 +379489 +379490 +379491 +379492 +379493 +379494 +379495 +379520 +379521 +379522 +379523 +379524 +379525 +379526 +379527 +379552 +379553 +379554 +379555 +379556 +379557 +379558 +379559 +379584 +379585 +379586 +379587 +379588 +379589 +379590 +379591 +379616 +379617 +379618 +379619 +379620 +379621 +379622 +379623 +379648 +379649 +379650 +379651 +379652 +379653 +379654 +379655 +379680 +379681 +379682 +379683 +379684 +379685 +379686 +379687 +379712 +379713 +379714 +379715 +379716 +379717 +379718 +379719 +379744 +379745 +379746 +379747 +379748 +379749 +379750 +379751 +379776 +379777 +379778 +379779 +379780 +379781 +379782 +379783 +379808 +379809 +379810 +379811 +379812 +379813 +379814 +379815 +379840 +379841 +379842 +379843 +379844 +379845 +379846 +379847 +379872 +379873 +379874 +379875 +379876 +379877 +379878 +379879 +379904 +379905 +379906 +379907 +379908 +379909 +379910 +379911 +379936 +379937 +379938 +379939 +379940 +379941 +379942 +379943 +379968 +379969 +379970 +379971 +379972 +379973 +379974 +379975 +380000 +380001 +380002 +380003 +380004 +380005 +380006 +380007 +380032 +380033 +380034 +380035 +380036 +380037 +380038 +380039 +380064 +380065 +380066 +380067 +380068 +380069 +380070 +380071 +380096 +380097 +380098 +380099 +380100 +380101 +380102 +380103 +380128 +380129 +380130 +380131 +380132 +380133 +380134 +380135 +380160 +380161 +380162 +380163 +380164 +380165 +380166 +380167 +380192 +380193 +380194 +380195 +380196 +380197 +380198 +380199 +380224 +380225 +380226 +380227 +380228 +380229 +380230 +380231 +380256 +380257 +380258 +380259 +380260 +380261 +380262 +380263 +380288 +380289 +380290 +380291 +380292 +380293 +380294 +380295 +380320 +380321 +380322 +380323 +380324 +380325 +380326 +380327 +380352 +380353 +380354 +380355 +380356 +380357 +380358 +380359 +380384 +380385 +380386 +380387 +380388 +380389 +380390 +380391 +380416 +380417 +380418 +380419 +380420 +380421 +380422 +380423 +380448 +380449 +380450 +380451 +380452 +380453 +380454 +380455 +380480 +380481 +380482 +380483 +380484 +380485 +380486 +380487 +380512 +380513 +380514 +380515 +380516 +380517 +380518 +380519 +380544 +380545 +380546 +380547 +380548 +380549 +380550 +380551 +380576 +380577 +380578 +380579 +380580 +380581 +380582 +380583 +380608 +380609 +380610 +380611 +380612 +380613 +380614 +380615 +380640 +380641 +380642 +380643 +380644 +380645 +380646 +380647 +380672 +380673 +380674 +380675 +380676 +380677 +380678 +380679 +380704 +380705 +380706 +380707 +380708 +380709 +380710 +380711 +380736 +380737 +380738 +380739 +380740 +380741 +380742 +380743 +380768 +380769 +380770 +380771 +380772 +380773 +380774 +380775 +380800 +380801 +380802 +380803 +380804 +380805 +380806 +380807 +380832 +380833 +380834 +380835 +380836 +380837 +380838 +380839 +380864 +380865 +380866 +380867 +380868 +380869 +380870 +380871 +380896 +380897 +380898 +380899 +380900 +380901 +380902 +380903 +380928 +380929 +380930 +380931 +380932 +380933 +380934 +380935 +380960 +380961 +380962 +380963 +380964 +380965 +380966 +380967 +380992 +380993 +380994 +380995 +380996 +380997 +380998 +380999 +381024 +381025 +381026 +381027 +381028 +381029 +381030 +381031 +381056 +381057 +381058 +381059 +381060 +381061 +381062 +381063 +381088 +381089 +381090 +381091 +381092 +381093 +381094 +381095 +381120 +381121 +381122 +381123 +381124 +381125 +381126 +381127 +381152 +381153 +381154 +381155 +381156 +381157 +381158 +381159 +381184 +381185 +381186 +381187 +381188 +381189 +381190 +381191 +381216 +381217 +381218 +381219 +381220 +381221 +381222 +381223 +381248 +381249 +381250 +381251 +381252 +381253 +381254 +381255 +381280 +381281 +381282 +381283 +381284 +381285 +381286 +381287 +381312 +381313 +381314 +381315 +381316 +381317 +381318 +381319 +381344 +381345 +381346 +381347 +381348 +381349 +381350 +381351 +381376 +381377 +381378 +381379 +381380 +381381 +381382 +381383 +381408 +381409 +381410 +381411 +381412 +381413 +381414 +381415 +381440 +381441 +381442 +381443 +381444 +381445 +381446 +381447 +381472 +381473 +381474 +381475 +381476 +381477 +381478 +381479 +381504 +381505 +381506 +381507 +381508 +381509 +381510 +381511 +381536 +381537 +381538 +381539 +381540 +381541 +381542 +381543 +381568 +381569 +381570 +381571 +381572 +381573 +381574 +381575 +381600 +381601 +381602 +381603 +381604 +381605 +381606 +381607 +381632 +381633 +381634 +381635 +381636 +381637 +381638 +381639 +381664 +381665 +381666 +381667 +381668 +381669 +381670 +381671 +381696 +381697 +381698 +381699 +381700 +381701 +381702 +381703 +381728 +381729 +381730 +381731 +381732 +381733 +381734 +381735 +381760 +381761 +381762 +381763 +381764 +381765 +381766 +381767 +381792 +381793 +381794 +381795 +381796 +381797 +381798 +381799 +381824 +381825 +381826 +381827 +381828 +381829 +381830 +381831 +381856 +381857 +381858 +381859 +381860 +381861 +381862 +381863 +381888 +381889 +381890 +381891 +381892 +381893 +381894 +381895 +381920 +381921 +381922 +381923 +381924 +381925 +381926 +381927 +381952 +381953 +381954 +381955 +381956 +381957 +381958 +381959 +381984 +381985 +381986 +381987 +381988 +381989 +381990 +381991 +382016 +382017 +382018 +382019 +382020 +382021 +382022 +382023 +382048 +382049 +382050 +382051 +382052 +382053 +382054 +382055 +382080 +382081 +382082 +382083 +382084 +382085 +382086 +382087 +382112 +382113 +382114 +382115 +382116 +382117 +382118 +382119 +382144 +382145 +382146 +382147 +382148 +382149 +382150 +382151 +382176 +382177 +382178 +382179 +382180 +382181 +382182 +382183 +382208 +382209 +382210 +382211 +382212 +382213 +382214 +382215 +382240 +382241 +382242 +382243 +382244 +382245 +382246 +382247 +382272 +382273 +382274 +382275 +382276 +382277 +382278 +382279 +382304 +382305 +382306 +382307 +382308 +382309 +382310 +382311 +382336 +382337 +382338 +382339 +382340 +382341 +382342 +382343 +382368 +382369 +382370 +382371 +382372 +382373 +382374 +382375 +382400 +382401 +382402 +382403 +382404 +382405 +382406 +382407 +382432 +382433 +382434 +382435 +382436 +382437 +382438 +382439 +382464 +382465 +382466 +382467 +382468 +382469 +382470 +382471 +382496 +382497 +382498 +382499 +382500 +382501 +382502 +382503 +382528 +382529 +382530 +382531 +382532 +382533 +382534 +382535 +382560 +382561 +382562 +382563 +382564 +382565 +382566 +382567 +382592 +382593 +382594 +382595 +382596 +382597 +382598 +382599 +382624 +382625 +382626 +382627 +382628 +382629 +382630 +382631 +382656 +382657 +382658 +382659 +382660 +382661 +382662 +382663 +382688 +382689 +382690 +382691 +382692 +382693 +382694 +382695 +382720 +382721 +382722 +382723 +382724 +382725 +382726 +382727 +382752 +382753 +382754 +382755 +382756 +382757 +382758 +382759 +382784 +382785 +382786 +382787 +382788 +382789 +382790 +382791 +382816 +382817 +382818 +382819 +382820 +382821 +382822 +382823 +382848 +382849 +382850 +382851 +382852 +382853 +382854 +382855 +382880 +382881 +382882 +382883 +382884 +382885 +382886 +382887 +382912 +382913 +382914 +382915 +382916 +382917 +382918 +382919 +382944 +382945 +382946 +382947 +382948 +382949 +382950 +382951 +382976 +382977 +382978 +382979 +382980 +382981 +382982 +382983 +383008 +383009 +383010 +383011 +383012 +383013 +383014 +383015 +383040 +383041 +383042 +383043 +383044 +383045 +383046 +383047 +383072 +383073 +383074 +383075 +383076 +383077 +383078 +383079 +383104 +383105 +383106 +383107 +383108 +383109 +383110 +383111 +383136 +383137 +383138 +383139 +383140 +383141 +383142 +383143 +383168 +383169 +383170 +383171 +383172 +383173 +383174 +383175 +383200 +383201 +383202 +383203 +383204 +383205 +383206 +383207 +383232 +383233 +383234 +383235 +383236 +383237 +383238 +383239 +383264 +383265 +383266 +383267 +383268 +383269 +383270 +383271 +383296 +383297 +383298 +383299 +383300 +383301 +383302 +383303 +383328 +383329 +383330 +383331 +383332 +383333 +383334 +383335 +383360 +383361 +383362 +383363 +383364 +383365 +383366 +383367 +383392 +383393 +383394 +383395 +383396 +383397 +383398 +383399 +383424 +383425 +383426 +383427 +383428 +383429 +383430 +383431 +383456 +383457 +383458 +383459 +383460 +383461 +383462 +383463 +383488 +383489 +383490 +383491 +383492 +383493 +383494 +383495 +383520 +383521 +383522 +383523 +383524 +383525 +383526 +383527 +383552 +383553 +383554 +383555 +383556 +383557 +383558 +383559 +383584 +383585 +383586 +383587 +383588 +383589 +383590 +383591 +383616 +383617 +383618 +383619 +383620 +383621 +383622 +383623 +383648 +383649 +383650 +383651 +383652 +383653 +383654 +383655 +383680 +383681 +383682 +383683 +383684 +383685 +383686 +383687 +383712 +383713 +383714 +383715 +383716 +383717 +383718 +383719 +383744 +383745 +383746 +383747 +383748 +383749 +383750 +383751 +383776 +383777 +383778 +383779 +383780 +383781 +383782 +383783 +383808 +383809 +383810 +383811 +383812 +383813 +383814 +383815 +383840 +383841 +383842 +383843 +383844 +383845 +383846 +383847 +383872 +383873 +383874 +383875 +383876 +383877 +383878 +383879 +383904 +383905 +383906 +383907 +383908 +383909 +383910 +383911 +383936 +383937 +383938 +383939 +383940 +383941 +383942 +383943 +383968 +383969 +383970 +383971 +383972 +383973 +383974 +383975 +384000 +384001 +384002 +384003 +384004 +384005 +384006 +384007 +384032 +384033 +384034 +384035 +384036 +384037 +384038 +384039 +384064 +384065 +384066 +384067 +384068 +384069 +384070 +384071 +384096 +384097 +384098 +384099 +384100 +384101 +384102 +384103 +384128 +384129 +384130 +384131 +384132 +384133 +384134 +384135 +384160 +384161 +384162 +384163 +384164 +384165 +384166 +384167 +384192 +384193 +384194 +384195 +384196 +384197 +384198 +384199 +384224 +384225 +384226 +384227 +384228 +384229 +384230 +384231 +384256 +384257 +384258 +384259 +384260 +384261 +384262 +384263 +384288 +384289 +384290 +384291 +384292 +384293 +384294 +384295 +384320 +384321 +384322 +384323 +384324 +384325 +384326 +384327 +384352 +384353 +384354 +384355 +384356 +384357 +384358 +384359 +384384 +384385 +384386 +384387 +384388 +384389 +384390 +384391 +384416 +384417 +384418 +384419 +384420 +384421 +384422 +384423 +384448 +384449 +384450 +384451 +384452 +384453 +384454 +384455 +384480 +384481 +384482 +384483 +384484 +384485 +384486 +384487 +384512 +384513 +384514 +384515 +384516 +384517 +384518 +384519 +384544 +384545 +384546 +384547 +384548 +384549 +384550 +384551 +384576 +384577 +384578 +384579 +384580 +384581 +384582 +384583 +384608 +384609 +384610 +384611 +384612 +384613 +384614 +384615 +384640 +384641 +384642 +384643 +384644 +384645 +384646 +384647 +384672 +384673 +384674 +384675 +384676 +384677 +384678 +384679 +384704 +384705 +384706 +384707 +384708 +384709 +384710 +384711 +384736 +384737 +384738 +384739 +384740 +384741 +384742 +384743 +384768 +384769 +384770 +384771 +384772 +384773 +384774 +384775 +384800 +384801 +384802 +384803 +384804 +384805 +384806 +384807 +384832 +384833 +384834 +384835 +384836 +384837 +384838 +384839 +384864 +384865 +384866 +384867 +384868 +384869 +384870 +384871 +384896 +384897 +384898 +384899 +384900 +384901 +384902 +384903 +384928 +384929 +384930 +384931 +384932 +384933 +384934 +384935 +384960 +384961 +384962 +384963 +384964 +384965 +384966 +384967 +384992 +384993 +384994 +384995 +384996 +384997 +384998 +384999 +385024 +385025 +385026 +385027 +385028 +385029 +385030 +385031 +385056 +385057 +385058 +385059 +385060 +385061 +385062 +385063 +385088 +385089 +385090 +385091 +385092 +385093 +385094 +385095 +385120 +385121 +385122 +385123 +385124 +385125 +385126 +385127 +385152 +385153 +385154 +385155 +385156 +385157 +385158 +385159 +385184 +385185 +385186 +385187 +385188 +385189 +385190 +385191 +385216 +385217 +385218 +385219 +385220 +385221 +385222 +385223 +385248 +385249 +385250 +385251 +385252 +385253 +385254 +385255 +385280 +385281 +385282 +385283 +385284 +385285 +385286 +385287 +385312 +385313 +385314 +385315 +385316 +385317 +385318 +385319 +385344 +385345 +385346 +385347 +385348 +385349 +385350 +385351 +385376 +385377 +385378 +385379 +385380 +385381 +385382 +385383 +385408 +385409 +385410 +385411 +385412 +385413 +385414 +385415 +385440 +385441 +385442 +385443 +385444 +385445 +385446 +385447 +385472 +385473 +385474 +385475 +385476 +385477 +385478 +385479 +385504 +385505 +385506 +385507 +385508 +385509 +385510 +385511 +385536 +385537 +385538 +385539 +385540 +385541 +385542 +385543 +385568 +385569 +385570 +385571 +385572 +385573 +385574 +385575 +385600 +385601 +385602 +385603 +385604 +385605 +385606 +385607 +385632 +385633 +385634 +385635 +385636 +385637 +385638 +385639 +385664 +385665 +385666 +385667 +385668 +385669 +385670 +385671 +385696 +385697 +385698 +385699 +385700 +385701 +385702 +385703 +385728 +385729 +385730 +385731 +385732 +385733 +385734 +385735 +385760 +385761 +385762 +385763 +385764 +385765 +385766 +385767 +385792 +385793 +385794 +385795 +385796 +385797 +385798 +385799 +385824 +385825 +385826 +385827 +385828 +385829 +385830 +385831 +385856 +385857 +385858 +385859 +385860 +385861 +385862 +385863 +385888 +385889 +385890 +385891 +385892 +385893 +385894 +385895 +385920 +385921 +385922 +385923 +385924 +385925 +385926 +385927 +385952 +385953 +385954 +385955 +385956 +385957 +385958 +385959 +385984 +385985 +385986 +385987 +385988 +385989 +385990 +385991 +386016 +386017 +386018 +386019 +386020 +386021 +386022 +386023 +386048 +386049 +386050 +386051 +386052 +386053 +386054 +386055 +386080 +386081 +386082 +386083 +386084 +386085 +386086 +386087 +386112 +386113 +386114 +386115 +386116 +386117 +386118 +386119 +386144 +386145 +386146 +386147 +386148 +386149 +386150 +386151 +386176 +386177 +386178 +386179 +386180 +386181 +386182 +386183 +386208 +386209 +386210 +386211 +386212 +386213 +386214 +386215 +386240 +386241 +386242 +386243 +386244 +386245 +386246 +386247 +386272 +386273 +386274 +386275 +386276 +386277 +386278 +386279 +386304 +386305 +386306 +386307 +386308 +386309 +386310 +386311 +386336 +386337 +386338 +386339 +386340 +386341 +386342 +386343 +386368 +386369 +386370 +386371 +386372 +386373 +386374 +386375 +386400 +386401 +386402 +386403 +386404 +386405 +386406 +386407 +386432 +386433 +386434 +386435 +386436 +386437 +386438 +386439 +386464 +386465 +386466 +386467 +386468 +386469 +386470 +386471 +386496 +386497 +386498 +386499 +386500 +386501 +386502 +386503 +386528 +386529 +386530 +386531 +386532 +386533 +386534 +386535 +386560 +386561 +386562 +386563 +386564 +386565 +386566 +386567 +386592 +386593 +386594 +386595 +386596 +386597 +386598 +386599 +386624 +386625 +386626 +386627 +386628 +386629 +386630 +386631 +386656 +386657 +386658 +386659 +386660 +386661 +386662 +386663 +386688 +386689 +386690 +386691 +386692 +386693 +386694 +386695 +386720 +386721 +386722 +386723 +386724 +386725 +386726 +386727 +386752 +386753 +386754 +386755 +386756 +386757 +386758 +386759 +386784 +386785 +386786 +386787 +386788 +386789 +386790 +386791 +386816 +386817 +386818 +386819 +386820 +386821 +386822 +386823 +386848 +386849 +386850 +386851 +386852 +386853 +386854 +386855 +386880 +386881 +386882 +386883 +386884 +386885 +386886 +386887 +386912 +386913 +386914 +386915 +386916 +386917 +386918 +386919 +386944 +386945 +386946 +386947 +386948 +386949 +386950 +386951 +386976 +386977 +386978 +386979 +386980 +386981 +386982 +386983 +387008 +387009 +387010 +387011 +387012 +387013 +387014 +387015 +387040 +387041 +387042 +387043 +387044 +387045 +387046 +387047 +387072 +387073 +387074 +387075 +387076 +387077 +387078 +387079 +387104 +387105 +387106 +387107 +387108 +387109 +387110 +387111 +387136 +387137 +387138 +387139 +387140 +387141 +387142 +387143 +387168 +387169 +387170 +387171 +387172 +387173 +387174 +387175 +387200 +387201 +387202 +387203 +387204 +387205 +387206 +387207 +387232 +387233 +387234 +387235 +387236 +387237 +387238 +387239 +387264 +387265 +387266 +387267 +387268 +387269 +387270 +387271 +387296 +387297 +387298 +387299 +387300 +387301 +387302 +387303 +387328 +387329 +387330 +387331 +387332 +387333 +387334 +387335 +387360 +387361 +387362 +387363 +387364 +387365 +387366 +387367 +387392 +387393 +387394 +387395 +387396 +387397 +387398 +387399 +387424 +387425 +387426 +387427 +387428 +387429 +387430 +387431 +387456 +387457 +387458 +387459 +387460 +387461 +387462 +387463 +387488 +387489 +387490 +387491 +387492 +387493 +387494 +387495 +387520 +387521 +387522 +387523 +387524 +387525 +387526 +387527 +387552 +387553 +387554 +387555 +387556 +387557 +387558 +387559 +387584 +387585 +387586 +387587 +387588 +387589 +387590 +387591 +387616 +387617 +387618 +387619 +387620 +387621 +387622 +387623 +387648 +387649 +387650 +387651 +387652 +387653 +387654 +387655 +387680 +387681 +387682 +387683 +387684 +387685 +387686 +387687 +387712 +387713 +387714 +387715 +387716 +387717 +387718 +387719 +387744 +387745 +387746 +387747 +387748 +387749 +387750 +387751 +387776 +387777 +387778 +387779 +387780 +387781 +387782 +387783 +387808 +387809 +387810 +387811 +387812 +387813 +387814 +387815 +387840 +387841 +387842 +387843 +387844 +387845 +387846 +387847 +387872 +387873 +387874 +387875 +387876 +387877 +387878 +387879 +387904 +387905 +387906 +387907 +387908 +387909 +387910 +387911 +387936 +387937 +387938 +387939 +387940 +387941 +387942 +387943 +387968 +387969 +387970 +387971 +387972 +387973 +387974 +387975 +388000 +388001 +388002 +388003 +388004 +388005 +388006 +388007 +388032 +388033 +388034 +388035 +388036 +388037 +388038 +388039 +388064 +388065 +388066 +388067 +388068 +388069 +388070 +388071 +388096 +388097 +388098 +388099 +388100 +388101 +388102 +388103 +388128 +388129 +388130 +388131 +388132 +388133 +388134 +388135 +388160 +388161 +388162 +388163 +388164 +388165 +388166 +388167 +388192 +388193 +388194 +388195 +388196 +388197 +388198 +388199 +388224 +388225 +388226 +388227 +388228 +388229 +388230 +388231 +388256 +388257 +388258 +388259 +388260 +388261 +388262 +388263 +388288 +388289 +388290 +388291 +388292 +388293 +388294 +388295 +388320 +388321 +388322 +388323 +388324 +388325 +388326 +388327 +388352 +388353 +388354 +388355 +388356 +388357 +388358 +388359 +388384 +388385 +388386 +388387 +388388 +388389 +388390 +388391 +388416 +388417 +388418 +388419 +388420 +388421 +388422 +388423 +388448 +388449 +388450 +388451 +388452 +388453 +388454 +388455 +388480 +388481 +388482 +388483 +388484 +388485 +388486 +388487 +388512 +388513 +388514 +388515 +388516 +388517 +388518 +388519 +388544 +388545 +388546 +388547 +388548 +388549 +388550 +388551 +388576 +388577 +388578 +388579 +388580 +388581 +388582 +388583 +388608 +388609 +388610 +388611 +388612 +388613 +388614 +388615 +388640 +388641 +388642 +388643 +388644 +388645 +388646 +388647 +388672 +388673 +388674 +388675 +388676 +388677 +388678 +388679 +388704 +388705 +388706 +388707 +388708 +388709 +388710 +388711 +388736 +388737 +388738 +388739 +388740 +388741 +388742 +388743 +388768 +388769 +388770 +388771 +388772 +388773 +388774 +388775 +388800 +388801 +388802 +388803 +388804 +388805 +388806 +388807 +388832 +388833 +388834 +388835 +388836 +388837 +388838 +388839 +388864 +388865 +388866 +388867 +388868 +388869 +388870 +388871 +388896 +388897 +388898 +388899 +388900 +388901 +388902 +388903 +388928 +388929 +388930 +388931 +388932 +388933 +388934 +388935 +388960 +388961 +388962 +388963 +388964 +388965 +388966 +388967 +388992 +388993 +388994 +388995 +388996 +388997 +388998 +388999 +389024 +389025 +389026 +389027 +389028 +389029 +389030 +389031 +389056 +389057 +389058 +389059 +389060 +389061 +389062 +389063 +389088 +389089 +389090 +389091 +389092 +389093 +389094 +389095 +389120 +389121 +389122 +389123 +389124 +389125 +389126 +389127 +389152 +389153 +389154 +389155 +389156 +389157 +389158 +389159 +389184 +389185 +389186 +389187 +389188 +389189 +389190 +389191 +389216 +389217 +389218 +389219 +389220 +389221 +389222 +389223 +389248 +389249 +389250 +389251 +389252 +389253 +389254 +389255 +389280 +389281 +389282 +389283 +389284 +389285 +389286 +389287 +389312 +389313 +389314 +389315 +389316 +389317 +389318 +389319 +389344 +389345 +389346 +389347 +389348 +389349 +389350 +389351 +389376 +389377 +389378 +389379 +389380 +389381 +389382 +389383 +389408 +389409 +389410 +389411 +389412 +389413 +389414 +389415 +389440 +389441 +389442 +389443 +389444 +389445 +389446 +389447 +389472 +389473 +389474 +389475 +389476 +389477 +389478 +389479 +389504 +389505 +389506 +389507 +389508 +389509 +389510 +389511 +389536 +389537 +389538 +389539 +389540 +389541 +389542 +389543 +389568 +389569 +389570 +389571 +389572 +389573 +389574 +389575 +389600 +389601 +389602 +389603 +389604 +389605 +389606 +389607 +389632 +389633 +389634 +389635 +389636 +389637 +389638 +389639 +389664 +389665 +389666 +389667 +389668 +389669 +389670 +389671 +389696 +389697 +389698 +389699 +389700 +389701 +389702 +389703 +389728 +389729 +389730 +389731 +389732 +389733 +389734 +389735 +389760 +389761 +389762 +389763 +389764 +389765 +389766 +389767 +389792 +389793 +389794 +389795 +389796 +389797 +389798 +389799 +389824 +389825 +389826 +389827 +389828 +389829 +389830 +389831 +389856 +389857 +389858 +389859 +389860 +389861 +389862 +389863 +389888 +389889 +389890 +389891 +389892 +389893 +389894 +389895 +389920 +389921 +389922 +389923 +389924 +389925 +389926 +389927 +389952 +389953 +389954 +389955 +389956 +389957 +389958 +389959 +389984 +389985 +389986 +389987 +389988 +389989 +389990 +389991 +390016 +390017 +390018 +390019 +390020 +390021 +390022 +390023 +390048 +390049 +390050 +390051 +390052 +390053 +390054 +390055 +390080 +390081 +390082 +390083 +390084 +390085 +390086 +390087 +390112 +390113 +390114 +390115 +390116 +390117 +390118 +390119 +390144 +390145 +390146 +390147 +390148 +390149 +390150 +390151 +390176 +390177 +390178 +390179 +390180 +390181 +390182 +390183 +390208 +390209 +390210 +390211 +390212 +390213 +390214 +390215 +390240 +390241 +390242 +390243 +390244 +390245 +390246 +390247 +390272 +390273 +390274 +390275 +390276 +390277 +390278 +390279 +390304 +390305 +390306 +390307 +390308 +390309 +390310 +390311 +390336 +390337 +390338 +390339 +390340 +390341 +390342 +390343 +390368 +390369 +390370 +390371 +390372 +390373 +390374 +390375 +390400 +390401 +390402 +390403 +390404 +390405 +390406 +390407 +390432 +390433 +390434 +390435 +390436 +390437 +390438 +390439 +390464 +390465 +390466 +390467 +390468 +390469 +390470 +390471 +390496 +390497 +390498 +390499 +390500 +390501 +390502 +390503 +390528 +390529 +390530 +390531 +390532 +390533 +390534 +390535 +390560 +390561 +390562 +390563 +390564 +390565 +390566 +390567 +390592 +390593 +390594 +390595 +390596 +390597 +390598 +390599 +390624 +390625 +390626 +390627 +390628 +390629 +390630 +390631 +390656 +390657 +390658 +390659 +390660 +390661 +390662 +390663 +390688 +390689 +390690 +390691 +390692 +390693 +390694 +390695 +390720 +390721 +390722 +390723 +390724 +390725 +390726 +390727 +390752 +390753 +390754 +390755 +390756 +390757 +390758 +390759 +390784 +390785 +390786 +390787 +390788 +390789 +390790 +390791 +390816 +390817 +390818 +390819 +390820 +390821 +390822 +390823 +390848 +390849 +390850 +390851 +390852 +390853 +390854 +390855 +390880 +390881 +390882 +390883 +390884 +390885 +390886 +390887 +390912 +390913 +390914 +390915 +390916 +390917 +390918 +390919 +390944 +390945 +390946 +390947 +390948 +390949 +390950 +390951 +390976 +390977 +390978 +390979 +390980 +390981 +390982 +390983 +391008 +391009 +391010 +391011 +391012 +391013 +391014 +391015 +391040 +391041 +391042 +391043 +391044 +391045 +391046 +391047 +391072 +391073 +391074 +391075 +391076 +391077 +391078 +391079 +391104 +391105 +391106 +391107 +391108 +391109 +391110 +391111 +391136 +391137 +391138 +391139 +391140 +391141 +391142 +391143 +391168 +391169 +391170 +391171 +391172 +391173 +391174 +391175 +391200 +391201 +391202 +391203 +391204 +391205 +391206 +391207 +391232 +391233 +391234 +391235 +391236 +391237 +391238 +391239 +391264 +391265 +391266 +391267 +391268 +391269 +391270 +391271 +391296 +391297 +391298 +391299 +391300 +391301 +391302 +391303 +391328 +391329 +391330 +391331 +391332 +391333 +391334 +391335 +391360 +391361 +391362 +391363 +391364 +391365 +391366 +391367 +391392 +391393 +391394 +391395 +391396 +391397 +391398 +391399 +391424 +391425 +391426 +391427 +391428 +391429 +391430 +391431 +391456 +391457 +391458 +391459 +391460 +391461 +391462 +391463 +391488 +391489 +391490 +391491 +391492 +391493 +391494 +391495 +391520 +391521 +391522 +391523 +391524 +391525 +391526 +391527 +391552 +391553 +391554 +391555 +391556 +391557 +391558 +391559 +391584 +391585 +391586 +391587 +391588 +391589 +391590 +391591 +391616 +391617 +391618 +391619 +391620 +391621 +391622 +391623 +391648 +391649 +391650 +391651 +391652 +391653 +391654 +391655 +391680 +391681 +391682 +391683 +391684 +391685 +391686 +391687 +391712 +391713 +391714 +391715 +391716 +391717 +391718 +391719 +391744 +391745 +391746 +391747 +391748 +391749 +391750 +391751 +391776 +391777 +391778 +391779 +391780 +391781 +391782 +391783 +391808 +391809 +391810 +391811 +391812 +391813 +391814 +391815 +391840 +391841 +391842 +391843 +391844 +391845 +391846 +391847 +391872 +391873 +391874 +391875 +391876 +391877 +391878 +391879 +391904 +391905 +391906 +391907 +391908 +391909 +391910 +391911 +391936 +391937 +391938 +391939 +391940 +391941 +391942 +391943 +391968 +391969 +391970 +391971 +391972 +391973 +391974 +391975 +392000 +392001 +392002 +392003 +392004 +392005 +392006 +392007 +392032 +392033 +392034 +392035 +392036 +392037 +392038 +392039 +392064 +392065 +392066 +392067 +392068 +392069 +392070 +392071 +392096 +392097 +392098 +392099 +392100 +392101 +392102 +392103 +392128 +392129 +392130 +392131 +392132 +392133 +392134 +392135 +392160 +392161 +392162 +392163 +392164 +392165 +392166 +392167 +392192 +392193 +392194 +392195 +392196 +392197 +392198 +392199 +392224 +392225 +392226 +392227 +392228 +392229 +392230 +392231 +392256 +392257 +392258 +392259 +392260 +392261 +392262 +392263 +392288 +392289 +392290 +392291 +392292 +392293 +392294 +392295 +392320 +392321 +392322 +392323 +392324 +392325 +392326 +392327 +392352 +392353 +392354 +392355 +392356 +392357 +392358 +392359 +392384 +392385 +392386 +392387 +392388 +392389 +392390 +392391 +392416 +392417 +392418 +392419 +392420 +392421 +392422 +392423 +392448 +392449 +392450 +392451 +392452 +392453 +392454 +392455 +392480 +392481 +392482 +392483 +392484 +392485 +392486 +392487 +392512 +392513 +392514 +392515 +392516 +392517 +392518 +392519 +392544 +392545 +392546 +392547 +392548 +392549 +392550 +392551 +392576 +392577 +392578 +392579 +392580 +392581 +392582 +392583 +392608 +392609 +392610 +392611 +392612 +392613 +392614 +392615 +392640 +392641 +392642 +392643 +392644 +392645 +392646 +392647 +392672 +392673 +392674 +392675 +392676 +392677 +392678 +392679 +392704 +392705 +392706 +392707 +392708 +392709 +392710 +392711 +392736 +392737 +392738 +392739 +392740 +392741 +392742 +392743 +392768 +392769 +392770 +392771 +392772 +392773 +392774 +392775 +392800 +392801 +392802 +392803 +392804 +392805 +392806 +392807 +392832 +392833 +392834 +392835 +392836 +392837 +392838 +392839 +392864 +392865 +392866 +392867 +392868 +392869 +392870 +392871 +392896 +392897 +392898 +392899 +392900 +392901 +392902 +392903 +392928 +392929 +392930 +392931 +392932 +392933 +392934 +392935 +392960 +392961 +392962 +392963 +392964 +392965 +392966 +392967 +392992 +392993 +392994 +392995 +392996 +392997 +392998 +392999 +393024 +393025 +393026 +393027 +393028 +393029 +393030 +393031 +393056 +393057 +393058 +393059 +393060 +393061 +393062 +393063 +393088 +393089 +393090 +393091 +393092 +393093 +393094 +393095 +393120 +393121 +393122 +393123 +393124 +393125 +393126 +393127 +393152 +393153 +393154 +393155 +393156 +393157 +393158 +393159 +393184 +393185 +393186 +393187 +393188 +393189 +393190 +393191 +393216 +393217 +393218 +393219 +393220 +393221 +393222 +393223 +393248 +393249 +393250 +393251 +393252 +393253 +393254 +393255 +393280 +393281 +393282 +393283 +393284 +393285 +393286 +393287 +393312 +393313 +393314 +393315 +393316 +393317 +393318 +393319 +393344 +393345 +393346 +393347 +393348 +393349 +393350 +393351 +393376 +393377 +393378 +393379 +393380 +393381 +393382 +393383 +393408 +393409 +393410 +393411 +393412 +393413 +393414 +393415 +393440 +393441 +393442 +393443 +393444 +393445 +393446 +393447 +393472 +393473 +393474 +393475 +393476 +393477 +393478 +393479 +393504 +393505 +393506 +393507 +393508 +393509 +393510 +393511 +393536 +393537 +393538 +393539 +393540 +393541 +393542 +393543 +393568 +393569 +393570 +393571 +393572 +393573 +393574 +393575 +393600 +393601 +393602 +393603 +393604 +393605 +393606 +393607 +393632 +393633 +393634 +393635 +393636 +393637 +393638 +393639 +393664 +393665 +393666 +393667 +393668 +393669 +393670 +393671 +393696 +393697 +393698 +393699 +393700 +393701 +393702 +393703 +393728 +393729 +393730 +393731 +393732 +393733 +393734 +393735 +393760 +393761 +393762 +393763 +393764 +393765 +393766 +393767 +393792 +393793 +393794 +393795 +393796 +393797 +393798 +393799 +393824 +393825 +393826 +393827 +393828 +393829 +393830 +393831 +393856 +393857 +393858 +393859 +393860 +393861 +393862 +393863 +393888 +393889 +393890 +393891 +393892 +393893 +393894 +393895 +393920 +393921 +393922 +393923 +393924 +393925 +393926 +393927 +393952 +393953 +393954 +393955 +393956 +393957 +393958 +393959 +393984 +393985 +393986 +393987 +393988 +393989 +393990 +393991 +394016 +394017 +394018 +394019 +394020 +394021 +394022 +394023 +394048 +394049 +394050 +394051 +394052 +394053 +394054 +394055 +394080 +394081 +394082 +394083 +394084 +394085 +394086 +394087 +394112 +394113 +394114 +394115 +394116 +394117 +394118 +394119 +394144 +394145 +394146 +394147 +394148 +394149 +394150 +394151 +394176 +394177 +394178 +394179 +394180 +394181 +394182 +394183 +394208 +394209 +394210 +394211 +394212 +394213 +394214 +394215 +394240 +394241 +394242 +394243 +394244 +394245 +394246 +394247 +394272 +394273 +394274 +394275 +394276 +394277 +394278 +394279 +394304 +394305 +394306 +394307 +394308 +394309 +394310 +394311 +394336 +394337 +394338 +394339 +394340 +394341 +394342 +394343 +394368 +394369 +394370 +394371 +394372 +394373 +394374 +394375 +394400 +394401 +394402 +394403 +394404 +394405 +394406 +394407 +394432 +394433 +394434 +394435 +394436 +394437 +394438 +394439 +394464 +394465 +394466 +394467 +394468 +394469 +394470 +394471 +394496 +394497 +394498 +394499 +394500 +394501 +394502 +394503 +394528 +394529 +394530 +394531 +394532 +394533 +394534 +394535 +394560 +394561 +394562 +394563 +394564 +394565 +394566 +394567 +394592 +394593 +394594 +394595 +394596 +394597 +394598 +394599 +394624 +394625 +394626 +394627 +394628 +394629 +394630 +394631 +394656 +394657 +394658 +394659 +394660 +394661 +394662 +394663 +394688 +394689 +394690 +394691 +394692 +394693 +394694 +394695 +394720 +394721 +394722 +394723 +394724 +394725 +394726 +394727 +394752 +394753 +394754 +394755 +394756 +394757 +394758 +394759 +394784 +394785 +394786 +394787 +394788 +394789 +394790 +394791 +394816 +394817 +394818 +394819 +394820 +394821 +394822 +394823 +394848 +394849 +394850 +394851 +394852 +394853 +394854 +394855 +394880 +394881 +394882 +394883 +394884 +394885 +394886 +394887 +394912 +394913 +394914 +394915 +394916 +394917 +394918 +394919 +394944 +394945 +394946 +394947 +394948 +394949 +394950 +394951 +394976 +394977 +394978 +394979 +394980 +394981 +394982 +394983 +395008 +395009 +395010 +395011 +395012 +395013 +395014 +395015 +395040 +395041 +395042 +395043 +395044 +395045 +395046 +395047 +395072 +395073 +395074 +395075 +395076 +395077 +395078 +395079 +395104 +395105 +395106 +395107 +395108 +395109 +395110 +395111 +395136 +395137 +395138 +395139 +395140 +395141 +395142 +395143 +395168 +395169 +395170 +395171 +395172 +395173 +395174 +395175 +395200 +395201 +395202 +395203 +395204 +395205 +395206 +395207 +395232 +395233 +395234 +395235 +395236 +395237 +395238 +395239 +395264 +395265 +395266 +395267 +395268 +395269 +395270 +395271 +395296 +395297 +395298 +395299 +395300 +395301 +395302 +395303 +395328 +395329 +395330 +395331 +395332 +395333 +395334 +395335 +395360 +395361 +395362 +395363 +395364 +395365 +395366 +395367 +395392 +395393 +395394 +395395 +395396 +395397 +395398 +395399 +395424 +395425 +395426 +395427 +395428 +395429 +395430 +395431 +395456 +395457 +395458 +395459 +395460 +395461 +395462 +395463 +395488 +395489 +395490 +395491 +395492 +395493 +395494 +395495 +395520 +395521 +395522 +395523 +395524 +395525 +395526 +395527 +395552 +395553 +395554 +395555 +395556 +395557 +395558 +395559 +395584 +395585 +395586 +395587 +395588 +395589 +395590 +395591 +395616 +395617 +395618 +395619 +395620 +395621 +395622 +395623 +395648 +395649 +395650 +395651 +395652 +395653 +395654 +395655 +395680 +395681 +395682 +395683 +395684 +395685 +395686 +395687 +395712 +395713 +395714 +395715 +395716 +395717 +395718 +395719 +395744 +395745 +395746 +395747 +395748 +395749 +395750 +395751 +395776 +395777 +395778 +395779 +395780 +395781 +395782 +395783 +395808 +395809 +395810 +395811 +395812 +395813 +395814 +395815 +395840 +395841 +395842 +395843 +395844 +395845 +395846 +395847 +395872 +395873 +395874 +395875 +395876 +395877 +395878 +395879 +395904 +395905 +395906 +395907 +395908 +395909 +395910 +395911 +395936 +395937 +395938 +395939 +395940 +395941 +395942 +395943 +395968 +395969 +395970 +395971 +395972 +395973 +395974 +395975 +396000 +396001 +396002 +396003 +396004 +396005 +396006 +396007 +396032 +396033 +396034 +396035 +396036 +396037 +396038 +396039 +396064 +396065 +396066 +396067 +396068 +396069 +396070 +396071 +396096 +396097 +396098 +396099 +396100 +396101 +396102 +396103 +396128 +396129 +396130 +396131 +396132 +396133 +396134 +396135 +396160 +396161 +396162 +396163 +396164 +396165 +396166 +396167 +396192 +396193 +396194 +396195 +396196 +396197 +396198 +396199 +396224 +396225 +396226 +396227 +396228 +396229 +396230 +396231 +396256 +396257 +396258 +396259 +396260 +396261 +396262 +396263 +396288 +396289 +396290 +396291 +396292 +396293 +396294 +396295 +396320 +396321 +396322 +396323 +396324 +396325 +396326 +396327 +396352 +396353 +396354 +396355 +396356 +396357 +396358 +396359 +396384 +396385 +396386 +396387 +396388 +396389 +396390 +396391 +396416 +396417 +396418 +396419 +396420 +396421 +396422 +396423 +396448 +396449 +396450 +396451 +396452 +396453 +396454 +396455 +396480 +396481 +396482 +396483 +396484 +396485 +396486 +396487 +396512 +396513 +396514 +396515 +396516 +396517 +396518 +396519 +396544 +396545 +396546 +396547 +396548 +396549 +396550 +396551 +396576 +396577 +396578 +396579 +396580 +396581 +396582 +396583 +396608 +396609 +396610 +396611 +396612 +396613 +396614 +396615 +396640 +396641 +396642 +396643 +396644 +396645 +396646 +396647 +396672 +396673 +396674 +396675 +396676 +396677 +396678 +396679 +396704 +396705 +396706 +396707 +396708 +396709 +396710 +396711 +396736 +396737 +396738 +396739 +396740 +396741 +396742 +396743 +396768 +396769 +396770 +396771 +396772 +396773 +396774 +396775 +396800 +396801 +396802 +396803 +396804 +396805 +396806 +396807 +396832 +396833 +396834 +396835 +396836 +396837 +396838 +396839 +396864 +396865 +396866 +396867 +396868 +396869 +396870 +396871 +396896 +396897 +396898 +396899 +396900 +396901 +396902 +396903 +396928 +396929 +396930 +396931 +396932 +396933 +396934 +396935 +396960 +396961 +396962 +396963 +396964 +396965 +396966 +396967 +396992 +396993 +396994 +396995 +396996 +396997 +396998 +396999 +397024 +397025 +397026 +397027 +397028 +397029 +397030 +397031 +397056 +397057 +397058 +397059 +397060 +397061 +397062 +397063 +397088 +397089 +397090 +397091 +397092 +397093 +397094 +397095 +397120 +397121 +397122 +397123 +397124 +397125 +397126 +397127 +397152 +397153 +397154 +397155 +397156 +397157 +397158 +397159 +397184 +397185 +397186 +397187 +397188 +397189 +397190 +397191 +397216 +397217 +397218 +397219 +397220 +397221 +397222 +397223 +397248 +397249 +397250 +397251 +397252 +397253 +397254 +397255 +397280 +397281 +397282 +397283 +397284 +397285 +397286 +397287 +397312 +397313 +397314 +397315 +397316 +397317 +397318 +397319 +397344 +397345 +397346 +397347 +397348 +397349 +397350 +397351 +397376 +397377 +397378 +397379 +397380 +397381 +397382 +397383 +397408 +397409 +397410 +397411 +397412 +397413 +397414 +397415 +397440 +397441 +397442 +397443 +397444 +397445 +397446 +397447 +397472 +397473 +397474 +397475 +397476 +397477 +397478 +397479 +397504 +397505 +397506 +397507 +397508 +397509 +397510 +397511 +397536 +397537 +397538 +397539 +397540 +397541 +397542 +397543 +397568 +397569 +397570 +397571 +397572 +397573 +397574 +397575 +397600 +397601 +397602 +397603 +397604 +397605 +397606 +397607 +397632 +397633 +397634 +397635 +397636 +397637 +397638 +397639 +397664 +397665 +397666 +397667 +397668 +397669 +397670 +397671 +397696 +397697 +397698 +397699 +397700 +397701 +397702 +397703 +397728 +397729 +397730 +397731 +397732 +397733 +397734 +397735 +397760 +397761 +397762 +397763 +397764 +397765 +397766 +397767 +397792 +397793 +397794 +397795 +397796 +397797 +397798 +397799 +397824 +397825 +397826 +397827 +397828 +397829 +397830 +397831 +397856 +397857 +397858 +397859 +397860 +397861 +397862 +397863 +397888 +397889 +397890 +397891 +397892 +397893 +397894 +397895 +397920 +397921 +397922 +397923 +397924 +397925 +397926 +397927 +397952 +397953 +397954 +397955 +397956 +397957 +397958 +397959 +397984 +397985 +397986 +397987 +397988 +397989 +397990 +397991 +398016 +398017 +398018 +398019 +398020 +398021 +398022 +398023 +398048 +398049 +398050 +398051 +398052 +398053 +398054 +398055 +398080 +398081 +398082 +398083 +398084 +398085 +398086 +398087 +398112 +398113 +398114 +398115 +398116 +398117 +398118 +398119 +398144 +398145 +398146 +398147 +398148 +398149 +398150 +398151 +398176 +398177 +398178 +398179 +398180 +398181 +398182 +398183 +398208 +398209 +398210 +398211 +398212 +398213 +398214 +398215 +398240 +398241 +398242 +398243 +398244 +398245 +398246 +398247 +398272 +398273 +398274 +398275 +398276 +398277 +398278 +398279 +398304 +398305 +398306 +398307 +398308 +398309 +398310 +398311 +398336 +398337 +398338 +398339 +398340 +398341 +398342 +398343 +398368 +398369 +398370 +398371 +398372 +398373 +398374 +398375 +398400 +398401 +398402 +398403 +398404 +398405 +398406 +398407 +398432 +398433 +398434 +398435 +398436 +398437 +398438 +398439 +398464 +398465 +398466 +398467 +398468 +398469 +398470 +398471 +398496 +398497 +398498 +398499 +398500 +398501 +398502 +398503 +398528 +398529 +398530 +398531 +398532 +398533 +398534 +398535 +398560 +398561 +398562 +398563 +398564 +398565 +398566 +398567 +398592 +398593 +398594 +398595 +398596 +398597 +398598 +398599 +398624 +398625 +398626 +398627 +398628 +398629 +398630 +398631 +398656 +398657 +398658 +398659 +398660 +398661 +398662 +398663 +398688 +398689 +398690 +398691 +398692 +398693 +398694 +398695 +398720 +398721 +398722 +398723 +398724 +398725 +398726 +398727 +398752 +398753 +398754 +398755 +398756 +398757 +398758 +398759 +398784 +398785 +398786 +398787 +398788 +398789 +398790 +398791 +398816 +398817 +398818 +398819 +398820 +398821 +398822 +398823 +398848 +398849 +398850 +398851 +398852 +398853 +398854 +398855 +398880 +398881 +398882 +398883 +398884 +398885 +398886 +398887 +398912 +398913 +398914 +398915 +398916 +398917 +398918 +398919 +398944 +398945 +398946 +398947 +398948 +398949 +398950 +398951 +398976 +398977 +398978 +398979 +398980 +398981 +398982 +398983 +399008 +399009 +399010 +399011 +399012 +399013 +399014 +399015 +399040 +399041 +399042 +399043 +399044 +399045 +399046 +399047 +399072 +399073 +399074 +399075 +399076 +399077 +399078 +399079 +399104 +399105 +399106 +399107 +399108 +399109 +399110 +399111 +399136 +399137 +399138 +399139 +399140 +399141 +399142 +399143 +399168 +399169 +399170 +399171 +399172 +399173 +399174 +399175 +399200 +399201 +399202 +399203 +399204 +399205 +399206 +399207 +399232 +399233 +399234 +399235 +399236 +399237 +399238 +399239 +399264 +399265 +399266 +399267 +399268 +399269 +399270 +399271 +399296 +399297 +399298 +399299 +399300 +399301 +399302 +399303 +399328 +399329 +399330 +399331 +399332 +399333 +399334 +399335 +399360 +399361 +399362 +399363 +399364 +399365 +399366 +399367 +399392 +399393 +399394 +399395 +399396 +399397 +399398 +399399 +399424 +399425 +399426 +399427 +399428 +399429 +399430 +399431 +399456 +399457 +399458 +399459 +399460 +399461 +399462 +399463 +399488 +399489 +399490 +399491 +399492 +399493 +399494 +399495 +399520 +399521 +399522 +399523 +399524 +399525 +399526 +399527 +399552 +399553 +399554 +399555 +399556 +399557 +399558 +399559 +399584 +399585 +399586 +399587 +399588 +399589 +399590 +399591 +399616 +399617 +399618 +399619 +399620 +399621 +399622 +399623 +399648 +399649 +399650 +399651 +399652 +399653 +399654 +399655 +399680 +399681 +399682 +399683 +399684 +399685 +399686 +399687 +399712 +399713 +399714 +399715 +399716 +399717 +399718 +399719 +399744 +399745 +399746 +399747 +399748 +399749 +399750 +399751 +399776 +399777 +399778 +399779 +399780 +399781 +399782 +399783 +399808 +399809 +399810 +399811 +399812 +399813 +399814 +399815 +399840 +399841 +399842 +399843 +399844 +399845 +399846 +399847 +399872 +399873 +399874 +399875 +399876 +399877 +399878 +399879 +399904 +399905 +399906 +399907 +399908 +399909 +399910 +399911 +399936 +399937 +399938 +399939 +399940 +399941 +399942 +399943 +399968 +399969 +399970 +399971 +399972 +399973 +399974 +399975 +400000 +400001 +400002 +400003 +400004 +400005 +400006 +400007 +400032 +400033 +400034 +400035 +400036 +400037 +400038 +400039 +400064 +400065 +400066 +400067 +400068 +400069 +400070 +400071 +400096 +400097 +400098 +400099 +400100 +400101 +400102 +400103 +400128 +400129 +400130 +400131 +400132 +400133 +400134 +400135 +400160 +400161 +400162 +400163 +400164 +400165 +400166 +400167 +400192 +400193 +400194 +400195 +400196 +400197 +400198 +400199 +400224 +400225 +400226 +400227 +400228 +400229 +400230 +400231 +400256 +400257 +400258 +400259 +400260 +400261 +400262 +400263 +400288 +400289 +400290 +400291 +400292 +400293 +400294 +400295 +400320 +400321 +400322 +400323 +400324 +400325 +400326 +400327 +400352 +400353 +400354 +400355 +400356 +400357 +400358 +400359 +400384 +400385 +400386 +400387 +400388 +400389 +400390 +400391 +400416 +400417 +400418 +400419 +400420 +400421 +400422 +400423 +400448 +400449 +400450 +400451 +400452 +400453 +400454 +400455 +400480 +400481 +400482 +400483 +400484 +400485 +400486 +400487 +400512 +400513 +400514 +400515 +400516 +400517 +400518 +400519 +400544 +400545 +400546 +400547 +400548 +400549 +400550 +400551 +400576 +400577 +400578 +400579 +400580 +400581 +400582 +400583 +400608 +400609 +400610 +400611 +400612 +400613 +400614 +400615 +400640 +400641 +400642 +400643 +400644 +400645 +400646 +400647 +400672 +400673 +400674 +400675 +400676 +400677 +400678 +400679 +400704 +400705 +400706 +400707 +400708 +400709 +400710 +400711 +400736 +400737 +400738 +400739 +400740 +400741 +400742 +400743 +400768 +400769 +400770 +400771 +400772 +400773 +400774 +400775 +400800 +400801 +400802 +400803 +400804 +400805 +400806 +400807 +400832 +400833 +400834 +400835 +400836 +400837 +400838 +400839 +400864 +400865 +400866 +400867 +400868 +400869 +400870 +400871 +400896 +400897 +400898 +400899 +400900 +400901 +400902 +400903 +400928 +400929 +400930 +400931 +400932 +400933 +400934 +400935 +400960 +400961 +400962 +400963 +400964 +400965 +400966 +400967 +400992 +400993 +400994 +400995 +400996 +400997 +400998 +400999 +401024 +401025 +401026 +401027 +401028 +401029 +401030 +401031 +401056 +401057 +401058 +401059 +401060 +401061 +401062 +401063 +401088 +401089 +401090 +401091 +401092 +401093 +401094 +401095 +401120 +401121 +401122 +401123 +401124 +401125 +401126 +401127 +401152 +401153 +401154 +401155 +401156 +401157 +401158 +401159 +401184 +401185 +401186 +401187 +401188 +401189 +401190 +401191 +401216 +401217 +401218 +401219 +401220 +401221 +401222 +401223 +401248 +401249 +401250 +401251 +401252 +401253 +401254 +401255 +401280 +401281 +401282 +401283 +401284 +401285 +401286 +401287 +401312 +401313 +401314 +401315 +401316 +401317 +401318 +401319 +401344 +401345 +401346 +401347 +401348 +401349 +401350 +401351 +401376 +401377 +401378 +401379 +401380 +401381 +401382 +401383 +401408 +401409 +401410 +401411 +401412 +401413 +401414 +401415 +401440 +401441 +401442 +401443 +401444 +401445 +401446 +401447 +401472 +401473 +401474 +401475 +401476 +401477 +401478 +401479 +401504 +401505 +401506 +401507 +401508 +401509 +401510 +401511 +401536 +401537 +401538 +401539 +401540 +401541 +401542 +401543 +401568 +401569 +401570 +401571 +401572 +401573 +401574 +401575 +401600 +401601 +401602 +401603 +401604 +401605 +401606 +401607 +401632 +401633 +401634 +401635 +401636 +401637 +401638 +401639 +401664 +401665 +401666 +401667 +401668 +401669 +401670 +401671 +401696 +401697 +401698 +401699 +401700 +401701 +401702 +401703 +401728 +401729 +401730 +401731 +401732 +401733 +401734 +401735 +401760 +401761 +401762 +401763 +401764 +401765 +401766 +401767 +401792 +401793 +401794 +401795 +401796 +401797 +401798 +401799 +401824 +401825 +401826 +401827 +401828 +401829 +401830 +401831 +401856 +401857 +401858 +401859 +401860 +401861 +401862 +401863 +401888 +401889 +401890 +401891 +401892 +401893 +401894 +401895 +401920 +401921 +401922 +401923 +401924 +401925 +401926 +401927 +401952 +401953 +401954 +401955 +401956 +401957 +401958 +401959 +401984 +401985 +401986 +401987 +401988 +401989 +401990 +401991 +402016 +402017 +402018 +402019 +402020 +402021 +402022 +402023 +402048 +402049 +402050 +402051 +402052 +402053 +402054 +402055 +402080 +402081 +402082 +402083 +402084 +402085 +402086 +402087 +402112 +402113 +402114 +402115 +402116 +402117 +402118 +402119 +402144 +402145 +402146 +402147 +402148 +402149 +402150 +402151 +402176 +402177 +402178 +402179 +402180 +402181 +402182 +402183 +402208 +402209 +402210 +402211 +402212 +402213 +402214 +402215 +402240 +402241 +402242 +402243 +402244 +402245 +402246 +402247 +402272 +402273 +402274 +402275 +402276 +402277 +402278 +402279 +402304 +402305 +402306 +402307 +402308 +402309 +402310 +402311 +402336 +402337 +402338 +402339 +402340 +402341 +402342 +402343 +402368 +402369 +402370 +402371 +402372 +402373 +402374 +402375 +402400 +402401 +402402 +402403 +402404 +402405 +402406 +402407 +402432 +402433 +402434 +402435 +402436 +402437 +402438 +402439 +402464 +402465 +402466 +402467 +402468 +402469 +402470 +402471 +402496 +402497 +402498 +402499 +402500 +402501 +402502 +402503 +402528 +402529 +402530 +402531 +402532 +402533 +402534 +402535 +402560 +402561 +402562 +402563 +402564 +402565 +402566 +402567 +402592 +402593 +402594 +402595 +402596 +402597 +402598 +402599 +402624 +402625 +402626 +402627 +402628 +402629 +402630 +402631 +402656 +402657 +402658 +402659 +402660 +402661 +402662 +402663 +402688 +402689 +402690 +402691 +402692 +402693 +402694 +402695 +402720 +402721 +402722 +402723 +402724 +402725 +402726 +402727 +402752 +402753 +402754 +402755 +402756 +402757 +402758 +402759 +402784 +402785 +402786 +402787 +402788 +402789 +402790 +402791 +402816 +402817 +402818 +402819 +402820 +402821 +402822 +402823 +402848 +402849 +402850 +402851 +402852 +402853 +402854 +402855 +402880 +402881 +402882 +402883 +402884 +402885 +402886 +402887 +402912 +402913 +402914 +402915 +402916 +402917 +402918 +402919 +402944 +402945 +402946 +402947 +402948 +402949 +402950 +402951 +402976 +402977 +402978 +402979 +402980 +402981 +402982 +402983 +403008 +403009 +403010 +403011 +403012 +403013 +403014 +403015 +403040 +403041 +403042 +403043 +403044 +403045 +403046 +403047 +403072 +403073 +403074 +403075 +403076 +403077 +403078 +403079 +403104 +403105 +403106 +403107 +403108 +403109 +403110 +403111 +403136 +403137 +403138 +403139 +403140 +403141 +403142 +403143 +403168 +403169 +403170 +403171 +403172 +403173 +403174 +403175 +403200 +403201 +403202 +403203 +403204 +403205 +403206 +403207 +403232 +403233 +403234 +403235 +403236 +403237 +403238 +403239 +403264 +403265 +403266 +403267 +403268 +403269 +403270 +403271 +403296 +403297 +403298 +403299 +403300 +403301 +403302 +403303 +403328 +403329 +403330 +403331 +403332 +403333 +403334 +403335 +403360 +403361 +403362 +403363 +403364 +403365 +403366 +403367 +403392 +403393 +403394 +403395 +403396 +403397 +403398 +403399 +403424 +403425 +403426 +403427 +403428 +403429 +403430 +403431 +403456 +403457 +403458 +403459 +403460 +403461 +403462 +403463 +403488 +403489 +403490 +403491 +403492 +403493 +403494 +403495 +403520 +403521 +403522 +403523 +403524 +403525 +403526 +403527 +403552 +403553 +403554 +403555 +403556 +403557 +403558 +403559 +403584 +403585 +403586 +403587 +403588 +403589 +403590 +403591 +403616 +403617 +403618 +403619 +403620 +403621 +403622 +403623 +403648 +403649 +403650 +403651 +403652 +403653 +403654 +403655 +403680 +403681 +403682 +403683 +403684 +403685 +403686 +403687 +403712 +403713 +403714 +403715 +403716 +403717 +403718 +403719 +403744 +403745 +403746 +403747 +403748 +403749 +403750 +403751 +403776 +403777 +403778 +403779 +403780 +403781 +403782 +403783 +403808 +403809 +403810 +403811 +403812 +403813 +403814 +403815 +403840 +403841 +403842 +403843 +403844 +403845 +403846 +403847 +403872 +403873 +403874 +403875 +403876 +403877 +403878 +403879 +403904 +403905 +403906 +403907 +403908 +403909 +403910 +403911 +403936 +403937 +403938 +403939 +403940 +403941 +403942 +403943 +403968 +403969 +403970 +403971 +403972 +403973 +403974 +403975 +404000 +404001 +404002 +404003 +404004 +404005 +404006 +404007 +404032 +404033 +404034 +404035 +404036 +404037 +404038 +404039 +404064 +404065 +404066 +404067 +404068 +404069 +404070 +404071 +404096 +404097 +404098 +404099 +404100 +404101 +404102 +404103 +404128 +404129 +404130 +404131 +404132 +404133 +404134 +404135 +404160 +404161 +404162 +404163 +404164 +404165 +404166 +404167 +404192 +404193 +404194 +404195 +404196 +404197 +404198 +404199 +404224 +404225 +404226 +404227 +404228 +404229 +404230 +404231 +404256 +404257 +404258 +404259 +404260 +404261 +404262 +404263 +404288 +404289 +404290 +404291 +404292 +404293 +404294 +404295 +404320 +404321 +404322 +404323 +404324 +404325 +404326 +404327 +404352 +404353 +404354 +404355 +404356 +404357 +404358 +404359 +404384 +404385 +404386 +404387 +404388 +404389 +404390 +404391 +404416 +404417 +404418 +404419 +404420 +404421 +404422 +404423 +404448 +404449 +404450 +404451 +404452 +404453 +404454 +404455 +404480 +404481 +404482 +404483 +404484 +404485 +404486 +404487 +404512 +404513 +404514 +404515 +404516 +404517 +404518 +404519 +404544 +404545 +404546 +404547 +404548 +404549 +404550 +404551 +404576 +404577 +404578 +404579 +404580 +404581 +404582 +404583 +404608 +404609 +404610 +404611 +404612 +404613 +404614 +404615 +404640 +404641 +404642 +404643 +404644 +404645 +404646 +404647 +404672 +404673 +404674 +404675 +404676 +404677 +404678 +404679 +404704 +404705 +404706 +404707 +404708 +404709 +404710 +404711 +404736 +404737 +404738 +404739 +404740 +404741 +404742 +404743 +404768 +404769 +404770 +404771 +404772 +404773 +404774 +404775 +404800 +404801 +404802 +404803 +404804 +404805 +404806 +404807 +404832 +404833 +404834 +404835 +404836 +404837 +404838 +404839 +404864 +404865 +404866 +404867 +404868 +404869 +404870 +404871 +404896 +404897 +404898 +404899 +404900 +404901 +404902 +404903 +404928 +404929 +404930 +404931 +404932 +404933 +404934 +404935 +404960 +404961 +404962 +404963 +404964 +404965 +404966 +404967 +404992 +404993 +404994 +404995 +404996 +404997 +404998 +404999 +405024 +405025 +405026 +405027 +405028 +405029 +405030 +405031 +405056 +405057 +405058 +405059 +405060 +405061 +405062 +405063 +405088 +405089 +405090 +405091 +405092 +405093 +405094 +405095 +405120 +405121 +405122 +405123 +405124 +405125 +405126 +405127 +405152 +405153 +405154 +405155 +405156 +405157 +405158 +405159 +405184 +405185 +405186 +405187 +405188 +405189 +405190 +405191 +405216 +405217 +405218 +405219 +405220 +405221 +405222 +405223 +405248 +405249 +405250 +405251 +405252 +405253 +405254 +405255 +405280 +405281 +405282 +405283 +405284 +405285 +405286 +405287 +405312 +405313 +405314 +405315 +405316 +405317 +405318 +405319 +405344 +405345 +405346 +405347 +405348 +405349 +405350 +405351 +405376 +405377 +405378 +405379 +405380 +405381 +405382 +405383 +405408 +405409 +405410 +405411 +405412 +405413 +405414 +405415 +405440 +405441 +405442 +405443 +405444 +405445 +405446 +405447 +405472 +405473 +405474 +405475 +405476 +405477 +405478 +405479 +405504 +405505 +405506 +405507 +405508 +405509 +405510 +405511 +405536 +405537 +405538 +405539 +405540 +405541 +405542 +405543 +405568 +405569 +405570 +405571 +405572 +405573 +405574 +405575 +405600 +405601 +405602 +405603 +405604 +405605 +405606 +405607 +405632 +405633 +405634 +405635 +405636 +405637 +405638 +405639 +405664 +405665 +405666 +405667 +405668 +405669 +405670 +405671 +405696 +405697 +405698 +405699 +405700 +405701 +405702 +405703 +405728 +405729 +405730 +405731 +405732 +405733 +405734 +405735 +405760 +405761 +405762 +405763 +405764 +405765 +405766 +405767 +405792 +405793 +405794 +405795 +405796 +405797 +405798 +405799 +405824 +405825 +405826 +405827 +405828 +405829 +405830 +405831 +405856 +405857 +405858 +405859 +405860 +405861 +405862 +405863 +405888 +405889 +405890 +405891 +405892 +405893 +405894 +405895 +405920 +405921 +405922 +405923 +405924 +405925 +405926 +405927 +405952 +405953 +405954 +405955 +405956 +405957 +405958 +405959 +405984 +405985 +405986 +405987 +405988 +405989 +405990 +405991 +406016 +406017 +406018 +406019 +406020 +406021 +406022 +406023 +406048 +406049 +406050 +406051 +406052 +406053 +406054 +406055 +406080 +406081 +406082 +406083 +406084 +406085 +406086 +406087 +406112 +406113 +406114 +406115 +406116 +406117 +406118 +406119 +406144 +406145 +406146 +406147 +406148 +406149 +406150 +406151 +406176 +406177 +406178 +406179 +406180 +406181 +406182 +406183 +406208 +406209 +406210 +406211 +406212 +406213 +406214 +406215 +406240 +406241 +406242 +406243 +406244 +406245 +406246 +406247 +406272 +406273 +406274 +406275 +406276 +406277 +406278 +406279 +406304 +406305 +406306 +406307 +406308 +406309 +406310 +406311 +406336 +406337 +406338 +406339 +406340 +406341 +406342 +406343 +406368 +406369 +406370 +406371 +406372 +406373 +406374 +406375 +406400 +406401 +406402 +406403 +406404 +406405 +406406 +406407 +406432 +406433 +406434 +406435 +406436 +406437 +406438 +406439 +406464 +406465 +406466 +406467 +406468 +406469 +406470 +406471 +406496 +406497 +406498 +406499 +406500 +406501 +406502 +406503 +406528 +406529 +406530 +406531 +406532 +406533 +406534 +406535 +406560 +406561 +406562 +406563 +406564 +406565 +406566 +406567 +406592 +406593 +406594 +406595 +406596 +406597 +406598 +406599 +406624 +406625 +406626 +406627 +406628 +406629 +406630 +406631 +406656 +406657 +406658 +406659 +406660 +406661 +406662 +406663 +406688 +406689 +406690 +406691 +406692 +406693 +406694 +406695 +406720 +406721 +406722 +406723 +406724 +406725 +406726 +406727 +406752 +406753 +406754 +406755 +406756 +406757 +406758 +406759 +406784 +406785 +406786 +406787 +406788 +406789 +406790 +406791 +406816 +406817 +406818 +406819 +406820 +406821 +406822 +406823 +406848 +406849 +406850 +406851 +406852 +406853 +406854 +406855 +406880 +406881 +406882 +406883 +406884 +406885 +406886 +406887 +406912 +406913 +406914 +406915 +406916 +406917 +406918 +406919 +406944 +406945 +406946 +406947 +406948 +406949 +406950 +406951 +406976 +406977 +406978 +406979 +406980 +406981 +406982 +406983 +407008 +407009 +407010 +407011 +407012 +407013 +407014 +407015 +407040 +407041 +407042 +407043 +407044 +407045 +407046 +407047 +407072 +407073 +407074 +407075 +407076 +407077 +407078 +407079 +407104 +407105 +407106 +407107 +407108 +407109 +407110 +407111 +407136 +407137 +407138 +407139 +407140 +407141 +407142 +407143 +407168 +407169 +407170 +407171 +407172 +407173 +407174 +407175 +407200 +407201 +407202 +407203 +407204 +407205 +407206 +407207 +407232 +407233 +407234 +407235 +407236 +407237 +407238 +407239 +407264 +407265 +407266 +407267 +407268 +407269 +407270 +407271 +407296 +407297 +407298 +407299 +407300 +407301 +407302 +407303 +407328 +407329 +407330 +407331 +407332 +407333 +407334 +407335 +407360 +407361 +407362 +407363 +407364 +407365 +407366 +407367 +407392 +407393 +407394 +407395 +407396 +407397 +407398 +407399 +407424 +407425 +407426 +407427 +407428 +407429 +407430 +407431 +407456 +407457 +407458 +407459 +407460 +407461 +407462 +407463 +407488 +407489 +407490 +407491 +407492 +407493 +407494 +407495 +407520 +407521 +407522 +407523 +407524 +407525 +407526 +407527 +407552 +407553 +407554 +407555 +407556 +407557 +407558 +407559 +407584 +407585 +407586 +407587 +407588 +407589 +407590 +407591 +407616 +407617 +407618 +407619 +407620 +407621 +407622 +407623 +407648 +407649 +407650 +407651 +407652 +407653 +407654 +407655 +407680 +407681 +407682 +407683 +407684 +407685 +407686 +407687 +407712 +407713 +407714 +407715 +407716 +407717 +407718 +407719 +407744 +407745 +407746 +407747 +407748 +407749 +407750 +407751 +407776 +407777 +407778 +407779 +407780 +407781 +407782 +407783 +407808 +407809 +407810 +407811 +407812 +407813 +407814 +407815 +407840 +407841 +407842 +407843 +407844 +407845 +407846 +407847 +407872 +407873 +407874 +407875 +407876 +407877 +407878 +407879 +407904 +407905 +407906 +407907 +407908 +407909 +407910 +407911 +407936 +407937 +407938 +407939 +407940 +407941 +407942 +407943 +407968 +407969 +407970 +407971 +407972 +407973 +407974 +407975 +408000 +408001 +408002 +408003 +408004 +408005 +408006 +408007 +408032 +408033 +408034 +408035 +408036 +408037 +408038 +408039 +408064 +408065 +408066 +408067 +408068 +408069 +408070 +408071 +408096 +408097 +408098 +408099 +408100 +408101 +408102 +408103 +408128 +408129 +408130 +408131 +408132 +408133 +408134 +408135 +408160 +408161 +408162 +408163 +408164 +408165 +408166 +408167 +408192 +408193 +408194 +408195 +408196 +408197 +408198 +408199 +408224 +408225 +408226 +408227 +408228 +408229 +408230 +408231 +408256 +408257 +408258 +408259 +408260 +408261 +408262 +408263 +408288 +408289 +408290 +408291 +408292 +408293 +408294 +408295 +408320 +408321 +408322 +408323 +408324 +408325 +408326 +408327 +408352 +408353 +408354 +408355 +408356 +408357 +408358 +408359 +408384 +408385 +408386 +408387 +408388 +408389 +408390 +408391 +408416 +408417 +408418 +408419 +408420 +408421 +408422 +408423 +408448 +408449 +408450 +408451 +408452 +408453 +408454 +408455 +408480 +408481 +408482 +408483 +408484 +408485 +408486 +408487 +408512 +408513 +408514 +408515 +408516 +408517 +408518 +408519 +408544 +408545 +408546 +408547 +408548 +408549 +408550 +408551 +408576 +408577 +408578 +408579 +408580 +408581 +408582 +408583 +408608 +408609 +408610 +408611 +408612 +408613 +408614 +408615 +408640 +408641 +408642 +408643 +408644 +408645 +408646 +408647 +408672 +408673 +408674 +408675 +408676 +408677 +408678 +408679 +408704 +408705 +408706 +408707 +408708 +408709 +408710 +408711 +408736 +408737 +408738 +408739 +408740 +408741 +408742 +408743 +408768 +408769 +408770 +408771 +408772 +408773 +408774 +408775 +408800 +408801 +408802 +408803 +408804 +408805 +408806 +408807 +408832 +408833 +408834 +408835 +408836 +408837 +408838 +408839 +408864 +408865 +408866 +408867 +408868 +408869 +408870 +408871 +408896 +408897 +408898 +408899 +408900 +408901 +408902 +408903 +408928 +408929 +408930 +408931 +408932 +408933 +408934 +408935 +408960 +408961 +408962 +408963 +408964 +408965 +408966 +408967 +408992 +408993 +408994 +408995 +408996 +408997 +408998 +408999 +409024 +409025 +409026 +409027 +409028 +409029 +409030 +409031 +409056 +409057 +409058 +409059 +409060 +409061 +409062 +409063 +409088 +409089 +409090 +409091 +409092 +409093 +409094 +409095 +409120 +409121 +409122 +409123 +409124 +409125 +409126 +409127 +409152 +409153 +409154 +409155 +409156 +409157 +409158 +409159 +409184 +409185 +409186 +409187 +409188 +409189 +409190 +409191 +409216 +409217 +409218 +409219 +409220 +409221 +409222 +409223 +409248 +409249 +409250 +409251 +409252 +409253 +409254 +409255 +409280 +409281 +409282 +409283 +409284 +409285 +409286 +409287 +409312 +409313 +409314 +409315 +409316 +409317 +409318 +409319 +409344 +409345 +409346 +409347 +409348 +409349 +409350 +409351 +409376 +409377 +409378 +409379 +409380 +409381 +409382 +409383 +409408 +409409 +409410 +409411 +409412 +409413 +409414 +409415 +409440 +409441 +409442 +409443 +409444 +409445 +409446 +409447 +409472 +409473 +409474 +409475 +409476 +409477 +409478 +409479 +409504 +409505 +409506 +409507 +409508 +409509 +409510 +409511 +409536 +409537 +409538 +409539 +409540 +409541 +409542 +409543 +409568 +409569 +409570 +409571 +409572 +409573 +409574 +409575 +409600 +409601 +409602 +409603 +409604 +409605 +409606 +409607 +409632 +409633 +409634 +409635 +409636 +409637 +409638 +409639 +409664 +409665 +409666 +409667 +409668 +409669 +409670 +409671 +409696 +409697 +409698 +409699 +409700 +409701 +409702 +409703 +409728 +409729 +409730 +409731 +409732 +409733 +409734 +409735 +409760 +409761 +409762 +409763 +409764 +409765 +409766 +409767 +409792 +409793 +409794 +409795 +409796 +409797 +409798 +409799 +409824 +409825 +409826 +409827 +409828 +409829 +409830 +409831 +409856 +409857 +409858 +409859 +409860 +409861 +409862 +409863 +409888 +409889 +409890 +409891 +409892 +409893 +409894 +409895 +409920 +409921 +409922 +409923 +409924 +409925 +409926 +409927 +409952 +409953 +409954 +409955 +409956 +409957 +409958 +409959 +409984 +409985 +409986 +409987 +409988 +409989 +409990 +409991 +410016 +410017 +410018 +410019 +410020 +410021 +410022 +410023 +410048 +410049 +410050 +410051 +410052 +410053 +410054 +410055 +410080 +410081 +410082 +410083 +410084 +410085 +410086 +410087 +410112 +410113 +410114 +410115 +410116 +410117 +410118 +410119 +410144 +410145 +410146 +410147 +410148 +410149 +410150 +410151 +410176 +410177 +410178 +410179 +410180 +410181 +410182 +410183 +410208 +410209 +410210 +410211 +410212 +410213 +410214 +410215 +410240 +410241 +410242 +410243 +410244 +410245 +410246 +410247 +410272 +410273 +410274 +410275 +410276 +410277 +410278 +410279 +410304 +410305 +410306 +410307 +410308 +410309 +410310 +410311 +410336 +410337 +410338 +410339 +410340 +410341 +410342 +410343 +410368 +410369 +410370 +410371 +410372 +410373 +410374 +410375 +410400 +410401 +410402 +410403 +410404 +410405 +410406 +410407 +410432 +410433 +410434 +410435 +410436 +410437 +410438 +410439 +410464 +410465 +410466 +410467 +410468 +410469 +410470 +410471 +410496 +410497 +410498 +410499 +410500 +410501 +410502 +410503 +410528 +410529 +410530 +410531 +410532 +410533 +410534 +410535 +410560 +410561 +410562 +410563 +410564 +410565 +410566 +410567 +410592 +410593 +410594 +410595 +410596 +410597 +410598 +410599 +410624 +410625 +410626 +410627 +410628 +410629 +410630 +410631 +410656 +410657 +410658 +410659 +410660 +410661 +410662 +410663 +410688 +410689 +410690 +410691 +410692 +410693 +410694 +410695 +410720 +410721 +410722 +410723 +410724 +410725 +410726 +410727 +410752 +410753 +410754 +410755 +410756 +410757 +410758 +410759 +410784 +410785 +410786 +410787 +410788 +410789 +410790 +410791 +410816 +410817 +410818 +410819 +410820 +410821 +410822 +410823 +410848 +410849 +410850 +410851 +410852 +410853 +410854 +410855 +410880 +410881 +410882 +410883 +410884 +410885 +410886 +410887 +410912 +410913 +410914 +410915 +410916 +410917 +410918 +410919 +410944 +410945 +410946 +410947 +410948 +410949 +410950 +410951 +410976 +410977 +410978 +410979 +410980 +410981 +410982 +410983 +411008 +411009 +411010 +411011 +411012 +411013 +411014 +411015 +411040 +411041 +411042 +411043 +411044 +411045 +411046 +411047 +411072 +411073 +411074 +411075 +411076 +411077 +411078 +411079 +411104 +411105 +411106 +411107 +411108 +411109 +411110 +411111 +411136 +411137 +411138 +411139 +411140 +411141 +411142 +411143 +411168 +411169 +411170 +411171 +411172 +411173 +411174 +411175 +411200 +411201 +411202 +411203 +411204 +411205 +411206 +411207 +411232 +411233 +411234 +411235 +411236 +411237 +411238 +411239 +411264 +411265 +411266 +411267 +411268 +411269 +411270 +411271 +411296 +411297 +411298 +411299 +411300 +411301 +411302 +411303 +411328 +411329 +411330 +411331 +411332 +411333 +411334 +411335 +411360 +411361 +411362 +411363 +411364 +411365 +411366 +411367 +411392 +411393 +411394 +411395 +411396 +411397 +411398 +411399 +411424 +411425 +411426 +411427 +411428 +411429 +411430 +411431 +411456 +411457 +411458 +411459 +411460 +411461 +411462 +411463 +411488 +411489 +411490 +411491 +411492 +411493 +411494 +411495 +411520 +411521 +411522 +411523 +411524 +411525 +411526 +411527 +411552 +411553 +411554 +411555 +411556 +411557 +411558 +411559 +411584 +411585 +411586 +411587 +411588 +411589 +411590 +411591 +411616 +411617 +411618 +411619 +411620 +411621 +411622 +411623 +411648 +411649 +411650 +411651 +411652 +411653 +411654 +411655 +411680 +411681 +411682 +411683 +411684 +411685 +411686 +411687 +411712 +411713 +411714 +411715 +411716 +411717 +411718 +411719 +411744 +411745 +411746 +411747 +411748 +411749 +411750 +411751 +411776 +411777 +411778 +411779 +411780 +411781 +411782 +411783 +411808 +411809 +411810 +411811 +411812 +411813 +411814 +411815 +411840 +411841 +411842 +411843 +411844 +411845 +411846 +411847 +411872 +411873 +411874 +411875 +411876 +411877 +411878 +411879 +411904 +411905 +411906 +411907 +411908 +411909 +411910 +411911 +411936 +411937 +411938 +411939 +411940 +411941 +411942 +411943 +411968 +411969 +411970 +411971 +411972 +411973 +411974 +411975 +412000 +412001 +412002 +412003 +412004 +412005 +412006 +412007 +412032 +412033 +412034 +412035 +412036 +412037 +412038 +412039 +412064 +412065 +412066 +412067 +412068 +412069 +412070 +412071 +412096 +412097 +412098 +412099 +412100 +412101 +412102 +412103 +412128 +412129 +412130 +412131 +412132 +412133 +412134 +412135 +412160 +412161 +412162 +412163 +412164 +412165 +412166 +412167 +412192 +412193 +412194 +412195 +412196 +412197 +412198 +412199 +412224 +412225 +412226 +412227 +412228 +412229 +412230 +412231 +412256 +412257 +412258 +412259 +412260 +412261 +412262 +412263 +412288 +412289 +412290 +412291 +412292 +412293 +412294 +412295 +412320 +412321 +412322 +412323 +412324 +412325 +412326 +412327 +412352 +412353 +412354 +412355 +412356 +412357 +412358 +412359 +412384 +412385 +412386 +412387 +412388 +412389 +412390 +412391 +412416 +412417 +412418 +412419 +412420 +412421 +412422 +412423 +412448 +412449 +412450 +412451 +412452 +412453 +412454 +412455 +412480 +412481 +412482 +412483 +412484 +412485 +412486 +412487 +412512 +412513 +412514 +412515 +412516 +412517 +412518 +412519 +412544 +412545 +412546 +412547 +412548 +412549 +412550 +412551 +412576 +412577 +412578 +412579 +412580 +412581 +412582 +412583 +412608 +412609 +412610 +412611 +412612 +412613 +412614 +412615 +412640 +412641 +412642 +412643 +412644 +412645 +412646 +412647 +412672 +412673 +412674 +412675 +412676 +412677 +412678 +412679 +412704 +412705 +412706 +412707 +412708 +412709 +412710 +412711 +412736 +412737 +412738 +412739 +412740 +412741 +412742 +412743 +412768 +412769 +412770 +412771 +412772 +412773 +412774 +412775 +412800 +412801 +412802 +412803 +412804 +412805 +412806 +412807 +412832 +412833 +412834 +412835 +412836 +412837 +412838 +412839 +412864 +412865 +412866 +412867 +412868 +412869 +412870 +412871 +412896 +412897 +412898 +412899 +412900 +412901 +412902 +412903 +412928 +412929 +412930 +412931 +412932 +412933 +412934 +412935 +412960 +412961 +412962 +412963 +412964 +412965 +412966 +412967 +412992 +412993 +412994 +412995 +412996 +412997 +412998 +412999 +413024 +413025 +413026 +413027 +413028 +413029 +413030 +413031 +413056 +413057 +413058 +413059 +413060 +413061 +413062 +413063 +413088 +413089 +413090 +413091 +413092 +413093 +413094 +413095 +413120 +413121 +413122 +413123 +413124 +413125 +413126 +413127 +413152 +413153 +413154 +413155 +413156 +413157 +413158 +413159 +413184 +413185 +413186 +413187 +413188 +413189 +413190 +413191 +413216 +413217 +413218 +413219 +413220 +413221 +413222 +413223 +413248 +413249 +413250 +413251 +413252 +413253 +413254 +413255 +413280 +413281 +413282 +413283 +413284 +413285 +413286 +413287 +413312 +413313 +413314 +413315 +413316 +413317 +413318 +413319 +413344 +413345 +413346 +413347 +413348 +413349 +413350 +413351 +413376 +413377 +413378 +413379 +413380 +413381 +413382 +413383 +413408 +413409 +413410 +413411 +413412 +413413 +413414 +413415 +413440 +413441 +413442 +413443 +413444 +413445 +413446 +413447 +413472 +413473 +413474 +413475 +413476 +413477 +413478 +413479 +413504 +413505 +413506 +413507 +413508 +413509 +413510 +413511 +413536 +413537 +413538 +413539 +413540 +413541 +413542 +413543 +413568 +413569 +413570 +413571 +413572 +413573 +413574 +413575 +413600 +413601 +413602 +413603 +413604 +413605 +413606 +413607 +413632 +413633 +413634 +413635 +413636 +413637 +413638 +413639 +413664 +413665 +413666 +413667 +413668 +413669 +413670 +413671 +413696 +413697 +413698 +413699 +413700 +413701 +413702 +413703 +413728 +413729 +413730 +413731 +413732 +413733 +413734 +413735 +413760 +413761 +413762 +413763 +413764 +413765 +413766 +413767 +413792 +413793 +413794 +413795 +413796 +413797 +413798 +413799 +413824 +413825 +413826 +413827 +413828 +413829 +413830 +413831 +413856 +413857 +413858 +413859 +413860 +413861 +413862 +413863 +413888 +413889 +413890 +413891 +413892 +413893 +413894 +413895 +413920 +413921 +413922 +413923 +413924 +413925 +413926 +413927 +413952 +413953 +413954 +413955 +413956 +413957 +413958 +413959 +413984 +413985 +413986 +413987 +413988 +413989 +413990 +413991 +414016 +414017 +414018 +414019 +414020 +414021 +414022 +414023 +414048 +414049 +414050 +414051 +414052 +414053 +414054 +414055 +414080 +414081 +414082 +414083 +414084 +414085 +414086 +414087 +414112 +414113 +414114 +414115 +414116 +414117 +414118 +414119 +414144 +414145 +414146 +414147 +414148 +414149 +414150 +414151 +414176 +414177 +414178 +414179 +414180 +414181 +414182 +414183 +414208 +414209 +414210 +414211 +414212 +414213 +414214 +414215 +414240 +414241 +414242 +414243 +414244 +414245 +414246 +414247 +414272 +414273 +414274 +414275 +414276 +414277 +414278 +414279 +414304 +414305 +414306 +414307 +414308 +414309 +414310 +414311 +414336 +414337 +414338 +414339 +414340 +414341 +414342 +414343 +414368 +414369 +414370 +414371 +414372 +414373 +414374 +414375 +414400 +414401 +414402 +414403 +414404 +414405 +414406 +414407 +414432 +414433 +414434 +414435 +414436 +414437 +414438 +414439 +414464 +414465 +414466 +414467 +414468 +414469 +414470 +414471 +414496 +414497 +414498 +414499 +414500 +414501 +414502 +414503 +414528 +414529 +414530 +414531 +414532 +414533 +414534 +414535 +414560 +414561 +414562 +414563 +414564 +414565 +414566 +414567 +414592 +414593 +414594 +414595 +414596 +414597 +414598 +414599 +414624 +414625 +414626 +414627 +414628 +414629 +414630 +414631 +414656 +414657 +414658 +414659 +414660 +414661 +414662 +414663 +414688 +414689 +414690 +414691 +414692 +414693 +414694 +414695 +414720 +414721 +414722 +414723 +414724 +414725 +414726 +414727 +414752 +414753 +414754 +414755 +414756 +414757 +414758 +414759 +414784 +414785 +414786 +414787 +414788 +414789 +414790 +414791 +414816 +414817 +414818 +414819 +414820 +414821 +414822 +414823 +414848 +414849 +414850 +414851 +414852 +414853 +414854 +414855 +414880 +414881 +414882 +414883 +414884 +414885 +414886 +414887 +414912 +414913 +414914 +414915 +414916 +414917 +414918 +414919 +414944 +414945 +414946 +414947 +414948 +414949 +414950 +414951 +414976 +414977 +414978 +414979 +414980 +414981 +414982 +414983 +415008 +415009 +415010 +415011 +415012 +415013 +415014 +415015 +415040 +415041 +415042 +415043 +415044 +415045 +415046 +415047 +415072 +415073 +415074 +415075 +415076 +415077 +415078 +415079 +415104 +415105 +415106 +415107 +415108 +415109 +415110 +415111 +415136 +415137 +415138 +415139 +415140 +415141 +415142 +415143 +415168 +415169 +415170 +415171 +415172 +415173 +415174 +415175 +415200 +415201 +415202 +415203 +415204 +415205 +415206 +415207 +415232 +415233 +415234 +415235 +415236 +415237 +415238 +415239 +415264 +415265 +415266 +415267 +415268 +415269 +415270 +415271 +415296 +415297 +415298 +415299 +415300 +415301 +415302 +415303 +415328 +415329 +415330 +415331 +415332 +415333 +415334 +415335 +415360 +415361 +415362 +415363 +415364 +415365 +415366 +415367 +415392 +415393 +415394 +415395 +415396 +415397 +415398 +415399 +415424 +415425 +415426 +415427 +415428 +415429 +415430 +415431 +415456 +415457 +415458 +415459 +415460 +415461 +415462 +415463 +415488 +415489 +415490 +415491 +415492 +415493 +415494 +415495 +415520 +415521 +415522 +415523 +415524 +415525 +415526 +415527 +415552 +415553 +415554 +415555 +415556 +415557 +415558 +415559 +415584 +415585 +415586 +415587 +415588 +415589 +415590 +415591 +415616 +415617 +415618 +415619 +415620 +415621 +415622 +415623 +415648 +415649 +415650 +415651 +415652 +415653 +415654 +415655 +415680 +415681 +415682 +415683 +415684 +415685 +415686 +415687 +415712 +415713 +415714 +415715 +415716 +415717 +415718 +415719 +415744 +415745 +415746 +415747 +415748 +415749 +415750 +415751 +415776 +415777 +415778 +415779 +415780 +415781 +415782 +415783 +415808 +415809 +415810 +415811 +415812 +415813 +415814 +415815 +415840 +415841 +415842 +415843 +415844 +415845 +415846 +415847 +415872 +415873 +415874 +415875 +415876 +415877 +415878 +415879 +415904 +415905 +415906 +415907 +415908 +415909 +415910 +415911 +415936 +415937 +415938 +415939 +415940 +415941 +415942 +415943 +415968 +415969 +415970 +415971 +415972 +415973 +415974 +415975 +416000 +416001 +416002 +416003 +416004 +416005 +416006 +416007 +416032 +416033 +416034 +416035 +416036 +416037 +416038 +416039 +416064 +416065 +416066 +416067 +416068 +416069 +416070 +416071 +416096 +416097 +416098 +416099 +416100 +416101 +416102 +416103 +416128 +416129 +416130 +416131 +416132 +416133 +416134 +416135 +416160 +416161 +416162 +416163 +416164 +416165 +416166 +416167 +416192 +416193 +416194 +416195 +416196 +416197 +416198 +416199 +416224 +416225 +416226 +416227 +416228 +416229 +416230 +416231 +416256 +416257 +416258 +416259 +416260 +416261 +416262 +416263 +416288 +416289 +416290 +416291 +416292 +416293 +416294 +416295 +416320 +416321 +416322 +416323 +416324 +416325 +416326 +416327 +416352 +416353 +416354 +416355 +416356 +416357 +416358 +416359 +416384 +416385 +416386 +416387 +416388 +416389 +416390 +416391 +416416 +416417 +416418 +416419 +416420 +416421 +416422 +416423 +416448 +416449 +416450 +416451 +416452 +416453 +416454 +416455 +416480 +416481 +416482 +416483 +416484 +416485 +416486 +416487 +416512 +416513 +416514 +416515 +416516 +416517 +416518 +416519 +416544 +416545 +416546 +416547 +416548 +416549 +416550 +416551 +416576 +416577 +416578 +416579 +416580 +416581 +416582 +416583 +416608 +416609 +416610 +416611 +416612 +416613 +416614 +416615 +416640 +416641 +416642 +416643 +416644 +416645 +416646 +416647 +416672 +416673 +416674 +416675 +416676 +416677 +416678 +416679 +416704 +416705 +416706 +416707 +416708 +416709 +416710 +416711 +416736 +416737 +416738 +416739 +416740 +416741 +416742 +416743 +416768 +416769 +416770 +416771 +416772 +416773 +416774 +416775 +416800 +416801 +416802 +416803 +416804 +416805 +416806 +416807 +416832 +416833 +416834 +416835 +416836 +416837 +416838 +416839 +416864 +416865 +416866 +416867 +416868 +416869 +416870 +416871 +416896 +416897 +416898 +416899 +416900 +416901 +416902 +416903 +416928 +416929 +416930 +416931 +416932 +416933 +416934 +416935 +416960 +416961 +416962 +416963 +416964 +416965 +416966 +416967 +416992 +416993 +416994 +416995 +416996 +416997 +416998 +416999 +417024 +417025 +417026 +417027 +417028 +417029 +417030 +417031 +417056 +417057 +417058 +417059 +417060 +417061 +417062 +417063 +417088 +417089 +417090 +417091 +417092 +417093 +417094 +417095 +417120 +417121 +417122 +417123 +417124 +417125 +417126 +417127 +417152 +417153 +417154 +417155 +417156 +417157 +417158 +417159 +417184 +417185 +417186 +417187 +417188 +417189 +417190 +417191 +417216 +417217 +417218 +417219 +417220 +417221 +417222 +417223 +417248 +417249 +417250 +417251 +417252 +417253 +417254 +417255 +417280 +417281 +417282 +417283 +417284 +417285 +417286 +417287 +417312 +417313 +417314 +417315 +417316 +417317 +417318 +417319 +417344 +417345 +417346 +417347 +417348 +417349 +417350 +417351 +417376 +417377 +417378 +417379 +417380 +417381 +417382 +417383 +417408 +417409 +417410 +417411 +417412 +417413 +417414 +417415 +417440 +417441 +417442 +417443 +417444 +417445 +417446 +417447 +417472 +417473 +417474 +417475 +417476 +417477 +417478 +417479 +417504 +417505 +417506 +417507 +417508 +417509 +417510 +417511 +417536 +417537 +417538 +417539 +417540 +417541 +417542 +417543 +417568 +417569 +417570 +417571 +417572 +417573 +417574 +417575 +417600 +417601 +417602 +417603 +417604 +417605 +417606 +417607 +417632 +417633 +417634 +417635 +417636 +417637 +417638 +417639 +417664 +417665 +417666 +417667 +417668 +417669 +417670 +417671 +417696 +417697 +417698 +417699 +417700 +417701 +417702 +417703 +417728 +417729 +417730 +417731 +417732 +417733 +417734 +417735 +417760 +417761 +417762 +417763 +417764 +417765 +417766 +417767 +417792 +417793 +417794 +417795 +417796 +417797 +417798 +417799 +417824 +417825 +417826 +417827 +417828 +417829 +417830 +417831 +417856 +417857 +417858 +417859 +417860 +417861 +417862 +417863 +417888 +417889 +417890 +417891 +417892 +417893 +417894 +417895 +417920 +417921 +417922 +417923 +417924 +417925 +417926 +417927 +417952 +417953 +417954 +417955 +417956 +417957 +417958 +417959 +417984 +417985 +417986 +417987 +417988 +417989 +417990 +417991 +418016 +418017 +418018 +418019 +418020 +418021 +418022 +418023 +418048 +418049 +418050 +418051 +418052 +418053 +418054 +418055 +418080 +418081 +418082 +418083 +418084 +418085 +418086 +418087 +418112 +418113 +418114 +418115 +418116 +418117 +418118 +418119 +418144 +418145 +418146 +418147 +418148 +418149 +418150 +418151 +418176 +418177 +418178 +418179 +418180 +418181 +418182 +418183 +418208 +418209 +418210 +418211 +418212 +418213 +418214 +418215 +418240 +418241 +418242 +418243 +418244 +418245 +418246 +418247 +418272 +418273 +418274 +418275 +418276 +418277 +418278 +418279 +418304 +418305 +418306 +418307 +418308 +418309 +418310 +418311 +418336 +418337 +418338 +418339 +418340 +418341 +418342 +418343 +418368 +418369 +418370 +418371 +418372 +418373 +418374 +418375 +418400 +418401 +418402 +418403 +418404 +418405 +418406 +418407 +418432 +418433 +418434 +418435 +418436 +418437 +418438 +418439 +418464 +418465 +418466 +418467 +418468 +418469 +418470 +418471 +418496 +418497 +418498 +418499 +418500 +418501 +418502 +418503 +418528 +418529 +418530 +418531 +418532 +418533 +418534 +418535 +418560 +418561 +418562 +418563 +418564 +418565 +418566 +418567 +418592 +418593 +418594 +418595 +418596 +418597 +418598 +418599 +418624 +418625 +418626 +418627 +418628 +418629 +418630 +418631 +418656 +418657 +418658 +418659 +418660 +418661 +418662 +418663 +418688 +418689 +418690 +418691 +418692 +418693 +418694 +418695 +418720 +418721 +418722 +418723 +418724 +418725 +418726 +418727 +418752 +418753 +418754 +418755 +418756 +418757 +418758 +418759 +418784 +418785 +418786 +418787 +418788 +418789 +418790 +418791 +418816 +418817 +418818 +418819 +418820 +418821 +418822 +418823 +418848 +418849 +418850 +418851 +418852 +418853 +418854 +418855 +418880 +418881 +418882 +418883 +418884 +418885 +418886 +418887 +418912 +418913 +418914 +418915 +418916 +418917 +418918 +418919 +418944 +418945 +418946 +418947 +418948 +418949 +418950 +418951 +418976 +418977 +418978 +418979 +418980 +418981 +418982 +418983 +419008 +419009 +419010 +419011 +419012 +419013 +419014 +419015 +419040 +419041 +419042 +419043 +419044 +419045 +419046 +419047 +419072 +419073 +419074 +419075 +419076 +419077 +419078 +419079 +419104 +419105 +419106 +419107 +419108 +419109 +419110 +419111 +419136 +419137 +419138 +419139 +419140 +419141 +419142 +419143 +419168 +419169 +419170 +419171 +419172 +419173 +419174 +419175 +419200 +419201 +419202 +419203 +419204 +419205 +419206 +419207 +419232 +419233 +419234 +419235 +419236 +419237 +419238 +419239 +419264 +419265 +419266 +419267 +419268 +419269 +419270 +419271 +419296 +419297 +419298 +419299 +419300 +419301 +419302 +419303 +419328 +419329 +419330 +419331 +419332 +419333 +419334 +419335 +419360 +419361 +419362 +419363 +419364 +419365 +419366 +419367 +419392 +419393 +419394 +419395 +419396 +419397 +419398 +419399 +419424 +419425 +419426 +419427 +419428 +419429 +419430 +419431 +419456 +419457 +419458 +419459 +419460 +419461 +419462 +419463 +419488 +419489 +419490 +419491 +419492 +419493 +419494 +419495 +419520 +419521 +419522 +419523 +419524 +419525 +419526 +419527 +419552 +419553 +419554 +419555 +419556 +419557 +419558 +419559 +419584 +419585 +419586 +419587 +419588 +419589 +419590 +419591 +419616 +419617 +419618 +419619 +419620 +419621 +419622 +419623 +419648 +419649 +419650 +419651 +419652 +419653 +419654 +419655 +419680 +419681 +419682 +419683 +419684 +419685 +419686 +419687 +419712 +419713 +419714 +419715 +419716 +419717 +419718 +419719 +419744 +419745 +419746 +419747 +419748 +419749 +419750 +419751 +419776 +419777 +419778 +419779 +419780 +419781 +419782 +419783 +419808 +419809 +419810 +419811 +419812 +419813 +419814 +419815 +419840 +419841 +419842 +419843 +419844 +419845 +419846 +419847 +419872 +419873 +419874 +419875 +419876 +419877 +419878 +419879 +419904 +419905 +419906 +419907 +419908 +419909 +419910 +419911 +419936 +419937 +419938 +419939 +419940 +419941 +419942 +419943 +419968 +419969 +419970 +419971 +419972 +419973 +419974 +419975 +420000 +420001 +420002 +420003 +420004 +420005 +420006 +420007 +420032 +420033 +420034 +420035 +420036 +420037 +420038 +420039 +420064 +420065 +420066 +420067 +420068 +420069 +420070 +420071 +420096 +420097 +420098 +420099 +420100 +420101 +420102 +420103 +420128 +420129 +420130 +420131 +420132 +420133 +420134 +420135 +420160 +420161 +420162 +420163 +420164 +420165 +420166 +420167 +420192 +420193 +420194 +420195 +420196 +420197 +420198 +420199 +420224 +420225 +420226 +420227 +420228 +420229 +420230 +420231 +420256 +420257 +420258 +420259 +420260 +420261 +420262 +420263 +420288 +420289 +420290 +420291 +420292 +420293 +420294 +420295 +420320 +420321 +420322 +420323 +420324 +420325 +420326 +420327 +420352 +420353 +420354 +420355 +420356 +420357 +420358 +420359 +420384 +420385 +420386 +420387 +420388 +420389 +420390 +420391 +420416 +420417 +420418 +420419 +420420 +420421 +420422 +420423 +420448 +420449 +420450 +420451 +420452 +420453 +420454 +420455 +420480 +420481 +420482 +420483 +420484 +420485 +420486 +420487 +420512 +420513 +420514 +420515 +420516 +420517 +420518 +420519 +420544 +420545 +420546 +420547 +420548 +420549 +420550 +420551 +420576 +420577 +420578 +420579 +420580 +420581 +420582 +420583 +420608 +420609 +420610 +420611 +420612 +420613 +420614 +420615 +420640 +420641 +420642 +420643 +420644 +420645 +420646 +420647 +420672 +420673 +420674 +420675 +420676 +420677 +420678 +420679 +420704 +420705 +420706 +420707 +420708 +420709 +420710 +420711 +420736 +420737 +420738 +420739 +420740 +420741 +420742 +420743 +420768 +420769 +420770 +420771 +420772 +420773 +420774 +420775 +420800 +420801 +420802 +420803 +420804 +420805 +420806 +420807 +420832 +420833 +420834 +420835 +420836 +420837 +420838 +420839 +420864 +420865 +420866 +420867 +420868 +420869 +420870 +420871 +420896 +420897 +420898 +420899 +420900 +420901 +420902 +420903 +420928 +420929 +420930 +420931 +420932 +420933 +420934 +420935 +420960 +420961 +420962 +420963 +420964 +420965 +420966 +420967 +420992 +420993 +420994 +420995 +420996 +420997 +420998 +420999 +421024 +421025 +421026 +421027 +421028 +421029 +421030 +421031 +421056 +421057 +421058 +421059 +421060 +421061 +421062 +421063 +421088 +421089 +421090 +421091 +421092 +421093 +421094 +421095 +421120 +421121 +421122 +421123 +421124 +421125 +421126 +421127 +421152 +421153 +421154 +421155 +421156 +421157 +421158 +421159 +421184 +421185 +421186 +421187 +421188 +421189 +421190 +421191 +421216 +421217 +421218 +421219 +421220 +421221 +421222 +421223 +421248 +421249 +421250 +421251 +421252 +421253 +421254 +421255 +421280 +421281 +421282 +421283 +421284 +421285 +421286 +421287 +421312 +421313 +421314 +421315 +421316 +421317 +421318 +421319 +421344 +421345 +421346 +421347 +421348 +421349 +421350 +421351 +421376 +421377 +421378 +421379 +421380 +421381 +421382 +421383 +421408 +421409 +421410 +421411 +421412 +421413 +421414 +421415 +421440 +421441 +421442 +421443 +421444 +421445 +421446 +421447 +421472 +421473 +421474 +421475 +421476 +421477 +421478 +421479 +421504 +421505 +421506 +421507 +421508 +421509 +421510 +421511 +421536 +421537 +421538 +421539 +421540 +421541 +421542 +421543 +421568 +421569 +421570 +421571 +421572 +421573 +421574 +421575 +421600 +421601 +421602 +421603 +421604 +421605 +421606 +421607 +421632 +421633 +421634 +421635 +421636 +421637 +421638 +421639 +421664 +421665 +421666 +421667 +421668 +421669 +421670 +421671 +421696 +421697 +421698 +421699 +421700 +421701 +421702 +421703 +421728 +421729 +421730 +421731 +421732 +421733 +421734 +421735 +421760 +421761 +421762 +421763 +421764 +421765 +421766 +421767 +421792 +421793 +421794 +421795 +421796 +421797 +421798 +421799 +421824 +421825 +421826 +421827 +421828 +421829 +421830 +421831 +421856 +421857 +421858 +421859 +421860 +421861 +421862 +421863 +421888 +421889 +421890 +421891 +421892 +421893 +421894 +421895 +421920 +421921 +421922 +421923 +421924 +421925 +421926 +421927 +421952 +421953 +421954 +421955 +421956 +421957 +421958 +421959 +421984 +421985 +421986 +421987 +421988 +421989 +421990 +421991 +422016 +422017 +422018 +422019 +422020 +422021 +422022 +422023 +422048 +422049 +422050 +422051 +422052 +422053 +422054 +422055 +422080 +422081 +422082 +422083 +422084 +422085 +422086 +422087 +422112 +422113 +422114 +422115 +422116 +422117 +422118 +422119 +422144 +422145 +422146 +422147 +422148 +422149 +422150 +422151 +422176 +422177 +422178 +422179 +422180 +422181 +422182 +422183 +422208 +422209 +422210 +422211 +422212 +422213 +422214 +422215 +422240 +422241 +422242 +422243 +422244 +422245 +422246 +422247 +422272 +422273 +422274 +422275 +422276 +422277 +422278 +422279 +422304 +422305 +422306 +422307 +422308 +422309 +422310 +422311 +422336 +422337 +422338 +422339 +422340 +422341 +422342 +422343 +422368 +422369 +422370 +422371 +422372 +422373 +422374 +422375 +422400 +422401 +422402 +422403 +422404 +422405 +422406 +422407 +422432 +422433 +422434 +422435 +422436 +422437 +422438 +422439 +422464 +422465 +422466 +422467 +422468 +422469 +422470 +422471 +422496 +422497 +422498 +422499 +422500 +422501 +422502 +422503 +422528 +422529 +422530 +422531 +422532 +422533 +422534 +422535 +422560 +422561 +422562 +422563 +422564 +422565 +422566 +422567 +422592 +422593 +422594 +422595 +422596 +422597 +422598 +422599 +422624 +422625 +422626 +422627 +422628 +422629 +422630 +422631 +422656 +422657 +422658 +422659 +422660 +422661 +422662 +422663 +422688 +422689 +422690 +422691 +422692 +422693 +422694 +422695 +422720 +422721 +422722 +422723 +422724 +422725 +422726 +422727 +422752 +422753 +422754 +422755 +422756 +422757 +422758 +422759 +422784 +422785 +422786 +422787 +422788 +422789 +422790 +422791 +422816 +422817 +422818 +422819 +422820 +422821 +422822 +422823 +422848 +422849 +422850 +422851 +422852 +422853 +422854 +422855 +422880 +422881 +422882 +422883 +422884 +422885 +422886 +422887 +422912 +422913 +422914 +422915 +422916 +422917 +422918 +422919 +422944 +422945 +422946 +422947 +422948 +422949 +422950 +422951 +422976 +422977 +422978 +422979 +422980 +422981 +422982 +422983 +423008 +423009 +423010 +423011 +423012 +423013 +423014 +423015 +423040 +423041 +423042 +423043 +423044 +423045 +423046 +423047 +423072 +423073 +423074 +423075 +423076 +423077 +423078 +423079 +423104 +423105 +423106 +423107 +423108 +423109 +423110 +423111 +423136 +423137 +423138 +423139 +423140 +423141 +423142 +423143 +423168 +423169 +423170 +423171 +423172 +423173 +423174 +423175 +423200 +423201 +423202 +423203 +423204 +423205 +423206 +423207 +423232 +423233 +423234 +423235 +423236 +423237 +423238 +423239 +423264 +423265 +423266 +423267 +423268 +423269 +423270 +423271 +423296 +423297 +423298 +423299 +423300 +423301 +423302 +423303 +423328 +423329 +423330 +423331 +423332 +423333 +423334 +423335 +423360 +423361 +423362 +423363 +423364 +423365 +423366 +423367 +423392 +423393 +423394 +423395 +423396 +423397 +423398 +423399 +423424 +423425 +423426 +423427 +423428 +423429 +423430 +423431 +423456 +423457 +423458 +423459 +423460 +423461 +423462 +423463 +423488 +423489 +423490 +423491 +423492 +423493 +423494 +423495 +423520 +423521 +423522 +423523 +423524 +423525 +423526 +423527 +423552 +423553 +423554 +423555 +423556 +423557 +423558 +423559 +423584 +423585 +423586 +423587 +423588 +423589 +423590 +423591 +423616 +423617 +423618 +423619 +423620 +423621 +423622 +423623 +423648 +423649 +423650 +423651 +423652 +423653 +423654 +423655 +423680 +423681 +423682 +423683 +423684 +423685 +423686 +423687 +423712 +423713 +423714 +423715 +423716 +423717 +423718 +423719 +423744 +423745 +423746 +423747 +423748 +423749 +423750 +423751 +423776 +423777 +423778 +423779 +423780 +423781 +423782 +423783 +423808 +423809 +423810 +423811 +423812 +423813 +423814 +423815 +423840 +423841 +423842 +423843 +423844 +423845 +423846 +423847 +423872 +423873 +423874 +423875 +423876 +423877 +423878 +423879 +423904 +423905 +423906 +423907 +423908 +423909 +423910 +423911 +423936 +423937 +423938 +423939 +423940 +423941 +423942 +423943 +423968 +423969 +423970 +423971 +423972 +423973 +423974 +423975 +424000 +424001 +424002 +424003 +424004 +424005 +424006 +424007 +424032 +424033 +424034 +424035 +424036 +424037 +424038 +424039 +424064 +424065 +424066 +424067 +424068 +424069 +424070 +424071 +424096 +424097 +424098 +424099 +424100 +424101 +424102 +424103 +424128 +424129 +424130 +424131 +424132 +424133 +424134 +424135 +424160 +424161 +424162 +424163 +424164 +424165 +424166 +424167 +424192 +424193 +424194 +424195 +424196 +424197 +424198 +424199 +424224 +424225 +424226 +424227 +424228 +424229 +424230 +424231 +424256 +424257 +424258 +424259 +424260 +424261 +424262 +424263 +424288 +424289 +424290 +424291 +424292 +424293 +424294 +424295 +424320 +424321 +424322 +424323 +424324 +424325 +424326 +424327 +424352 +424353 +424354 +424355 +424356 +424357 +424358 +424359 +424384 +424385 +424386 +424387 +424388 +424389 +424390 +424391 +424416 +424417 +424418 +424419 +424420 +424421 +424422 +424423 +424448 +424449 +424450 +424451 +424452 +424453 +424454 +424455 +424480 +424481 +424482 +424483 +424484 +424485 +424486 +424487 +424512 +424513 +424514 +424515 +424516 +424517 +424518 +424519 +424544 +424545 +424546 +424547 +424548 +424549 +424550 +424551 +424576 +424577 +424578 +424579 +424580 +424581 +424582 +424583 +424608 +424609 +424610 +424611 +424612 +424613 +424614 +424615 +424640 +424641 +424642 +424643 +424644 +424645 +424646 +424647 +424672 +424673 +424674 +424675 +424676 +424677 +424678 +424679 +424704 +424705 +424706 +424707 +424708 +424709 +424710 +424711 +424736 +424737 +424738 +424739 +424740 +424741 +424742 +424743 +424768 +424769 +424770 +424771 +424772 +424773 +424774 +424775 +424800 +424801 +424802 +424803 +424804 +424805 +424806 +424807 +424832 +424833 +424834 +424835 +424836 +424837 +424838 +424839 +424864 +424865 +424866 +424867 +424868 +424869 +424870 +424871 +424896 +424897 +424898 +424899 +424900 +424901 +424902 +424903 +424928 +424929 +424930 +424931 +424932 +424933 +424934 +424935 +424960 +424961 +424962 +424963 +424964 +424965 +424966 +424967 +424992 +424993 +424994 +424995 +424996 +424997 +424998 +424999 +425024 +425025 +425026 +425027 +425028 +425029 +425030 +425031 +425056 +425057 +425058 +425059 +425060 +425061 +425062 +425063 +425088 +425089 +425090 +425091 +425092 +425093 +425094 +425095 +425120 +425121 +425122 +425123 +425124 +425125 +425126 +425127 +425152 +425153 +425154 +425155 +425156 +425157 +425158 +425159 +425184 +425185 +425186 +425187 +425188 +425189 +425190 +425191 +425216 +425217 +425218 +425219 +425220 +425221 +425222 +425223 +425248 +425249 +425250 +425251 +425252 +425253 +425254 +425255 +425280 +425281 +425282 +425283 +425284 +425285 +425286 +425287 +425312 +425313 +425314 +425315 +425316 +425317 +425318 +425319 +425344 +425345 +425346 +425347 +425348 +425349 +425350 +425351 +425376 +425377 +425378 +425379 +425380 +425381 +425382 +425383 +425408 +425409 +425410 +425411 +425412 +425413 +425414 +425415 +425440 +425441 +425442 +425443 +425444 +425445 +425446 +425447 +425472 +425473 +425474 +425475 +425476 +425477 +425478 +425479 +425504 +425505 +425506 +425507 +425508 +425509 +425510 +425511 +425536 +425537 +425538 +425539 +425540 +425541 +425542 +425543 +425568 +425569 +425570 +425571 +425572 +425573 +425574 +425575 +425600 +425601 +425602 +425603 +425604 +425605 +425606 +425607 +425632 +425633 +425634 +425635 +425636 +425637 +425638 +425639 +425664 +425665 +425666 +425667 +425668 +425669 +425670 +425671 +425696 +425697 +425698 +425699 +425700 +425701 +425702 +425703 +425728 +425729 +425730 +425731 +425732 +425733 +425734 +425735 +425760 +425761 +425762 +425763 +425764 +425765 +425766 +425767 +425792 +425793 +425794 +425795 +425796 +425797 +425798 +425799 +425824 +425825 +425826 +425827 +425828 +425829 +425830 +425831 +425856 +425857 +425858 +425859 +425860 +425861 +425862 +425863 +425888 +425889 +425890 +425891 +425892 +425893 +425894 +425895 +425920 +425921 +425922 +425923 +425924 +425925 +425926 +425927 +425952 +425953 +425954 +425955 +425956 +425957 +425958 +425959 +425984 +425985 +425986 +425987 +425988 +425989 +425990 +425991 +426016 +426017 +426018 +426019 +426020 +426021 +426022 +426023 +426048 +426049 +426050 +426051 +426052 +426053 +426054 +426055 +426080 +426081 +426082 +426083 +426084 +426085 +426086 +426087 +426112 +426113 +426114 +426115 +426116 +426117 +426118 +426119 +426144 +426145 +426146 +426147 +426148 +426149 +426150 +426151 +426176 +426177 +426178 +426179 +426180 +426181 +426182 +426183 +426208 +426209 +426210 +426211 +426212 +426213 +426214 +426215 +426240 +426241 +426242 +426243 +426244 +426245 +426246 +426247 +426272 +426273 +426274 +426275 +426276 +426277 +426278 +426279 +426304 +426305 +426306 +426307 +426308 +426309 +426310 +426311 +426336 +426337 +426338 +426339 +426340 +426341 +426342 +426343 +426368 +426369 +426370 +426371 +426372 +426373 +426374 +426375 +426400 +426401 +426402 +426403 +426404 +426405 +426406 +426407 +426432 +426433 +426434 +426435 +426436 +426437 +426438 +426439 +426464 +426465 +426466 +426467 +426468 +426469 +426470 +426471 +426496 +426497 +426498 +426499 +426500 +426501 +426502 +426503 +426528 +426529 +426530 +426531 +426532 +426533 +426534 +426535 +426560 +426561 +426562 +426563 +426564 +426565 +426566 +426567 +426592 +426593 +426594 +426595 +426596 +426597 +426598 +426599 +426624 +426625 +426626 +426627 +426628 +426629 +426630 +426631 +426656 +426657 +426658 +426659 +426660 +426661 +426662 +426663 +426688 +426689 +426690 +426691 +426692 +426693 +426694 +426695 +426720 +426721 +426722 +426723 +426724 +426725 +426726 +426727 +426752 +426753 +426754 +426755 +426756 +426757 +426758 +426759 +426784 +426785 +426786 +426787 +426788 +426789 +426790 +426791 +426816 +426817 +426818 +426819 +426820 +426821 +426822 +426823 +426848 +426849 +426850 +426851 +426852 +426853 +426854 +426855 +426880 +426881 +426882 +426883 +426884 +426885 +426886 +426887 +426912 +426913 +426914 +426915 +426916 +426917 +426918 +426919 +426944 +426945 +426946 +426947 +426948 +426949 +426950 +426951 +426976 +426977 +426978 +426979 +426980 +426981 +426982 +426983 +427008 +427009 +427010 +427011 +427012 +427013 +427014 +427015 +427040 +427041 +427042 +427043 +427044 +427045 +427046 +427047 +427072 +427073 +427074 +427075 +427076 +427077 +427078 +427079 +427104 +427105 +427106 +427107 +427108 +427109 +427110 +427111 +427136 +427137 +427138 +427139 +427140 +427141 +427142 +427143 +427168 +427169 +427170 +427171 +427172 +427173 +427174 +427175 +427200 +427201 +427202 +427203 +427204 +427205 +427206 +427207 +427232 +427233 +427234 +427235 +427236 +427237 +427238 +427239 +427264 +427265 +427266 +427267 +427268 +427269 +427270 +427271 +427296 +427297 +427298 +427299 +427300 +427301 +427302 +427303 +427328 +427329 +427330 +427331 +427332 +427333 +427334 +427335 +427360 +427361 +427362 +427363 +427364 +427365 +427366 +427367 +427392 +427393 +427394 +427395 +427396 +427397 +427398 +427399 +427424 +427425 +427426 +427427 +427428 +427429 +427430 +427431 +427456 +427457 +427458 +427459 +427460 +427461 +427462 +427463 +427488 +427489 +427490 +427491 +427492 +427493 +427494 +427495 +427520 +427521 +427522 +427523 +427524 +427525 +427526 +427527 +427552 +427553 +427554 +427555 +427556 +427557 +427558 +427559 +427584 +427585 +427586 +427587 +427588 +427589 +427590 +427591 +427616 +427617 +427618 +427619 +427620 +427621 +427622 +427623 +427648 +427649 +427650 +427651 +427652 +427653 +427654 +427655 +427680 +427681 +427682 +427683 +427684 +427685 +427686 +427687 +427712 +427713 +427714 +427715 +427716 +427717 +427718 +427719 +427744 +427745 +427746 +427747 +427748 +427749 +427750 +427751 +427776 +427777 +427778 +427779 +427780 +427781 +427782 +427783 +427808 +427809 +427810 +427811 +427812 +427813 +427814 +427815 +427840 +427841 +427842 +427843 +427844 +427845 +427846 +427847 +427872 +427873 +427874 +427875 +427876 +427877 +427878 +427879 +427904 +427905 +427906 +427907 +427908 +427909 +427910 +427911 +427936 +427937 +427938 +427939 +427940 +427941 +427942 +427943 +427968 +427969 +427970 +427971 +427972 +427973 +427974 +427975 +428000 +428001 +428002 +428003 +428004 +428005 +428006 +428007 +428032 +428033 +428034 +428035 +428036 +428037 +428038 +428039 +428064 +428065 +428066 +428067 +428068 +428069 +428070 +428071 +428096 +428097 +428098 +428099 +428100 +428101 +428102 +428103 +428128 +428129 +428130 +428131 +428132 +428133 +428134 +428135 +428160 +428161 +428162 +428163 +428164 +428165 +428166 +428167 +428192 +428193 +428194 +428195 +428196 +428197 +428198 +428199 +428224 +428225 +428226 +428227 +428228 +428229 +428230 +428231 +428256 +428257 +428258 +428259 +428260 +428261 +428262 +428263 +428288 +428289 +428290 +428291 +428292 +428293 +428294 +428295 +428320 +428321 +428322 +428323 +428324 +428325 +428326 +428327 +428352 +428353 +428354 +428355 +428356 +428357 +428358 +428359 +428384 +428385 +428386 +428387 +428388 +428389 +428390 +428391 +428416 +428417 +428418 +428419 +428420 +428421 +428422 +428423 +428448 +428449 +428450 +428451 +428452 +428453 +428454 +428455 +428480 +428481 +428482 +428483 +428484 +428485 +428486 +428487 +428512 +428513 +428514 +428515 +428516 +428517 +428518 +428519 +428544 +428545 +428546 +428547 +428548 +428549 +428550 +428551 +428576 +428577 +428578 +428579 +428580 +428581 +428582 +428583 +428608 +428609 +428610 +428611 +428612 +428613 +428614 +428615 +428640 +428641 +428642 +428643 +428644 +428645 +428646 +428647 +428672 +428673 +428674 +428675 +428676 +428677 +428678 +428679 +428704 +428705 +428706 +428707 +428708 +428709 +428710 +428711 +428736 +428737 +428738 +428739 +428740 +428741 +428742 +428743 +428768 +428769 +428770 +428771 +428772 +428773 +428774 +428775 +428800 +428801 +428802 +428803 +428804 +428805 +428806 +428807 +428832 +428833 +428834 +428835 +428836 +428837 +428838 +428839 +428864 +428865 +428866 +428867 +428868 +428869 +428870 +428871 +428896 +428897 +428898 +428899 +428900 +428901 +428902 +428903 +428928 +428929 +428930 +428931 +428932 +428933 +428934 +428935 +428960 +428961 +428962 +428963 +428964 +428965 +428966 +428967 +428992 +428993 +428994 +428995 +428996 +428997 +428998 +428999 +429024 +429025 +429026 +429027 +429028 +429029 +429030 +429031 +429056 +429057 +429058 +429059 +429060 +429061 +429062 +429063 +429088 +429089 +429090 +429091 +429092 +429093 +429094 +429095 +429120 +429121 +429122 +429123 +429124 +429125 +429126 +429127 +429152 +429153 +429154 +429155 +429156 +429157 +429158 +429159 +429184 +429185 +429186 +429187 +429188 +429189 +429190 +429191 +429216 +429217 +429218 +429219 +429220 +429221 +429222 +429223 +429248 +429249 +429250 +429251 +429252 +429253 +429254 +429255 +429280 +429281 +429282 +429283 +429284 +429285 +429286 +429287 +429312 +429313 +429314 +429315 +429316 +429317 +429318 +429319 +429344 +429345 +429346 +429347 +429348 +429349 +429350 +429351 +429376 +429377 +429378 +429379 +429380 +429381 +429382 +429383 +429408 +429409 +429410 +429411 +429412 +429413 +429414 +429415 +429440 +429441 +429442 +429443 +429444 +429445 +429446 +429447 +429472 +429473 +429474 +429475 +429476 +429477 +429478 +429479 +429504 +429505 +429506 +429507 +429508 +429509 +429510 +429511 +429536 +429537 +429538 +429539 +429540 +429541 +429542 +429543 +429568 +429569 +429570 +429571 +429572 +429573 +429574 +429575 +429600 +429601 +429602 +429603 +429604 +429605 +429606 +429607 +429632 +429633 +429634 +429635 +429636 +429637 +429638 +429639 +429664 +429665 +429666 +429667 +429668 +429669 +429670 +429671 +429696 +429697 +429698 +429699 +429700 +429701 +429702 +429703 +429728 +429729 +429730 +429731 +429732 +429733 +429734 +429735 +429760 +429761 +429762 +429763 +429764 +429765 +429766 +429767 +429792 +429793 +429794 +429795 +429796 +429797 +429798 +429799 +429824 +429825 +429826 +429827 +429828 +429829 +429830 +429831 +429856 +429857 +429858 +429859 +429860 +429861 +429862 +429863 +429888 +429889 +429890 +429891 +429892 +429893 +429894 +429895 +429920 +429921 +429922 +429923 +429924 +429925 +429926 +429927 +429952 +429953 +429954 +429955 +429956 +429957 +429958 +429959 +429984 +429985 +429986 +429987 +429988 +429989 +429990 +429991 +430016 +430017 +430018 +430019 +430020 +430021 +430022 +430023 +430048 +430049 +430050 +430051 +430052 +430053 +430054 +430055 +430080 +430081 +430082 +430083 +430084 +430085 +430086 +430087 +430112 +430113 +430114 +430115 +430116 +430117 +430118 +430119 +430144 +430145 +430146 +430147 +430148 +430149 +430150 +430151 +430176 +430177 +430178 +430179 +430180 +430181 +430182 +430183 +430208 +430209 +430210 +430211 +430212 +430213 +430214 +430215 +430240 +430241 +430242 +430243 +430244 +430245 +430246 +430247 +430272 +430273 +430274 +430275 +430276 +430277 +430278 +430279 +430304 +430305 +430306 +430307 +430308 +430309 +430310 +430311 +430336 +430337 +430338 +430339 +430340 +430341 +430342 +430343 +430368 +430369 +430370 +430371 +430372 +430373 +430374 +430375 +430400 +430401 +430402 +430403 +430404 +430405 +430406 +430407 +430432 +430433 +430434 +430435 +430436 +430437 +430438 +430439 +430464 +430465 +430466 +430467 +430468 +430469 +430470 +430471 +430496 +430497 +430498 +430499 +430500 +430501 +430502 +430503 +430528 +430529 +430530 +430531 +430532 +430533 +430534 +430535 +430560 +430561 +430562 +430563 +430564 +430565 +430566 +430567 +430592 +430593 +430594 +430595 +430596 +430597 +430598 +430599 +430624 +430625 +430626 +430627 +430628 +430629 +430630 +430631 +430656 +430657 +430658 +430659 +430660 +430661 +430662 +430663 +430688 +430689 +430690 +430691 +430692 +430693 +430694 +430695 +430720 +430721 +430722 +430723 +430724 +430725 +430726 +430727 +430752 +430753 +430754 +430755 +430756 +430757 +430758 +430759 +430784 +430785 +430786 +430787 +430788 +430789 +430790 +430791 +430816 +430817 +430818 +430819 +430820 +430821 +430822 +430823 +430848 +430849 +430850 +430851 +430852 +430853 +430854 +430855 +430880 +430881 +430882 +430883 +430884 +430885 +430886 +430887 +430912 +430913 +430914 +430915 +430916 +430917 +430918 +430919 +430944 +430945 +430946 +430947 +430948 +430949 +430950 +430951 +430976 +430977 +430978 +430979 +430980 +430981 +430982 +430983 +431008 +431009 +431010 +431011 +431012 +431013 +431014 +431015 +431040 +431041 +431042 +431043 +431044 +431045 +431046 +431047 +431072 +431073 +431074 +431075 +431076 +431077 +431078 +431079 +431104 +431105 +431106 +431107 +431108 +431109 +431110 +431111 +431136 +431137 +431138 +431139 +431140 +431141 +431142 +431143 +431168 +431169 +431170 +431171 +431172 +431173 +431174 +431175 +431200 +431201 +431202 +431203 +431204 +431205 +431206 +431207 +431232 +431233 +431234 +431235 +431236 +431237 +431238 +431239 +431264 +431265 +431266 +431267 +431268 +431269 +431270 +431271 +431296 +431297 +431298 +431299 +431300 +431301 +431302 +431303 +431328 +431329 +431330 +431331 +431332 +431333 +431334 +431335 +431360 +431361 +431362 +431363 +431364 +431365 +431366 +431367 +431392 +431393 +431394 +431395 +431396 +431397 +431398 +431399 +431424 +431425 +431426 +431427 +431428 +431429 +431430 +431431 +431456 +431457 +431458 +431459 +431460 +431461 +431462 +431463 +431488 +431489 +431490 +431491 +431492 +431493 +431494 +431495 +431520 +431521 +431522 +431523 +431524 +431525 +431526 +431527 +431552 +431553 +431554 +431555 +431556 +431557 +431558 +431559 +431584 +431585 +431586 +431587 +431588 +431589 +431590 +431591 +431616 +431617 +431618 +431619 +431620 +431621 +431622 +431623 +431648 +431649 +431650 +431651 +431652 +431653 +431654 +431655 +431680 +431681 +431682 +431683 +431684 +431685 +431686 +431687 +431712 +431713 +431714 +431715 +431716 +431717 +431718 +431719 +431744 +431745 +431746 +431747 +431748 +431749 +431750 +431751 +431776 +431777 +431778 +431779 +431780 +431781 +431782 +431783 +431808 +431809 +431810 +431811 +431812 +431813 +431814 +431815 +431840 +431841 +431842 +431843 +431844 +431845 +431846 +431847 +431872 +431873 +431874 +431875 +431876 +431877 +431878 +431879 +431904 +431905 +431906 +431907 +431908 +431909 +431910 +431911 +431936 +431937 +431938 +431939 +431940 +431941 +431942 +431943 +431968 +431969 +431970 +431971 +431972 +431973 +431974 +431975 +432000 +432001 +432002 +432003 +432004 +432005 +432006 +432007 +432032 +432033 +432034 +432035 +432036 +432037 +432038 +432039 +432064 +432065 +432066 +432067 +432068 +432069 +432070 +432071 +432096 +432097 +432098 +432099 +432100 +432101 +432102 +432103 +432128 +432129 +432130 +432131 +432132 +432133 +432134 +432135 +432160 +432161 +432162 +432163 +432164 +432165 +432166 +432167 +432192 +432193 +432194 +432195 +432196 +432197 +432198 +432199 +432224 +432225 +432226 +432227 +432228 +432229 +432230 +432231 +432256 +432257 +432258 +432259 +432260 +432261 +432262 +432263 +432288 +432289 +432290 +432291 +432292 +432293 +432294 +432295 +432320 +432321 +432322 +432323 +432324 +432325 +432326 +432327 +432352 +432353 +432354 +432355 +432356 +432357 +432358 +432359 +432384 +432385 +432386 +432387 +432388 +432389 +432390 +432391 +432416 +432417 +432418 +432419 +432420 +432421 +432422 +432423 +432448 +432449 +432450 +432451 +432452 +432453 +432454 +432455 +432480 +432481 +432482 +432483 +432484 +432485 +432486 +432487 +432512 +432513 +432514 +432515 +432516 +432517 +432518 +432519 +432544 +432545 +432546 +432547 +432548 +432549 +432550 +432551 +432576 +432577 +432578 +432579 +432580 +432581 +432582 +432583 +432608 +432609 +432610 +432611 +432612 +432613 +432614 +432615 +432640 +432641 +432642 +432643 +432644 +432645 +432646 +432647 +432672 +432673 +432674 +432675 +432676 +432677 +432678 +432679 +432704 +432705 +432706 +432707 +432708 +432709 +432710 +432711 +432736 +432737 +432738 +432739 +432740 +432741 +432742 +432743 +432768 +432769 +432770 +432771 +432772 +432773 +432774 +432775 +432800 +432801 +432802 +432803 +432804 +432805 +432806 +432807 +432832 +432833 +432834 +432835 +432836 +432837 +432838 +432839 +432864 +432865 +432866 +432867 +432868 +432869 +432870 +432871 +432896 +432897 +432898 +432899 +432900 +432901 +432902 +432903 +432928 +432929 +432930 +432931 +432932 +432933 +432934 +432935 +432960 +432961 +432962 +432963 +432964 +432965 +432966 +432967 +432992 +432993 +432994 +432995 +432996 +432997 +432998 +432999 +433024 +433025 +433026 +433027 +433028 +433029 +433030 +433031 +433056 +433057 +433058 +433059 +433060 +433061 +433062 +433063 +433088 +433089 +433090 +433091 +433092 +433093 +433094 +433095 +433120 +433121 +433122 +433123 +433124 +433125 +433126 +433127 +433152 +433153 +433154 +433155 +433156 +433157 +433158 +433159 +433184 +433185 +433186 +433187 +433188 +433189 +433190 +433191 +433216 +433217 +433218 +433219 +433220 +433221 +433222 +433223 +433248 +433249 +433250 +433251 +433252 +433253 +433254 +433255 +433280 +433281 +433282 +433283 +433284 +433285 +433286 +433287 +433312 +433313 +433314 +433315 +433316 +433317 +433318 +433319 +433344 +433345 +433346 +433347 +433348 +433349 +433350 +433351 +433376 +433377 +433378 +433379 +433380 +433381 +433382 +433383 +433408 +433409 +433410 +433411 +433412 +433413 +433414 +433415 +433440 +433441 +433442 +433443 +433444 +433445 +433446 +433447 +433472 +433473 +433474 +433475 +433476 +433477 +433478 +433479 +433504 +433505 +433506 +433507 +433508 +433509 +433510 +433511 +433536 +433537 +433538 +433539 +433540 +433541 +433542 +433543 +433568 +433569 +433570 +433571 +433572 +433573 +433574 +433575 +433600 +433601 +433602 +433603 +433604 +433605 +433606 +433607 +433632 +433633 +433634 +433635 +433636 +433637 +433638 +433639 +433664 +433665 +433666 +433667 +433668 +433669 +433670 +433671 +433696 +433697 +433698 +433699 +433700 +433701 +433702 +433703 +433728 +433729 +433730 +433731 +433732 +433733 +433734 +433735 +433760 +433761 +433762 +433763 +433764 +433765 +433766 +433767 +433792 +433793 +433794 +433795 +433796 +433797 +433798 +433799 +433824 +433825 +433826 +433827 +433828 +433829 +433830 +433831 +433856 +433857 +433858 +433859 +433860 +433861 +433862 +433863 +433888 +433889 +433890 +433891 +433892 +433893 +433894 +433895 +433920 +433921 +433922 +433923 +433924 +433925 +433926 +433927 +433952 +433953 +433954 +433955 +433956 +433957 +433958 +433959 +433984 +433985 +433986 +433987 +433988 +433989 +433990 +433991 +434016 +434017 +434018 +434019 +434020 +434021 +434022 +434023 +434048 +434049 +434050 +434051 +434052 +434053 +434054 +434055 +434080 +434081 +434082 +434083 +434084 +434085 +434086 +434087 +434112 +434113 +434114 +434115 +434116 +434117 +434118 +434119 +434144 +434145 +434146 +434147 +434148 +434149 +434150 +434151 +434176 +434177 +434178 +434179 +434180 +434181 +434182 +434183 +434208 +434209 +434210 +434211 +434212 +434213 +434214 +434215 +434240 +434241 +434242 +434243 +434244 +434245 +434246 +434247 +434272 +434273 +434274 +434275 +434276 +434277 +434278 +434279 +434304 +434305 +434306 +434307 +434308 +434309 +434310 +434311 +434336 +434337 +434338 +434339 +434340 +434341 +434342 +434343 +434368 +434369 +434370 +434371 +434372 +434373 +434374 +434375 +434400 +434401 +434402 +434403 +434404 +434405 +434406 +434407 +434432 +434433 +434434 +434435 +434436 +434437 +434438 +434439 +434464 +434465 +434466 +434467 +434468 +434469 +434470 +434471 +434496 +434497 +434498 +434499 +434500 +434501 +434502 +434503 +434528 +434529 +434530 +434531 +434532 +434533 +434534 +434535 +434560 +434561 +434562 +434563 +434564 +434565 +434566 +434567 +434592 +434593 +434594 +434595 +434596 +434597 +434598 +434599 +434624 +434625 +434626 +434627 +434628 +434629 +434630 +434631 +434656 +434657 +434658 +434659 +434660 +434661 +434662 +434663 +434688 +434689 +434690 +434691 +434692 +434693 +434694 +434695 +434720 +434721 +434722 +434723 +434724 +434725 +434726 +434727 +434752 +434753 +434754 +434755 +434756 +434757 +434758 +434759 +434784 +434785 +434786 +434787 +434788 +434789 +434790 +434791 +434816 +434817 +434818 +434819 +434820 +434821 +434822 +434823 +434848 +434849 +434850 +434851 +434852 +434853 +434854 +434855 +434880 +434881 +434882 +434883 +434884 +434885 +434886 +434887 +434912 +434913 +434914 +434915 +434916 +434917 +434918 +434919 +434944 +434945 +434946 +434947 +434948 +434949 +434950 +434951 +434976 +434977 +434978 +434979 +434980 +434981 +434982 +434983 +435008 +435009 +435010 +435011 +435012 +435013 +435014 +435015 +435040 +435041 +435042 +435043 +435044 +435045 +435046 +435047 +435072 +435073 +435074 +435075 +435076 +435077 +435078 +435079 +435104 +435105 +435106 +435107 +435108 +435109 +435110 +435111 +435136 +435137 +435138 +435139 +435140 +435141 +435142 +435143 +435168 +435169 +435170 +435171 +435172 +435173 +435174 +435175 +435200 +435201 +435202 +435203 +435204 +435205 +435206 +435207 +435232 +435233 +435234 +435235 +435236 +435237 +435238 +435239 +435264 +435265 +435266 +435267 +435268 +435269 +435270 +435271 +435296 +435297 +435298 +435299 +435300 +435301 +435302 +435303 +435328 +435329 +435330 +435331 +435332 +435333 +435334 +435335 +435360 +435361 +435362 +435363 +435364 +435365 +435366 +435367 +435392 +435393 +435394 +435395 +435396 +435397 +435398 +435399 +435424 +435425 +435426 +435427 +435428 +435429 +435430 +435431 +435456 +435457 +435458 +435459 +435460 +435461 +435462 +435463 +435488 +435489 +435490 +435491 +435492 +435493 +435494 +435495 +435520 +435521 +435522 +435523 +435524 +435525 +435526 +435527 +435552 +435553 +435554 +435555 +435556 +435557 +435558 +435559 +435584 +435585 +435586 +435587 +435588 +435589 +435590 +435591 +435616 +435617 +435618 +435619 +435620 +435621 +435622 +435623 +435648 +435649 +435650 +435651 +435652 +435653 +435654 +435655 +435680 +435681 +435682 +435683 +435684 +435685 +435686 +435687 +435712 +435713 +435714 +435715 +435716 +435717 +435718 +435719 +435744 +435745 +435746 +435747 +435748 +435749 +435750 +435751 +435776 +435777 +435778 +435779 +435780 +435781 +435782 +435783 +435808 +435809 +435810 +435811 +435812 +435813 +435814 +435815 +435840 +435841 +435842 +435843 +435844 +435845 +435846 +435847 +435872 +435873 +435874 +435875 +435876 +435877 +435878 +435879 +435904 +435905 +435906 +435907 +435908 +435909 +435910 +435911 +435936 +435937 +435938 +435939 +435940 +435941 +435942 +435943 +435968 +435969 +435970 +435971 +435972 +435973 +435974 +435975 +436000 +436001 +436002 +436003 +436004 +436005 +436006 +436007 +436032 +436033 +436034 +436035 +436036 +436037 +436038 +436039 +436064 +436065 +436066 +436067 +436068 +436069 +436070 +436071 +436096 +436097 +436098 +436099 +436100 +436101 +436102 +436103 +436128 +436129 +436130 +436131 +436132 +436133 +436134 +436135 +436160 +436161 +436162 +436163 +436164 +436165 +436166 +436167 +436192 +436193 +436194 +436195 +436196 +436197 +436198 +436199 +436224 +436225 +436226 +436227 +436228 +436229 +436230 +436231 +436256 +436257 +436258 +436259 +436260 +436261 +436262 +436263 +436288 +436289 +436290 +436291 +436292 +436293 +436294 +436295 +436320 +436321 +436322 +436323 +436324 +436325 +436326 +436327 +436352 +436353 +436354 +436355 +436356 +436357 +436358 +436359 +436384 +436385 +436386 +436387 +436388 +436389 +436390 +436391 +436416 +436417 +436418 +436419 +436420 +436421 +436422 +436423 +436448 +436449 +436450 +436451 +436452 +436453 +436454 +436455 +436480 +436481 +436482 +436483 +436484 +436485 +436486 +436487 +436512 +436513 +436514 +436515 +436516 +436517 +436518 +436519 +436544 +436545 +436546 +436547 +436548 +436549 +436550 +436551 +436576 +436577 +436578 +436579 +436580 +436581 +436582 +436583 +436608 +436609 +436610 +436611 +436612 +436613 +436614 +436615 +436640 +436641 +436642 +436643 +436644 +436645 +436646 +436647 +436672 +436673 +436674 +436675 +436676 +436677 +436678 +436679 +436704 +436705 +436706 +436707 +436708 +436709 +436710 +436711 +436736 +436737 +436738 +436739 +436740 +436741 +436742 +436743 +436768 +436769 +436770 +436771 +436772 +436773 +436774 +436775 +436800 +436801 +436802 +436803 +436804 +436805 +436806 +436807 +436832 +436833 +436834 +436835 +436836 +436837 +436838 +436839 +436864 +436865 +436866 +436867 +436868 +436869 +436870 +436871 +436896 +436897 +436898 +436899 +436900 +436901 +436902 +436903 +436928 +436929 +436930 +436931 +436932 +436933 +436934 +436935 +436960 +436961 +436962 +436963 +436964 +436965 +436966 +436967 +436992 +436993 +436994 +436995 +436996 +436997 +436998 +436999 +437024 +437025 +437026 +437027 +437028 +437029 +437030 +437031 +437056 +437057 +437058 +437059 +437060 +437061 +437062 +437063 +437088 +437089 +437090 +437091 +437092 +437093 +437094 +437095 +437120 +437121 +437122 +437123 +437124 +437125 +437126 +437127 +437152 +437153 +437154 +437155 +437156 +437157 +437158 +437159 +437184 +437185 +437186 +437187 +437188 +437189 +437190 +437191 +437216 +437217 +437218 +437219 +437220 +437221 +437222 +437223 +437248 +437249 +437250 +437251 +437252 +437253 +437254 +437255 +437280 +437281 +437282 +437283 +437284 +437285 +437286 +437287 +437312 +437313 +437314 +437315 +437316 +437317 +437318 +437319 +437344 +437345 +437346 +437347 +437348 +437349 +437350 +437351 +437376 +437377 +437378 +437379 +437380 +437381 +437382 +437383 +437408 +437409 +437410 +437411 +437412 +437413 +437414 +437415 +437440 +437441 +437442 +437443 +437444 +437445 +437446 +437447 +437472 +437473 +437474 +437475 +437476 +437477 +437478 +437479 +437504 +437505 +437506 +437507 +437508 +437509 +437510 +437511 +437536 +437537 +437538 +437539 +437540 +437541 +437542 +437543 +437568 +437569 +437570 +437571 +437572 +437573 +437574 +437575 +437600 +437601 +437602 +437603 +437604 +437605 +437606 +437607 +437632 +437633 +437634 +437635 +437636 +437637 +437638 +437639 +437664 +437665 +437666 +437667 +437668 +437669 +437670 +437671 +437696 +437697 +437698 +437699 +437700 +437701 +437702 +437703 +437728 +437729 +437730 +437731 +437732 +437733 +437734 +437735 +437760 +437761 +437762 +437763 +437764 +437765 +437766 +437767 +437792 +437793 +437794 +437795 +437796 +437797 +437798 +437799 +437824 +437825 +437826 +437827 +437828 +437829 +437830 +437831 +437856 +437857 +437858 +437859 +437860 +437861 +437862 +437863 +437888 +437889 +437890 +437891 +437892 +437893 +437894 +437895 +437920 +437921 +437922 +437923 +437924 +437925 +437926 +437927 +437952 +437953 +437954 +437955 +437956 +437957 +437958 +437959 +437984 +437985 +437986 +437987 +437988 +437989 +437990 +437991 +438016 +438017 +438018 +438019 +438020 +438021 +438022 +438023 +438048 +438049 +438050 +438051 +438052 +438053 +438054 +438055 +438080 +438081 +438082 +438083 +438084 +438085 +438086 +438087 +438112 +438113 +438114 +438115 +438116 +438117 +438118 +438119 +438144 +438145 +438146 +438147 +438148 +438149 +438150 +438151 +438176 +438177 +438178 +438179 +438180 +438181 +438182 +438183 +438208 +438209 +438210 +438211 +438212 +438213 +438214 +438215 +438240 +438241 +438242 +438243 +438244 +438245 +438246 +438247 +438272 +438273 +438274 +438275 +438276 +438277 +438278 +438279 +438304 +438305 +438306 +438307 +438308 +438309 +438310 +438311 +438336 +438337 +438338 +438339 +438340 +438341 +438342 +438343 +438368 +438369 +438370 +438371 +438372 +438373 +438374 +438375 +438400 +438401 +438402 +438403 +438404 +438405 +438406 +438407 +438432 +438433 +438434 +438435 +438436 +438437 +438438 +438439 +438464 +438465 +438466 +438467 +438468 +438469 +438470 +438471 +438496 +438497 +438498 +438499 +438500 +438501 +438502 +438503 +438528 +438529 +438530 +438531 +438532 +438533 +438534 +438535 +438560 +438561 +438562 +438563 +438564 +438565 +438566 +438567 +438592 +438593 +438594 +438595 +438596 +438597 +438598 +438599 +438624 +438625 +438626 +438627 +438628 +438629 +438630 +438631 +438656 +438657 +438658 +438659 +438660 +438661 +438662 +438663 +438688 +438689 +438690 +438691 +438692 +438693 +438694 +438695 +438720 +438721 +438722 +438723 +438724 +438725 +438726 +438727 +438752 +438753 +438754 +438755 +438756 +438757 +438758 +438759 +438784 +438785 +438786 +438787 +438788 +438789 +438790 +438791 +438816 +438817 +438818 +438819 +438820 +438821 +438822 +438823 +438848 +438849 +438850 +438851 +438852 +438853 +438854 +438855 +438880 +438881 +438882 +438883 +438884 +438885 +438886 +438887 +438912 +438913 +438914 +438915 +438916 +438917 +438918 +438919 +438944 +438945 +438946 +438947 +438948 +438949 +438950 +438951 +438976 +438977 +438978 +438979 +438980 +438981 +438982 +438983 +439008 +439009 +439010 +439011 +439012 +439013 +439014 +439015 +439040 +439041 +439042 +439043 +439044 +439045 +439046 +439047 +439072 +439073 +439074 +439075 +439076 +439077 +439078 +439079 +439104 +439105 +439106 +439107 +439108 +439109 +439110 +439111 +439136 +439137 +439138 +439139 +439140 +439141 +439142 +439143 +439168 +439169 +439170 +439171 +439172 +439173 +439174 +439175 +439200 +439201 +439202 +439203 +439204 +439205 +439206 +439207 +439232 +439233 +439234 +439235 +439236 +439237 +439238 +439239 +439264 +439265 +439266 +439267 +439268 +439269 +439270 +439271 +439296 +439297 +439298 +439299 +439300 +439301 +439302 +439303 +439328 +439329 +439330 +439331 +439332 +439333 +439334 +439335 +439360 +439361 +439362 +439363 +439364 +439365 +439366 +439367 +439392 +439393 +439394 +439395 +439396 +439397 +439398 +439399 +439424 +439425 +439426 +439427 +439428 +439429 +439430 +439431 +439456 +439457 +439458 +439459 +439460 +439461 +439462 +439463 +439488 +439489 +439490 +439491 +439492 +439493 +439494 +439495 +439520 +439521 +439522 +439523 +439524 +439525 +439526 +439527 +439552 +439553 +439554 +439555 +439556 +439557 +439558 +439559 +439584 +439585 +439586 +439587 +439588 +439589 +439590 +439591 +439616 +439617 +439618 +439619 +439620 +439621 +439622 +439623 +439648 +439649 +439650 +439651 +439652 +439653 +439654 +439655 +439680 +439681 +439682 +439683 +439684 +439685 +439686 +439687 +439712 +439713 +439714 +439715 +439716 +439717 +439718 +439719 +439744 +439745 +439746 +439747 +439748 +439749 +439750 +439751 +439776 +439777 +439778 +439779 +439780 +439781 +439782 +439783 +439808 +439809 +439810 +439811 +439812 +439813 +439814 +439815 +439840 +439841 +439842 +439843 +439844 +439845 +439846 +439847 +439872 +439873 +439874 +439875 +439876 +439877 +439878 +439879 +439904 +439905 +439906 +439907 +439908 +439909 +439910 +439911 +439936 +439937 +439938 +439939 +439940 +439941 +439942 +439943 +439968 +439969 +439970 +439971 +439972 +439973 +439974 +439975 +440000 +440001 +440002 +440003 +440004 +440005 +440006 +440007 +440032 +440033 +440034 +440035 +440036 +440037 +440038 +440039 +440064 +440065 +440066 +440067 +440068 +440069 +440070 +440071 +440096 +440097 +440098 +440099 +440100 +440101 +440102 +440103 +440128 +440129 +440130 +440131 +440132 +440133 +440134 +440135 +440160 +440161 +440162 +440163 +440164 +440165 +440166 +440167 +440192 +440193 +440194 +440195 +440196 +440197 +440198 +440199 +440224 +440225 +440226 +440227 +440228 +440229 +440230 +440231 +440256 +440257 +440258 +440259 +440260 +440261 +440262 +440263 +440288 +440289 +440290 +440291 +440292 +440293 +440294 +440295 +440320 +440321 +440322 +440323 +440324 +440325 +440326 +440327 +440352 +440353 +440354 +440355 +440356 +440357 +440358 +440359 +440384 +440385 +440386 +440387 +440388 +440389 +440390 +440391 +440416 +440417 +440418 +440419 +440420 +440421 +440422 +440423 +440448 +440449 +440450 +440451 +440452 +440453 +440454 +440455 +440480 +440481 +440482 +440483 +440484 +440485 +440486 +440487 +440512 +440513 +440514 +440515 +440516 +440517 +440518 +440519 +440544 +440545 +440546 +440547 +440548 +440549 +440550 +440551 +440576 +440577 +440578 +440579 +440580 +440581 +440582 +440583 +440608 +440609 +440610 +440611 +440612 +440613 +440614 +440615 +440640 +440641 +440642 +440643 +440644 +440645 +440646 +440647 +440672 +440673 +440674 +440675 +440676 +440677 +440678 +440679 +440704 +440705 +440706 +440707 +440708 +440709 +440710 +440711 +440736 +440737 +440738 +440739 +440740 +440741 +440742 +440743 +440768 +440769 +440770 +440771 +440772 +440773 +440774 +440775 +440800 +440801 +440802 +440803 +440804 +440805 +440806 +440807 +440832 +440833 +440834 +440835 +440836 +440837 +440838 +440839 +440864 +440865 +440866 +440867 +440868 +440869 +440870 +440871 +440896 +440897 +440898 +440899 +440900 +440901 +440902 +440903 +440928 +440929 +440930 +440931 +440932 +440933 +440934 +440935 +440960 +440961 +440962 +440963 +440964 +440965 +440966 +440967 +440992 +440993 +440994 +440995 +440996 +440997 +440998 +440999 +441024 +441025 +441026 +441027 +441028 +441029 +441030 +441031 +441056 +441057 +441058 +441059 +441060 +441061 +441062 +441063 +441088 +441089 +441090 +441091 +441092 +441093 +441094 +441095 +441120 +441121 +441122 +441123 +441124 +441125 +441126 +441127 +441152 +441153 +441154 +441155 +441156 +441157 +441158 +441159 +441184 +441185 +441186 +441187 +441188 +441189 +441190 +441191 +441216 +441217 +441218 +441219 +441220 +441221 +441222 +441223 +441248 +441249 +441250 +441251 +441252 +441253 +441254 +441255 +441280 +441281 +441282 +441283 +441284 +441285 +441286 +441287 +441312 +441313 +441314 +441315 +441316 +441317 +441318 +441319 +441344 +441345 +441346 +441347 +441348 +441349 +441350 +441351 +441376 +441377 +441378 +441379 +441380 +441381 +441382 +441383 +441408 +441409 +441410 +441411 +441412 +441413 +441414 +441415 +441440 +441441 +441442 +441443 +441444 +441445 +441446 +441447 +441472 +441473 +441474 +441475 +441476 +441477 +441478 +441479 +441504 +441505 +441506 +441507 +441508 +441509 +441510 +441511 +441536 +441537 +441538 +441539 +441540 +441541 +441542 +441543 +441568 +441569 +441570 +441571 +441572 +441573 +441574 +441575 +441600 +441601 +441602 +441603 +441604 +441605 +441606 +441607 +441632 +441633 +441634 +441635 +441636 +441637 +441638 +441639 +441664 +441665 +441666 +441667 +441668 +441669 +441670 +441671 +441696 +441697 +441698 +441699 +441700 +441701 +441702 +441703 +441728 +441729 +441730 +441731 +441732 +441733 +441734 +441735 +441760 +441761 +441762 +441763 +441764 +441765 +441766 +441767 +441792 +441793 +441794 +441795 +441796 +441797 +441798 +441799 +441824 +441825 +441826 +441827 +441828 +441829 +441830 +441831 +441856 +441857 +441858 +441859 +441860 +441861 +441862 +441863 +441888 +441889 +441890 +441891 +441892 +441893 +441894 +441895 +441920 +441921 +441922 +441923 +441924 +441925 +441926 +441927 +441952 +441953 +441954 +441955 +441956 +441957 +441958 +441959 +441984 +441985 +441986 +441987 +441988 +441989 +441990 +441991 +442016 +442017 +442018 +442019 +442020 +442021 +442022 +442023 +442048 +442049 +442050 +442051 +442052 +442053 +442054 +442055 +442080 +442081 +442082 +442083 +442084 +442085 +442086 +442087 +442112 +442113 +442114 +442115 +442116 +442117 +442118 +442119 +442144 +442145 +442146 +442147 +442148 +442149 +442150 +442151 +442176 +442177 +442178 +442179 +442180 +442181 +442182 +442183 +442208 +442209 +442210 +442211 +442212 +442213 +442214 +442215 +442240 +442241 +442242 +442243 +442244 +442245 +442246 +442247 +442272 +442273 +442274 +442275 +442276 +442277 +442278 +442279 +442304 +442305 +442306 +442307 +442308 +442309 +442310 +442311 +442336 +442337 +442338 +442339 +442340 +442341 +442342 +442343 +442368 +442369 +442370 +442371 +442372 +442373 +442374 +442375 +442400 +442401 +442402 +442403 +442404 +442405 +442406 +442407 +442432 +442433 +442434 +442435 +442436 +442437 +442438 +442439 +442464 +442465 +442466 +442467 +442468 +442469 +442470 +442471 +442496 +442497 +442498 +442499 +442500 +442501 +442502 +442503 +442528 +442529 +442530 +442531 +442532 +442533 +442534 +442535 +442560 +442561 +442562 +442563 +442564 +442565 +442566 +442567 +442592 +442593 +442594 +442595 +442596 +442597 +442598 +442599 +442624 +442625 +442626 +442627 +442628 +442629 +442630 +442631 +442656 +442657 +442658 +442659 +442660 +442661 +442662 +442663 +442688 +442689 +442690 +442691 +442692 +442693 +442694 +442695 +442720 +442721 +442722 +442723 +442724 +442725 +442726 +442727 +442752 +442753 +442754 +442755 +442756 +442757 +442758 +442759 +442784 +442785 +442786 +442787 +442788 +442789 +442790 +442791 +442816 +442817 +442818 +442819 +442820 +442821 +442822 +442823 +442848 +442849 +442850 +442851 +442852 +442853 +442854 +442855 +442880 +442881 +442882 +442883 +442884 +442885 +442886 +442887 +442912 +442913 +442914 +442915 +442916 +442917 +442918 +442919 +442944 +442945 +442946 +442947 +442948 +442949 +442950 +442951 +442976 +442977 +442978 +442979 +442980 +442981 +442982 +442983 +443008 +443009 +443010 +443011 +443012 +443013 +443014 +443015 +443040 +443041 +443042 +443043 +443044 +443045 +443046 +443047 +443072 +443073 +443074 +443075 +443076 +443077 +443078 +443079 +443104 +443105 +443106 +443107 +443108 +443109 +443110 +443111 +443136 +443137 +443138 +443139 +443140 +443141 +443142 +443143 +443168 +443169 +443170 +443171 +443172 +443173 +443174 +443175 +443200 +443201 +443202 +443203 +443204 +443205 +443206 +443207 +443232 +443233 +443234 +443235 +443236 +443237 +443238 +443239 +443264 +443265 +443266 +443267 +443268 +443269 +443270 +443271 +443296 +443297 +443298 +443299 +443300 +443301 +443302 +443303 +443328 +443329 +443330 +443331 +443332 +443333 +443334 +443335 +443360 +443361 +443362 +443363 +443364 +443365 +443366 +443367 +443392 +443393 +443394 +443395 +443396 +443397 +443398 +443399 +443424 +443425 +443426 +443427 +443428 +443429 +443430 +443431 +443456 +443457 +443458 +443459 +443460 +443461 +443462 +443463 +443488 +443489 +443490 +443491 +443492 +443493 +443494 +443495 +443520 +443521 +443522 +443523 +443524 +443525 +443526 +443527 +443552 +443553 +443554 +443555 +443556 +443557 +443558 +443559 +443584 +443585 +443586 +443587 +443588 +443589 +443590 +443591 +443616 +443617 +443618 +443619 +443620 +443621 +443622 +443623 +443648 +443649 +443650 +443651 +443652 +443653 +443654 +443655 +443680 +443681 +443682 +443683 +443684 +443685 +443686 +443687 +443712 +443713 +443714 +443715 +443716 +443717 +443718 +443719 +443744 +443745 +443746 +443747 +443748 +443749 +443750 +443751 +443776 +443777 +443778 +443779 +443780 +443781 +443782 +443783 +443808 +443809 +443810 +443811 +443812 +443813 +443814 +443815 +443840 +443841 +443842 +443843 +443844 +443845 +443846 +443847 +443872 +443873 +443874 +443875 +443876 +443877 +443878 +443879 +443904 +443905 +443906 +443907 +443908 +443909 +443910 +443911 +443936 +443937 +443938 +443939 +443940 +443941 +443942 +443943 +443968 +443969 +443970 +443971 +443972 +443973 +443974 +443975 +444000 +444001 +444002 +444003 +444004 +444005 +444006 +444007 +444032 +444033 +444034 +444035 +444036 +444037 +444038 +444039 +444064 +444065 +444066 +444067 +444068 +444069 +444070 +444071 +444096 +444097 +444098 +444099 +444100 +444101 +444102 +444103 +444128 +444129 +444130 +444131 +444132 +444133 +444134 +444135 +444160 +444161 +444162 +444163 +444164 +444165 +444166 +444167 +444192 +444193 +444194 +444195 +444196 +444197 +444198 +444199 +444224 +444225 +444226 +444227 +444228 +444229 +444230 +444231 +444256 +444257 +444258 +444259 +444260 +444261 +444262 +444263 +444288 +444289 +444290 +444291 +444292 +444293 +444294 +444295 +444320 +444321 +444322 +444323 +444324 +444325 +444326 +444327 +444352 +444353 +444354 +444355 +444356 +444357 +444358 +444359 +444384 +444385 +444386 +444387 +444388 +444389 +444390 +444391 +444416 +444417 +444418 +444419 +444420 +444421 +444422 +444423 +444448 +444449 +444450 +444451 +444452 +444453 +444454 +444455 +444480 +444481 +444482 +444483 +444484 +444485 +444486 +444487 +444512 +444513 +444514 +444515 +444516 +444517 +444518 +444519 +444544 +444545 +444546 +444547 +444548 +444549 +444550 +444551 +444576 +444577 +444578 +444579 +444580 +444581 +444582 +444583 +444608 +444609 +444610 +444611 +444612 +444613 +444614 +444615 +444640 +444641 +444642 +444643 +444644 +444645 +444646 +444647 +444672 +444673 +444674 +444675 +444676 +444677 +444678 +444679 +444704 +444705 +444706 +444707 +444708 +444709 +444710 +444711 +444736 +444737 +444738 +444739 +444740 +444741 +444742 +444743 +444768 +444769 +444770 +444771 +444772 +444773 +444774 +444775 +444800 +444801 +444802 +444803 +444804 +444805 +444806 +444807 +444832 +444833 +444834 +444835 +444836 +444837 +444838 +444839 +444864 +444865 +444866 +444867 +444868 +444869 +444870 +444871 +444896 +444897 +444898 +444899 +444900 +444901 +444902 +444903 +444928 +444929 +444930 +444931 +444932 +444933 +444934 +444935 +444960 +444961 +444962 +444963 +444964 +444965 +444966 +444967 +444992 +444993 +444994 +444995 +444996 +444997 +444998 +444999 +445024 +445025 +445026 +445027 +445028 +445029 +445030 +445031 +445056 +445057 +445058 +445059 +445060 +445061 +445062 +445063 +445088 +445089 +445090 +445091 +445092 +445093 +445094 +445095 +445120 +445121 +445122 +445123 +445124 +445125 +445126 +445127 +445152 +445153 +445154 +445155 +445156 +445157 +445158 +445159 +445184 +445185 +445186 +445187 +445188 +445189 +445190 +445191 +445216 +445217 +445218 +445219 +445220 +445221 +445222 +445223 +445248 +445249 +445250 +445251 +445252 +445253 +445254 +445255 +445280 +445281 +445282 +445283 +445284 +445285 +445286 +445287 +445312 +445313 +445314 +445315 +445316 +445317 +445318 +445319 +445344 +445345 +445346 +445347 +445348 +445349 +445350 +445351 +445376 +445377 +445378 +445379 +445380 +445381 +445382 +445383 +445408 +445409 +445410 +445411 +445412 +445413 +445414 +445415 +445440 +445441 +445442 +445443 +445444 +445445 +445446 +445447 +445472 +445473 +445474 +445475 +445476 +445477 +445478 +445479 +445504 +445505 +445506 +445507 +445508 +445509 +445510 +445511 +445536 +445537 +445538 +445539 +445540 +445541 +445542 +445543 +445568 +445569 +445570 +445571 +445572 +445573 +445574 +445575 +445600 +445601 +445602 +445603 +445604 +445605 +445606 +445607 +445632 +445633 +445634 +445635 +445636 +445637 +445638 +445639 +445664 +445665 +445666 +445667 +445668 +445669 +445670 +445671 +445696 +445697 +445698 +445699 +445700 +445701 +445702 +445703 +445728 +445729 +445730 +445731 +445732 +445733 +445734 +445735 +445760 +445761 +445762 +445763 +445764 +445765 +445766 +445767 +445792 +445793 +445794 +445795 +445796 +445797 +445798 +445799 +445824 +445825 +445826 +445827 +445828 +445829 +445830 +445831 +445856 +445857 +445858 +445859 +445860 +445861 +445862 +445863 +445888 +445889 +445890 +445891 +445892 +445893 +445894 +445895 +445920 +445921 +445922 +445923 +445924 +445925 +445926 +445927 +445952 +445953 +445954 +445955 +445956 +445957 +445958 +445959 +445984 +445985 +445986 +445987 +445988 +445989 +445990 +445991 +446016 +446017 +446018 +446019 +446020 +446021 +446022 +446023 +446048 +446049 +446050 +446051 +446052 +446053 +446054 +446055 +446080 +446081 +446082 +446083 +446084 +446085 +446086 +446087 +446112 +446113 +446114 +446115 +446116 +446117 +446118 +446119 +446144 +446145 +446146 +446147 +446148 +446149 +446150 +446151 +446176 +446177 +446178 +446179 +446180 +446181 +446182 +446183 +446208 +446209 +446210 +446211 +446212 +446213 +446214 +446215 +446240 +446241 +446242 +446243 +446244 +446245 +446246 +446247 +446272 +446273 +446274 +446275 +446276 +446277 +446278 +446279 +446304 +446305 +446306 +446307 +446308 +446309 +446310 +446311 +446336 +446337 +446338 +446339 +446340 +446341 +446342 +446343 +446368 +446369 +446370 +446371 +446372 +446373 +446374 +446375 +446400 +446401 +446402 +446403 +446404 +446405 +446406 +446407 +446432 +446433 +446434 +446435 +446436 +446437 +446438 +446439 +446464 +446465 +446466 +446467 +446468 +446469 +446470 +446471 +446496 +446497 +446498 +446499 +446500 +446501 +446502 +446503 +446528 +446529 +446530 +446531 +446532 +446533 +446534 +446535 +446560 +446561 +446562 +446563 +446564 +446565 +446566 +446567 +446592 +446593 +446594 +446595 +446596 +446597 +446598 +446599 +446624 +446625 +446626 +446627 +446628 +446629 +446630 +446631 +446656 +446657 +446658 +446659 +446660 +446661 +446662 +446663 +446688 +446689 +446690 +446691 +446692 +446693 +446694 +446695 +446720 +446721 +446722 +446723 +446724 +446725 +446726 +446727 +446752 +446753 +446754 +446755 +446756 +446757 +446758 +446759 +446784 +446785 +446786 +446787 +446788 +446789 +446790 +446791 +446816 +446817 +446818 +446819 +446820 +446821 +446822 +446823 +446848 +446849 +446850 +446851 +446852 +446853 +446854 +446855 +446880 +446881 +446882 +446883 +446884 +446885 +446886 +446887 +446912 +446913 +446914 +446915 +446916 +446917 +446918 +446919 +446944 +446945 +446946 +446947 +446948 +446949 +446950 +446951 +446976 +446977 +446978 +446979 +446980 +446981 +446982 +446983 +447008 +447009 +447010 +447011 +447012 +447013 +447014 +447015 +447040 +447041 +447042 +447043 +447044 +447045 +447046 +447047 +447072 +447073 +447074 +447075 +447076 +447077 +447078 +447079 +447104 +447105 +447106 +447107 +447108 +447109 +447110 +447111 +447136 +447137 +447138 +447139 +447140 +447141 +447142 +447143 +447168 +447169 +447170 +447171 +447172 +447173 +447174 +447175 +447200 +447201 +447202 +447203 +447204 +447205 +447206 +447207 +447232 +447233 +447234 +447235 +447236 +447237 +447238 +447239 +447264 +447265 +447266 +447267 +447268 +447269 +447270 +447271 +447296 +447297 +447298 +447299 +447300 +447301 +447302 +447303 +447328 +447329 +447330 +447331 +447332 +447333 +447334 +447335 +447360 +447361 +447362 +447363 +447364 +447365 +447366 +447367 +447392 +447393 +447394 +447395 +447396 +447397 +447398 +447399 +447424 +447425 +447426 +447427 +447428 +447429 +447430 +447431 +447456 +447457 +447458 +447459 +447460 +447461 +447462 +447463 +447488 +447489 +447490 +447491 +447492 +447493 +447494 +447495 +447520 +447521 +447522 +447523 +447524 +447525 +447526 +447527 +447552 +447553 +447554 +447555 +447556 +447557 +447558 +447559 +447584 +447585 +447586 +447587 +447588 +447589 +447590 +447591 +447616 +447617 +447618 +447619 +447620 +447621 +447622 +447623 +447648 +447649 +447650 +447651 +447652 +447653 +447654 +447655 +447680 +447681 +447682 +447683 +447684 +447685 +447686 +447687 +447712 +447713 +447714 +447715 +447716 +447717 +447718 +447719 +447744 +447745 +447746 +447747 +447748 +447749 +447750 +447751 +447776 +447777 +447778 +447779 +447780 +447781 +447782 +447783 +447808 +447809 +447810 +447811 +447812 +447813 +447814 +447815 +447840 +447841 +447842 +447843 +447844 +447845 +447846 +447847 +447872 +447873 +447874 +447875 +447876 +447877 +447878 +447879 +447904 +447905 +447906 +447907 +447908 +447909 +447910 +447911 +447936 +447937 +447938 +447939 +447940 +447941 +447942 +447943 +447968 +447969 +447970 +447971 +447972 +447973 +447974 +447975 +448000 +448001 +448002 +448003 +448004 +448005 +448006 +448007 +448032 +448033 +448034 +448035 +448036 +448037 +448038 +448039 +448064 +448065 +448066 +448067 +448068 +448069 +448070 +448071 +448096 +448097 +448098 +448099 +448100 +448101 +448102 +448103 +448128 +448129 +448130 +448131 +448132 +448133 +448134 +448135 +448160 +448161 +448162 +448163 +448164 +448165 +448166 +448167 +448192 +448193 +448194 +448195 +448196 +448197 +448198 +448199 +448224 +448225 +448226 +448227 +448228 +448229 +448230 +448231 +448256 +448257 +448258 +448259 +448260 +448261 +448262 +448263 +448288 +448289 +448290 +448291 +448292 +448293 +448294 +448295 +448320 +448321 +448322 +448323 +448324 +448325 +448326 +448327 +448352 +448353 +448354 +448355 +448356 +448357 +448358 +448359 +448384 +448385 +448386 +448387 +448388 +448389 +448390 +448391 +448416 +448417 +448418 +448419 +448420 +448421 +448422 +448423 +448448 +448449 +448450 +448451 +448452 +448453 +448454 +448455 +448480 +448481 +448482 +448483 +448484 +448485 +448486 +448487 +448512 +448513 +448514 +448515 +448516 +448517 +448518 +448519 +448544 +448545 +448546 +448547 +448548 +448549 +448550 +448551 +448576 +448577 +448578 +448579 +448580 +448581 +448582 +448583 +448608 +448609 +448610 +448611 +448612 +448613 +448614 +448615 +448640 +448641 +448642 +448643 +448644 +448645 +448646 +448647 +448672 +448673 +448674 +448675 +448676 +448677 +448678 +448679 +448704 +448705 +448706 +448707 +448708 +448709 +448710 +448711 +448736 +448737 +448738 +448739 +448740 +448741 +448742 +448743 +448768 +448769 +448770 +448771 +448772 +448773 +448774 +448775 +448800 +448801 +448802 +448803 +448804 +448805 +448806 +448807 +448832 +448833 +448834 +448835 +448836 +448837 +448838 +448839 +448864 +448865 +448866 +448867 +448868 +448869 +448870 +448871 +448896 +448897 +448898 +448899 +448900 +448901 +448902 +448903 +448928 +448929 +448930 +448931 +448932 +448933 +448934 +448935 +448960 +448961 +448962 +448963 +448964 +448965 +448966 +448967 +448992 +448993 +448994 +448995 +448996 +448997 +448998 +448999 +449024 +449025 +449026 +449027 +449028 +449029 +449030 +449031 +449056 +449057 +449058 +449059 +449060 +449061 +449062 +449063 +449088 +449089 +449090 +449091 +449092 +449093 +449094 +449095 +449120 +449121 +449122 +449123 +449124 +449125 +449126 +449127 +449152 +449153 +449154 +449155 +449156 +449157 +449158 +449159 +449184 +449185 +449186 +449187 +449188 +449189 +449190 +449191 +449216 +449217 +449218 +449219 +449220 +449221 +449222 +449223 +449248 +449249 +449250 +449251 +449252 +449253 +449254 +449255 +449280 +449281 +449282 +449283 +449284 +449285 +449286 +449287 +449312 +449313 +449314 +449315 +449316 +449317 +449318 +449319 +449344 +449345 +449346 +449347 +449348 +449349 +449350 +449351 +449376 +449377 +449378 +449379 +449380 +449381 +449382 +449383 +449408 +449409 +449410 +449411 +449412 +449413 +449414 +449415 +449440 +449441 +449442 +449443 +449444 +449445 +449446 +449447 +449472 +449473 +449474 +449475 +449476 +449477 +449478 +449479 +449504 +449505 +449506 +449507 +449508 +449509 +449510 +449511 +449536 +449537 +449538 +449539 +449540 +449541 +449542 +449543 +449568 +449569 +449570 +449571 +449572 +449573 +449574 +449575 +449600 +449601 +449602 +449603 +449604 +449605 +449606 +449607 +449632 +449633 +449634 +449635 +449636 +449637 +449638 +449639 +449664 +449665 +449666 +449667 +449668 +449669 +449670 +449671 +449696 +449697 +449698 +449699 +449700 +449701 +449702 +449703 +449728 +449729 +449730 +449731 +449732 +449733 +449734 +449735 +449760 +449761 +449762 +449763 +449764 +449765 +449766 +449767 +449792 +449793 +449794 +449795 +449796 +449797 +449798 +449799 +449824 +449825 +449826 +449827 +449828 +449829 +449830 +449831 +449856 +449857 +449858 +449859 +449860 +449861 +449862 +449863 +449888 +449889 +449890 +449891 +449892 +449893 +449894 +449895 +449920 +449921 +449922 +449923 +449924 +449925 +449926 +449927 +449952 +449953 +449954 +449955 +449956 +449957 +449958 +449959 +449984 +449985 +449986 +449987 +449988 +449989 +449990 +449991 +450016 +450017 +450018 +450019 +450020 +450021 +450022 +450023 +450048 +450049 +450050 +450051 +450052 +450053 +450054 +450055 +450080 +450081 +450082 +450083 +450084 +450085 +450086 +450087 +450112 +450113 +450114 +450115 +450116 +450117 +450118 +450119 +450144 +450145 +450146 +450147 +450148 +450149 +450150 +450151 +450176 +450177 +450178 +450179 +450180 +450181 +450182 +450183 +450208 +450209 +450210 +450211 +450212 +450213 +450214 +450215 +450240 +450241 +450242 +450243 +450244 +450245 +450246 +450247 +450272 +450273 +450274 +450275 +450276 +450277 +450278 +450279 +450304 +450305 +450306 +450307 +450308 +450309 +450310 +450311 +450336 +450337 +450338 +450339 +450340 +450341 +450342 +450343 +450368 +450369 +450370 +450371 +450372 +450373 +450374 +450375 +450400 +450401 +450402 +450403 +450404 +450405 +450406 +450407 +450432 +450433 +450434 +450435 +450436 +450437 +450438 +450439 +450464 +450465 +450466 +450467 +450468 +450469 +450470 +450471 +450496 +450497 +450498 +450499 +450500 +450501 +450502 +450503 +450528 +450529 +450530 +450531 +450532 +450533 +450534 +450535 +450560 +450561 +450562 +450563 +450564 +450565 +450566 +450567 +450592 +450593 +450594 +450595 +450596 +450597 +450598 +450599 +450624 +450625 +450626 +450627 +450628 +450629 +450630 +450631 +450656 +450657 +450658 +450659 +450660 +450661 +450662 +450663 +450688 +450689 +450690 +450691 +450692 +450693 +450694 +450695 +450720 +450721 +450722 +450723 +450724 +450725 +450726 +450727 +450752 +450753 +450754 +450755 +450756 +450757 +450758 +450759 +450784 +450785 +450786 +450787 +450788 +450789 +450790 +450791 +450816 +450817 +450818 +450819 +450820 +450821 +450822 +450823 +450848 +450849 +450850 +450851 +450852 +450853 +450854 +450855 +450880 +450881 +450882 +450883 +450884 +450885 +450886 +450887 +450912 +450913 +450914 +450915 +450916 +450917 +450918 +450919 +450944 +450945 +450946 +450947 +450948 +450949 +450950 +450951 +450976 +450977 +450978 +450979 +450980 +450981 +450982 +450983 +451008 +451009 +451010 +451011 +451012 +451013 +451014 +451015 +451040 +451041 +451042 +451043 +451044 +451045 +451046 +451047 +451072 +451073 +451074 +451075 +451076 +451077 +451078 +451079 +451104 +451105 +451106 +451107 +451108 +451109 +451110 +451111 +451136 +451137 +451138 +451139 +451140 +451141 +451142 +451143 +451168 +451169 +451170 +451171 +451172 +451173 +451174 +451175 +451200 +451201 +451202 +451203 +451204 +451205 +451206 +451207 +451232 +451233 +451234 +451235 +451236 +451237 +451238 +451239 +451264 +451265 +451266 +451267 +451268 +451269 +451270 +451271 +451296 +451297 +451298 +451299 +451300 +451301 +451302 +451303 +451328 +451329 +451330 +451331 +451332 +451333 +451334 +451335 +451360 +451361 +451362 +451363 +451364 +451365 +451366 +451367 +451392 +451393 +451394 +451395 +451396 +451397 +451398 +451399 +451424 +451425 +451426 +451427 +451428 +451429 +451430 +451431 +451456 +451457 +451458 +451459 +451460 +451461 +451462 +451463 +451488 +451489 +451490 +451491 +451492 +451493 +451494 +451495 +451520 +451521 +451522 +451523 +451524 +451525 +451526 +451527 +451552 +451553 +451554 +451555 +451556 +451557 +451558 +451559 +451584 +451585 +451586 +451587 +451588 +451589 +451590 +451591 +451616 +451617 +451618 +451619 +451620 +451621 +451622 +451623 +451648 +451649 +451650 +451651 +451652 +451653 +451654 +451655 +451680 +451681 +451682 +451683 +451684 +451685 +451686 +451687 +451712 +451713 +451714 +451715 +451716 +451717 +451718 +451719 +451744 +451745 +451746 +451747 +451748 +451749 +451750 +451751 +451776 +451777 +451778 +451779 +451780 +451781 +451782 +451783 +451808 +451809 +451810 +451811 +451812 +451813 +451814 +451815 +451840 +451841 +451842 +451843 +451844 +451845 +451846 +451847 +451872 +451873 +451874 +451875 +451876 +451877 +451878 +451879 +451904 +451905 +451906 +451907 +451908 +451909 +451910 +451911 +451936 +451937 +451938 +451939 +451940 +451941 +451942 +451943 +451968 +451969 +451970 +451971 +451972 +451973 +451974 +451975 +452000 +452001 +452002 +452003 +452004 +452005 +452006 +452007 +452032 +452033 +452034 +452035 +452036 +452037 +452038 +452039 +452064 +452065 +452066 +452067 +452068 +452069 +452070 +452071 +452096 +452097 +452098 +452099 +452100 +452101 +452102 +452103 +452128 +452129 +452130 +452131 +452132 +452133 +452134 +452135 +452160 +452161 +452162 +452163 +452164 +452165 +452166 +452167 +452192 +452193 +452194 +452195 +452196 +452197 +452198 +452199 +452224 +452225 +452226 +452227 +452228 +452229 +452230 +452231 +452256 +452257 +452258 +452259 +452260 +452261 +452262 +452263 +452288 +452289 +452290 +452291 +452292 +452293 +452294 +452295 +452320 +452321 +452322 +452323 +452324 +452325 +452326 +452327 +452352 +452353 +452354 +452355 +452356 +452357 +452358 +452359 +452384 +452385 +452386 +452387 +452388 +452389 +452390 +452391 +452416 +452417 +452418 +452419 +452420 +452421 +452422 +452423 +452448 +452449 +452450 +452451 +452452 +452453 +452454 +452455 +452480 +452481 +452482 +452483 +452484 +452485 +452486 +452487 +452512 +452513 +452514 +452515 +452516 +452517 +452518 +452519 +452544 +452545 +452546 +452547 +452548 +452549 +452550 +452551 +452576 +452577 +452578 +452579 +452580 +452581 +452582 +452583 +452608 +452609 +452610 +452611 +452612 +452613 +452614 +452615 +452640 +452641 +452642 +452643 +452644 +452645 +452646 +452647 +452672 +452673 +452674 +452675 +452676 +452677 +452678 +452679 +452704 +452705 +452706 +452707 +452708 +452709 +452710 +452711 +452736 +452737 +452738 +452739 +452740 +452741 +452742 +452743 +452768 +452769 +452770 +452771 +452772 +452773 +452774 +452775 +452800 +452801 +452802 +452803 +452804 +452805 +452806 +452807 +452832 +452833 +452834 +452835 +452836 +452837 +452838 +452839 +452864 +452865 +452866 +452867 +452868 +452869 +452870 +452871 +452896 +452897 +452898 +452899 +452900 +452901 +452902 +452903 +452928 +452929 +452930 +452931 +452932 +452933 +452934 +452935 +452960 +452961 +452962 +452963 +452964 +452965 +452966 +452967 +452992 +452993 +452994 +452995 +452996 +452997 +452998 +452999 +453024 +453025 +453026 +453027 +453028 +453029 +453030 +453031 +453056 +453057 +453058 +453059 +453060 +453061 +453062 +453063 +453088 +453089 +453090 +453091 +453092 +453093 +453094 +453095 +453120 +453121 +453122 +453123 +453124 +453125 +453126 +453127 +453152 +453153 +453154 +453155 +453156 +453157 +453158 +453159 +453184 +453185 +453186 +453187 +453188 +453189 +453190 +453191 +453216 +453217 +453218 +453219 +453220 +453221 +453222 +453223 +453248 +453249 +453250 +453251 +453252 +453253 +453254 +453255 +453280 +453281 +453282 +453283 +453284 +453285 +453286 +453287 +453312 +453313 +453314 +453315 +453316 +453317 +453318 +453319 +453344 +453345 +453346 +453347 +453348 +453349 +453350 +453351 +453376 +453377 +453378 +453379 +453380 +453381 +453382 +453383 +453408 +453409 +453410 +453411 +453412 +453413 +453414 +453415 +453440 +453441 +453442 +453443 +453444 +453445 +453446 +453447 +453472 +453473 +453474 +453475 +453476 +453477 +453478 +453479 +453504 +453505 +453506 +453507 +453508 +453509 +453510 +453511 +453536 +453537 +453538 +453539 +453540 +453541 +453542 +453543 +453568 +453569 +453570 +453571 +453572 +453573 +453574 +453575 +453600 +453601 +453602 +453603 +453604 +453605 +453606 +453607 +453632 +453633 +453634 +453635 +453636 +453637 +453638 +453639 +453664 +453665 +453666 +453667 +453668 +453669 +453670 +453671 +453696 +453697 +453698 +453699 +453700 +453701 +453702 +453703 +453728 +453729 +453730 +453731 +453732 +453733 +453734 +453735 +453760 +453761 +453762 +453763 +453764 +453765 +453766 +453767 +453792 +453793 +453794 +453795 +453796 +453797 +453798 +453799 +453824 +453825 +453826 +453827 +453828 +453829 +453830 +453831 +453856 +453857 +453858 +453859 +453860 +453861 +453862 +453863 +453888 +453889 +453890 +453891 +453892 +453893 +453894 +453895 +453920 +453921 +453922 +453923 +453924 +453925 +453926 +453927 +453952 +453953 +453954 +453955 +453956 +453957 +453958 +453959 +453984 +453985 +453986 +453987 +453988 +453989 +453990 +453991 +454016 +454017 +454018 +454019 +454020 +454021 +454022 +454023 +454048 +454049 +454050 +454051 +454052 +454053 +454054 +454055 +454080 +454081 +454082 +454083 +454084 +454085 +454086 +454087 +454112 +454113 +454114 +454115 +454116 +454117 +454118 +454119 +454144 +454145 +454146 +454147 +454148 +454149 +454150 +454151 +454176 +454177 +454178 +454179 +454180 +454181 +454182 +454183 +454208 +454209 +454210 +454211 +454212 +454213 +454214 +454215 +454240 +454241 +454242 +454243 +454244 +454245 +454246 +454247 +454272 +454273 +454274 +454275 +454276 +454277 +454278 +454279 +454304 +454305 +454306 +454307 +454308 +454309 +454310 +454311 +454336 +454337 +454338 +454339 +454340 +454341 +454342 +454343 +454368 +454369 +454370 +454371 +454372 +454373 +454374 +454375 +454400 +454401 +454402 +454403 +454404 +454405 +454406 +454407 +454432 +454433 +454434 +454435 +454436 +454437 +454438 +454439 +454464 +454465 +454466 +454467 +454468 +454469 +454470 +454471 +454496 +454497 +454498 +454499 +454500 +454501 +454502 +454503 +454528 +454529 +454530 +454531 +454532 +454533 +454534 +454535 +454560 +454561 +454562 +454563 +454564 +454565 +454566 +454567 +454592 +454593 +454594 +454595 +454596 +454597 +454598 +454599 +454624 +454625 +454626 +454627 +454628 +454629 +454630 +454631 +454656 +454657 +454658 +454659 +454660 +454661 +454662 +454663 +454688 +454689 +454690 +454691 +454692 +454693 +454694 +454695 +454720 +454721 +454722 +454723 +454724 +454725 +454726 +454727 +454752 +454753 +454754 +454755 +454756 +454757 +454758 +454759 +454784 +454785 +454786 +454787 +454788 +454789 +454790 +454791 +454816 +454817 +454818 +454819 +454820 +454821 +454822 +454823 +454848 +454849 +454850 +454851 +454852 +454853 +454854 +454855 +454880 +454881 +454882 +454883 +454884 +454885 +454886 +454887 +454912 +454913 +454914 +454915 +454916 +454917 +454918 +454919 +454944 +454945 +454946 +454947 +454948 +454949 +454950 +454951 +454976 +454977 +454978 +454979 +454980 +454981 +454982 +454983 +455008 +455009 +455010 +455011 +455012 +455013 +455014 +455015 +455040 +455041 +455042 +455043 +455044 +455045 +455046 +455047 +455072 +455073 +455074 +455075 +455076 +455077 +455078 +455079 +455104 +455105 +455106 +455107 +455108 +455109 +455110 +455111 +455136 +455137 +455138 +455139 +455140 +455141 +455142 +455143 +455168 +455169 +455170 +455171 +455172 +455173 +455174 +455175 +455200 +455201 +455202 +455203 +455204 +455205 +455206 +455207 +455232 +455233 +455234 +455235 +455236 +455237 +455238 +455239 +455264 +455265 +455266 +455267 +455268 +455269 +455270 +455271 +455296 +455297 +455298 +455299 +455300 +455301 +455302 +455303 +455328 +455329 +455330 +455331 +455332 +455333 +455334 +455335 +455360 +455361 +455362 +455363 +455364 +455365 +455366 +455367 +455392 +455393 +455394 +455395 +455396 +455397 +455398 +455399 +455424 +455425 +455426 +455427 +455428 +455429 +455430 +455431 +455456 +455457 +455458 +455459 +455460 +455461 +455462 +455463 +455488 +455489 +455490 +455491 +455492 +455493 +455494 +455495 +455520 +455521 +455522 +455523 +455524 +455525 +455526 +455527 +455552 +455553 +455554 +455555 +455556 +455557 +455558 +455559 +455584 +455585 +455586 +455587 +455588 +455589 +455590 +455591 +455616 +455617 +455618 +455619 +455620 +455621 +455622 +455623 +455648 +455649 +455650 +455651 +455652 +455653 +455654 +455655 +455680 +455681 +455682 +455683 +455684 +455685 +455686 +455687 +455712 +455713 +455714 +455715 +455716 +455717 +455718 +455719 +455744 +455745 +455746 +455747 +455748 +455749 +455750 +455751 +455776 +455777 +455778 +455779 +455780 +455781 +455782 +455783 +455808 +455809 +455810 +455811 +455812 +455813 +455814 +455815 +455840 +455841 +455842 +455843 +455844 +455845 +455846 +455847 +455872 +455873 +455874 +455875 +455876 +455877 +455878 +455879 +455904 +455905 +455906 +455907 +455908 +455909 +455910 +455911 +455936 +455937 +455938 +455939 +455940 +455941 +455942 +455943 +455968 +455969 +455970 +455971 +455972 +455973 +455974 +455975 +456000 +456001 +456002 +456003 +456004 +456005 +456006 +456007 +456032 +456033 +456034 +456035 +456036 +456037 +456038 +456039 +456064 +456065 +456066 +456067 +456068 +456069 +456070 +456071 +456096 +456097 +456098 +456099 +456100 +456101 +456102 +456103 +456128 +456129 +456130 +456131 +456132 +456133 +456134 +456135 +456160 +456161 +456162 +456163 +456164 +456165 +456166 +456167 +456192 +456193 +456194 +456195 +456196 +456197 +456198 +456199 +456224 +456225 +456226 +456227 +456228 +456229 +456230 +456231 +456256 +456257 +456258 +456259 +456260 +456261 +456262 +456263 +456288 +456289 +456290 +456291 +456292 +456293 +456294 +456295 +456320 +456321 +456322 +456323 +456324 +456325 +456326 +456327 +456352 +456353 +456354 +456355 +456356 +456357 +456358 +456359 +456384 +456385 +456386 +456387 +456388 +456389 +456390 +456391 +456416 +456417 +456418 +456419 +456420 +456421 +456422 +456423 +456448 +456449 +456450 +456451 +456452 +456453 +456454 +456455 +456480 +456481 +456482 +456483 +456484 +456485 +456486 +456487 +456512 +456513 +456514 +456515 +456516 +456517 +456518 +456519 +456544 +456545 +456546 +456547 +456548 +456549 +456550 +456551 +456576 +456577 +456578 +456579 +456580 +456581 +456582 +456583 +456608 +456609 +456610 +456611 +456612 +456613 +456614 +456615 +456640 +456641 +456642 +456643 +456644 +456645 +456646 +456647 +456672 +456673 +456674 +456675 +456676 +456677 +456678 +456679 +456704 +456705 +456706 +456707 +456708 +456709 +456710 +456711 +456736 +456737 +456738 +456739 +456740 +456741 +456742 +456743 +456768 +456769 +456770 +456771 +456772 +456773 +456774 +456775 +456800 +456801 +456802 +456803 +456804 +456805 +456806 +456807 +456832 +456833 +456834 +456835 +456836 +456837 +456838 +456839 +456864 +456865 +456866 +456867 +456868 +456869 +456870 +456871 +456896 +456897 +456898 +456899 +456900 +456901 +456902 +456903 +456928 +456929 +456930 +456931 +456932 +456933 +456934 +456935 +456960 +456961 +456962 +456963 +456964 +456965 +456966 +456967 +456992 +456993 +456994 +456995 +456996 +456997 +456998 +456999 +457024 +457025 +457026 +457027 +457028 +457029 +457030 +457031 +457056 +457057 +457058 +457059 +457060 +457061 +457062 +457063 +457088 +457089 +457090 +457091 +457092 +457093 +457094 +457095 +457120 +457121 +457122 +457123 +457124 +457125 +457126 +457127 +457152 +457153 +457154 +457155 +457156 +457157 +457158 +457159 +457184 +457185 +457186 +457187 +457188 +457189 +457190 +457191 +457216 +457217 +457218 +457219 +457220 +457221 +457222 +457223 +457248 +457249 +457250 +457251 +457252 +457253 +457254 +457255 +457280 +457281 +457282 +457283 +457284 +457285 +457286 +457287 +457312 +457313 +457314 +457315 +457316 +457317 +457318 +457319 +457344 +457345 +457346 +457347 +457348 +457349 +457350 +457351 +457376 +457377 +457378 +457379 +457380 +457381 +457382 +457383 +457408 +457409 +457410 +457411 +457412 +457413 +457414 +457415 +457440 +457441 +457442 +457443 +457444 +457445 +457446 +457447 +457472 +457473 +457474 +457475 +457476 +457477 +457478 +457479 +457504 +457505 +457506 +457507 +457508 +457509 +457510 +457511 +457536 +457537 +457538 +457539 +457540 +457541 +457542 +457543 +457568 +457569 +457570 +457571 +457572 +457573 +457574 +457575 +457600 +457601 +457602 +457603 +457604 +457605 +457606 +457607 +457632 +457633 +457634 +457635 +457636 +457637 +457638 +457639 +457664 +457665 +457666 +457667 +457668 +457669 +457670 +457671 +457696 +457697 +457698 +457699 +457700 +457701 +457702 +457703 +457728 +457729 +457730 +457731 +457732 +457733 +457734 +457735 +457760 +457761 +457762 +457763 +457764 +457765 +457766 +457767 +457792 +457793 +457794 +457795 +457796 +457797 +457798 +457799 +457824 +457825 +457826 +457827 +457828 +457829 +457830 +457831 +457856 +457857 +457858 +457859 +457860 +457861 +457862 +457863 +457888 +457889 +457890 +457891 +457892 +457893 +457894 +457895 +457920 +457921 +457922 +457923 +457924 +457925 +457926 +457927 +457952 +457953 +457954 +457955 +457956 +457957 +457958 +457959 +457984 +457985 +457986 +457987 +457988 +457989 +457990 +457991 +458016 +458017 +458018 +458019 +458020 +458021 +458022 +458023 +458048 +458049 +458050 +458051 +458052 +458053 +458054 +458055 +458080 +458081 +458082 +458083 +458084 +458085 +458086 +458087 +458112 +458113 +458114 +458115 +458116 +458117 +458118 +458119 +458144 +458145 +458146 +458147 +458148 +458149 +458150 +458151 +458176 +458177 +458178 +458179 +458180 +458181 +458182 +458183 +458208 +458209 +458210 +458211 +458212 +458213 +458214 +458215 +458240 +458241 +458242 +458243 +458244 +458245 +458246 +458247 +458272 +458273 +458274 +458275 +458276 +458277 +458278 +458279 +458304 +458305 +458306 +458307 +458308 +458309 +458310 +458311 +458336 +458337 +458338 +458339 +458340 +458341 +458342 +458343 +458368 +458369 +458370 +458371 +458372 +458373 +458374 +458375 +458400 +458401 +458402 +458403 +458404 +458405 +458406 +458407 +458432 +458433 +458434 +458435 +458436 +458437 +458438 +458439 +458464 +458465 +458466 +458467 +458468 +458469 +458470 +458471 +458496 +458497 +458498 +458499 +458500 +458501 +458502 +458503 +458528 +458529 +458530 +458531 +458532 +458533 +458534 +458535 +458560 +458561 +458562 +458563 +458564 +458565 +458566 +458567 +458592 +458593 +458594 +458595 +458596 +458597 +458598 +458599 +458624 +458625 +458626 +458627 +458628 +458629 +458630 +458631 +458656 +458657 +458658 +458659 +458660 +458661 +458662 +458663 +458688 +458689 +458690 +458691 +458692 +458693 +458694 +458695 +458720 +458721 +458722 +458723 +458724 +458725 +458726 +458727 +458752 +458753 +458754 +458755 +458756 +458757 +458758 +458759 +458784 +458785 +458786 +458787 +458788 +458789 +458790 +458791 +458816 +458817 +458818 +458819 +458820 +458821 +458822 +458823 +458848 +458849 +458850 +458851 +458852 +458853 +458854 +458855 +458880 +458881 +458882 +458883 +458884 +458885 +458886 +458887 +458912 +458913 +458914 +458915 +458916 +458917 +458918 +458919 +458944 +458945 +458946 +458947 +458948 +458949 +458950 +458951 +458976 +458977 +458978 +458979 +458980 +458981 +458982 +458983 +459008 +459009 +459010 +459011 +459012 +459013 +459014 +459015 +459040 +459041 +459042 +459043 +459044 +459045 +459046 +459047 +459072 +459073 +459074 +459075 +459076 +459077 +459078 +459079 +459104 +459105 +459106 +459107 +459108 +459109 +459110 +459111 +459136 +459137 +459138 +459139 +459140 +459141 +459142 +459143 +459168 +459169 +459170 +459171 +459172 +459173 +459174 +459175 +459200 +459201 +459202 +459203 +459204 +459205 +459206 +459207 +459232 +459233 +459234 +459235 +459236 +459237 +459238 +459239 +459264 +459265 +459266 +459267 +459268 +459269 +459270 +459271 +459296 +459297 +459298 +459299 +459300 +459301 +459302 +459303 +459328 +459329 +459330 +459331 +459332 +459333 +459334 +459335 +459360 +459361 +459362 +459363 +459364 +459365 +459366 +459367 +459392 +459393 +459394 +459395 +459396 +459397 +459398 +459399 +459424 +459425 +459426 +459427 +459428 +459429 +459430 +459431 +459456 +459457 +459458 +459459 +459460 +459461 +459462 +459463 +459488 +459489 +459490 +459491 +459492 +459493 +459494 +459495 +459520 +459521 +459522 +459523 +459524 +459525 +459526 +459527 +459552 +459553 +459554 +459555 +459556 +459557 +459558 +459559 +459584 +459585 +459586 +459587 +459588 +459589 +459590 +459591 +459616 +459617 +459618 +459619 +459620 +459621 +459622 +459623 +459648 +459649 +459650 +459651 +459652 +459653 +459654 +459655 +459680 +459681 +459682 +459683 +459684 +459685 +459686 +459687 +459712 +459713 +459714 +459715 +459716 +459717 +459718 +459719 +459744 +459745 +459746 +459747 +459748 +459749 +459750 +459751 +459776 +459777 +459778 +459779 +459780 +459781 +459782 +459783 +459808 +459809 +459810 +459811 +459812 +459813 +459814 +459815 +459840 +459841 +459842 +459843 +459844 +459845 +459846 +459847 +459872 +459873 +459874 +459875 +459876 +459877 +459878 +459879 +459904 +459905 +459906 +459907 +459908 +459909 +459910 +459911 +459936 +459937 +459938 +459939 +459940 +459941 +459942 +459943 +459968 +459969 +459970 +459971 +459972 +459973 +459974 +459975 +460000 +460001 +460002 +460003 +460004 +460005 +460006 +460007 +460032 +460033 +460034 +460035 +460036 +460037 +460038 +460039 +460064 +460065 +460066 +460067 +460068 +460069 +460070 +460071 +460096 +460097 +460098 +460099 +460100 +460101 +460102 +460103 +460128 +460129 +460130 +460131 +460132 +460133 +460134 +460135 +460160 +460161 +460162 +460163 +460164 +460165 +460166 +460167 +460192 +460193 +460194 +460195 +460196 +460197 +460198 +460199 +460224 +460225 +460226 +460227 +460228 +460229 +460230 +460231 +460256 +460257 +460258 +460259 +460260 +460261 +460262 +460263 +460288 +460289 +460290 +460291 +460292 +460293 +460294 +460295 +460320 +460321 +460322 +460323 +460324 +460325 +460326 +460327 +460352 +460353 +460354 +460355 +460356 +460357 +460358 +460359 +460384 +460385 +460386 +460387 +460388 +460389 +460390 +460391 +460416 +460417 +460418 +460419 +460420 +460421 +460422 +460423 +460448 +460449 +460450 +460451 +460452 +460453 +460454 +460455 +460480 +460481 +460482 +460483 +460484 +460485 +460486 +460487 +460512 +460513 +460514 +460515 +460516 +460517 +460518 +460519 +460544 +460545 +460546 +460547 +460548 +460549 +460550 +460551 +460576 +460577 +460578 +460579 +460580 +460581 +460582 +460583 +460608 +460609 +460610 +460611 +460612 +460613 +460614 +460615 +460640 +460641 +460642 +460643 +460644 +460645 +460646 +460647 +460672 +460673 +460674 +460675 +460676 +460677 +460678 +460679 +460704 +460705 +460706 +460707 +460708 +460709 +460710 +460711 +460736 +460737 +460738 +460739 +460740 +460741 +460742 +460743 +460768 +460769 +460770 +460771 +460772 +460773 +460774 +460775 +460800 +460801 +460802 +460803 +460804 +460805 +460806 +460807 +460832 +460833 +460834 +460835 +460836 +460837 +460838 +460839 +460864 +460865 +460866 +460867 +460868 +460869 +460870 +460871 +460896 +460897 +460898 +460899 +460900 +460901 +460902 +460903 +460928 +460929 +460930 +460931 +460932 +460933 +460934 +460935 +460960 +460961 +460962 +460963 +460964 +460965 +460966 +460967 +460992 +460993 +460994 +460995 +460996 +460997 +460998 +460999 +461024 +461025 +461026 +461027 +461028 +461029 +461030 +461031 +461056 +461057 +461058 +461059 +461060 +461061 +461062 +461063 +461088 +461089 +461090 +461091 +461092 +461093 +461094 +461095 +461120 +461121 +461122 +461123 +461124 +461125 +461126 +461127 +461152 +461153 +461154 +461155 +461156 +461157 +461158 +461159 +461184 +461185 +461186 +461187 +461188 +461189 +461190 +461191 +461216 +461217 +461218 +461219 +461220 +461221 +461222 +461223 +461248 +461249 +461250 +461251 +461252 +461253 +461254 +461255 +461280 +461281 +461282 +461283 +461284 +461285 +461286 +461287 +461312 +461313 +461314 +461315 +461316 +461317 +461318 +461319 +461344 +461345 +461346 +461347 +461348 +461349 +461350 +461351 +461376 +461377 +461378 +461379 +461380 +461381 +461382 +461383 +461408 +461409 +461410 +461411 +461412 +461413 +461414 +461415 +461440 +461441 +461442 +461443 +461444 +461445 +461446 +461447 +461472 +461473 +461474 +461475 +461476 +461477 +461478 +461479 +461504 +461505 +461506 +461507 +461508 +461509 +461510 +461511 +461536 +461537 +461538 +461539 +461540 +461541 +461542 +461543 +461568 +461569 +461570 +461571 +461572 +461573 +461574 +461575 +461600 +461601 +461602 +461603 +461604 +461605 +461606 +461607 +461632 +461633 +461634 +461635 +461636 +461637 +461638 +461639 +461664 +461665 +461666 +461667 +461668 +461669 +461670 +461671 +461696 +461697 +461698 +461699 +461700 +461701 +461702 +461703 +461728 +461729 +461730 +461731 +461732 +461733 +461734 +461735 +461760 +461761 +461762 +461763 +461764 +461765 +461766 +461767 +461792 +461793 +461794 +461795 +461796 +461797 +461798 +461799 +461824 +461825 +461826 +461827 +461828 +461829 +461830 +461831 +461856 +461857 +461858 +461859 +461860 +461861 +461862 +461863 +461888 +461889 +461890 +461891 +461892 +461893 +461894 +461895 +461920 +461921 +461922 +461923 +461924 +461925 +461926 +461927 +461952 +461953 +461954 +461955 +461956 +461957 +461958 +461959 +461984 +461985 +461986 +461987 +461988 +461989 +461990 +461991 +462016 +462017 +462018 +462019 +462020 +462021 +462022 +462023 +462048 +462049 +462050 +462051 +462052 +462053 +462054 +462055 +462080 +462081 +462082 +462083 +462084 +462085 +462086 +462087 +462112 +462113 +462114 +462115 +462116 +462117 +462118 +462119 +462144 +462145 +462146 +462147 +462148 +462149 +462150 +462151 +462176 +462177 +462178 +462179 +462180 +462181 +462182 +462183 +462208 +462209 +462210 +462211 +462212 +462213 +462214 +462215 +462240 +462241 +462242 +462243 +462244 +462245 +462246 +462247 +462272 +462273 +462274 +462275 +462276 +462277 +462278 +462279 +462304 +462305 +462306 +462307 +462308 +462309 +462310 +462311 +462336 +462337 +462338 +462339 +462340 +462341 +462342 +462343 +462368 +462369 +462370 +462371 +462372 +462373 +462374 +462375 +462400 +462401 +462402 +462403 +462404 +462405 +462406 +462407 +462432 +462433 +462434 +462435 +462436 +462437 +462438 +462439 +462464 +462465 +462466 +462467 +462468 +462469 +462470 +462471 +462496 +462497 +462498 +462499 +462500 +462501 +462502 +462503 +462528 +462529 +462530 +462531 +462532 +462533 +462534 +462535 +462560 +462561 +462562 +462563 +462564 +462565 +462566 +462567 +462592 +462593 +462594 +462595 +462596 +462597 +462598 +462599 +462624 +462625 +462626 +462627 +462628 +462629 +462630 +462631 +462656 +462657 +462658 +462659 +462660 +462661 +462662 +462663 +462688 +462689 +462690 +462691 +462692 +462693 +462694 +462695 +462720 +462721 +462722 +462723 +462724 +462725 +462726 +462727 +462752 +462753 +462754 +462755 +462756 +462757 +462758 +462759 +462784 +462785 +462786 +462787 +462788 +462789 +462790 +462791 +462816 +462817 +462818 +462819 +462820 +462821 +462822 +462823 +462848 +462849 +462850 +462851 +462852 +462853 +462854 +462855 +462880 +462881 +462882 +462883 +462884 +462885 +462886 +462887 +462912 +462913 +462914 +462915 +462916 +462917 +462918 +462919 +462944 +462945 +462946 +462947 +462948 +462949 +462950 +462951 +462976 +462977 +462978 +462979 +462980 +462981 +462982 +462983 +463008 +463009 +463010 +463011 +463012 +463013 +463014 +463015 +463040 +463041 +463042 +463043 +463044 +463045 +463046 +463047 +463072 +463073 +463074 +463075 +463076 +463077 +463078 +463079 +463104 +463105 +463106 +463107 +463108 +463109 +463110 +463111 +463136 +463137 +463138 +463139 +463140 +463141 +463142 +463143 +463168 +463169 +463170 +463171 +463172 +463173 +463174 +463175 +463200 +463201 +463202 +463203 +463204 +463205 +463206 +463207 +463232 +463233 +463234 +463235 +463236 +463237 +463238 +463239 +463264 +463265 +463266 +463267 +463268 +463269 +463270 +463271 +463296 +463297 +463298 +463299 +463300 +463301 +463302 +463303 +463328 +463329 +463330 +463331 +463332 +463333 +463334 +463335 +463360 +463361 +463362 +463363 +463364 +463365 +463366 +463367 +463392 +463393 +463394 +463395 +463396 +463397 +463398 +463399 +463424 +463425 +463426 +463427 +463428 +463429 +463430 +463431 +463456 +463457 +463458 +463459 +463460 +463461 +463462 +463463 +463488 +463489 +463490 +463491 +463492 +463493 +463494 +463495 +463520 +463521 +463522 +463523 +463524 +463525 +463526 +463527 +463552 +463553 +463554 +463555 +463556 +463557 +463558 +463559 +463584 +463585 +463586 +463587 +463588 +463589 +463590 +463591 +463616 +463617 +463618 +463619 +463620 +463621 +463622 +463623 +463648 +463649 +463650 +463651 +463652 +463653 +463654 +463655 +463680 +463681 +463682 +463683 +463684 +463685 +463686 +463687 +463712 +463713 +463714 +463715 +463716 +463717 +463718 +463719 +463744 +463745 +463746 +463747 +463748 +463749 +463750 +463751 +463776 +463777 +463778 +463779 +463780 +463781 +463782 +463783 +463808 +463809 +463810 +463811 +463812 +463813 +463814 +463815 +463840 +463841 +463842 +463843 +463844 +463845 +463846 +463847 +463872 +463873 +463874 +463875 +463876 +463877 +463878 +463879 +463904 +463905 +463906 +463907 +463908 +463909 +463910 +463911 +463936 +463937 +463938 +463939 +463940 +463941 +463942 +463943 +463968 +463969 +463970 +463971 +463972 +463973 +463974 +463975 +464000 +464001 +464002 +464003 +464004 +464005 +464006 +464007 +464032 +464033 +464034 +464035 +464036 +464037 +464038 +464039 +464064 +464065 +464066 +464067 +464068 +464069 +464070 +464071 +464096 +464097 +464098 +464099 +464100 +464101 +464102 +464103 +464128 +464129 +464130 +464131 +464132 +464133 +464134 +464135 +464160 +464161 +464162 +464163 +464164 +464165 +464166 +464167 +464192 +464193 +464194 +464195 +464196 +464197 +464198 +464199 +464224 +464225 +464226 +464227 +464228 +464229 +464230 +464231 +464256 +464257 +464258 +464259 +464260 +464261 +464262 +464263 +464288 +464289 +464290 +464291 +464292 +464293 +464294 +464295 +464320 +464321 +464322 +464323 +464324 +464325 +464326 +464327 +464352 +464353 +464354 +464355 +464356 +464357 +464358 +464359 +464384 +464385 +464386 +464387 +464388 +464389 +464390 +464391 +464416 +464417 +464418 +464419 +464420 +464421 +464422 +464423 +464448 +464449 +464450 +464451 +464452 +464453 +464454 +464455 +464480 +464481 +464482 +464483 +464484 +464485 +464486 +464487 +464512 +464513 +464514 +464515 +464516 +464517 +464518 +464519 +464544 +464545 +464546 +464547 +464548 +464549 +464550 +464551 +464576 +464577 +464578 +464579 +464580 +464581 +464582 +464583 +464608 +464609 +464610 +464611 +464612 +464613 +464614 +464615 +464640 +464641 +464642 +464643 +464644 +464645 +464646 +464647 +464672 +464673 +464674 +464675 +464676 +464677 +464678 +464679 +464704 +464705 +464706 +464707 +464708 +464709 +464710 +464711 +464736 +464737 +464738 +464739 +464740 +464741 +464742 +464743 +464768 +464769 +464770 +464771 +464772 +464773 +464774 +464775 +464800 +464801 +464802 +464803 +464804 +464805 +464806 +464807 +464832 +464833 +464834 +464835 +464836 +464837 +464838 +464839 +464864 +464865 +464866 +464867 +464868 +464869 +464870 +464871 +464896 +464897 +464898 +464899 +464900 +464901 +464902 +464903 +464928 +464929 +464930 +464931 +464932 +464933 +464934 +464935 +464960 +464961 +464962 +464963 +464964 +464965 +464966 +464967 +464992 +464993 +464994 +464995 +464996 +464997 +464998 +464999 +465024 +465025 +465026 +465027 +465028 +465029 +465030 +465031 +465056 +465057 +465058 +465059 +465060 +465061 +465062 +465063 +465088 +465089 +465090 +465091 +465092 +465093 +465094 +465095 +465120 +465121 +465122 +465123 +465124 +465125 +465126 +465127 +465152 +465153 +465154 +465155 +465156 +465157 +465158 +465159 +465184 +465185 +465186 +465187 +465188 +465189 +465190 +465191 +465216 +465217 +465218 +465219 +465220 +465221 +465222 +465223 +465248 +465249 +465250 +465251 +465252 +465253 +465254 +465255 +465280 +465281 +465282 +465283 +465284 +465285 +465286 +465287 +465312 +465313 +465314 +465315 +465316 +465317 +465318 +465319 +465344 +465345 +465346 +465347 +465348 +465349 +465350 +465351 +465376 +465377 +465378 +465379 +465380 +465381 +465382 +465383 +465408 +465409 +465410 +465411 +465412 +465413 +465414 +465415 +465440 +465441 +465442 +465443 +465444 +465445 +465446 +465447 +465472 +465473 +465474 +465475 +465476 +465477 +465478 +465479 +465504 +465505 +465506 +465507 +465508 +465509 +465510 +465511 +465536 +465537 +465538 +465539 +465540 +465541 +465542 +465543 +465568 +465569 +465570 +465571 +465572 +465573 +465574 +465575 +465600 +465601 +465602 +465603 +465604 +465605 +465606 +465607 +465632 +465633 +465634 +465635 +465636 +465637 +465638 +465639 +465664 +465665 +465666 +465667 +465668 +465669 +465670 +465671 +465696 +465697 +465698 +465699 +465700 +465701 +465702 +465703 +465728 +465729 +465730 +465731 +465732 +465733 +465734 +465735 +465760 +465761 +465762 +465763 +465764 +465765 +465766 +465767 +465792 +465793 +465794 +465795 +465796 +465797 +465798 +465799 +465824 +465825 +465826 +465827 +465828 +465829 +465830 +465831 +465856 +465857 +465858 +465859 +465860 +465861 +465862 +465863 +465888 +465889 +465890 +465891 +465892 +465893 +465894 +465895 +465920 +465921 +465922 +465923 +465924 +465925 +465926 +465927 +465952 +465953 +465954 +465955 +465956 +465957 +465958 +465959 +465984 +465985 +465986 +465987 +465988 +465989 +465990 +465991 +466016 +466017 +466018 +466019 +466020 +466021 +466022 +466023 +466048 +466049 +466050 +466051 +466052 +466053 +466054 +466055 +466080 +466081 +466082 +466083 +466084 +466085 +466086 +466087 +466112 +466113 +466114 +466115 +466116 +466117 +466118 +466119 +466144 +466145 +466146 +466147 +466148 +466149 +466150 +466151 +466176 +466177 +466178 +466179 +466180 +466181 +466182 +466183 +466208 +466209 +466210 +466211 +466212 +466213 +466214 +466215 +466240 +466241 +466242 +466243 +466244 +466245 +466246 +466247 +466272 +466273 +466274 +466275 +466276 +466277 +466278 +466279 +466304 +466305 +466306 +466307 +466308 +466309 +466310 +466311 +466336 +466337 +466338 +466339 +466340 +466341 +466342 +466343 +466368 +466369 +466370 +466371 +466372 +466373 +466374 +466375 +466400 +466401 +466402 +466403 +466404 +466405 +466406 +466407 +466432 +466433 +466434 +466435 +466436 +466437 +466438 +466439 +466464 +466465 +466466 +466467 +466468 +466469 +466470 +466471 +466496 +466497 +466498 +466499 +466500 +466501 +466502 +466503 +466528 +466529 +466530 +466531 +466532 +466533 +466534 +466535 +466560 +466561 +466562 +466563 +466564 +466565 +466566 +466567 +466592 +466593 +466594 +466595 +466596 +466597 +466598 +466599 +466624 +466625 +466626 +466627 +466628 +466629 +466630 +466631 +466656 +466657 +466658 +466659 +466660 +466661 +466662 +466663 +466688 +466689 +466690 +466691 +466692 +466693 +466694 +466695 +466720 +466721 +466722 +466723 +466724 +466725 +466726 +466727 +466752 +466753 +466754 +466755 +466756 +466757 +466758 +466759 +466784 +466785 +466786 +466787 +466788 +466789 +466790 +466791 +466816 +466817 +466818 +466819 +466820 +466821 +466822 +466823 +466848 +466849 +466850 +466851 +466852 +466853 +466854 +466855 +466880 +466881 +466882 +466883 +466884 +466885 +466886 +466887 +466912 +466913 +466914 +466915 +466916 +466917 +466918 +466919 +466944 +466945 +466946 +466947 +466948 +466949 +466950 +466951 +466976 +466977 +466978 +466979 +466980 +466981 +466982 +466983 +467008 +467009 +467010 +467011 +467012 +467013 +467014 +467015 +467040 +467041 +467042 +467043 +467044 +467045 +467046 +467047 +467072 +467073 +467074 +467075 +467076 +467077 +467078 +467079 +467104 +467105 +467106 +467107 +467108 +467109 +467110 +467111 +467136 +467137 +467138 +467139 +467140 +467141 +467142 +467143 +467168 +467169 +467170 +467171 +467172 +467173 +467174 +467175 +467200 +467201 +467202 +467203 +467204 +467205 +467206 +467207 +467232 +467233 +467234 +467235 +467236 +467237 +467238 +467239 +467264 +467265 +467266 +467267 +467268 +467269 +467270 +467271 +467296 +467297 +467298 +467299 +467300 +467301 +467302 +467303 +467328 +467329 +467330 +467331 +467332 +467333 +467334 +467335 +467360 +467361 +467362 +467363 +467364 +467365 +467366 +467367 +467392 +467393 +467394 +467395 +467396 +467397 +467398 +467399 +467424 +467425 +467426 +467427 +467428 +467429 +467430 +467431 +467456 +467457 +467458 +467459 +467460 +467461 +467462 +467463 +467488 +467489 +467490 +467491 +467492 +467493 +467494 +467495 +467520 +467521 +467522 +467523 +467524 +467525 +467526 +467527 +467552 +467553 +467554 +467555 +467556 +467557 +467558 +467559 +467584 +467585 +467586 +467587 +467588 +467589 +467590 +467591 +467616 +467617 +467618 +467619 +467620 +467621 +467622 +467623 +467648 +467649 +467650 +467651 +467652 +467653 +467654 +467655 +467680 +467681 +467682 +467683 +467684 +467685 +467686 +467687 +467712 +467713 +467714 +467715 +467716 +467717 +467718 +467719 +467744 +467745 +467746 +467747 +467748 +467749 +467750 +467751 +467776 +467777 +467778 +467779 +467780 +467781 +467782 +467783 +467808 +467809 +467810 +467811 +467812 +467813 +467814 +467815 +467840 +467841 +467842 +467843 +467844 +467845 +467846 +467847 +467872 +467873 +467874 +467875 +467876 +467877 +467878 +467879 +467904 +467905 +467906 +467907 +467908 +467909 +467910 +467911 +467936 +467937 +467938 +467939 +467940 +467941 +467942 +467943 +467968 +467969 +467970 +467971 +467972 +467973 +467974 +467975 +468000 +468001 +468002 +468003 +468004 +468005 +468006 +468007 +468032 +468033 +468034 +468035 +468036 +468037 +468038 +468039 +468064 +468065 +468066 +468067 +468068 +468069 +468070 +468071 +468096 +468097 +468098 +468099 +468100 +468101 +468102 +468103 +468128 +468129 +468130 +468131 +468132 +468133 +468134 +468135 +468160 +468161 +468162 +468163 +468164 +468165 +468166 +468167 +468192 +468193 +468194 +468195 +468196 +468197 +468198 +468199 +468224 +468225 +468226 +468227 +468228 +468229 +468230 +468231 +468256 +468257 +468258 +468259 +468260 +468261 +468262 +468263 +468288 +468289 +468290 +468291 +468292 +468293 +468294 +468295 +468320 +468321 +468322 +468323 +468324 +468325 +468326 +468327 +468352 +468353 +468354 +468355 +468356 +468357 +468358 +468359 +468384 +468385 +468386 +468387 +468388 +468389 +468390 +468391 +468416 +468417 +468418 +468419 +468420 +468421 +468422 +468423 +468448 +468449 +468450 +468451 +468452 +468453 +468454 +468455 +468480 +468481 +468482 +468483 +468484 +468485 +468486 +468487 +468512 +468513 +468514 +468515 +468516 +468517 +468518 +468519 +468544 +468545 +468546 +468547 +468548 +468549 +468550 +468551 +468576 +468577 +468578 +468579 +468580 +468581 +468582 +468583 +468608 +468609 +468610 +468611 +468612 +468613 +468614 +468615 +468640 +468641 +468642 +468643 +468644 +468645 +468646 +468647 +468672 +468673 +468674 +468675 +468676 +468677 +468678 +468679 +468704 +468705 +468706 +468707 +468708 +468709 +468710 +468711 +468736 +468737 +468738 +468739 +468740 +468741 +468742 +468743 +468768 +468769 +468770 +468771 +468772 +468773 +468774 +468775 +468800 +468801 +468802 +468803 +468804 +468805 +468806 +468807 +468832 +468833 +468834 +468835 +468836 +468837 +468838 +468839 +468864 +468865 +468866 +468867 +468868 +468869 +468870 +468871 +468896 +468897 +468898 +468899 +468900 +468901 +468902 +468903 +468928 +468929 +468930 +468931 +468932 +468933 +468934 +468935 +468960 +468961 +468962 +468963 +468964 +468965 +468966 +468967 +468992 +468993 +468994 +468995 +468996 +468997 +468998 +468999 +469024 +469025 +469026 +469027 +469028 +469029 +469030 +469031 +469056 +469057 +469058 +469059 +469060 +469061 +469062 +469063 +469088 +469089 +469090 +469091 +469092 +469093 +469094 +469095 +469120 +469121 +469122 +469123 +469124 +469125 +469126 +469127 +469152 +469153 +469154 +469155 +469156 +469157 +469158 +469159 +469184 +469185 +469186 +469187 +469188 +469189 +469190 +469191 +469216 +469217 +469218 +469219 +469220 +469221 +469222 +469223 +469248 +469249 +469250 +469251 +469252 +469253 +469254 +469255 +469280 +469281 +469282 +469283 +469284 +469285 +469286 +469287 +469312 +469313 +469314 +469315 +469316 +469317 +469318 +469319 +469344 +469345 +469346 +469347 +469348 +469349 +469350 +469351 +469376 +469377 +469378 +469379 +469380 +469381 +469382 +469383 +469408 +469409 +469410 +469411 +469412 +469413 +469414 +469415 +469440 +469441 +469442 +469443 +469444 +469445 +469446 +469447 +469472 +469473 +469474 +469475 +469476 +469477 +469478 +469479 +469504 +469505 +469506 +469507 +469508 +469509 +469510 +469511 +469536 +469537 +469538 +469539 +469540 +469541 +469542 +469543 +469568 +469569 +469570 +469571 +469572 +469573 +469574 +469575 +469600 +469601 +469602 +469603 +469604 +469605 +469606 +469607 +469632 +469633 +469634 +469635 +469636 +469637 +469638 +469639 +469664 +469665 +469666 +469667 +469668 +469669 +469670 +469671 +469696 +469697 +469698 +469699 +469700 +469701 +469702 +469703 +469728 +469729 +469730 +469731 +469732 +469733 +469734 +469735 +469760 +469761 +469762 +469763 +469764 +469765 +469766 +469767 +469792 +469793 +469794 +469795 +469796 +469797 +469798 +469799 +469824 +469825 +469826 +469827 +469828 +469829 +469830 +469831 +469856 +469857 +469858 +469859 +469860 +469861 +469862 +469863 +469888 +469889 +469890 +469891 +469892 +469893 +469894 +469895 +469920 +469921 +469922 +469923 +469924 +469925 +469926 +469927 +469952 +469953 +469954 +469955 +469956 +469957 +469958 +469959 +469984 +469985 +469986 +469987 +469988 +469989 +469990 +469991 +470016 +470017 +470018 +470019 +470020 +470021 +470022 +470023 +470048 +470049 +470050 +470051 +470052 +470053 +470054 +470055 +470080 +470081 +470082 +470083 +470084 +470085 +470086 +470087 +470112 +470113 +470114 +470115 +470116 +470117 +470118 +470119 +470144 +470145 +470146 +470147 +470148 +470149 +470150 +470151 +470176 +470177 +470178 +470179 +470180 +470181 +470182 +470183 +470208 +470209 +470210 +470211 +470212 +470213 +470214 +470215 +470240 +470241 +470242 +470243 +470244 +470245 +470246 +470247 +470272 +470273 +470274 +470275 +470276 +470277 +470278 +470279 +470304 +470305 +470306 +470307 +470308 +470309 +470310 +470311 +470336 +470337 +470338 +470339 +470340 +470341 +470342 +470343 +470368 +470369 +470370 +470371 +470372 +470373 +470374 +470375 +470400 +470401 +470402 +470403 +470404 +470405 +470406 +470407 +470432 +470433 +470434 +470435 +470436 +470437 +470438 +470439 +470464 +470465 +470466 +470467 +470468 +470469 +470470 +470471 +470496 +470497 +470498 +470499 +470500 +470501 +470502 +470503 +470528 +470529 +470530 +470531 +470532 +470533 +470534 +470535 +470560 +470561 +470562 +470563 +470564 +470565 +470566 +470567 +470592 +470593 +470594 +470595 +470596 +470597 +470598 +470599 +470624 +470625 +470626 +470627 +470628 +470629 +470630 +470631 +470656 +470657 +470658 +470659 +470660 +470661 +470662 +470663 +470688 +470689 +470690 +470691 +470692 +470693 +470694 +470695 +470720 +470721 +470722 +470723 +470724 +470725 +470726 +470727 +470752 +470753 +470754 +470755 +470756 +470757 +470758 +470759 +470784 +470785 +470786 +470787 +470788 +470789 +470790 +470791 +470816 +470817 +470818 +470819 +470820 +470821 +470822 +470823 +470848 +470849 +470850 +470851 +470852 +470853 +470854 +470855 +470880 +470881 +470882 +470883 +470884 +470885 +470886 +470887 +470912 +470913 +470914 +470915 +470916 +470917 +470918 +470919 +470944 +470945 +470946 +470947 +470948 +470949 +470950 +470951 +470976 +470977 +470978 +470979 +470980 +470981 +470982 +470983 +471008 +471009 +471010 +471011 +471012 +471013 +471014 +471015 +471040 +471041 +471042 +471043 +471044 +471045 +471046 +471047 +471072 +471073 +471074 +471075 +471076 +471077 +471078 +471079 +471104 +471105 +471106 +471107 +471108 +471109 +471110 +471111 +471136 +471137 +471138 +471139 +471140 +471141 +471142 +471143 +471168 +471169 +471170 +471171 +471172 +471173 +471174 +471175 +471200 +471201 +471202 +471203 +471204 +471205 +471206 +471207 +471232 +471233 +471234 +471235 +471236 +471237 +471238 +471239 +471264 +471265 +471266 +471267 +471268 +471269 +471270 +471271 +471296 +471297 +471298 +471299 +471300 +471301 +471302 +471303 +471328 +471329 +471330 +471331 +471332 +471333 +471334 +471335 +471360 +471361 +471362 +471363 +471364 +471365 +471366 +471367 +471392 +471393 +471394 +471395 +471396 +471397 +471398 +471399 +471424 +471425 +471426 +471427 +471428 +471429 +471430 +471431 +471456 +471457 +471458 +471459 +471460 +471461 +471462 +471463 +471488 +471489 +471490 +471491 +471492 +471493 +471494 +471495 +471520 +471521 +471522 +471523 +471524 +471525 +471526 +471527 +471552 +471553 +471554 +471555 +471556 +471557 +471558 +471559 +471584 +471585 +471586 +471587 +471588 +471589 +471590 +471591 +471616 +471617 +471618 +471619 +471620 +471621 +471622 +471623 +471648 +471649 +471650 +471651 +471652 +471653 +471654 +471655 +471680 +471681 +471682 +471683 +471684 +471685 +471686 +471687 +471712 +471713 +471714 +471715 +471716 +471717 +471718 +471719 +471744 +471745 +471746 +471747 +471748 +471749 +471750 +471751 +471776 +471777 +471778 +471779 +471780 +471781 +471782 +471783 +471808 +471809 +471810 +471811 +471812 +471813 +471814 +471815 +471840 +471841 +471842 +471843 +471844 +471845 +471846 +471847 +471872 +471873 +471874 +471875 +471876 +471877 +471878 +471879 +471904 +471905 +471906 +471907 +471908 +471909 +471910 +471911 +471936 +471937 +471938 +471939 +471940 +471941 +471942 +471943 +471968 +471969 +471970 +471971 +471972 +471973 +471974 +471975 +472000 +472001 +472002 +472003 +472004 +472005 +472006 +472007 +472032 +472033 +472034 +472035 +472036 +472037 +472038 +472039 +472064 +472065 +472066 +472067 +472068 +472069 +472070 +472071 +472096 +472097 +472098 +472099 +472100 +472101 +472102 +472103 +472128 +472129 +472130 +472131 +472132 +472133 +472134 +472135 +472160 +472161 +472162 +472163 +472164 +472165 +472166 +472167 +472192 +472193 +472194 +472195 +472196 +472197 +472198 +472199 +472224 +472225 +472226 +472227 +472228 +472229 +472230 +472231 +472256 +472257 +472258 +472259 +472260 +472261 +472262 +472263 +472288 +472289 +472290 +472291 +472292 +472293 +472294 +472295 +472320 +472321 +472322 +472323 +472324 +472325 +472326 +472327 +472352 +472353 +472354 +472355 +472356 +472357 +472358 +472359 +472384 +472385 +472386 +472387 +472388 +472389 +472390 +472391 +472416 +472417 +472418 +472419 +472420 +472421 +472422 +472423 +472448 +472449 +472450 +472451 +472452 +472453 +472454 +472455 +472480 +472481 +472482 +472483 +472484 +472485 +472486 +472487 +472512 +472513 +472514 +472515 +472516 +472517 +472518 +472519 +472544 +472545 +472546 +472547 +472548 +472549 +472550 +472551 +472576 +472577 +472578 +472579 +472580 +472581 +472582 +472583 +472608 +472609 +472610 +472611 +472612 +472613 +472614 +472615 +472640 +472641 +472642 +472643 +472644 +472645 +472646 +472647 +472672 +472673 +472674 +472675 +472676 +472677 +472678 +472679 +472704 +472705 +472706 +472707 +472708 +472709 +472710 +472711 +472736 +472737 +472738 +472739 +472740 +472741 +472742 +472743 +472768 +472769 +472770 +472771 +472772 +472773 +472774 +472775 +472800 +472801 +472802 +472803 +472804 +472805 +472806 +472807 +472832 +472833 +472834 +472835 +472836 +472837 +472838 +472839 +472864 +472865 +472866 +472867 +472868 +472869 +472870 +472871 +472896 +472897 +472898 +472899 +472900 +472901 +472902 +472903 +472928 +472929 +472930 +472931 +472932 +472933 +472934 +472935 +472960 +472961 +472962 +472963 +472964 +472965 +472966 +472967 +472992 +472993 +472994 +472995 +472996 +472997 +472998 +472999 +473024 +473025 +473026 +473027 +473028 +473029 +473030 +473031 +473056 +473057 +473058 +473059 +473060 +473061 +473062 +473063 +473088 +473089 +473090 +473091 +473092 +473093 +473094 +473095 +473120 +473121 +473122 +473123 +473124 +473125 +473126 +473127 +473152 +473153 +473154 +473155 +473156 +473157 +473158 +473159 +473184 +473185 +473186 +473187 +473188 +473189 +473190 +473191 +473216 +473217 +473218 +473219 +473220 +473221 +473222 +473223 +473248 +473249 +473250 +473251 +473252 +473253 +473254 +473255 +473280 +473281 +473282 +473283 +473284 +473285 +473286 +473287 +473312 +473313 +473314 +473315 +473316 +473317 +473318 +473319 +473344 +473345 +473346 +473347 +473348 +473349 +473350 +473351 +473376 +473377 +473378 +473379 +473380 +473381 +473382 +473383 +473408 +473409 +473410 +473411 +473412 +473413 +473414 +473415 +473440 +473441 +473442 +473443 +473444 +473445 +473446 +473447 +473472 +473473 +473474 +473475 +473476 +473477 +473478 +473479 +473504 +473505 +473506 +473507 +473508 +473509 +473510 +473511 +473536 +473537 +473538 +473539 +473540 +473541 +473542 +473543 +473568 +473569 +473570 +473571 +473572 +473573 +473574 +473575 +473600 +473601 +473602 +473603 +473604 +473605 +473606 +473607 +473632 +473633 +473634 +473635 +473636 +473637 +473638 +473639 +473664 +473665 +473666 +473667 +473668 +473669 +473670 +473671 +473696 +473697 +473698 +473699 +473700 +473701 +473702 +473703 +473728 +473729 +473730 +473731 +473732 +473733 +473734 +473735 +473760 +473761 +473762 +473763 +473764 +473765 +473766 +473767 +473792 +473793 +473794 +473795 +473796 +473797 +473798 +473799 +473824 +473825 +473826 +473827 +473828 +473829 +473830 +473831 +473856 +473857 +473858 +473859 +473860 +473861 +473862 +473863 +473888 +473889 +473890 +473891 +473892 +473893 +473894 +473895 +473920 +473921 +473922 +473923 +473924 +473925 +473926 +473927 +473952 +473953 +473954 +473955 +473956 +473957 +473958 +473959 +473984 +473985 +473986 +473987 +473988 +473989 +473990 +473991 +474016 +474017 +474018 +474019 +474020 +474021 +474022 +474023 +474048 +474049 +474050 +474051 +474052 +474053 +474054 +474055 +474080 +474081 +474082 +474083 +474084 +474085 +474086 +474087 +474112 +474113 +474114 +474115 +474116 +474117 +474118 +474119 +474144 +474145 +474146 +474147 +474148 +474149 +474150 +474151 +474176 +474177 +474178 +474179 +474180 +474181 +474182 +474183 +474208 +474209 +474210 +474211 +474212 +474213 +474214 +474215 +474240 +474241 +474242 +474243 +474244 +474245 +474246 +474247 +474272 +474273 +474274 +474275 +474276 +474277 +474278 +474279 +474304 +474305 +474306 +474307 +474308 +474309 +474310 +474311 +474336 +474337 +474338 +474339 +474340 +474341 +474342 +474343 +474368 +474369 +474370 +474371 +474372 +474373 +474374 +474375 +474400 +474401 +474402 +474403 +474404 +474405 +474406 +474407 +474432 +474433 +474434 +474435 +474436 +474437 +474438 +474439 +474464 +474465 +474466 +474467 +474468 +474469 +474470 +474471 +474496 +474497 +474498 +474499 +474500 +474501 +474502 +474503 +474528 +474529 +474530 +474531 +474532 +474533 +474534 +474535 +474560 +474561 +474562 +474563 +474564 +474565 +474566 +474567 +474592 +474593 +474594 +474595 +474596 +474597 +474598 +474599 +474624 +474625 +474626 +474627 +474628 +474629 +474630 +474631 +474656 +474657 +474658 +474659 +474660 +474661 +474662 +474663 +474688 +474689 +474690 +474691 +474692 +474693 +474694 +474695 +474720 +474721 +474722 +474723 +474724 +474725 +474726 +474727 +474752 +474753 +474754 +474755 +474756 +474757 +474758 +474759 +474784 +474785 +474786 +474787 +474788 +474789 +474790 +474791 +474816 +474817 +474818 +474819 +474820 +474821 +474822 +474823 +474848 +474849 +474850 +474851 +474852 +474853 +474854 +474855 +474880 +474881 +474882 +474883 +474884 +474885 +474886 +474887 +474912 +474913 +474914 +474915 +474916 +474917 +474918 +474919 +474944 +474945 +474946 +474947 +474948 +474949 +474950 +474951 +474976 +474977 +474978 +474979 +474980 +474981 +474982 +474983 +475008 +475009 +475010 +475011 +475012 +475013 +475014 +475015 +475040 +475041 +475042 +475043 +475044 +475045 +475046 +475047 +475072 +475073 +475074 +475075 +475076 +475077 +475078 +475079 +475104 +475105 +475106 +475107 +475108 +475109 +475110 +475111 +475136 +475137 +475138 +475139 +475140 +475141 +475142 +475143 +475168 +475169 +475170 +475171 +475172 +475173 +475174 +475175 +475200 +475201 +475202 +475203 +475204 +475205 +475206 +475207 +475232 +475233 +475234 +475235 +475236 +475237 +475238 +475239 +475264 +475265 +475266 +475267 +475268 +475269 +475270 +475271 +475296 +475297 +475298 +475299 +475300 +475301 +475302 +475303 +475328 +475329 +475330 +475331 +475332 +475333 +475334 +475335 +475360 +475361 +475362 +475363 +475364 +475365 +475366 +475367 +475392 +475393 +475394 +475395 +475396 +475397 +475398 +475399 +475424 +475425 +475426 +475427 +475428 +475429 +475430 +475431 +475456 +475457 +475458 +475459 +475460 +475461 +475462 +475463 +475488 +475489 +475490 +475491 +475492 +475493 +475494 +475495 +475520 +475521 +475522 +475523 +475524 +475525 +475526 +475527 +475552 +475553 +475554 +475555 +475556 +475557 +475558 +475559 +475584 +475585 +475586 +475587 +475588 +475589 +475590 +475591 +475616 +475617 +475618 +475619 +475620 +475621 +475622 +475623 +475648 +475649 +475650 +475651 +475652 +475653 +475654 +475655 +475680 +475681 +475682 +475683 +475684 +475685 +475686 +475687 +475712 +475713 +475714 +475715 +475716 +475717 +475718 +475719 +475744 +475745 +475746 +475747 +475748 +475749 +475750 +475751 +475776 +475777 +475778 +475779 +475780 +475781 +475782 +475783 +475808 +475809 +475810 +475811 +475812 +475813 +475814 +475815 +475840 +475841 +475842 +475843 +475844 +475845 +475846 +475847 +475872 +475873 +475874 +475875 +475876 +475877 +475878 +475879 +475904 +475905 +475906 +475907 +475908 +475909 +475910 +475911 +475936 +475937 +475938 +475939 +475940 +475941 +475942 +475943 +475968 +475969 +475970 +475971 +475972 +475973 +475974 +475975 +476000 +476001 +476002 +476003 +476004 +476005 +476006 +476007 +476032 +476033 +476034 +476035 +476036 +476037 +476038 +476039 +476064 +476065 +476066 +476067 +476068 +476069 +476070 +476071 +476096 +476097 +476098 +476099 +476100 +476101 +476102 +476103 +476128 +476129 +476130 +476131 +476132 +476133 +476134 +476135 +476160 +476161 +476162 +476163 +476164 +476165 +476166 +476167 +476192 +476193 +476194 +476195 +476196 +476197 +476198 +476199 +476224 +476225 +476226 +476227 +476228 +476229 +476230 +476231 +476256 +476257 +476258 +476259 +476260 +476261 +476262 +476263 +476288 +476289 +476290 +476291 +476292 +476293 +476294 +476295 +476320 +476321 +476322 +476323 +476324 +476325 +476326 +476327 +476352 +476353 +476354 +476355 +476356 +476357 +476358 +476359 +476384 +476385 +476386 +476387 +476388 +476389 +476390 +476391 +476416 +476417 +476418 +476419 +476420 +476421 +476422 +476423 +476448 +476449 +476450 +476451 +476452 +476453 +476454 +476455 +476480 +476481 +476482 +476483 +476484 +476485 +476486 +476487 +476512 +476513 +476514 +476515 +476516 +476517 +476518 +476519 +476544 +476545 +476546 +476547 +476548 +476549 +476550 +476551 +476576 +476577 +476578 +476579 +476580 +476581 +476582 +476583 +476608 +476609 +476610 +476611 +476612 +476613 +476614 +476615 +476640 +476641 +476642 +476643 +476644 +476645 +476646 +476647 +476672 +476673 +476674 +476675 +476676 +476677 +476678 +476679 +476704 +476705 +476706 +476707 +476708 +476709 +476710 +476711 +476736 +476737 +476738 +476739 +476740 +476741 +476742 +476743 +476768 +476769 +476770 +476771 +476772 +476773 +476774 +476775 +476800 +476801 +476802 +476803 +476804 +476805 +476806 +476807 +476832 +476833 +476834 +476835 +476836 +476837 +476838 +476839 +476864 +476865 +476866 +476867 +476868 +476869 +476870 +476871 +476896 +476897 +476898 +476899 +476900 +476901 +476902 +476903 +476928 +476929 +476930 +476931 +476932 +476933 +476934 +476935 +476960 +476961 +476962 +476963 +476964 +476965 +476966 +476967 +476992 +476993 +476994 +476995 +476996 +476997 +476998 +476999 +477024 +477025 +477026 +477027 +477028 +477029 +477030 +477031 +477056 +477057 +477058 +477059 +477060 +477061 +477062 +477063 +477088 +477089 +477090 +477091 +477092 +477093 +477094 +477095 +477120 +477121 +477122 +477123 +477124 +477125 +477126 +477127 +477152 +477153 +477154 +477155 +477156 +477157 +477158 +477159 +477184 +477185 +477186 +477187 +477188 +477189 +477190 +477191 +477216 +477217 +477218 +477219 +477220 +477221 +477222 +477223 +477248 +477249 +477250 +477251 +477252 +477253 +477254 +477255 +477280 +477281 +477282 +477283 +477284 +477285 +477286 +477287 +477312 +477313 +477314 +477315 +477316 +477317 +477318 +477319 +477344 +477345 +477346 +477347 +477348 +477349 +477350 +477351 +477376 +477377 +477378 +477379 +477380 +477381 +477382 +477383 +477408 +477409 +477410 +477411 +477412 +477413 +477414 +477415 +477440 +477441 +477442 +477443 +477444 +477445 +477446 +477447 +477472 +477473 +477474 +477475 +477476 +477477 +477478 +477479 +477504 +477505 +477506 +477507 +477508 +477509 +477510 +477511 +477536 +477537 +477538 +477539 +477540 +477541 +477542 +477543 +477568 +477569 +477570 +477571 +477572 +477573 +477574 +477575 +477600 +477601 +477602 +477603 +477604 +477605 +477606 +477607 +477632 +477633 +477634 +477635 +477636 +477637 +477638 +477639 +477664 +477665 +477666 +477667 +477668 +477669 +477670 +477671 +477696 +477697 +477698 +477699 +477700 +477701 +477702 +477703 +477728 +477729 +477730 +477731 +477732 +477733 +477734 +477735 +477760 +477761 +477762 +477763 +477764 +477765 +477766 +477767 +477792 +477793 +477794 +477795 +477796 +477797 +477798 +477799 +477824 +477825 +477826 +477827 +477828 +477829 +477830 +477831 +477856 +477857 +477858 +477859 +477860 +477861 +477862 +477863 +477888 +477889 +477890 +477891 +477892 +477893 +477894 +477895 +477920 +477921 +477922 +477923 +477924 +477925 +477926 +477927 +477952 +477953 +477954 +477955 +477956 +477957 +477958 +477959 +477984 +477985 +477986 +477987 +477988 +477989 +477990 +477991 +478016 +478017 +478018 +478019 +478020 +478021 +478022 +478023 +478048 +478049 +478050 +478051 +478052 +478053 +478054 +478055 +478080 +478081 +478082 +478083 +478084 +478085 +478086 +478087 +478112 +478113 +478114 +478115 +478116 +478117 +478118 +478119 +478144 +478145 +478146 +478147 +478148 +478149 +478150 +478151 +478176 +478177 +478178 +478179 +478180 +478181 +478182 +478183 +478208 +478209 +478210 +478211 +478212 +478213 +478214 +478215 +478240 +478241 +478242 +478243 +478244 +478245 +478246 +478247 +478272 +478273 +478274 +478275 +478276 +478277 +478278 +478279 +478304 +478305 +478306 +478307 +478308 +478309 +478310 +478311 +478336 +478337 +478338 +478339 +478340 +478341 +478342 +478343 +478368 +478369 +478370 +478371 +478372 +478373 +478374 +478375 +478400 +478401 +478402 +478403 +478404 +478405 +478406 +478407 +478432 +478433 +478434 +478435 +478436 +478437 +478438 +478439 +478464 +478465 +478466 +478467 +478468 +478469 +478470 +478471 +478496 +478497 +478498 +478499 +478500 +478501 +478502 +478503 +478528 +478529 +478530 +478531 +478532 +478533 +478534 +478535 +478560 +478561 +478562 +478563 +478564 +478565 +478566 +478567 +478592 +478593 +478594 +478595 +478596 +478597 +478598 +478599 +478624 +478625 +478626 +478627 +478628 +478629 +478630 +478631 +478656 +478657 +478658 +478659 +478660 +478661 +478662 +478663 +478688 +478689 +478690 +478691 +478692 +478693 +478694 +478695 +478720 +478721 +478722 +478723 +478724 +478725 +478726 +478727 +478752 +478753 +478754 +478755 +478756 +478757 +478758 +478759 +478784 +478785 +478786 +478787 +478788 +478789 +478790 +478791 +478816 +478817 +478818 +478819 +478820 +478821 +478822 +478823 +478848 +478849 +478850 +478851 +478852 +478853 +478854 +478855 +478880 +478881 +478882 +478883 +478884 +478885 +478886 +478887 +478912 +478913 +478914 +478915 +478916 +478917 +478918 +478919 +478944 +478945 +478946 +478947 +478948 +478949 +478950 +478951 +478976 +478977 +478978 +478979 +478980 +478981 +478982 +478983 +479008 +479009 +479010 +479011 +479012 +479013 +479014 +479015 +479040 +479041 +479042 +479043 +479044 +479045 +479046 +479047 +479072 +479073 +479074 +479075 +479076 +479077 +479078 +479079 +479104 +479105 +479106 +479107 +479108 +479109 +479110 +479111 +479136 +479137 +479138 +479139 +479140 +479141 +479142 +479143 +479168 +479169 +479170 +479171 +479172 +479173 +479174 +479175 +479200 +479201 +479202 +479203 +479204 +479205 +479206 +479207 +479232 +479233 +479234 +479235 +479236 +479237 +479238 +479239 +479264 +479265 +479266 +479267 +479268 +479269 +479270 +479271 +479296 +479297 +479298 +479299 +479300 +479301 +479302 +479303 +479328 +479329 +479330 +479331 +479332 +479333 +479334 +479335 +479360 +479361 +479362 +479363 +479364 +479365 +479366 +479367 +479392 +479393 +479394 +479395 +479396 +479397 +479398 +479399 +479424 +479425 +479426 +479427 +479428 +479429 +479430 +479431 +479456 +479457 +479458 +479459 +479460 +479461 +479462 +479463 +479488 +479489 +479490 +479491 +479492 +479493 +479494 +479495 +479520 +479521 +479522 +479523 +479524 +479525 +479526 +479527 +479552 +479553 +479554 +479555 +479556 +479557 +479558 +479559 +479584 +479585 +479586 +479587 +479588 +479589 +479590 +479591 +479616 +479617 +479618 +479619 +479620 +479621 +479622 +479623 +479648 +479649 +479650 +479651 +479652 +479653 +479654 +479655 +479680 +479681 +479682 +479683 +479684 +479685 +479686 +479687 +479712 +479713 +479714 +479715 +479716 +479717 +479718 +479719 +479744 +479745 +479746 +479747 +479748 +479749 +479750 +479751 +479776 +479777 +479778 +479779 +479780 +479781 +479782 +479783 +479808 +479809 +479810 +479811 +479812 +479813 +479814 +479815 +479840 +479841 +479842 +479843 +479844 +479845 +479846 +479847 +479872 +479873 +479874 +479875 +479876 +479877 +479878 +479879 +479904 +479905 +479906 +479907 +479908 +479909 +479910 +479911 +479936 +479937 +479938 +479939 +479940 +479941 +479942 +479943 +479968 +479969 +479970 +479971 +479972 +479973 +479974 +479975 +480000 +480001 +480002 +480003 +480004 +480005 +480006 +480007 +480032 +480033 +480034 +480035 +480036 +480037 +480038 +480039 +480064 +480065 +480066 +480067 +480068 +480069 +480070 +480071 +480096 +480097 +480098 +480099 +480100 +480101 +480102 +480103 +480128 +480129 +480130 +480131 +480132 +480133 +480134 +480135 +480160 +480161 +480162 +480163 +480164 +480165 +480166 +480167 +480192 +480193 +480194 +480195 +480196 +480197 +480198 +480199 +480224 +480225 +480226 +480227 +480228 +480229 +480230 +480231 +480256 +480257 +480258 +480259 +480260 +480261 +480262 +480263 +480288 +480289 +480290 +480291 +480292 +480293 +480294 +480295 +480320 +480321 +480322 +480323 +480324 +480325 +480326 +480327 +480352 +480353 +480354 +480355 +480356 +480357 +480358 +480359 +480384 +480385 +480386 +480387 +480388 +480389 +480390 +480391 +480416 +480417 +480418 +480419 +480420 +480421 +480422 +480423 +480448 +480449 +480450 +480451 +480452 +480453 +480454 +480455 +480480 +480481 +480482 +480483 +480484 +480485 +480486 +480487 +480512 +480513 +480514 +480515 +480516 +480517 +480518 +480519 +480544 +480545 +480546 +480547 +480548 +480549 +480550 +480551 +480576 +480577 +480578 +480579 +480580 +480581 +480582 +480583 +480608 +480609 +480610 +480611 +480612 +480613 +480614 +480615 +480640 +480641 +480642 +480643 +480644 +480645 +480646 +480647 +480672 +480673 +480674 +480675 +480676 +480677 +480678 +480679 +480704 +480705 +480706 +480707 +480708 +480709 +480710 +480711 +480736 +480737 +480738 +480739 +480740 +480741 +480742 +480743 +480768 +480769 +480770 +480771 +480772 +480773 +480774 +480775 +480800 +480801 +480802 +480803 +480804 +480805 +480806 +480807 +480832 +480833 +480834 +480835 +480836 +480837 +480838 +480839 +480864 +480865 +480866 +480867 +480868 +480869 +480870 +480871 +480896 +480897 +480898 +480899 +480900 +480901 +480902 +480903 +480928 +480929 +480930 +480931 +480932 +480933 +480934 +480935 +480960 +480961 +480962 +480963 +480964 +480965 +480966 +480967 +480992 +480993 +480994 +480995 +480996 +480997 +480998 +480999 +481024 +481025 +481026 +481027 +481028 +481029 +481030 +481031 +481056 +481057 +481058 +481059 +481060 +481061 +481062 +481063 +481088 +481089 +481090 +481091 +481092 +481093 +481094 +481095 +481120 +481121 +481122 +481123 +481124 +481125 +481126 +481127 +481152 +481153 +481154 +481155 +481156 +481157 +481158 +481159 +481184 +481185 +481186 +481187 +481188 +481189 +481190 +481191 +481216 +481217 +481218 +481219 +481220 +481221 +481222 +481223 +481248 +481249 +481250 +481251 +481252 +481253 +481254 +481255 +481280 +481281 +481282 +481283 +481284 +481285 +481286 +481287 +481312 +481313 +481314 +481315 +481316 +481317 +481318 +481319 +481344 +481345 +481346 +481347 +481348 +481349 +481350 +481351 +481376 +481377 +481378 +481379 +481380 +481381 +481382 +481383 +481408 +481409 +481410 +481411 +481412 +481413 +481414 +481415 +481440 +481441 +481442 +481443 +481444 +481445 +481446 +481447 +481472 +481473 +481474 +481475 +481476 +481477 +481478 +481479 +481504 +481505 +481506 +481507 +481508 +481509 +481510 +481511 +481536 +481537 +481538 +481539 +481540 +481541 +481542 +481543 +481568 +481569 +481570 +481571 +481572 +481573 +481574 +481575 +481600 +481601 +481602 +481603 +481604 +481605 +481606 +481607 +481632 +481633 +481634 +481635 +481636 +481637 +481638 +481639 +481664 +481665 +481666 +481667 +481668 +481669 +481670 +481671 +481696 +481697 +481698 +481699 +481700 +481701 +481702 +481703 +481728 +481729 +481730 +481731 +481732 +481733 +481734 +481735 +481760 +481761 +481762 +481763 +481764 +481765 +481766 +481767 +481792 +481793 +481794 +481795 +481796 +481797 +481798 +481799 +481824 +481825 +481826 +481827 +481828 +481829 +481830 +481831 +481856 +481857 +481858 +481859 +481860 +481861 +481862 +481863 +481888 +481889 +481890 +481891 +481892 +481893 +481894 +481895 +481920 +481921 +481922 +481923 +481924 +481925 +481926 +481927 +481952 +481953 +481954 +481955 +481956 +481957 +481958 +481959 +481984 +481985 +481986 +481987 +481988 +481989 +481990 +481991 +482016 +482017 +482018 +482019 +482020 +482021 +482022 +482023 +482048 +482049 +482050 +482051 +482052 +482053 +482054 +482055 +482080 +482081 +482082 +482083 +482084 +482085 +482086 +482087 +482112 +482113 +482114 +482115 +482116 +482117 +482118 +482119 +482144 +482145 +482146 +482147 +482148 +482149 +482150 +482151 +482176 +482177 +482178 +482179 +482180 +482181 +482182 +482183 +482208 +482209 +482210 +482211 +482212 +482213 +482214 +482215 +482240 +482241 +482242 +482243 +482244 +482245 +482246 +482247 +482272 +482273 +482274 +482275 +482276 +482277 +482278 +482279 +482304 +482305 +482306 +482307 +482308 +482309 +482310 +482311 +482336 +482337 +482338 +482339 +482340 +482341 +482342 +482343 +482368 +482369 +482370 +482371 +482372 +482373 +482374 +482375 +482400 +482401 +482402 +482403 +482404 +482405 +482406 +482407 +482432 +482433 +482434 +482435 +482436 +482437 +482438 +482439 +482464 +482465 +482466 +482467 +482468 +482469 +482470 +482471 +482496 +482497 +482498 +482499 +482500 +482501 +482502 +482503 +482528 +482529 +482530 +482531 +482532 +482533 +482534 +482535 +482560 +482561 +482562 +482563 +482564 +482565 +482566 +482567 +482592 +482593 +482594 +482595 +482596 +482597 +482598 +482599 +482624 +482625 +482626 +482627 +482628 +482629 +482630 +482631 +482656 +482657 +482658 +482659 +482660 +482661 +482662 +482663 +482688 +482689 +482690 +482691 +482692 +482693 +482694 +482695 +482720 +482721 +482722 +482723 +482724 +482725 +482726 +482727 +482752 +482753 +482754 +482755 +482756 +482757 +482758 +482759 +482784 +482785 +482786 +482787 +482788 +482789 +482790 +482791 +482816 +482817 +482818 +482819 +482820 +482821 +482822 +482823 +482848 +482849 +482850 +482851 +482852 +482853 +482854 +482855 +482880 +482881 +482882 +482883 +482884 +482885 +482886 +482887 +482912 +482913 +482914 +482915 +482916 +482917 +482918 +482919 +482944 +482945 +482946 +482947 +482948 +482949 +482950 +482951 +482976 +482977 +482978 +482979 +482980 +482981 +482982 +482983 +483008 +483009 +483010 +483011 +483012 +483013 +483014 +483015 +483040 +483041 +483042 +483043 +483044 +483045 +483046 +483047 +483072 +483073 +483074 +483075 +483076 +483077 +483078 +483079 +483104 +483105 +483106 +483107 +483108 +483109 +483110 +483111 +483136 +483137 +483138 +483139 +483140 +483141 +483142 +483143 +483168 +483169 +483170 +483171 +483172 +483173 +483174 +483175 +483200 +483201 +483202 +483203 +483204 +483205 +483206 +483207 +483232 +483233 +483234 +483235 +483236 +483237 +483238 +483239 +483264 +483265 +483266 +483267 +483268 +483269 +483270 +483271 +483296 +483297 +483298 +483299 +483300 +483301 +483302 +483303 +483328 +483329 +483330 +483331 +483332 +483333 +483334 +483335 +483360 +483361 +483362 +483363 +483364 +483365 +483366 +483367 +483392 +483393 +483394 +483395 +483396 +483397 +483398 +483399 +483424 +483425 +483426 +483427 +483428 +483429 +483430 +483431 +483456 +483457 +483458 +483459 +483460 +483461 +483462 +483463 +483488 +483489 +483490 +483491 +483492 +483493 +483494 +483495 +483520 +483521 +483522 +483523 +483524 +483525 +483526 +483527 +483552 +483553 +483554 +483555 +483556 +483557 +483558 +483559 +483584 +483585 +483586 +483587 +483588 +483589 +483590 +483591 +483616 +483617 +483618 +483619 +483620 +483621 +483622 +483623 +483648 +483649 +483650 +483651 +483652 +483653 +483654 +483655 +483680 +483681 +483682 +483683 +483684 +483685 +483686 +483687 +483712 +483713 +483714 +483715 +483716 +483717 +483718 +483719 +483744 +483745 +483746 +483747 +483748 +483749 +483750 +483751 +483776 +483777 +483778 +483779 +483780 +483781 +483782 +483783 +483808 +483809 +483810 +483811 +483812 +483813 +483814 +483815 +483840 +483841 +483842 +483843 +483844 +483845 +483846 +483847 +483872 +483873 +483874 +483875 +483876 +483877 +483878 +483879 +483904 +483905 +483906 +483907 +483908 +483909 +483910 +483911 +483936 +483937 +483938 +483939 +483940 +483941 +483942 +483943 +483968 +483969 +483970 +483971 +483972 +483973 +483974 +483975 +484000 +484001 +484002 +484003 +484004 +484005 +484006 +484007 +484032 +484033 +484034 +484035 +484036 +484037 +484038 +484039 +484064 +484065 +484066 +484067 +484068 +484069 +484070 +484071 +484096 +484097 +484098 +484099 +484100 +484101 +484102 +484103 +484128 +484129 +484130 +484131 +484132 +484133 +484134 +484135 +484160 +484161 +484162 +484163 +484164 +484165 +484166 +484167 +484192 +484193 +484194 +484195 +484196 +484197 +484198 +484199 +484224 +484225 +484226 +484227 +484228 +484229 +484230 +484231 +484256 +484257 +484258 +484259 +484260 +484261 +484262 +484263 +484288 +484289 +484290 +484291 +484292 +484293 +484294 +484295 +484320 +484321 +484322 +484323 +484324 +484325 +484326 +484327 +484352 +484353 +484354 +484355 +484356 +484357 +484358 +484359 +484384 +484385 +484386 +484387 +484388 +484389 +484390 +484391 +484416 +484417 +484418 +484419 +484420 +484421 +484422 +484423 +484448 +484449 +484450 +484451 +484452 +484453 +484454 +484455 +484480 +484481 +484482 +484483 +484484 +484485 +484486 +484487 +484512 +484513 +484514 +484515 +484516 +484517 +484518 +484519 +484544 +484545 +484546 +484547 +484548 +484549 +484550 +484551 +484576 +484577 +484578 +484579 +484580 +484581 +484582 +484583 +484608 +484609 +484610 +484611 +484612 +484613 +484614 +484615 +484640 +484641 +484642 +484643 +484644 +484645 +484646 +484647 +484672 +484673 +484674 +484675 +484676 +484677 +484678 +484679 +484704 +484705 +484706 +484707 +484708 +484709 +484710 +484711 +484736 +484737 +484738 +484739 +484740 +484741 +484742 +484743 +484768 +484769 +484770 +484771 +484772 +484773 +484774 +484775 +484800 +484801 +484802 +484803 +484804 +484805 +484806 +484807 +484832 +484833 +484834 +484835 +484836 +484837 +484838 +484839 +484864 +484865 +484866 +484867 +484868 +484869 +484870 +484871 +484896 +484897 +484898 +484899 +484900 +484901 +484902 +484903 +484928 +484929 +484930 +484931 +484932 +484933 +484934 +484935 +484960 +484961 +484962 +484963 +484964 +484965 +484966 +484967 +484992 +484993 +484994 +484995 +484996 +484997 +484998 +484999 +485024 +485025 +485026 +485027 +485028 +485029 +485030 +485031 +485056 +485057 +485058 +485059 +485060 +485061 +485062 +485063 +485088 +485089 +485090 +485091 +485092 +485093 +485094 +485095 +485120 +485121 +485122 +485123 +485124 +485125 +485126 +485127 +485152 +485153 +485154 +485155 +485156 +485157 +485158 +485159 +485184 +485185 +485186 +485187 +485188 +485189 +485190 +485191 +485216 +485217 +485218 +485219 +485220 +485221 +485222 +485223 +485248 +485249 +485250 +485251 +485252 +485253 +485254 +485255 +485280 +485281 +485282 +485283 +485284 +485285 +485286 +485287 +485312 +485313 +485314 +485315 +485316 +485317 +485318 +485319 +485344 +485345 +485346 +485347 +485348 +485349 +485350 +485351 +485376 +485377 +485378 +485379 +485380 +485381 +485382 +485383 +485408 +485409 +485410 +485411 +485412 +485413 +485414 +485415 +485440 +485441 +485442 +485443 +485444 +485445 +485446 +485447 +485472 +485473 +485474 +485475 +485476 +485477 +485478 +485479 +485504 +485505 +485506 +485507 +485508 +485509 +485510 +485511 +485536 +485537 +485538 +485539 +485540 +485541 +485542 +485543 +485568 +485569 +485570 +485571 +485572 +485573 +485574 +485575 +485600 +485601 +485602 +485603 +485604 +485605 +485606 +485607 +485632 +485633 +485634 +485635 +485636 +485637 +485638 +485639 +485664 +485665 +485666 +485667 +485668 +485669 +485670 +485671 +485696 +485697 +485698 +485699 +485700 +485701 +485702 +485703 +485728 +485729 +485730 +485731 +485732 +485733 +485734 +485735 +485760 +485761 +485762 +485763 +485764 +485765 +485766 +485767 +485792 +485793 +485794 +485795 +485796 +485797 +485798 +485799 +485824 +485825 +485826 +485827 +485828 +485829 +485830 +485831 +485856 +485857 +485858 +485859 +485860 +485861 +485862 +485863 +485888 +485889 +485890 +485891 +485892 +485893 +485894 +485895 +485920 +485921 +485922 +485923 +485924 +485925 +485926 +485927 +485952 +485953 +485954 +485955 +485956 +485957 +485958 +485959 +485984 +485985 +485986 +485987 +485988 +485989 +485990 +485991 +486016 +486017 +486018 +486019 +486020 +486021 +486022 +486023 +486048 +486049 +486050 +486051 +486052 +486053 +486054 +486055 +486080 +486081 +486082 +486083 +486084 +486085 +486086 +486087 +486112 +486113 +486114 +486115 +486116 +486117 +486118 +486119 +486144 +486145 +486146 +486147 +486148 +486149 +486150 +486151 +486176 +486177 +486178 +486179 +486180 +486181 +486182 +486183 +486208 +486209 +486210 +486211 +486212 +486213 +486214 +486215 +486240 +486241 +486242 +486243 +486244 +486245 +486246 +486247 +486272 +486273 +486274 +486275 +486276 +486277 +486278 +486279 +486304 +486305 +486306 +486307 +486308 +486309 +486310 +486311 +486336 +486337 +486338 +486339 +486340 +486341 +486342 +486343 +486368 +486369 +486370 +486371 +486372 +486373 +486374 +486375 +486400 +486401 +486402 +486403 +486404 +486405 +486406 +486407 +486432 +486433 +486434 +486435 +486436 +486437 +486438 +486439 +486464 +486465 +486466 +486467 +486468 +486469 +486470 +486471 +486496 +486497 +486498 +486499 +486500 +486501 +486502 +486503 +486528 +486529 +486530 +486531 +486532 +486533 +486534 +486535 +486560 +486561 +486562 +486563 +486564 +486565 +486566 +486567 +486592 +486593 +486594 +486595 +486596 +486597 +486598 +486599 +486624 +486625 +486626 +486627 +486628 +486629 +486630 +486631 +486656 +486657 +486658 +486659 +486660 +486661 +486662 +486663 +486688 +486689 +486690 +486691 +486692 +486693 +486694 +486695 +486720 +486721 +486722 +486723 +486724 +486725 +486726 +486727 +486752 +486753 +486754 +486755 +486756 +486757 +486758 +486759 +486784 +486785 +486786 +486787 +486788 +486789 +486790 +486791 +486816 +486817 +486818 +486819 +486820 +486821 +486822 +486823 +486848 +486849 +486850 +486851 +486852 +486853 +486854 +486855 +486880 +486881 +486882 +486883 +486884 +486885 +486886 +486887 +486912 +486913 +486914 +486915 +486916 +486917 +486918 +486919 +486944 +486945 +486946 +486947 +486948 +486949 +486950 +486951 +486976 +486977 +486978 +486979 +486980 +486981 +486982 +486983 +487008 +487009 +487010 +487011 +487012 +487013 +487014 +487015 +487040 +487041 +487042 +487043 +487044 +487045 +487046 +487047 +487072 +487073 +487074 +487075 +487076 +487077 +487078 +487079 +487104 +487105 +487106 +487107 +487108 +487109 +487110 +487111 +487136 +487137 +487138 +487139 +487140 +487141 +487142 +487143 +487168 +487169 +487170 +487171 +487172 +487173 +487174 +487175 +487200 +487201 +487202 +487203 +487204 +487205 +487206 +487207 +487232 +487233 +487234 +487235 +487236 +487237 +487238 +487239 +487264 +487265 +487266 +487267 +487268 +487269 +487270 +487271 +487296 +487297 +487298 +487299 +487300 +487301 +487302 +487303 +487328 +487329 +487330 +487331 +487332 +487333 +487334 +487335 +487360 +487361 +487362 +487363 +487364 +487365 +487366 +487367 +487392 +487393 +487394 +487395 +487396 +487397 +487398 +487399 +487424 +487425 +487426 +487427 +487428 +487429 +487430 +487431 +487456 +487457 +487458 +487459 +487460 +487461 +487462 +487463 +487488 +487489 +487490 +487491 +487492 +487493 +487494 +487495 +487520 +487521 +487522 +487523 +487524 +487525 +487526 +487527 +487552 +487553 +487554 +487555 +487556 +487557 +487558 +487559 +487584 +487585 +487586 +487587 +487588 +487589 +487590 +487591 +487616 +487617 +487618 +487619 +487620 +487621 +487622 +487623 +487648 +487649 +487650 +487651 +487652 +487653 +487654 +487655 +487680 +487681 +487682 +487683 +487684 +487685 +487686 +487687 +487712 +487713 +487714 +487715 +487716 +487717 +487718 +487719 +487744 +487745 +487746 +487747 +487748 +487749 +487750 +487751 +487776 +487777 +487778 +487779 +487780 +487781 +487782 +487783 +487808 +487809 +487810 +487811 +487812 +487813 +487814 +487815 +487840 +487841 +487842 +487843 +487844 +487845 +487846 +487847 +487872 +487873 +487874 +487875 +487876 +487877 +487878 +487879 +487904 +487905 +487906 +487907 +487908 +487909 +487910 +487911 +487936 +487937 +487938 +487939 +487940 +487941 +487942 +487943 +487968 +487969 +487970 +487971 +487972 +487973 +487974 +487975 +488000 +488001 +488002 +488003 +488004 +488005 +488006 +488007 +488032 +488033 +488034 +488035 +488036 +488037 +488038 +488039 +488064 +488065 +488066 +488067 +488068 +488069 +488070 +488071 +488096 +488097 +488098 +488099 +488100 +488101 +488102 +488103 +488128 +488129 +488130 +488131 +488132 +488133 +488134 +488135 +488160 +488161 +488162 +488163 +488164 +488165 +488166 +488167 +488192 +488193 +488194 +488195 +488196 +488197 +488198 +488199 +488224 +488225 +488226 +488227 +488228 +488229 +488230 +488231 +488256 +488257 +488258 +488259 +488260 +488261 +488262 +488263 +488288 +488289 +488290 +488291 +488292 +488293 +488294 +488295 +488320 +488321 +488322 +488323 +488324 +488325 +488326 +488327 +488352 +488353 +488354 +488355 +488356 +488357 +488358 +488359 +488384 +488385 +488386 +488387 +488388 +488389 +488390 +488391 +488416 +488417 +488418 +488419 +488420 +488421 +488422 +488423 +488448 +488449 +488450 +488451 +488452 +488453 +488454 +488455 +488480 +488481 +488482 +488483 +488484 +488485 +488486 +488487 +488512 +488513 +488514 +488515 +488516 +488517 +488518 +488519 +488544 +488545 +488546 +488547 +488548 +488549 +488550 +488551 +488576 +488577 +488578 +488579 +488580 +488581 +488582 +488583 +488608 +488609 +488610 +488611 +488612 +488613 +488614 +488615 +488640 +488641 +488642 +488643 +488644 +488645 +488646 +488647 +488672 +488673 +488674 +488675 +488676 +488677 +488678 +488679 +488704 +488705 +488706 +488707 +488708 +488709 +488710 +488711 +488736 +488737 +488738 +488739 +488740 +488741 +488742 +488743 +488768 +488769 +488770 +488771 +488772 +488773 +488774 +488775 +488800 +488801 +488802 +488803 +488804 +488805 +488806 +488807 +488832 +488833 +488834 +488835 +488836 +488837 +488838 +488839 +488864 +488865 +488866 +488867 +488868 +488869 +488870 +488871 +488896 +488897 +488898 +488899 +488900 +488901 +488902 +488903 +488928 +488929 +488930 +488931 +488932 +488933 +488934 +488935 +488960 +488961 +488962 +488963 +488964 +488965 +488966 +488967 +488992 +488993 +488994 +488995 +488996 +488997 +488998 +488999 +489024 +489025 +489026 +489027 +489028 +489029 +489030 +489031 +489056 +489057 +489058 +489059 +489060 +489061 +489062 +489063 +489088 +489089 +489090 +489091 +489092 +489093 +489094 +489095 +489120 +489121 +489122 +489123 +489124 +489125 +489126 +489127 +489152 +489153 +489154 +489155 +489156 +489157 +489158 +489159 +489184 +489185 +489186 +489187 +489188 +489189 +489190 +489191 +489216 +489217 +489218 +489219 +489220 +489221 +489222 +489223 +489248 +489249 +489250 +489251 +489252 +489253 +489254 +489255 +489280 +489281 +489282 +489283 +489284 +489285 +489286 +489287 +489312 +489313 +489314 +489315 +489316 +489317 +489318 +489319 +489344 +489345 +489346 +489347 +489348 +489349 +489350 +489351 +489376 +489377 +489378 +489379 +489380 +489381 +489382 +489383 +489408 +489409 +489410 +489411 +489412 +489413 +489414 +489415 +489440 +489441 +489442 +489443 +489444 +489445 +489446 +489447 +489472 +489473 +489474 +489475 +489476 +489477 +489478 +489479 +489504 +489505 +489506 +489507 +489508 +489509 +489510 +489511 +489536 +489537 +489538 +489539 +489540 +489541 +489542 +489543 +489568 +489569 +489570 +489571 +489572 +489573 +489574 +489575 +489600 +489601 +489602 +489603 +489604 +489605 +489606 +489607 +489632 +489633 +489634 +489635 +489636 +489637 +489638 +489639 +489664 +489665 +489666 +489667 +489668 +489669 +489670 +489671 +489696 +489697 +489698 +489699 +489700 +489701 +489702 +489703 +489728 +489729 +489730 +489731 +489732 +489733 +489734 +489735 +489760 +489761 +489762 +489763 +489764 +489765 +489766 +489767 +489792 +489793 +489794 +489795 +489796 +489797 +489798 +489799 +489824 +489825 +489826 +489827 +489828 +489829 +489830 +489831 +489856 +489857 +489858 +489859 +489860 +489861 +489862 +489863 +489888 +489889 +489890 +489891 +489892 +489893 +489894 +489895 +489920 +489921 +489922 +489923 +489924 +489925 +489926 +489927 +489952 +489953 +489954 +489955 +489956 +489957 +489958 +489959 +489984 +489985 +489986 +489987 +489988 +489989 +489990 +489991 +490016 +490017 +490018 +490019 +490020 +490021 +490022 +490023 +490048 +490049 +490050 +490051 +490052 +490053 +490054 +490055 +490080 +490081 +490082 +490083 +490084 +490085 +490086 +490087 +490112 +490113 +490114 +490115 +490116 +490117 +490118 +490119 +490144 +490145 +490146 +490147 +490148 +490149 +490150 +490151 +490176 +490177 +490178 +490179 +490180 +490181 +490182 +490183 +490208 +490209 +490210 +490211 +490212 +490213 +490214 +490215 +490240 +490241 +490242 +490243 +490244 +490245 +490246 +490247 +490272 +490273 +490274 +490275 +490276 +490277 +490278 +490279 +490304 +490305 +490306 +490307 +490308 +490309 +490310 +490311 +490336 +490337 +490338 +490339 +490340 +490341 +490342 +490343 +490368 +490369 +490370 +490371 +490372 +490373 +490374 +490375 +490400 +490401 +490402 +490403 +490404 +490405 +490406 +490407 +490432 +490433 +490434 +490435 +490436 +490437 +490438 +490439 +490464 +490465 +490466 +490467 +490468 +490469 +490470 +490471 +490496 +490497 +490498 +490499 +490500 +490501 +490502 +490503 +490528 +490529 +490530 +490531 +490532 +490533 +490534 +490535 +490560 +490561 +490562 +490563 +490564 +490565 +490566 +490567 +490592 +490593 +490594 +490595 +490596 +490597 +490598 +490599 +490624 +490625 +490626 +490627 +490628 +490629 +490630 +490631 +490656 +490657 +490658 +490659 +490660 +490661 +490662 +490663 +490688 +490689 +490690 +490691 +490692 +490693 +490694 +490695 +490720 +490721 +490722 +490723 +490724 +490725 +490726 +490727 +490752 +490753 +490754 +490755 +490756 +490757 +490758 +490759 +490784 +490785 +490786 +490787 +490788 +490789 +490790 +490791 +490816 +490817 +490818 +490819 +490820 +490821 +490822 +490823 +490848 +490849 +490850 +490851 +490852 +490853 +490854 +490855 +490880 +490881 +490882 +490883 +490884 +490885 +490886 +490887 +490912 +490913 +490914 +490915 +490916 +490917 +490918 +490919 +490944 +490945 +490946 +490947 +490948 +490949 +490950 +490951 +490976 +490977 +490978 +490979 +490980 +490981 +490982 +490983 +491008 +491009 +491010 +491011 +491012 +491013 +491014 +491015 +491040 +491041 +491042 +491043 +491044 +491045 +491046 +491047 +491072 +491073 +491074 +491075 +491076 +491077 +491078 +491079 +491104 +491105 +491106 +491107 +491108 +491109 +491110 +491111 +491136 +491137 +491138 +491139 +491140 +491141 +491142 +491143 +491168 +491169 +491170 +491171 +491172 +491173 +491174 +491175 +491200 +491201 +491202 +491203 +491204 +491205 +491206 +491207 +491232 +491233 +491234 +491235 +491236 +491237 +491238 +491239 +491264 +491265 +491266 +491267 +491268 +491269 +491270 +491271 +491296 +491297 +491298 +491299 +491300 +491301 +491302 +491303 +491328 +491329 +491330 +491331 +491332 +491333 +491334 +491335 +491360 +491361 +491362 +491363 +491364 +491365 +491366 +491367 +491392 +491393 +491394 +491395 +491396 +491397 +491398 +491399 +491424 +491425 +491426 +491427 +491428 +491429 +491430 +491431 +491456 +491457 +491458 +491459 +491460 +491461 +491462 +491463 +491488 +491489 +491490 +491491 +491492 +491493 +491494 +491495 +491520 +491521 +491522 +491523 +491524 +491525 +491526 +491527 +491552 +491553 +491554 +491555 +491556 +491557 +491558 +491559 +491584 +491585 +491586 +491587 +491588 +491589 +491590 +491591 +491616 +491617 +491618 +491619 +491620 +491621 +491622 +491623 +491648 +491649 +491650 +491651 +491652 +491653 +491654 +491655 +491680 +491681 +491682 +491683 +491684 +491685 +491686 +491687 +491712 +491713 +491714 +491715 +491716 +491717 +491718 +491719 +491744 +491745 +491746 +491747 +491748 +491749 +491750 +491751 +491776 +491777 +491778 +491779 +491780 +491781 +491782 +491783 +491808 +491809 +491810 +491811 +491812 +491813 +491814 +491815 +491840 +491841 +491842 +491843 +491844 +491845 +491846 +491847 +491872 +491873 +491874 +491875 +491876 +491877 +491878 +491879 +491904 +491905 +491906 +491907 +491908 +491909 +491910 +491911 +491936 +491937 +491938 +491939 +491940 +491941 +491942 +491943 +491968 +491969 +491970 +491971 +491972 +491973 +491974 +491975 +492000 +492001 +492002 +492003 +492004 +492005 +492006 +492007 +492032 +492033 +492034 +492035 +492036 +492037 +492038 +492039 +492064 +492065 +492066 +492067 +492068 +492069 +492070 +492071 +492096 +492097 +492098 +492099 +492100 +492101 +492102 +492103 +492128 +492129 +492130 +492131 +492132 +492133 +492134 +492135 +492160 +492161 +492162 +492163 +492164 +492165 +492166 +492167 +492192 +492193 +492194 +492195 +492196 +492197 +492198 +492199 +492224 +492225 +492226 +492227 +492228 +492229 +492230 +492231 +492256 +492257 +492258 +492259 +492260 +492261 +492262 +492263 +492288 +492289 +492290 +492291 +492292 +492293 +492294 +492295 +492320 +492321 +492322 +492323 +492324 +492325 +492326 +492327 +492352 +492353 +492354 +492355 +492356 +492357 +492358 +492359 +492384 +492385 +492386 +492387 +492388 +492389 +492390 +492391 +492416 +492417 +492418 +492419 +492420 +492421 +492422 +492423 +492448 +492449 +492450 +492451 +492452 +492453 +492454 +492455 +492480 +492481 +492482 +492483 +492484 +492485 +492486 +492487 +492512 +492513 +492514 +492515 +492516 +492517 +492518 +492519 +492544 +492545 +492546 +492547 +492548 +492549 +492550 +492551 +492576 +492577 +492578 +492579 +492580 +492581 +492582 +492583 +492608 +492609 +492610 +492611 +492612 +492613 +492614 +492615 +492640 +492641 +492642 +492643 +492644 +492645 +492646 +492647 +492672 +492673 +492674 +492675 +492676 +492677 +492678 +492679 +492704 +492705 +492706 +492707 +492708 +492709 +492710 +492711 +492736 +492737 +492738 +492739 +492740 +492741 +492742 +492743 +492768 +492769 +492770 +492771 +492772 +492773 +492774 +492775 +492800 +492801 +492802 +492803 +492804 +492805 +492806 +492807 +492832 +492833 +492834 +492835 +492836 +492837 +492838 +492839 +492864 +492865 +492866 +492867 +492868 +492869 +492870 +492871 +492896 +492897 +492898 +492899 +492900 +492901 +492902 +492903 +492928 +492929 +492930 +492931 +492932 +492933 +492934 +492935 +492960 +492961 +492962 +492963 +492964 +492965 +492966 +492967 +492992 +492993 +492994 +492995 +492996 +492997 +492998 +492999 +493024 +493025 +493026 +493027 +493028 +493029 +493030 +493031 +493056 +493057 +493058 +493059 +493060 +493061 +493062 +493063 +493088 +493089 +493090 +493091 +493092 +493093 +493094 +493095 +493120 +493121 +493122 +493123 +493124 +493125 +493126 +493127 +493152 +493153 +493154 +493155 +493156 +493157 +493158 +493159 +493184 +493185 +493186 +493187 +493188 +493189 +493190 +493191 +493216 +493217 +493218 +493219 +493220 +493221 +493222 +493223 +493248 +493249 +493250 +493251 +493252 +493253 +493254 +493255 +493280 +493281 +493282 +493283 +493284 +493285 +493286 +493287 +493312 +493313 +493314 +493315 +493316 +493317 +493318 +493319 +493344 +493345 +493346 +493347 +493348 +493349 +493350 +493351 +493376 +493377 +493378 +493379 +493380 +493381 +493382 +493383 +493408 +493409 +493410 +493411 +493412 +493413 +493414 +493415 +493440 +493441 +493442 +493443 +493444 +493445 +493446 +493447 +493472 +493473 +493474 +493475 +493476 +493477 +493478 +493479 +493504 +493505 +493506 +493507 +493508 +493509 +493510 +493511 +493536 +493537 +493538 +493539 +493540 +493541 +493542 +493543 +493568 +493569 +493570 +493571 +493572 +493573 +493574 +493575 +493600 +493601 +493602 +493603 +493604 +493605 +493606 +493607 +493632 +493633 +493634 +493635 +493636 +493637 +493638 +493639 +493664 +493665 +493666 +493667 +493668 +493669 +493670 +493671 +493696 +493697 +493698 +493699 +493700 +493701 +493702 +493703 +493728 +493729 +493730 +493731 +493732 +493733 +493734 +493735 +493760 +493761 +493762 +493763 +493764 +493765 +493766 +493767 +493792 +493793 +493794 +493795 +493796 +493797 +493798 +493799 +493824 +493825 +493826 +493827 +493828 +493829 +493830 +493831 +493856 +493857 +493858 +493859 +493860 +493861 +493862 +493863 +493888 +493889 +493890 +493891 +493892 +493893 +493894 +493895 +493920 +493921 +493922 +493923 +493924 +493925 +493926 +493927 +493952 +493953 +493954 +493955 +493956 +493957 +493958 +493959 +493984 +493985 +493986 +493987 +493988 +493989 +493990 +493991 +494016 +494017 +494018 +494019 +494020 +494021 +494022 +494023 +494048 +494049 +494050 +494051 +494052 +494053 +494054 +494055 +494080 +494081 +494082 +494083 +494084 +494085 +494086 +494087 +494112 +494113 +494114 +494115 +494116 +494117 +494118 +494119 +494144 +494145 +494146 +494147 +494148 +494149 +494150 +494151 +494176 +494177 +494178 +494179 +494180 +494181 +494182 +494183 +494208 +494209 +494210 +494211 +494212 +494213 +494214 +494215 +494240 +494241 +494242 +494243 +494244 +494245 +494246 +494247 +494272 +494273 +494274 +494275 +494276 +494277 +494278 +494279 +494304 +494305 +494306 +494307 +494308 +494309 +494310 +494311 +494336 +494337 +494338 +494339 +494340 +494341 +494342 +494343 +494368 +494369 +494370 +494371 +494372 +494373 +494374 +494375 +494400 +494401 +494402 +494403 +494404 +494405 +494406 +494407 +494432 +494433 +494434 +494435 +494436 +494437 +494438 +494439 +494464 +494465 +494466 +494467 +494468 +494469 +494470 +494471 +494496 +494497 +494498 +494499 +494500 +494501 +494502 +494503 +494528 +494529 +494530 +494531 +494532 +494533 +494534 +494535 +494560 +494561 +494562 +494563 +494564 +494565 +494566 +494567 +494592 +494593 +494594 +494595 +494596 +494597 +494598 +494599 +494624 +494625 +494626 +494627 +494628 +494629 +494630 +494631 +494656 +494657 +494658 +494659 +494660 +494661 +494662 +494663 +494688 +494689 +494690 +494691 +494692 +494693 +494694 +494695 +494720 +494721 +494722 +494723 +494724 +494725 +494726 +494727 +494752 +494753 +494754 +494755 +494756 +494757 +494758 +494759 +494784 +494785 +494786 +494787 +494788 +494789 +494790 +494791 +494816 +494817 +494818 +494819 +494820 +494821 +494822 +494823 +494848 +494849 +494850 +494851 +494852 +494853 +494854 +494855 +494880 +494881 +494882 +494883 +494884 +494885 +494886 +494887 +494912 +494913 +494914 +494915 +494916 +494917 +494918 +494919 +494944 +494945 +494946 +494947 +494948 +494949 +494950 +494951 +494976 +494977 +494978 +494979 +494980 +494981 +494982 +494983 +495008 +495009 +495010 +495011 +495012 +495013 +495014 +495015 +495040 +495041 +495042 +495043 +495044 +495045 +495046 +495047 +495072 +495073 +495074 +495075 +495076 +495077 +495078 +495079 +495104 +495105 +495106 +495107 +495108 +495109 +495110 +495111 +495136 +495137 +495138 +495139 +495140 +495141 +495142 +495143 +495168 +495169 +495170 +495171 +495172 +495173 +495174 +495175 +495200 +495201 +495202 +495203 +495204 +495205 +495206 +495207 +495232 +495233 +495234 +495235 +495236 +495237 +495238 +495239 +495264 +495265 +495266 +495267 +495268 +495269 +495270 +495271 +495296 +495297 +495298 +495299 +495300 +495301 +495302 +495303 +495328 +495329 +495330 +495331 +495332 +495333 +495334 +495335 +495360 +495361 +495362 +495363 +495364 +495365 +495366 +495367 +495392 +495393 +495394 +495395 +495396 +495397 +495398 +495399 +495424 +495425 +495426 +495427 +495428 +495429 +495430 +495431 +495456 +495457 +495458 +495459 +495460 +495461 +495462 +495463 +495488 +495489 +495490 +495491 +495492 +495493 +495494 +495495 +495520 +495521 +495522 +495523 +495524 +495525 +495526 +495527 +495552 +495553 +495554 +495555 +495556 +495557 +495558 +495559 +495584 +495585 +495586 +495587 +495588 +495589 +495590 +495591 +495616 +495617 +495618 +495619 +495620 +495621 +495622 +495623 +495648 +495649 +495650 +495651 +495652 +495653 +495654 +495655 +495680 +495681 +495682 +495683 +495684 +495685 +495686 +495687 +495712 +495713 +495714 +495715 +495716 +495717 +495718 +495719 +495744 +495745 +495746 +495747 +495748 +495749 +495750 +495751 +495776 +495777 +495778 +495779 +495780 +495781 +495782 +495783 +495808 +495809 +495810 +495811 +495812 +495813 +495814 +495815 +495840 +495841 +495842 +495843 +495844 +495845 +495846 +495847 +495872 +495873 +495874 +495875 +495876 +495877 +495878 +495879 +495904 +495905 +495906 +495907 +495908 +495909 +495910 +495911 +495936 +495937 +495938 +495939 +495940 +495941 +495942 +495943 +495968 +495969 +495970 +495971 +495972 +495973 +495974 +495975 +496000 +496001 +496002 +496003 +496004 +496005 +496006 +496007 +496032 +496033 +496034 +496035 +496036 +496037 +496038 +496039 +496064 +496065 +496066 +496067 +496068 +496069 +496070 +496071 +496096 +496097 +496098 +496099 +496100 +496101 +496102 +496103 +496128 +496129 +496130 +496131 +496132 +496133 +496134 +496135 +496160 +496161 +496162 +496163 +496164 +496165 +496166 +496167 +496192 +496193 +496194 +496195 +496196 +496197 +496198 +496199 +496224 +496225 +496226 +496227 +496228 +496229 +496230 +496231 +496256 +496257 +496258 +496259 +496260 +496261 +496262 +496263 +496288 +496289 +496290 +496291 +496292 +496293 +496294 +496295 +496320 +496321 +496322 +496323 +496324 +496325 +496326 +496327 +496352 +496353 +496354 +496355 +496356 +496357 +496358 +496359 +496384 +496385 +496386 +496387 +496388 +496389 +496390 +496391 +496416 +496417 +496418 +496419 +496420 +496421 +496422 +496423 +496448 +496449 +496450 +496451 +496452 +496453 +496454 +496455 +496480 +496481 +496482 +496483 +496484 +496485 +496486 +496487 +496512 +496513 +496514 +496515 +496516 +496517 +496518 +496519 +496544 +496545 +496546 +496547 +496548 +496549 +496550 +496551 +496576 +496577 +496578 +496579 +496580 +496581 +496582 +496583 +496608 +496609 +496610 +496611 +496612 +496613 +496614 +496615 +496640 +496641 +496642 +496643 +496644 +496645 +496646 +496647 +496672 +496673 +496674 +496675 +496676 +496677 +496678 +496679 +496704 +496705 +496706 +496707 +496708 +496709 +496710 +496711 +496736 +496737 +496738 +496739 +496740 +496741 +496742 +496743 +496768 +496769 +496770 +496771 +496772 +496773 +496774 +496775 +496800 +496801 +496802 +496803 +496804 +496805 +496806 +496807 +496832 +496833 +496834 +496835 +496836 +496837 +496838 +496839 +496864 +496865 +496866 +496867 +496868 +496869 +496870 +496871 +496896 +496897 +496898 +496899 +496900 +496901 +496902 +496903 +496928 +496929 +496930 +496931 +496932 +496933 +496934 +496935 +496960 +496961 +496962 +496963 +496964 +496965 +496966 +496967 +496992 +496993 +496994 +496995 +496996 +496997 +496998 +496999 +497024 +497025 +497026 +497027 +497028 +497029 +497030 +497031 +497056 +497057 +497058 +497059 +497060 +497061 +497062 +497063 +497088 +497089 +497090 +497091 +497092 +497093 +497094 +497095 +497120 +497121 +497122 +497123 +497124 +497125 +497126 +497127 +497152 +497153 +497154 +497155 +497156 +497157 +497158 +497159 +497184 +497185 +497186 +497187 +497188 +497189 +497190 +497191 +497216 +497217 +497218 +497219 +497220 +497221 +497222 +497223 +497248 +497249 +497250 +497251 +497252 +497253 +497254 +497255 +497280 +497281 +497282 +497283 +497284 +497285 +497286 +497287 +497312 +497313 +497314 +497315 +497316 +497317 +497318 +497319 +497344 +497345 +497346 +497347 +497348 +497349 +497350 +497351 +497376 +497377 +497378 +497379 +497380 +497381 +497382 +497383 +497408 +497409 +497410 +497411 +497412 +497413 +497414 +497415 +497440 +497441 +497442 +497443 +497444 +497445 +497446 +497447 +497472 +497473 +497474 +497475 +497476 +497477 +497478 +497479 +497504 +497505 +497506 +497507 +497508 +497509 +497510 +497511 +497536 +497537 +497538 +497539 +497540 +497541 +497542 +497543 +497568 +497569 +497570 +497571 +497572 +497573 +497574 +497575 +497600 +497601 +497602 +497603 +497604 +497605 +497606 +497607 +497632 +497633 +497634 +497635 +497636 +497637 +497638 +497639 +497664 +497665 +497666 +497667 +497668 +497669 +497670 +497671 +497696 +497697 +497698 +497699 +497700 +497701 +497702 +497703 +497728 +497729 +497730 +497731 +497732 +497733 +497734 +497735 +497760 +497761 +497762 +497763 +497764 +497765 +497766 +497767 +497792 +497793 +497794 +497795 +497796 +497797 +497798 +497799 +497824 +497825 +497826 +497827 +497828 +497829 +497830 +497831 +497856 +497857 +497858 +497859 +497860 +497861 +497862 +497863 +497888 +497889 +497890 +497891 +497892 +497893 +497894 +497895 +497920 +497921 +497922 +497923 +497924 +497925 +497926 +497927 +497952 +497953 +497954 +497955 +497956 +497957 +497958 +497959 +497984 +497985 +497986 +497987 +497988 +497989 +497990 +497991 +498016 +498017 +498018 +498019 +498020 +498021 +498022 +498023 +498048 +498049 +498050 +498051 +498052 +498053 +498054 +498055 +498080 +498081 +498082 +498083 +498084 +498085 +498086 +498087 +498112 +498113 +498114 +498115 +498116 +498117 +498118 +498119 +498144 +498145 +498146 +498147 +498148 +498149 +498150 +498151 +498176 +498177 +498178 +498179 +498180 +498181 +498182 +498183 +498208 +498209 +498210 +498211 +498212 +498213 +498214 +498215 +498240 +498241 +498242 +498243 +498244 +498245 +498246 +498247 +498272 +498273 +498274 +498275 +498276 +498277 +498278 +498279 +498304 +498305 +498306 +498307 +498308 +498309 +498310 +498311 +498336 +498337 +498338 +498339 +498340 +498341 +498342 +498343 +498368 +498369 +498370 +498371 +498372 +498373 +498374 +498375 +498400 +498401 +498402 +498403 +498404 +498405 +498406 +498407 +498432 +498433 +498434 +498435 +498436 +498437 +498438 +498439 +498464 +498465 +498466 +498467 +498468 +498469 +498470 +498471 +498496 +498497 +498498 +498499 +498500 +498501 +498502 +498503 +498528 +498529 +498530 +498531 +498532 +498533 +498534 +498535 +498560 +498561 +498562 +498563 +498564 +498565 +498566 +498567 +498592 +498593 +498594 +498595 +498596 +498597 +498598 +498599 +498624 +498625 +498626 +498627 +498628 +498629 +498630 +498631 +498656 +498657 +498658 +498659 +498660 +498661 +498662 +498663 +498688 +498689 +498690 +498691 +498692 +498693 +498694 +498695 +498720 +498721 +498722 +498723 +498724 +498725 +498726 +498727 +498752 +498753 +498754 +498755 +498756 +498757 +498758 +498759 +498784 +498785 +498786 +498787 +498788 +498789 +498790 +498791 +498816 +498817 +498818 +498819 +498820 +498821 +498822 +498823 +498848 +498849 +498850 +498851 +498852 +498853 +498854 +498855 +498880 +498881 +498882 +498883 +498884 +498885 +498886 +498887 +498912 +498913 +498914 +498915 +498916 +498917 +498918 +498919 +498944 +498945 +498946 +498947 +498948 +498949 +498950 +498951 +498976 +498977 +498978 +498979 +498980 +498981 +498982 +498983 +499008 +499009 +499010 +499011 +499012 +499013 +499014 +499015 +499040 +499041 +499042 +499043 +499044 +499045 +499046 +499047 +499072 +499073 +499074 +499075 +499076 +499077 +499078 +499079 +499104 +499105 +499106 +499107 +499108 +499109 +499110 +499111 +499136 +499137 +499138 +499139 +499140 +499141 +499142 +499143 +499168 +499169 +499170 +499171 +499172 +499173 +499174 +499175 +499200 +499201 +499202 +499203 +499204 +499205 +499206 +499207 +499232 +499233 +499234 +499235 +499236 +499237 +499238 +499239 +499264 +499265 +499266 +499267 +499268 +499269 +499270 +499271 +499296 +499297 +499298 +499299 +499300 +499301 +499302 +499303 +499328 +499329 +499330 +499331 +499332 +499333 +499334 +499335 +499360 +499361 +499362 +499363 +499364 +499365 +499366 +499367 +499392 +499393 +499394 +499395 +499396 +499397 +499398 +499399 +499424 +499425 +499426 +499427 +499428 +499429 +499430 +499431 +499456 +499457 +499458 +499459 +499460 +499461 +499462 +499463 +499488 +499489 +499490 +499491 +499492 +499493 +499494 +499495 +499520 +499521 +499522 +499523 +499524 +499525 +499526 +499527 +499552 +499553 +499554 +499555 +499556 +499557 +499558 +499559 +499584 +499585 +499586 +499587 +499588 +499589 +499590 +499591 +499616 +499617 +499618 +499619 +499620 +499621 +499622 +499623 +499648 +499649 +499650 +499651 +499652 +499653 +499654 +499655 +499680 +499681 +499682 +499683 +499684 +499685 +499686 +499687 +499712 +499713 +499714 +499715 +499716 +499717 +499718 +499719 +499744 +499745 +499746 +499747 +499748 +499749 +499750 +499751 +499776 +499777 +499778 +499779 +499780 +499781 +499782 +499783 +499808 +499809 +499810 +499811 +499812 +499813 +499814 +499815 +499840 +499841 +499842 +499843 +499844 +499845 +499846 +499847 +499872 +499873 +499874 +499875 +499876 +499877 +499878 +499879 +499904 +499905 +499906 +499907 +499908 +499909 +499910 +499911 +499936 +499937 +499938 +499939 +499940 +499941 +499942 +499943 +499968 +499969 +499970 +499971 +499972 +499973 +499974 +499975 +500000 +500001 +500002 +500003 +500004 +500005 +500006 +500007 +500032 +500033 +500034 +500035 +500036 +500037 +500038 +500039 +500064 +500065 +500066 +500067 +500068 +500069 +500070 +500071 +500096 +500097 +500098 +500099 +500100 +500101 +500102 +500103 +500128 +500129 +500130 +500131 +500132 +500133 +500134 +500135 +500160 +500161 +500162 +500163 +500164 +500165 +500166 +500167 +500192 +500193 +500194 +500195 +500196 +500197 +500198 +500199 +500224 +500225 +500226 +500227 +500228 +500229 +500230 +500231 +500256 +500257 +500258 +500259 +500260 +500261 +500262 +500263 +500288 +500289 +500290 +500291 +500292 +500293 +500294 +500295 +500320 +500321 +500322 +500323 +500324 +500325 +500326 +500327 +500352 +500353 +500354 +500355 +500356 +500357 +500358 +500359 +500384 +500385 +500386 +500387 +500388 +500389 +500390 +500391 +500416 +500417 +500418 +500419 +500420 +500421 +500422 +500423 +500448 +500449 +500450 +500451 +500452 +500453 +500454 +500455 +500480 +500481 +500482 +500483 +500484 +500485 +500486 +500487 +500512 +500513 +500514 +500515 +500516 +500517 +500518 +500519 +500544 +500545 +500546 +500547 +500548 +500549 +500550 +500551 +500576 +500577 +500578 +500579 +500580 +500581 +500582 +500583 +500608 +500609 +500610 +500611 +500612 +500613 +500614 +500615 +500640 +500641 +500642 +500643 +500644 +500645 +500646 +500647 +500672 +500673 +500674 +500675 +500676 +500677 +500678 +500679 +500704 +500705 +500706 +500707 +500708 +500709 +500710 +500711 +500736 +500737 +500738 +500739 +500740 +500741 +500742 +500743 +500768 +500769 +500770 +500771 +500772 +500773 +500774 +500775 +500800 +500801 +500802 +500803 +500804 +500805 +500806 +500807 +500832 +500833 +500834 +500835 +500836 +500837 +500838 +500839 +500864 +500865 +500866 +500867 +500868 +500869 +500870 +500871 +500896 +500897 +500898 +500899 +500900 +500901 +500902 +500903 +500928 +500929 +500930 +500931 +500932 +500933 +500934 +500935 +500960 +500961 +500962 +500963 +500964 +500965 +500966 +500967 +500992 +500993 +500994 +500995 +500996 +500997 +500998 +500999 +501024 +501025 +501026 +501027 +501028 +501029 +501030 +501031 +501056 +501057 +501058 +501059 +501060 +501061 +501062 +501063 +501088 +501089 +501090 +501091 +501092 +501093 +501094 +501095 +501120 +501121 +501122 +501123 +501124 +501125 +501126 +501127 +501152 +501153 +501154 +501155 +501156 +501157 +501158 +501159 +501184 +501185 +501186 +501187 +501188 +501189 +501190 +501191 +501216 +501217 +501218 +501219 +501220 +501221 +501222 +501223 +501248 +501249 +501250 +501251 +501252 +501253 +501254 +501255 +501280 +501281 +501282 +501283 +501284 +501285 +501286 +501287 +501312 +501313 +501314 +501315 +501316 +501317 +501318 +501319 +501344 +501345 +501346 +501347 +501348 +501349 +501350 +501351 +501376 +501377 +501378 +501379 +501380 +501381 +501382 +501383 +501408 +501409 +501410 +501411 +501412 +501413 +501414 +501415 +501440 +501441 +501442 +501443 +501444 +501445 +501446 +501447 +501472 +501473 +501474 +501475 +501476 +501477 +501478 +501479 +501504 +501505 +501506 +501507 +501508 +501509 +501510 +501511 +501536 +501537 +501538 +501539 +501540 +501541 +501542 +501543 +501568 +501569 +501570 +501571 +501572 +501573 +501574 +501575 +501600 +501601 +501602 +501603 +501604 +501605 +501606 +501607 +501632 +501633 +501634 +501635 +501636 +501637 +501638 +501639 +501664 +501665 +501666 +501667 +501668 +501669 +501670 +501671 +501696 +501697 +501698 +501699 +501700 +501701 +501702 +501703 +501728 +501729 +501730 +501731 +501732 +501733 +501734 +501735 +501760 +501761 +501762 +501763 +501764 +501765 +501766 +501767 +501792 +501793 +501794 +501795 +501796 +501797 +501798 +501799 +501824 +501825 +501826 +501827 +501828 +501829 +501830 +501831 +501856 +501857 +501858 +501859 +501860 +501861 +501862 +501863 +501888 +501889 +501890 +501891 +501892 +501893 +501894 +501895 +501920 +501921 +501922 +501923 +501924 +501925 +501926 +501927 +501952 +501953 +501954 +501955 +501956 +501957 +501958 +501959 +501984 +501985 +501986 +501987 +501988 +501989 +501990 +501991 +502016 +502017 +502018 +502019 +502020 +502021 +502022 +502023 +502048 +502049 +502050 +502051 +502052 +502053 +502054 +502055 +502080 +502081 +502082 +502083 +502084 +502085 +502086 +502087 +502112 +502113 +502114 +502115 +502116 +502117 +502118 +502119 +502144 +502145 +502146 +502147 +502148 +502149 +502150 +502151 +502176 +502177 +502178 +502179 +502180 +502181 +502182 +502183 +502208 +502209 +502210 +502211 +502212 +502213 +502214 +502215 +502240 +502241 +502242 +502243 +502244 +502245 +502246 +502247 +502272 +502273 +502274 +502275 +502276 +502277 +502278 +502279 +502304 +502305 +502306 +502307 +502308 +502309 +502310 +502311 +502336 +502337 +502338 +502339 +502340 +502341 +502342 +502343 +502368 +502369 +502370 +502371 +502372 +502373 +502374 +502375 +502400 +502401 +502402 +502403 +502404 +502405 +502406 +502407 +502432 +502433 +502434 +502435 +502436 +502437 +502438 +502439 +502464 +502465 +502466 +502467 +502468 +502469 +502470 +502471 +502496 +502497 +502498 +502499 +502500 +502501 +502502 +502503 +502528 +502529 +502530 +502531 +502532 +502533 +502534 +502535 +502560 +502561 +502562 +502563 +502564 +502565 +502566 +502567 +502592 +502593 +502594 +502595 +502596 +502597 +502598 +502599 +502624 +502625 +502626 +502627 +502628 +502629 +502630 +502631 +502656 +502657 +502658 +502659 +502660 +502661 +502662 +502663 +502688 +502689 +502690 +502691 +502692 +502693 +502694 +502695 +502720 +502721 +502722 +502723 +502724 +502725 +502726 +502727 +502752 +502753 +502754 +502755 +502756 +502757 +502758 +502759 +502784 +502785 +502786 +502787 +502788 +502789 +502790 +502791 +502816 +502817 +502818 +502819 +502820 +502821 +502822 +502823 +502848 +502849 +502850 +502851 +502852 +502853 +502854 +502855 +502880 +502881 +502882 +502883 +502884 +502885 +502886 +502887 +502912 +502913 +502914 +502915 +502916 +502917 +502918 +502919 +502944 +502945 +502946 +502947 +502948 +502949 +502950 +502951 +502976 +502977 +502978 +502979 +502980 +502981 +502982 +502983 +503008 +503009 +503010 +503011 +503012 +503013 +503014 +503015 +503040 +503041 +503042 +503043 +503044 +503045 +503046 +503047 +503072 +503073 +503074 +503075 +503076 +503077 +503078 +503079 +503104 +503105 +503106 +503107 +503108 +503109 +503110 +503111 +503136 +503137 +503138 +503139 +503140 +503141 +503142 +503143 +503168 +503169 +503170 +503171 +503172 +503173 +503174 +503175 +503200 +503201 +503202 +503203 +503204 +503205 +503206 +503207 +503232 +503233 +503234 +503235 +503236 +503237 +503238 +503239 +503264 +503265 +503266 +503267 +503268 +503269 +503270 +503271 +503296 +503297 +503298 +503299 +503300 +503301 +503302 +503303 +503328 +503329 +503330 +503331 +503332 +503333 +503334 +503335 +503360 +503361 +503362 +503363 +503364 +503365 +503366 +503367 +503392 +503393 +503394 +503395 +503396 +503397 +503398 +503399 +503424 +503425 +503426 +503427 +503428 +503429 +503430 +503431 +503456 +503457 +503458 +503459 +503460 +503461 +503462 +503463 +503488 +503489 +503490 +503491 +503492 +503493 +503494 +503495 +503520 +503521 +503522 +503523 +503524 +503525 +503526 +503527 +503552 +503553 +503554 +503555 +503556 +503557 +503558 +503559 +503584 +503585 +503586 +503587 +503588 +503589 +503590 +503591 +503616 +503617 +503618 +503619 +503620 +503621 +503622 +503623 +503648 +503649 +503650 +503651 +503652 +503653 +503654 +503655 +503680 +503681 +503682 +503683 +503684 +503685 +503686 +503687 +503712 +503713 +503714 +503715 +503716 +503717 +503718 +503719 +503744 +503745 +503746 +503747 +503748 +503749 +503750 +503751 +503776 +503777 +503778 +503779 +503780 +503781 +503782 +503783 +503808 +503809 +503810 +503811 +503812 +503813 +503814 +503815 +503840 +503841 +503842 +503843 +503844 +503845 +503846 +503847 +503872 +503873 +503874 +503875 +503876 +503877 +503878 +503879 +503904 +503905 +503906 +503907 +503908 +503909 +503910 +503911 +503936 +503937 +503938 +503939 +503940 +503941 +503942 +503943 +503968 +503969 +503970 +503971 +503972 +503973 +503974 +503975 +504000 +504001 +504002 +504003 +504004 +504005 +504006 +504007 +504032 +504033 +504034 +504035 +504036 +504037 +504038 +504039 +504064 +504065 +504066 +504067 +504068 +504069 +504070 +504071 +504096 +504097 +504098 +504099 +504100 +504101 +504102 +504103 +504128 +504129 +504130 +504131 +504132 +504133 +504134 +504135 +504160 +504161 +504162 +504163 +504164 +504165 +504166 +504167 +504192 +504193 +504194 +504195 +504196 +504197 +504198 +504199 +504224 +504225 +504226 +504227 +504228 +504229 +504230 +504231 +504256 +504257 +504258 +504259 +504260 +504261 +504262 +504263 +504288 +504289 +504290 +504291 +504292 +504293 +504294 +504295 +504320 +504321 +504322 +504323 +504324 +504325 +504326 +504327 +504352 +504353 +504354 +504355 +504356 +504357 +504358 +504359 +504384 +504385 +504386 +504387 +504388 +504389 +504390 +504391 +504416 +504417 +504418 +504419 +504420 +504421 +504422 +504423 +504448 +504449 +504450 +504451 +504452 +504453 +504454 +504455 +504480 +504481 +504482 +504483 +504484 +504485 +504486 +504487 +504512 +504513 +504514 +504515 +504516 +504517 +504518 +504519 +504544 +504545 +504546 +504547 +504548 +504549 +504550 +504551 +504576 +504577 +504578 +504579 +504580 +504581 +504582 +504583 +504608 +504609 +504610 +504611 +504612 +504613 +504614 +504615 +504640 +504641 +504642 +504643 +504644 +504645 +504646 +504647 +504672 +504673 +504674 +504675 +504676 +504677 +504678 +504679 +504704 +504705 +504706 +504707 +504708 +504709 +504710 +504711 +504736 +504737 +504738 +504739 +504740 +504741 +504742 +504743 +504768 +504769 +504770 +504771 +504772 +504773 +504774 +504775 +504800 +504801 +504802 +504803 +504804 +504805 +504806 +504807 +504832 +504833 +504834 +504835 +504836 +504837 +504838 +504839 +504864 +504865 +504866 +504867 +504868 +504869 +504870 +504871 +504896 +504897 +504898 +504899 +504900 +504901 +504902 +504903 +504928 +504929 +504930 +504931 +504932 +504933 +504934 +504935 +504960 +504961 +504962 +504963 +504964 +504965 +504966 +504967 +504992 +504993 +504994 +504995 +504996 +504997 +504998 +504999 +505024 +505025 +505026 +505027 +505028 +505029 +505030 +505031 +505056 +505057 +505058 +505059 +505060 +505061 +505062 +505063 +505088 +505089 +505090 +505091 +505092 +505093 +505094 +505095 +505120 +505121 +505122 +505123 +505124 +505125 +505126 +505127 +505152 +505153 +505154 +505155 +505156 +505157 +505158 +505159 +505184 +505185 +505186 +505187 +505188 +505189 +505190 +505191 +505216 +505217 +505218 +505219 +505220 +505221 +505222 +505223 +505248 +505249 +505250 +505251 +505252 +505253 +505254 +505255 +505280 +505281 +505282 +505283 +505284 +505285 +505286 +505287 +505312 +505313 +505314 +505315 +505316 +505317 +505318 +505319 +505344 +505345 +505346 +505347 +505348 +505349 +505350 +505351 +505376 +505377 +505378 +505379 +505380 +505381 +505382 +505383 +505408 +505409 +505410 +505411 +505412 +505413 +505414 +505415 +505440 +505441 +505442 +505443 +505444 +505445 +505446 +505447 +505472 +505473 +505474 +505475 +505476 +505477 +505478 +505479 +505504 +505505 +505506 +505507 +505508 +505509 +505510 +505511 +505536 +505537 +505538 +505539 +505540 +505541 +505542 +505543 +505568 +505569 +505570 +505571 +505572 +505573 +505574 +505575 +505600 +505601 +505602 +505603 +505604 +505605 +505606 +505607 +505632 +505633 +505634 +505635 +505636 +505637 +505638 +505639 +505664 +505665 +505666 +505667 +505668 +505669 +505670 +505671 +505696 +505697 +505698 +505699 +505700 +505701 +505702 +505703 +505728 +505729 +505730 +505731 +505732 +505733 +505734 +505735 +505760 +505761 +505762 +505763 +505764 +505765 +505766 +505767 +505792 +505793 +505794 +505795 +505796 +505797 +505798 +505799 +505824 +505825 +505826 +505827 +505828 +505829 +505830 +505831 +505856 +505857 +505858 +505859 +505860 +505861 +505862 +505863 +505888 +505889 +505890 +505891 +505892 +505893 +505894 +505895 +505920 +505921 +505922 +505923 +505924 +505925 +505926 +505927 +505952 +505953 +505954 +505955 +505956 +505957 +505958 +505959 +505984 +505985 +505986 +505987 +505988 +505989 +505990 +505991 +506016 +506017 +506018 +506019 +506020 +506021 +506022 +506023 +506048 +506049 +506050 +506051 +506052 +506053 +506054 +506055 +506080 +506081 +506082 +506083 +506084 +506085 +506086 +506087 +506112 +506113 +506114 +506115 +506116 +506117 +506118 +506119 +506144 +506145 +506146 +506147 +506148 +506149 +506150 +506151 +506176 +506177 +506178 +506179 +506180 +506181 +506182 +506183 +506208 +506209 +506210 +506211 +506212 +506213 +506214 +506215 +506240 +506241 +506242 +506243 +506244 +506245 +506246 +506247 +506272 +506273 +506274 +506275 +506276 +506277 +506278 +506279 +506304 +506305 +506306 +506307 +506308 +506309 +506310 +506311 +506336 +506337 +506338 +506339 +506340 +506341 +506342 +506343 +506368 +506369 +506370 +506371 +506372 +506373 +506374 +506375 +506400 +506401 +506402 +506403 +506404 +506405 +506406 +506407 +506432 +506433 +506434 +506435 +506436 +506437 +506438 +506439 +506464 +506465 +506466 +506467 +506468 +506469 +506470 +506471 +506496 +506497 +506498 +506499 +506500 +506501 +506502 +506503 +506528 +506529 +506530 +506531 +506532 +506533 +506534 +506535 +506560 +506561 +506562 +506563 +506564 +506565 +506566 +506567 +506592 +506593 +506594 +506595 +506596 +506597 +506598 +506599 +506624 +506625 +506626 +506627 +506628 +506629 +506630 +506631 +506656 +506657 +506658 +506659 +506660 +506661 +506662 +506663 +506688 +506689 +506690 +506691 +506692 +506693 +506694 +506695 +506720 +506721 +506722 +506723 +506724 +506725 +506726 +506727 +506752 +506753 +506754 +506755 +506756 +506757 +506758 +506759 +506784 +506785 +506786 +506787 +506788 +506789 +506790 +506791 +506816 +506817 +506818 +506819 +506820 +506821 +506822 +506823 +506848 +506849 +506850 +506851 +506852 +506853 +506854 +506855 +506880 +506881 +506882 +506883 +506884 +506885 +506886 +506887 +506912 +506913 +506914 +506915 +506916 +506917 +506918 +506919 +506944 +506945 +506946 +506947 +506948 +506949 +506950 +506951 +506976 +506977 +506978 +506979 +506980 +506981 +506982 +506983 +507008 +507009 +507010 +507011 +507012 +507013 +507014 +507015 +507040 +507041 +507042 +507043 +507044 +507045 +507046 +507047 +507072 +507073 +507074 +507075 +507076 +507077 +507078 +507079 +507104 +507105 +507106 +507107 +507108 +507109 +507110 +507111 +507136 +507137 +507138 +507139 +507140 +507141 +507142 +507143 +507168 +507169 +507170 +507171 +507172 +507173 +507174 +507175 +507200 +507201 +507202 +507203 +507204 +507205 +507206 +507207 +507232 +507233 +507234 +507235 +507236 +507237 +507238 +507239 +507264 +507265 +507266 +507267 +507268 +507269 +507270 +507271 +507296 +507297 +507298 +507299 +507300 +507301 +507302 +507303 +507328 +507329 +507330 +507331 +507332 +507333 +507334 +507335 +507360 +507361 +507362 +507363 +507364 +507365 +507366 +507367 +507392 +507393 +507394 +507395 +507396 +507397 +507398 +507399 +507424 +507425 +507426 +507427 +507428 +507429 +507430 +507431 +507456 +507457 +507458 +507459 +507460 +507461 +507462 +507463 +507488 +507489 +507490 +507491 +507492 +507493 +507494 +507495 +507520 +507521 +507522 +507523 +507524 +507525 +507526 +507527 +507552 +507553 +507554 +507555 +507556 +507557 +507558 +507559 +507584 +507585 +507586 +507587 +507588 +507589 +507590 +507591 +507616 +507617 +507618 +507619 +507620 +507621 +507622 +507623 +507648 +507649 +507650 +507651 +507652 +507653 +507654 +507655 +507680 +507681 +507682 +507683 +507684 +507685 +507686 +507687 +507712 +507713 +507714 +507715 +507716 +507717 +507718 +507719 +507744 +507745 +507746 +507747 +507748 +507749 +507750 +507751 +507776 +507777 +507778 +507779 +507780 +507781 +507782 +507783 +507808 +507809 +507810 +507811 +507812 +507813 +507814 +507815 +507840 +507841 +507842 +507843 +507844 +507845 +507846 +507847 +507872 +507873 +507874 +507875 +507876 +507877 +507878 +507879 +507904 +507905 +507906 +507907 +507908 +507909 +507910 +507911 +507936 +507937 +507938 +507939 +507940 +507941 +507942 +507943 +507968 +507969 +507970 +507971 +507972 +507973 +507974 +507975 +508000 +508001 +508002 +508003 +508004 +508005 +508006 +508007 +508032 +508033 +508034 +508035 +508036 +508037 +508038 +508039 +508064 +508065 +508066 +508067 +508068 +508069 +508070 +508071 +508096 +508097 +508098 +508099 +508100 +508101 +508102 +508103 +508128 +508129 +508130 +508131 +508132 +508133 +508134 +508135 +508160 +508161 +508162 +508163 +508164 +508165 +508166 +508167 +508192 +508193 +508194 +508195 +508196 +508197 +508198 +508199 +508224 +508225 +508226 +508227 +508228 +508229 +508230 +508231 +508256 +508257 +508258 +508259 +508260 +508261 +508262 +508263 +508288 +508289 +508290 +508291 +508292 +508293 +508294 +508295 +508320 +508321 +508322 +508323 +508324 +508325 +508326 +508327 +508352 +508353 +508354 +508355 +508356 +508357 +508358 +508359 +508384 +508385 +508386 +508387 +508388 +508389 +508390 +508391 +508416 +508417 +508418 +508419 +508420 +508421 +508422 +508423 +508448 +508449 +508450 +508451 +508452 +508453 +508454 +508455 +508480 +508481 +508482 +508483 +508484 +508485 +508486 +508487 +508512 +508513 +508514 +508515 +508516 +508517 +508518 +508519 +508544 +508545 +508546 +508547 +508548 +508549 +508550 +508551 +508576 +508577 +508578 +508579 +508580 +508581 +508582 +508583 +508608 +508609 +508610 +508611 +508612 +508613 +508614 +508615 +508640 +508641 +508642 +508643 +508644 +508645 +508646 +508647 +508672 +508673 +508674 +508675 +508676 +508677 +508678 +508679 +508704 +508705 +508706 +508707 +508708 +508709 +508710 +508711 +508736 +508737 +508738 +508739 +508740 +508741 +508742 +508743 +508768 +508769 +508770 +508771 +508772 +508773 +508774 +508775 +508800 +508801 +508802 +508803 +508804 +508805 +508806 +508807 +508832 +508833 +508834 +508835 +508836 +508837 +508838 +508839 +508864 +508865 +508866 +508867 +508868 +508869 +508870 +508871 +508896 +508897 +508898 +508899 +508900 +508901 +508902 +508903 +508928 +508929 +508930 +508931 +508932 +508933 +508934 +508935 +508960 +508961 +508962 +508963 +508964 +508965 +508966 +508967 +508992 +508993 +508994 +508995 +508996 +508997 +508998 +508999 +509024 +509025 +509026 +509027 +509028 +509029 +509030 +509031 +509056 +509057 +509058 +509059 +509060 +509061 +509062 +509063 +509088 +509089 +509090 +509091 +509092 +509093 +509094 +509095 +509120 +509121 +509122 +509123 +509124 +509125 +509126 +509127 +509152 +509153 +509154 +509155 +509156 +509157 +509158 +509159 +509184 +509185 +509186 +509187 +509188 +509189 +509190 +509191 +509216 +509217 +509218 +509219 +509220 +509221 +509222 +509223 +509248 +509249 +509250 +509251 +509252 +509253 +509254 +509255 +509280 +509281 +509282 +509283 +509284 +509285 +509286 +509287 +509312 +509313 +509314 +509315 +509316 +509317 +509318 +509319 +509344 +509345 +509346 +509347 +509348 +509349 +509350 +509351 +509376 +509377 +509378 +509379 +509380 +509381 +509382 +509383 +509408 +509409 +509410 +509411 +509412 +509413 +509414 +509415 +509440 +509441 +509442 +509443 +509444 +509445 +509446 +509447 +509472 +509473 +509474 +509475 +509476 +509477 +509478 +509479 +509504 +509505 +509506 +509507 +509508 +509509 +509510 +509511 +509536 +509537 +509538 +509539 +509540 +509541 +509542 +509543 +509568 +509569 +509570 +509571 +509572 +509573 +509574 +509575 +509600 +509601 +509602 +509603 +509604 +509605 +509606 +509607 +509632 +509633 +509634 +509635 +509636 +509637 +509638 +509639 +509664 +509665 +509666 +509667 +509668 +509669 +509670 +509671 +509696 +509697 +509698 +509699 +509700 +509701 +509702 +509703 +509728 +509729 +509730 +509731 +509732 +509733 +509734 +509735 +509760 +509761 +509762 +509763 +509764 +509765 +509766 +509767 +509792 +509793 +509794 +509795 +509796 +509797 +509798 +509799 +509824 +509825 +509826 +509827 +509828 +509829 +509830 +509831 +509856 +509857 +509858 +509859 +509860 +509861 +509862 +509863 +509888 +509889 +509890 +509891 +509892 +509893 +509894 +509895 +509920 +509921 +509922 +509923 +509924 +509925 +509926 +509927 +509952 +509953 +509954 +509955 +509956 +509957 +509958 +509959 +509984 +509985 +509986 +509987 +509988 +509989 +509990 +509991 +510016 +510017 +510018 +510019 +510020 +510021 +510022 +510023 +510048 +510049 +510050 +510051 +510052 +510053 +510054 +510055 +510080 +510081 +510082 +510083 +510084 +510085 +510086 +510087 +510112 +510113 +510114 +510115 +510116 +510117 +510118 +510119 +510144 +510145 +510146 +510147 +510148 +510149 +510150 +510151 +510176 +510177 +510178 +510179 +510180 +510181 +510182 +510183 +510208 +510209 +510210 +510211 +510212 +510213 +510214 +510215 +510240 +510241 +510242 +510243 +510244 +510245 +510246 +510247 +510272 +510273 +510274 +510275 +510276 +510277 +510278 +510279 +510304 +510305 +510306 +510307 +510308 +510309 +510310 +510311 +510336 +510337 +510338 +510339 +510340 +510341 +510342 +510343 +510368 +510369 +510370 +510371 +510372 +510373 +510374 +510375 +510400 +510401 +510402 +510403 +510404 +510405 +510406 +510407 +510432 +510433 +510434 +510435 +510436 +510437 +510438 +510439 +510464 +510465 +510466 +510467 +510468 +510469 +510470 +510471 +510496 +510497 +510498 +510499 +510500 +510501 +510502 +510503 +510528 +510529 +510530 +510531 +510532 +510533 +510534 +510535 +510560 +510561 +510562 +510563 +510564 +510565 +510566 +510567 +510592 +510593 +510594 +510595 +510596 +510597 +510598 +510599 +510624 +510625 +510626 +510627 +510628 +510629 +510630 +510631 +510656 +510657 +510658 +510659 +510660 +510661 +510662 +510663 +510688 +510689 +510690 +510691 +510692 +510693 +510694 +510695 +510720 +510721 +510722 +510723 +510724 +510725 +510726 +510727 +510752 +510753 +510754 +510755 +510756 +510757 +510758 +510759 +510784 +510785 +510786 +510787 +510788 +510789 +510790 +510791 +510816 +510817 +510818 +510819 +510820 +510821 +510822 +510823 +510848 +510849 +510850 +510851 +510852 +510853 +510854 +510855 +510880 +510881 +510882 +510883 +510884 +510885 +510886 +510887 +510912 +510913 +510914 +510915 +510916 +510917 +510918 +510919 +510944 +510945 +510946 +510947 +510948 +510949 +510950 +510951 +510976 +510977 +510978 +510979 +510980 +510981 +510982 +510983 +511008 +511009 +511010 +511011 +511012 +511013 +511014 +511015 +511040 +511041 +511042 +511043 +511044 +511045 +511046 +511047 +511072 +511073 +511074 +511075 +511076 +511077 +511078 +511079 +511104 +511105 +511106 +511107 +511108 +511109 +511110 +511111 +511136 +511137 +511138 +511139 +511140 +511141 +511142 +511143 +511168 +511169 +511170 +511171 +511172 +511173 +511174 +511175 +511200 +511201 +511202 +511203 +511204 +511205 +511206 +511207 +511232 +511233 +511234 +511235 +511236 +511237 +511238 +511239 +511264 +511265 +511266 +511267 +511268 +511269 +511270 +511271 +511296 +511297 +511298 +511299 +511300 +511301 +511302 +511303 +511328 +511329 +511330 +511331 +511332 +511333 +511334 +511335 +511360 +511361 +511362 +511363 +511364 +511365 +511366 +511367 +511392 +511393 +511394 +511395 +511396 +511397 +511398 +511399 +511424 +511425 +511426 +511427 +511428 +511429 +511430 +511431 +511456 +511457 +511458 +511459 +511460 +511461 +511462 +511463 +511488 +511489 +511490 +511491 +511492 +511493 +511494 +511495 +511520 +511521 +511522 +511523 +511524 +511525 +511526 +511527 +511552 +511553 +511554 +511555 +511556 +511557 +511558 +511559 +511584 +511585 +511586 +511587 +511588 +511589 +511590 +511591 +511616 +511617 +511618 +511619 +511620 +511621 +511622 +511623 +511648 +511649 +511650 +511651 +511652 +511653 +511654 +511655 +511680 +511681 +511682 +511683 +511684 +511685 +511686 +511687 +511712 +511713 +511714 +511715 +511716 +511717 +511718 +511719 +511744 +511745 +511746 +511747 +511748 +511749 +511750 +511751 +511776 +511777 +511778 +511779 +511780 +511781 +511782 +511783 +511808 +511809 +511810 +511811 +511812 +511813 +511814 +511815 +511840 +511841 +511842 +511843 +511844 +511845 +511846 +511847 +511872 +511873 +511874 +511875 +511876 +511877 +511878 +511879 +511904 +511905 +511906 +511907 +511908 +511909 +511910 +511911 +511936 +511937 +511938 +511939 +511940 +511941 +511942 +511943 +511968 +511969 +511970 +511971 +511972 +511973 +511974 +511975 +512000 +512001 +512002 +512003 +512004 +512005 +512006 +512007 +512032 +512033 +512034 +512035 +512036 +512037 +512038 +512039 +512064 +512065 +512066 +512067 +512068 +512069 +512070 +512071 +512096 +512097 +512098 +512099 +512100 +512101 +512102 +512103 +512128 +512129 +512130 +512131 +512132 +512133 +512134 +512135 +512160 +512161 +512162 +512163 +512164 +512165 +512166 +512167 +512192 +512193 +512194 +512195 +512196 +512197 +512198 +512199 +512224 +512225 +512226 +512227 +512228 +512229 +512230 +512231 +512256 +512257 +512258 +512259 +512260 +512261 +512262 +512263 +512288 +512289 +512290 +512291 +512292 +512293 +512294 +512295 +512320 +512321 +512322 +512323 +512324 +512325 +512326 +512327 +512352 +512353 +512354 +512355 +512356 +512357 +512358 +512359 +512384 +512385 +512386 +512387 +512388 +512389 +512390 +512391 +512416 +512417 +512418 +512419 +512420 +512421 +512422 +512423 +512448 +512449 +512450 +512451 +512452 +512453 +512454 +512455 +512480 +512481 +512482 +512483 +512484 +512485 +512486 +512487 +512512 +512513 +512514 +512515 +512516 +512517 +512518 +512519 +512544 +512545 +512546 +512547 +512548 +512549 +512550 +512551 +512576 +512577 +512578 +512579 +512580 +512581 +512582 +512583 +512608 +512609 +512610 +512611 +512612 +512613 +512614 +512615 +512640 +512641 +512642 +512643 +512644 +512645 +512646 +512647 +512672 +512673 +512674 +512675 +512676 +512677 +512678 +512679 +512704 +512705 +512706 +512707 +512708 +512709 +512710 +512711 +512736 +512737 +512738 +512739 +512740 +512741 +512742 +512743 +512768 +512769 +512770 +512771 +512772 +512773 +512774 +512775 +512800 +512801 +512802 +512803 +512804 +512805 +512806 +512807 +512832 +512833 +512834 +512835 +512836 +512837 +512838 +512839 +512864 +512865 +512866 +512867 +512868 +512869 +512870 +512871 +512896 +512897 +512898 +512899 +512900 +512901 +512902 +512903 +512928 +512929 +512930 +512931 +512932 +512933 +512934 +512935 +512960 +512961 +512962 +512963 +512964 +512965 +512966 +512967 +512992 +512993 +512994 +512995 +512996 +512997 +512998 +512999 +513024 +513025 +513026 +513027 +513028 +513029 +513030 +513031 +513056 +513057 +513058 +513059 +513060 +513061 +513062 +513063 +513088 +513089 +513090 +513091 +513092 +513093 +513094 +513095 +513120 +513121 +513122 +513123 +513124 +513125 +513126 +513127 +513152 +513153 +513154 +513155 +513156 +513157 +513158 +513159 +513184 +513185 +513186 +513187 +513188 +513189 +513190 +513191 +513216 +513217 +513218 +513219 +513220 +513221 +513222 +513223 +513248 +513249 +513250 +513251 +513252 +513253 +513254 +513255 +513280 +513281 +513282 +513283 +513284 +513285 +513286 +513287 +513312 +513313 +513314 +513315 +513316 +513317 +513318 +513319 +513344 +513345 +513346 +513347 +513348 +513349 +513350 +513351 +513376 +513377 +513378 +513379 +513380 +513381 +513382 +513383 +513408 +513409 +513410 +513411 +513412 +513413 +513414 +513415 +513440 +513441 +513442 +513443 +513444 +513445 +513446 +513447 +513472 +513473 +513474 +513475 +513476 +513477 +513478 +513479 +513504 +513505 +513506 +513507 +513508 +513509 +513510 +513511 +513536 +513537 +513538 +513539 +513540 +513541 +513542 +513543 +513568 +513569 +513570 +513571 +513572 +513573 +513574 +513575 +513600 +513601 +513602 +513603 +513604 +513605 +513606 +513607 +513632 +513633 +513634 +513635 +513636 +513637 +513638 +513639 +513664 +513665 +513666 +513667 +513668 +513669 +513670 +513671 +513696 +513697 +513698 +513699 +513700 +513701 +513702 +513703 +513728 +513729 +513730 +513731 +513732 +513733 +513734 +513735 +513760 +513761 +513762 +513763 +513764 +513765 +513766 +513767 +513792 +513793 +513794 +513795 +513796 +513797 +513798 +513799 +513824 +513825 +513826 +513827 +513828 +513829 +513830 +513831 +513856 +513857 +513858 +513859 +513860 +513861 +513862 +513863 +513888 +513889 +513890 +513891 +513892 +513893 +513894 +513895 +513920 +513921 +513922 +513923 +513924 +513925 +513926 +513927 +513952 +513953 +513954 +513955 +513956 +513957 +513958 +513959 +513984 +513985 +513986 +513987 +513988 +513989 +513990 +513991 +514016 +514017 +514018 +514019 +514020 +514021 +514022 +514023 +514048 +514049 +514050 +514051 +514052 +514053 +514054 +514055 +514080 +514081 +514082 +514083 +514084 +514085 +514086 +514087 +514112 +514113 +514114 +514115 +514116 +514117 +514118 +514119 +514144 +514145 +514146 +514147 +514148 +514149 +514150 +514151 +514176 +514177 +514178 +514179 +514180 +514181 +514182 +514183 +514208 +514209 +514210 +514211 +514212 +514213 +514214 +514215 +514240 +514241 +514242 +514243 +514244 +514245 +514246 +514247 +514272 +514273 +514274 +514275 +514276 +514277 +514278 +514279 +514304 +514305 +514306 +514307 +514308 +514309 +514310 +514311 +514336 +514337 +514338 +514339 +514340 +514341 +514342 +514343 +514368 +514369 +514370 +514371 +514372 +514373 +514374 +514375 +514400 +514401 +514402 +514403 +514404 +514405 +514406 +514407 +514432 +514433 +514434 +514435 +514436 +514437 +514438 +514439 +514464 +514465 +514466 +514467 +514468 +514469 +514470 +514471 +514496 +514497 +514498 +514499 +514500 +514501 +514502 +514503 +514528 +514529 +514530 +514531 +514532 +514533 +514534 +514535 +514560 +514561 +514562 +514563 +514564 +514565 +514566 +514567 +514592 +514593 +514594 +514595 +514596 +514597 +514598 +514599 +514624 +514625 +514626 +514627 +514628 +514629 +514630 +514631 +514656 +514657 +514658 +514659 +514660 +514661 +514662 +514663 +514688 +514689 +514690 +514691 +514692 +514693 +514694 +514695 +514720 +514721 +514722 +514723 +514724 +514725 +514726 +514727 +514752 +514753 +514754 +514755 +514756 +514757 +514758 +514759 +514784 +514785 +514786 +514787 +514788 +514789 +514790 +514791 +514816 +514817 +514818 +514819 +514820 +514821 +514822 +514823 +514848 +514849 +514850 +514851 +514852 +514853 +514854 +514855 +514880 +514881 +514882 +514883 +514884 +514885 +514886 +514887 +514912 +514913 +514914 +514915 +514916 +514917 +514918 +514919 +514944 +514945 +514946 +514947 +514948 +514949 +514950 +514951 +514976 +514977 +514978 +514979 +514980 +514981 +514982 +514983 +515008 +515009 +515010 +515011 +515012 +515013 +515014 +515015 +515040 +515041 +515042 +515043 +515044 +515045 +515046 +515047 +515072 +515073 +515074 +515075 +515076 +515077 +515078 +515079 +515104 +515105 +515106 +515107 +515108 +515109 +515110 +515111 +515136 +515137 +515138 +515139 +515140 +515141 +515142 +515143 +515168 +515169 +515170 +515171 +515172 +515173 +515174 +515175 +515200 +515201 +515202 +515203 +515204 +515205 +515206 +515207 +515232 +515233 +515234 +515235 +515236 +515237 +515238 +515239 +515264 +515265 +515266 +515267 +515268 +515269 +515270 +515271 +515296 +515297 +515298 +515299 +515300 +515301 +515302 +515303 +515328 +515329 +515330 +515331 +515332 +515333 +515334 +515335 +515360 +515361 +515362 +515363 +515364 +515365 +515366 +515367 +515392 +515393 +515394 +515395 +515396 +515397 +515398 +515399 +515424 +515425 +515426 +515427 +515428 +515429 +515430 +515431 +515456 +515457 +515458 +515459 +515460 +515461 +515462 +515463 +515488 +515489 +515490 +515491 +515492 +515493 +515494 +515495 +515520 +515521 +515522 +515523 +515524 +515525 +515526 +515527 +515552 +515553 +515554 +515555 +515556 +515557 +515558 +515559 +515584 +515585 +515586 +515587 +515588 +515589 +515590 +515591 +515616 +515617 +515618 +515619 +515620 +515621 +515622 +515623 +515648 +515649 +515650 +515651 +515652 +515653 +515654 +515655 +515680 +515681 +515682 +515683 +515684 +515685 +515686 +515687 +515712 +515713 +515714 +515715 +515716 +515717 +515718 +515719 +515744 +515745 +515746 +515747 +515748 +515749 +515750 +515751 +515776 +515777 +515778 +515779 +515780 +515781 +515782 +515783 +515808 +515809 +515810 +515811 +515812 +515813 +515814 +515815 +515840 +515841 +515842 +515843 +515844 +515845 +515846 +515847 +515872 +515873 +515874 +515875 +515876 +515877 +515878 +515879 +515904 +515905 +515906 +515907 +515908 +515909 +515910 +515911 +515936 +515937 +515938 +515939 +515940 +515941 +515942 +515943 +515968 +515969 +515970 +515971 +515972 +515973 +515974 +515975 +516000 +516001 +516002 +516003 +516004 +516005 +516006 +516007 +516032 +516033 +516034 +516035 +516036 +516037 +516038 +516039 +516064 +516065 +516066 +516067 +516068 +516069 +516070 +516071 +516096 +516097 +516098 +516099 +516100 +516101 +516102 +516103 +516128 +516129 +516130 +516131 +516132 +516133 +516134 +516135 +516160 +516161 +516162 +516163 +516164 +516165 +516166 +516167 +516192 +516193 +516194 +516195 +516196 +516197 +516198 +516199 +516224 +516225 +516226 +516227 +516228 +516229 +516230 +516231 +516256 +516257 +516258 +516259 +516260 +516261 +516262 +516263 +516288 +516289 +516290 +516291 +516292 +516293 +516294 +516295 +516320 +516321 +516322 +516323 +516324 +516325 +516326 +516327 +516352 +516353 +516354 +516355 +516356 +516357 +516358 +516359 +516384 +516385 +516386 +516387 +516388 +516389 +516390 +516391 +516416 +516417 +516418 +516419 +516420 +516421 +516422 +516423 +516448 +516449 +516450 +516451 +516452 +516453 +516454 +516455 +516480 +516481 +516482 +516483 +516484 +516485 +516486 +516487 +516512 +516513 +516514 +516515 +516516 +516517 +516518 +516519 +516544 +516545 +516546 +516547 +516548 +516549 +516550 +516551 +516576 +516577 +516578 +516579 +516580 +516581 +516582 +516583 +516608 +516609 +516610 +516611 +516612 +516613 +516614 +516615 +516640 +516641 +516642 +516643 +516644 +516645 +516646 +516647 +516672 +516673 +516674 +516675 +516676 +516677 +516678 +516679 +516704 +516705 +516706 +516707 +516708 +516709 +516710 +516711 +516736 +516737 +516738 +516739 +516740 +516741 +516742 +516743 +516768 +516769 +516770 +516771 +516772 +516773 +516774 +516775 +516800 +516801 +516802 +516803 +516804 +516805 +516806 +516807 +516832 +516833 +516834 +516835 +516836 +516837 +516838 +516839 +516864 +516865 +516866 +516867 +516868 +516869 +516870 +516871 +516896 +516897 +516898 +516899 +516900 +516901 +516902 +516903 +516928 +516929 +516930 +516931 +516932 +516933 +516934 +516935 +516960 +516961 +516962 +516963 +516964 +516965 +516966 +516967 +516992 +516993 +516994 +516995 +516996 +516997 +516998 +516999 +517024 +517025 +517026 +517027 +517028 +517029 +517030 +517031 +517056 +517057 +517058 +517059 +517060 +517061 +517062 +517063 +517088 +517089 +517090 +517091 +517092 +517093 +517094 +517095 +517120 +517121 +517122 +517123 +517124 +517125 +517126 +517127 +517152 +517153 +517154 +517155 +517156 +517157 +517158 +517159 +517184 +517185 +517186 +517187 +517188 +517189 +517190 +517191 +517216 +517217 +517218 +517219 +517220 +517221 +517222 +517223 +517248 +517249 +517250 +517251 +517252 +517253 +517254 +517255 +517280 +517281 +517282 +517283 +517284 +517285 +517286 +517287 +517312 +517313 +517314 +517315 +517316 +517317 +517318 +517319 +517344 +517345 +517346 +517347 +517348 +517349 +517350 +517351 +517376 +517377 +517378 +517379 +517380 +517381 +517382 +517383 +517408 +517409 +517410 +517411 +517412 +517413 +517414 +517415 +517440 +517441 +517442 +517443 +517444 +517445 +517446 +517447 +517472 +517473 +517474 +517475 +517476 +517477 +517478 +517479 +517504 +517505 +517506 +517507 +517508 +517509 +517510 +517511 +517536 +517537 +517538 +517539 +517540 +517541 +517542 +517543 +517568 +517569 +517570 +517571 +517572 +517573 +517574 +517575 +517600 +517601 +517602 +517603 +517604 +517605 +517606 +517607 +517632 +517633 +517634 +517635 +517636 +517637 +517638 +517639 +517664 +517665 +517666 +517667 +517668 +517669 +517670 +517671 +517696 +517697 +517698 +517699 +517700 +517701 +517702 +517703 +517728 +517729 +517730 +517731 +517732 +517733 +517734 +517735 +517760 +517761 +517762 +517763 +517764 +517765 +517766 +517767 +517792 +517793 +517794 +517795 +517796 +517797 +517798 +517799 +517824 +517825 +517826 +517827 +517828 +517829 +517830 +517831 +517856 +517857 +517858 +517859 +517860 +517861 +517862 +517863 +517888 +517889 +517890 +517891 +517892 +517893 +517894 +517895 +517920 +517921 +517922 +517923 +517924 +517925 +517926 +517927 +517952 +517953 +517954 +517955 +517956 +517957 +517958 +517959 +517984 +517985 +517986 +517987 +517988 +517989 +517990 +517991 +518016 +518017 +518018 +518019 +518020 +518021 +518022 +518023 +518048 +518049 +518050 +518051 +518052 +518053 +518054 +518055 +518080 +518081 +518082 +518083 +518084 +518085 +518086 +518087 +518112 +518113 +518114 +518115 +518116 +518117 +518118 +518119 +518144 +518145 +518146 +518147 +518148 +518149 +518150 +518151 +518176 +518177 +518178 +518179 +518180 +518181 +518182 +518183 +518208 +518209 +518210 +518211 +518212 +518213 +518214 +518215 +518240 +518241 +518242 +518243 +518244 +518245 +518246 +518247 +518272 +518273 +518274 +518275 +518276 +518277 +518278 +518279 +518304 +518305 +518306 +518307 +518308 +518309 +518310 +518311 +518336 +518337 +518338 +518339 +518340 +518341 +518342 +518343 +518368 +518369 +518370 +518371 +518372 +518373 +518374 +518375 +518400 +518401 +518402 +518403 +518404 +518405 +518406 +518407 +518432 +518433 +518434 +518435 +518436 +518437 +518438 +518439 +518464 +518465 +518466 +518467 +518468 +518469 +518470 +518471 +518496 +518497 +518498 +518499 +518500 +518501 +518502 +518503 +518528 +518529 +518530 +518531 +518532 +518533 +518534 +518535 +518560 +518561 +518562 +518563 +518564 +518565 +518566 +518567 +518592 +518593 +518594 +518595 +518596 +518597 +518598 +518599 +518624 +518625 +518626 +518627 +518628 +518629 +518630 +518631 +518656 +518657 +518658 +518659 +518660 +518661 +518662 +518663 +518688 +518689 +518690 +518691 +518692 +518693 +518694 +518695 +518720 +518721 +518722 +518723 +518724 +518725 +518726 +518727 +518752 +518753 +518754 +518755 +518756 +518757 +518758 +518759 +518784 +518785 +518786 +518787 +518788 +518789 +518790 +518791 +518816 +518817 +518818 +518819 +518820 +518821 +518822 +518823 +518848 +518849 +518850 +518851 +518852 +518853 +518854 +518855 +518880 +518881 +518882 +518883 +518884 +518885 +518886 +518887 +518912 +518913 +518914 +518915 +518916 +518917 +518918 +518919 +518944 +518945 +518946 +518947 +518948 +518949 +518950 +518951 +518976 +518977 +518978 +518979 +518980 +518981 +518982 +518983 +519008 +519009 +519010 +519011 +519012 +519013 +519014 +519015 +519040 +519041 +519042 +519043 +519044 +519045 +519046 +519047 +519072 +519073 +519074 +519075 +519076 +519077 +519078 +519079 +519104 +519105 +519106 +519107 +519108 +519109 +519110 +519111 +519136 +519137 +519138 +519139 +519140 +519141 +519142 +519143 +519168 +519169 +519170 +519171 +519172 +519173 +519174 +519175 +519200 +519201 +519202 +519203 +519204 +519205 +519206 +519207 +519232 +519233 +519234 +519235 +519236 +519237 +519238 +519239 +519264 +519265 +519266 +519267 +519268 +519269 +519270 +519271 +519296 +519297 +519298 +519299 +519300 +519301 +519302 +519303 +519328 +519329 +519330 +519331 +519332 +519333 +519334 +519335 +519360 +519361 +519362 +519363 +519364 +519365 +519366 +519367 +519392 +519393 +519394 +519395 +519396 +519397 +519398 +519399 +519424 +519425 +519426 +519427 +519428 +519429 +519430 +519431 +519456 +519457 +519458 +519459 +519460 +519461 +519462 +519463 +519488 +519489 +519490 +519491 +519492 +519493 +519494 +519495 +519520 +519521 +519522 +519523 +519524 +519525 +519526 +519527 +519552 +519553 +519554 +519555 +519556 +519557 +519558 +519559 +519584 +519585 +519586 +519587 +519588 +519589 +519590 +519591 +519616 +519617 +519618 +519619 +519620 +519621 +519622 +519623 +519648 +519649 +519650 +519651 +519652 +519653 +519654 +519655 +519680 +519681 +519682 +519683 +519684 +519685 +519686 +519687 +519712 +519713 +519714 +519715 +519716 +519717 +519718 +519719 +519744 +519745 +519746 +519747 +519748 +519749 +519750 +519751 +519776 +519777 +519778 +519779 +519780 +519781 +519782 +519783 +519808 +519809 +519810 +519811 +519812 +519813 +519814 +519815 +519840 +519841 +519842 +519843 +519844 +519845 +519846 +519847 +519872 +519873 +519874 +519875 +519876 +519877 +519878 +519879 +519904 +519905 +519906 +519907 +519908 +519909 +519910 +519911 +519936 +519937 +519938 +519939 +519940 +519941 +519942 +519943 +519968 +519969 +519970 +519971 +519972 +519973 +519974 +519975 +520000 +520001 +520002 +520003 +520004 +520005 +520006 +520007 +520032 +520033 +520034 +520035 +520036 +520037 +520038 +520039 +520064 +520065 +520066 +520067 +520068 +520069 +520070 +520071 +520096 +520097 +520098 +520099 +520100 +520101 +520102 +520103 +520128 +520129 +520130 +520131 +520132 +520133 +520134 +520135 +520160 +520161 +520162 +520163 +520164 +520165 +520166 +520167 +520192 +520193 +520194 +520195 +520196 +520197 +520198 +520199 +520224 +520225 +520226 +520227 +520228 +520229 +520230 +520231 +520256 +520257 +520258 +520259 +520260 +520261 +520262 +520263 +520288 +520289 +520290 +520291 +520292 +520293 +520294 +520295 +520320 +520321 +520322 +520323 +520324 +520325 +520326 +520327 +520352 +520353 +520354 +520355 +520356 +520357 +520358 +520359 +520384 +520385 +520386 +520387 +520388 +520389 +520390 +520391 +520416 +520417 +520418 +520419 +520420 +520421 +520422 +520423 +520448 +520449 +520450 +520451 +520452 +520453 +520454 +520455 +520480 +520481 +520482 +520483 +520484 +520485 +520486 +520487 +520512 +520513 +520514 +520515 +520516 +520517 +520518 +520519 +520544 +520545 +520546 +520547 +520548 +520549 +520550 +520551 +520576 +520577 +520578 +520579 +520580 +520581 +520582 +520583 +520608 +520609 +520610 +520611 +520612 +520613 +520614 +520615 +520640 +520641 +520642 +520643 +520644 +520645 +520646 +520647 +520672 +520673 +520674 +520675 +520676 +520677 +520678 +520679 +520704 +520705 +520706 +520707 +520708 +520709 +520710 +520711 +520736 +520737 +520738 +520739 +520740 +520741 +520742 +520743 +520768 +520769 +520770 +520771 +520772 +520773 +520774 +520775 +520800 +520801 +520802 +520803 +520804 +520805 +520806 +520807 +520832 +520833 +520834 +520835 +520836 +520837 +520838 +520839 +520864 +520865 +520866 +520867 +520868 +520869 +520870 +520871 +520896 +520897 +520898 +520899 +520900 +520901 +520902 +520903 +520928 +520929 +520930 +520931 +520932 +520933 +520934 +520935 +520960 +520961 +520962 +520963 +520964 +520965 +520966 +520967 +520992 +520993 +520994 +520995 +520996 +520997 +520998 +520999 +521024 +521025 +521026 +521027 +521028 +521029 +521030 +521031 +521056 +521057 +521058 +521059 +521060 +521061 +521062 +521063 +521088 +521089 +521090 +521091 +521092 +521093 +521094 +521095 +521120 +521121 +521122 +521123 +521124 +521125 +521126 +521127 +521152 +521153 +521154 +521155 +521156 +521157 +521158 +521159 +521184 +521185 +521186 +521187 +521188 +521189 +521190 +521191 +521216 +521217 +521218 +521219 +521220 +521221 +521222 +521223 +521248 +521249 +521250 +521251 +521252 +521253 +521254 +521255 +521280 +521281 +521282 +521283 +521284 +521285 +521286 +521287 +521312 +521313 +521314 +521315 +521316 +521317 +521318 +521319 +521344 +521345 +521346 +521347 +521348 +521349 +521350 +521351 +521376 +521377 +521378 +521379 +521380 +521381 +521382 +521383 +521408 +521409 +521410 +521411 +521412 +521413 +521414 +521415 +521440 +521441 +521442 +521443 +521444 +521445 +521446 +521447 +521472 +521473 +521474 +521475 +521476 +521477 +521478 +521479 +521504 +521505 +521506 +521507 +521508 +521509 +521510 +521511 +521536 +521537 +521538 +521539 +521540 +521541 +521542 +521543 +521568 +521569 +521570 +521571 +521572 +521573 +521574 +521575 +521600 +521601 +521602 +521603 +521604 +521605 +521606 +521607 +521632 +521633 +521634 +521635 +521636 +521637 +521638 +521639 +521664 +521665 +521666 +521667 +521668 +521669 +521670 +521671 +521696 +521697 +521698 +521699 +521700 +521701 +521702 +521703 +521728 +521729 +521730 +521731 +521732 +521733 +521734 +521735 +521760 +521761 +521762 +521763 +521764 +521765 +521766 +521767 +521792 +521793 +521794 +521795 +521796 +521797 +521798 +521799 +521824 +521825 +521826 +521827 +521828 +521829 +521830 +521831 +521856 +521857 +521858 +521859 +521860 +521861 +521862 +521863 +521888 +521889 +521890 +521891 +521892 +521893 +521894 +521895 +521920 +521921 +521922 +521923 +521924 +521925 +521926 +521927 +521952 +521953 +521954 +521955 +521956 +521957 +521958 +521959 +521984 +521985 +521986 +521987 +521988 +521989 +521990 +521991 +522016 +522017 +522018 +522019 +522020 +522021 +522022 +522023 +522048 +522049 +522050 +522051 +522052 +522053 +522054 +522055 +522080 +522081 +522082 +522083 +522084 +522085 +522086 +522087 +522112 +522113 +522114 +522115 +522116 +522117 +522118 +522119 +522144 +522145 +522146 +522147 +522148 +522149 +522150 +522151 +522176 +522177 +522178 +522179 +522180 +522181 +522182 +522183 +522208 +522209 +522210 +522211 +522212 +522213 +522214 +522215 +522240 +522241 +522242 +522243 +522244 +522245 +522246 +522247 +522272 +522273 +522274 +522275 +522276 +522277 +522278 +522279 +522304 +522305 +522306 +522307 +522308 +522309 +522310 +522311 +522336 +522337 +522338 +522339 +522340 +522341 +522342 +522343 +522368 +522369 +522370 +522371 +522372 +522373 +522374 +522375 +522400 +522401 +522402 +522403 +522404 +522405 +522406 +522407 +522432 +522433 +522434 +522435 +522436 +522437 +522438 +522439 +522464 +522465 +522466 +522467 +522468 +522469 +522470 +522471 +522496 +522497 +522498 +522499 +522500 +522501 +522502 +522503 +522528 +522529 +522530 +522531 +522532 +522533 +522534 +522535 +522560 +522561 +522562 +522563 +522564 +522565 +522566 +522567 +522592 +522593 +522594 +522595 +522596 +522597 +522598 +522599 +522624 +522625 +522626 +522627 +522628 +522629 +522630 +522631 +522656 +522657 +522658 +522659 +522660 +522661 +522662 +522663 +522688 +522689 +522690 +522691 +522692 +522693 +522694 +522695 +522720 +522721 +522722 +522723 +522724 +522725 +522726 +522727 +522752 +522753 +522754 +522755 +522756 +522757 +522758 +522759 +522784 +522785 +522786 +522787 +522788 +522789 +522790 +522791 +522816 +522817 +522818 +522819 +522820 +522821 +522822 +522823 +522848 +522849 +522850 +522851 +522852 +522853 +522854 +522855 +522880 +522881 +522882 +522883 +522884 +522885 +522886 +522887 +522912 +522913 +522914 +522915 +522916 +522917 +522918 +522919 +522944 +522945 +522946 +522947 +522948 +522949 +522950 +522951 +522976 +522977 +522978 +522979 +522980 +522981 +522982 +522983 +523008 +523009 +523010 +523011 +523012 +523013 +523014 +523015 +523040 +523041 +523042 +523043 +523044 +523045 +523046 +523047 +523072 +523073 +523074 +523075 +523076 +523077 +523078 +523079 +523104 +523105 +523106 +523107 +523108 +523109 +523110 +523111 +523136 +523137 +523138 +523139 +523140 +523141 +523142 +523143 +523168 +523169 +523170 +523171 +523172 +523173 +523174 +523175 +523200 +523201 +523202 +523203 +523204 +523205 +523206 +523207 +523232 +523233 +523234 +523235 +523236 +523237 +523238 +523239 +523264 +523265 +523266 +523267 +523268 +523269 +523270 +523271 +523296 +523297 +523298 +523299 +523300 +523301 +523302 +523303 +523328 +523329 +523330 +523331 +523332 +523333 +523334 +523335 +523360 +523361 +523362 +523363 +523364 +523365 +523366 +523367 +523392 +523393 +523394 +523395 +523396 +523397 +523398 +523399 +523424 +523425 +523426 +523427 +523428 +523429 +523430 +523431 +523456 +523457 +523458 +523459 +523460 +523461 +523462 +523463 +523488 +523489 +523490 +523491 +523492 +523493 +523494 +523495 +523520 +523521 +523522 +523523 +523524 +523525 +523526 +523527 +523552 +523553 +523554 +523555 +523556 +523557 +523558 +523559 +523584 +523585 +523586 +523587 +523588 +523589 +523590 +523591 +523616 +523617 +523618 +523619 +523620 +523621 +523622 +523623 +523648 +523649 +523650 +523651 +523652 +523653 +523654 +523655 +523680 +523681 +523682 +523683 +523684 +523685 +523686 +523687 +523712 +523713 +523714 +523715 +523716 +523717 +523718 +523719 +523744 +523745 +523746 +523747 +523748 +523749 +523750 +523751 +523776 +523777 +523778 +523779 +523780 +523781 +523782 +523783 +523808 +523809 +523810 +523811 +523812 +523813 +523814 +523815 +523840 +523841 +523842 +523843 +523844 +523845 +523846 +523847 +523872 +523873 +523874 +523875 +523876 +523877 +523878 +523879 +523904 +523905 +523906 +523907 +523908 +523909 +523910 +523911 +523936 +523937 +523938 +523939 +523940 +523941 +523942 +523943 +523968 +523969 +523970 +523971 +523972 +523973 +523974 +523975 +524000 +524001 +524002 +524003 +524004 +524005 +524006 +524007 +524032 +524033 +524034 +524035 +524036 +524037 +524038 +524039 +524064 +524065 +524066 +524067 +524068 +524069 +524070 +524071 +524096 +524097 +524098 +524099 +524100 +524101 +524102 +524103 +524128 +524129 +524130 +524131 +524132 +524133 +524134 +524135 +524160 +524161 +524162 +524163 +524164 +524165 +524166 +524167 +524192 +524193 +524194 +524195 +524196 +524197 +524198 +524199 +524224 +524225 +524226 +524227 +524228 +524229 +524230 +524231 +524256 +524257 +524258 +524259 +524260 +524261 +524262 +524263 +524288 +524289 +524290 +524291 +524292 +524293 +524294 +524295 +524320 +524321 +524322 +524323 +524324 +524325 +524326 +524327 +524352 +524353 +524354 +524355 +524356 +524357 +524358 +524359 +524384 +524385 +524386 +524387 +524388 +524389 +524390 +524391 +524416 +524417 +524418 +524419 +524420 +524421 +524422 +524423 +524448 +524449 +524450 +524451 +524452 +524453 +524454 +524455 +524480 +524481 +524482 +524483 +524484 +524485 +524486 +524487 +524512 +524513 +524514 +524515 +524516 +524517 +524518 +524519 +524544 +524545 +524546 +524547 +524548 +524549 +524550 +524551 +524576 +524577 +524578 +524579 +524580 +524581 +524582 +524583 +524608 +524609 +524610 +524611 +524612 +524613 +524614 +524615 +524640 +524641 +524642 +524643 +524644 +524645 +524646 +524647 +524672 +524673 +524674 +524675 +524676 +524677 +524678 +524679 +524704 +524705 +524706 +524707 +524708 +524709 +524710 +524711 +524736 +524737 +524738 +524739 +524740 +524741 +524742 +524743 +524768 +524769 +524770 +524771 +524772 +524773 +524774 +524775 +524800 +524801 +524802 +524803 +524804 +524805 +524806 +524807 +524832 +524833 +524834 +524835 +524836 +524837 +524838 +524839 +524864 +524865 +524866 +524867 +524868 +524869 +524870 +524871 +524896 +524897 +524898 +524899 +524900 +524901 +524902 +524903 +524928 +524929 +524930 +524931 +524932 +524933 +524934 +524935 +524960 +524961 +524962 +524963 +524964 +524965 +524966 +524967 +524992 +524993 +524994 +524995 +524996 +524997 +524998 +524999 +525024 +525025 +525026 +525027 +525028 +525029 +525030 +525031 +525056 +525057 +525058 +525059 +525060 +525061 +525062 +525063 +525088 +525089 +525090 +525091 +525092 +525093 +525094 +525095 +525120 +525121 +525122 +525123 +525124 +525125 +525126 +525127 +525152 +525153 +525154 +525155 +525156 +525157 +525158 +525159 +525184 +525185 +525186 +525187 +525188 +525189 +525190 +525191 +525216 +525217 +525218 +525219 +525220 +525221 +525222 +525223 +525248 +525249 +525250 +525251 +525252 +525253 +525254 +525255 +525280 +525281 +525282 +525283 +525284 +525285 +525286 +525287 +525312 +525313 +525314 +525315 +525316 +525317 +525318 +525319 +525344 +525345 +525346 +525347 +525348 +525349 +525350 +525351 +525376 +525377 +525378 +525379 +525380 +525381 +525382 +525383 +525408 +525409 +525410 +525411 +525412 +525413 +525414 +525415 +525440 +525441 +525442 +525443 +525444 +525445 +525446 +525447 +525472 +525473 +525474 +525475 +525476 +525477 +525478 +525479 +525504 +525505 +525506 +525507 +525508 +525509 +525510 +525511 +525536 +525537 +525538 +525539 +525540 +525541 +525542 +525543 +525568 +525569 +525570 +525571 +525572 +525573 +525574 +525575 +525600 +525601 +525602 +525603 +525604 +525605 +525606 +525607 +525632 +525633 +525634 +525635 +525636 +525637 +525638 +525639 +525664 +525665 +525666 +525667 +525668 +525669 +525670 +525671 +525696 +525697 +525698 +525699 +525700 +525701 +525702 +525703 +525728 +525729 +525730 +525731 +525732 +525733 +525734 +525735 +525760 +525761 +525762 +525763 +525764 +525765 +525766 +525767 +525792 +525793 +525794 +525795 +525796 +525797 +525798 +525799 +525824 +525825 +525826 +525827 +525828 +525829 +525830 +525831 +525856 +525857 +525858 +525859 +525860 +525861 +525862 +525863 +525888 +525889 +525890 +525891 +525892 +525893 +525894 +525895 +525920 +525921 +525922 +525923 +525924 +525925 +525926 +525927 +525952 +525953 +525954 +525955 +525956 +525957 +525958 +525959 +525984 +525985 +525986 +525987 +525988 +525989 +525990 +525991 +526016 +526017 +526018 +526019 +526020 +526021 +526022 +526023 +526048 +526049 +526050 +526051 +526052 +526053 +526054 +526055 +526080 +526081 +526082 +526083 +526084 +526085 +526086 +526087 +526112 +526113 +526114 +526115 +526116 +526117 +526118 +526119 +526144 +526145 +526146 +526147 +526148 +526149 +526150 +526151 +526176 +526177 +526178 +526179 +526180 +526181 +526182 +526183 +526208 +526209 +526210 +526211 +526212 +526213 +526214 +526215 +526240 +526241 +526242 +526243 +526244 +526245 +526246 +526247 +526272 +526273 +526274 +526275 +526276 +526277 +526278 +526279 +526304 +526305 +526306 +526307 +526308 +526309 +526310 +526311 +526336 +526337 +526338 +526339 +526340 +526341 +526342 +526343 +526368 +526369 +526370 +526371 +526372 +526373 +526374 +526375 +526400 +526401 +526402 +526403 +526404 +526405 +526406 +526407 +526432 +526433 +526434 +526435 +526436 +526437 +526438 +526439 +526464 +526465 +526466 +526467 +526468 +526469 +526470 +526471 +526496 +526497 +526498 +526499 +526500 +526501 +526502 +526503 +526528 +526529 +526530 +526531 +526532 +526533 +526534 +526535 +526560 +526561 +526562 +526563 +526564 +526565 +526566 +526567 +526592 +526593 +526594 +526595 +526596 +526597 +526598 +526599 +526624 +526625 +526626 +526627 +526628 +526629 +526630 +526631 +526656 +526657 +526658 +526659 +526660 +526661 +526662 +526663 +526688 +526689 +526690 +526691 +526692 +526693 +526694 +526695 +526720 +526721 +526722 +526723 +526724 +526725 +526726 +526727 +526752 +526753 +526754 +526755 +526756 +526757 +526758 +526759 +526784 +526785 +526786 +526787 +526788 +526789 +526790 +526791 +526816 +526817 +526818 +526819 +526820 +526821 +526822 +526823 +526848 +526849 +526850 +526851 +526852 +526853 +526854 +526855 +526880 +526881 +526882 +526883 +526884 +526885 +526886 +526887 +526912 +526913 +526914 +526915 +526916 +526917 +526918 +526919 +526944 +526945 +526946 +526947 +526948 +526949 +526950 +526951 +526976 +526977 +526978 +526979 +526980 +526981 +526982 +526983 +527008 +527009 +527010 +527011 +527012 +527013 +527014 +527015 +527040 +527041 +527042 +527043 +527044 +527045 +527046 +527047 +527072 +527073 +527074 +527075 +527076 +527077 +527078 +527079 +527104 +527105 +527106 +527107 +527108 +527109 +527110 +527111 +527136 +527137 +527138 +527139 +527140 +527141 +527142 +527143 +527168 +527169 +527170 +527171 +527172 +527173 +527174 +527175 +527200 +527201 +527202 +527203 +527204 +527205 +527206 +527207 +527232 +527233 +527234 +527235 +527236 +527237 +527238 +527239 +527264 +527265 +527266 +527267 +527268 +527269 +527270 +527271 +527296 +527297 +527298 +527299 +527300 +527301 +527302 +527303 +527328 +527329 +527330 +527331 +527332 +527333 +527334 +527335 +527360 +527361 +527362 +527363 +527364 +527365 +527366 +527367 +527392 +527393 +527394 +527395 +527396 +527397 +527398 +527399 +527424 +527425 +527426 +527427 +527428 +527429 +527430 +527431 +527456 +527457 +527458 +527459 +527460 +527461 +527462 +527463 +527488 +527489 +527490 +527491 +527492 +527493 +527494 +527495 +527520 +527521 +527522 +527523 +527524 +527525 +527526 +527527 +527552 +527553 +527554 +527555 +527556 +527557 +527558 +527559 +527584 +527585 +527586 +527587 +527588 +527589 +527590 +527591 +527616 +527617 +527618 +527619 +527620 +527621 +527622 +527623 +527648 +527649 +527650 +527651 +527652 +527653 +527654 +527655 +527680 +527681 +527682 +527683 +527684 +527685 +527686 +527687 +527712 +527713 +527714 +527715 +527716 +527717 +527718 +527719 +527744 +527745 +527746 +527747 +527748 +527749 +527750 +527751 +527776 +527777 +527778 +527779 +527780 +527781 +527782 +527783 +527808 +527809 +527810 +527811 +527812 +527813 +527814 +527815 +527840 +527841 +527842 +527843 +527844 +527845 +527846 +527847 +527872 +527873 +527874 +527875 +527876 +527877 +527878 +527879 +527904 +527905 +527906 +527907 +527908 +527909 +527910 +527911 +527936 +527937 +527938 +527939 +527940 +527941 +527942 +527943 +527968 +527969 +527970 +527971 +527972 +527973 +527974 +527975 +528000 +528001 +528002 +528003 +528004 +528005 +528006 +528007 +528032 +528033 +528034 +528035 +528036 +528037 +528038 +528039 +528064 +528065 +528066 +528067 +528068 +528069 +528070 +528071 +528096 +528097 +528098 +528099 +528100 +528101 +528102 +528103 +528128 +528129 +528130 +528131 +528132 +528133 +528134 +528135 +528160 +528161 +528162 +528163 +528164 +528165 +528166 +528167 +528192 +528193 +528194 +528195 +528196 +528197 +528198 +528199 +528224 +528225 +528226 +528227 +528228 +528229 +528230 +528231 +528256 +528257 +528258 +528259 +528260 +528261 +528262 +528263 +528288 +528289 +528290 +528291 +528292 +528293 +528294 +528295 +528320 +528321 +528322 +528323 +528324 +528325 +528326 +528327 +528352 +528353 +528354 +528355 +528356 +528357 +528358 +528359 +528384 +528385 +528386 +528387 +528388 +528389 +528390 +528391 +528416 +528417 +528418 +528419 +528420 +528421 +528422 +528423 +528448 +528449 +528450 +528451 +528452 +528453 +528454 +528455 +528480 +528481 +528482 +528483 +528484 +528485 +528486 +528487 +528512 +528513 +528514 +528515 +528516 +528517 +528518 +528519 +528544 +528545 +528546 +528547 +528548 +528549 +528550 +528551 +528576 +528577 +528578 +528579 +528580 +528581 +528582 +528583 +528608 +528609 +528610 +528611 +528612 +528613 +528614 +528615 +528640 +528641 +528642 +528643 +528644 +528645 +528646 +528647 +528672 +528673 +528674 +528675 +528676 +528677 +528678 +528679 +528704 +528705 +528706 +528707 +528708 +528709 +528710 +528711 +528736 +528737 +528738 +528739 +528740 +528741 +528742 +528743 +528768 +528769 +528770 +528771 +528772 +528773 +528774 +528775 +528800 +528801 +528802 +528803 +528804 +528805 +528806 +528807 +528832 +528833 +528834 +528835 +528836 +528837 +528838 +528839 +528864 +528865 +528866 +528867 +528868 +528869 +528870 +528871 +528896 +528897 +528898 +528899 +528900 +528901 +528902 +528903 +528928 +528929 +528930 +528931 +528932 +528933 +528934 +528935 +528960 +528961 +528962 +528963 +528964 +528965 +528966 +528967 +528992 +528993 +528994 +528995 +528996 +528997 +528998 +528999 +529024 +529025 +529026 +529027 +529028 +529029 +529030 +529031 +529056 +529057 +529058 +529059 +529060 +529061 +529062 +529063 +529088 +529089 +529090 +529091 +529092 +529093 +529094 +529095 +529120 +529121 +529122 +529123 +529124 +529125 +529126 +529127 +529152 +529153 +529154 +529155 +529156 +529157 +529158 +529159 +529184 +529185 +529186 +529187 +529188 +529189 +529190 +529191 +529216 +529217 +529218 +529219 +529220 +529221 +529222 +529223 +529248 +529249 +529250 +529251 +529252 +529253 +529254 +529255 +529280 +529281 +529282 +529283 +529284 +529285 +529286 +529287 +529312 +529313 +529314 +529315 +529316 +529317 +529318 +529319 +529344 +529345 +529346 +529347 +529348 +529349 +529350 +529351 +529376 +529377 +529378 +529379 +529380 +529381 +529382 +529383 +529408 +529409 +529410 +529411 +529412 +529413 +529414 +529415 +529440 +529441 +529442 +529443 +529444 +529445 +529446 +529447 +529472 +529473 +529474 +529475 +529476 +529477 +529478 +529479 +529504 +529505 +529506 +529507 +529508 +529509 +529510 +529511 +529536 +529537 +529538 +529539 +529540 +529541 +529542 +529543 +529568 +529569 +529570 +529571 +529572 +529573 +529574 +529575 +529600 +529601 +529602 +529603 +529604 +529605 +529606 +529607 +529632 +529633 +529634 +529635 +529636 +529637 +529638 +529639 +529664 +529665 +529666 +529667 +529668 +529669 +529670 +529671 +529696 +529697 +529698 +529699 +529700 +529701 +529702 +529703 +529728 +529729 +529730 +529731 +529732 +529733 +529734 +529735 +529760 +529761 +529762 +529763 +529764 +529765 +529766 +529767 +529792 +529793 +529794 +529795 +529796 +529797 +529798 +529799 +529824 +529825 +529826 +529827 +529828 +529829 +529830 +529831 +529856 +529857 +529858 +529859 +529860 +529861 +529862 +529863 +529888 +529889 +529890 +529891 +529892 +529893 +529894 +529895 +529920 +529921 +529922 +529923 +529924 +529925 +529926 +529927 +529952 +529953 +529954 +529955 +529956 +529957 +529958 +529959 +529984 +529985 +529986 +529987 +529988 +529989 +529990 +529991 +530016 +530017 +530018 +530019 +530020 +530021 +530022 +530023 +530048 +530049 +530050 +530051 +530052 +530053 +530054 +530055 +530080 +530081 +530082 +530083 +530084 +530085 +530086 +530087 +530112 +530113 +530114 +530115 +530116 +530117 +530118 +530119 +530144 +530145 +530146 +530147 +530148 +530149 +530150 +530151 +530176 +530177 +530178 +530179 +530180 +530181 +530182 +530183 +530208 +530209 +530210 +530211 +530212 +530213 +530214 +530215 +530240 +530241 +530242 +530243 +530244 +530245 +530246 +530247 +530272 +530273 +530274 +530275 +530276 +530277 +530278 +530279 +530304 +530305 +530306 +530307 +530308 +530309 +530310 +530311 +530336 +530337 +530338 +530339 +530340 +530341 +530342 +530343 +530368 +530369 +530370 +530371 +530372 +530373 +530374 +530375 +530400 +530401 +530402 +530403 +530404 +530405 +530406 +530407 +530432 +530433 +530434 +530435 +530436 +530437 +530438 +530439 +530464 +530465 +530466 +530467 +530468 +530469 +530470 +530471 +530496 +530497 +530498 +530499 +530500 +530501 +530502 +530503 +530528 +530529 +530530 +530531 +530532 +530533 +530534 +530535 +530560 +530561 +530562 +530563 +530564 +530565 +530566 +530567 +530592 +530593 +530594 +530595 +530596 +530597 +530598 +530599 +530624 +530625 +530626 +530627 +530628 +530629 +530630 +530631 +530656 +530657 +530658 +530659 +530660 +530661 +530662 +530663 +530688 +530689 +530690 +530691 +530692 +530693 +530694 +530695 +530720 +530721 +530722 +530723 +530724 +530725 +530726 +530727 +530752 +530753 +530754 +530755 +530756 +530757 +530758 +530759 +530784 +530785 +530786 +530787 +530788 +530789 +530790 +530791 +530816 +530817 +530818 +530819 +530820 +530821 +530822 +530823 +530848 +530849 +530850 +530851 +530852 +530853 +530854 +530855 +530880 +530881 +530882 +530883 +530884 +530885 +530886 +530887 +530912 +530913 +530914 +530915 +530916 +530917 +530918 +530919 +530944 +530945 +530946 +530947 +530948 +530949 +530950 +530951 +530976 +530977 +530978 +530979 +530980 +530981 +530982 +530983 +531008 +531009 +531010 +531011 +531012 +531013 +531014 +531015 +531040 +531041 +531042 +531043 +531044 +531045 +531046 +531047 +531072 +531073 +531074 +531075 +531076 +531077 +531078 +531079 +531104 +531105 +531106 +531107 +531108 +531109 +531110 +531111 +531136 +531137 +531138 +531139 +531140 +531141 +531142 +531143 +531168 +531169 +531170 +531171 +531172 +531173 +531174 +531175 +531200 +531201 +531202 +531203 +531204 +531205 +531206 +531207 +531232 +531233 +531234 +531235 +531236 +531237 +531238 +531239 +531264 +531265 +531266 +531267 +531268 +531269 +531270 +531271 +531296 +531297 +531298 +531299 +531300 +531301 +531302 +531303 +531328 +531329 +531330 +531331 +531332 +531333 +531334 +531335 +531360 +531361 +531362 +531363 +531364 +531365 +531366 +531367 +531392 +531393 +531394 +531395 +531396 +531397 +531398 +531399 +531424 +531425 +531426 +531427 +531428 +531429 +531430 +531431 +531456 +531457 +531458 +531459 +531460 +531461 +531462 +531463 +531488 +531489 +531490 +531491 +531492 +531493 +531494 +531495 +531520 +531521 +531522 +531523 +531524 +531525 +531526 +531527 +531552 +531553 +531554 +531555 +531556 +531557 +531558 +531559 +531584 +531585 +531586 +531587 +531588 +531589 +531590 +531591 +531616 +531617 +531618 +531619 +531620 +531621 +531622 +531623 +531648 +531649 +531650 +531651 +531652 +531653 +531654 +531655 +531680 +531681 +531682 +531683 +531684 +531685 +531686 +531687 +531712 +531713 +531714 +531715 +531716 +531717 +531718 +531719 +531744 +531745 +531746 +531747 +531748 +531749 +531750 +531751 +531776 +531777 +531778 +531779 +531780 +531781 +531782 +531783 +531808 +531809 +531810 +531811 +531812 +531813 +531814 +531815 +531840 +531841 +531842 +531843 +531844 +531845 +531846 +531847 +531872 +531873 +531874 +531875 +531876 +531877 +531878 +531879 +531904 +531905 +531906 +531907 +531908 +531909 +531910 +531911 +531936 +531937 +531938 +531939 +531940 +531941 +531942 +531943 +531968 +531969 +531970 +531971 +531972 +531973 +531974 +531975 +532000 +532001 +532002 +532003 +532004 +532005 +532006 +532007 +532032 +532033 +532034 +532035 +532036 +532037 +532038 +532039 +532064 +532065 +532066 +532067 +532068 +532069 +532070 +532071 +532096 +532097 +532098 +532099 +532100 +532101 +532102 +532103 +532128 +532129 +532130 +532131 +532132 +532133 +532134 +532135 +532160 +532161 +532162 +532163 +532164 +532165 +532166 +532167 +532192 +532193 +532194 +532195 +532196 +532197 +532198 +532199 +532224 +532225 +532226 +532227 +532228 +532229 +532230 +532231 +532256 +532257 +532258 +532259 +532260 +532261 +532262 +532263 +532288 +532289 +532290 +532291 +532292 +532293 +532294 +532295 +532320 +532321 +532322 +532323 +532324 +532325 +532326 +532327 +532352 +532353 +532354 +532355 +532356 +532357 +532358 +532359 +532384 +532385 +532386 +532387 +532388 +532389 +532390 +532391 +532416 +532417 +532418 +532419 +532420 +532421 +532422 +532423 +532448 +532449 +532450 +532451 +532452 +532453 +532454 +532455 +532480 +532481 +532482 +532483 +532484 +532485 +532486 +532487 +532512 +532513 +532514 +532515 +532516 +532517 +532518 +532519 +532544 +532545 +532546 +532547 +532548 +532549 +532550 +532551 +532576 +532577 +532578 +532579 +532580 +532581 +532582 +532583 +532608 +532609 +532610 +532611 +532612 +532613 +532614 +532615 +532640 +532641 +532642 +532643 +532644 +532645 +532646 +532647 +532672 +532673 +532674 +532675 +532676 +532677 +532678 +532679 +532704 +532705 +532706 +532707 +532708 +532709 +532710 +532711 +532736 +532737 +532738 +532739 +532740 +532741 +532742 +532743 +532768 +532769 +532770 +532771 +532772 +532773 +532774 +532775 +532800 +532801 +532802 +532803 +532804 +532805 +532806 +532807 +532832 +532833 +532834 +532835 +532836 +532837 +532838 +532839 +532864 +532865 +532866 +532867 +532868 +532869 +532870 +532871 +532896 +532897 +532898 +532899 +532900 +532901 +532902 +532903 +532928 +532929 +532930 +532931 +532932 +532933 +532934 +532935 +532960 +532961 +532962 +532963 +532964 +532965 +532966 +532967 +532992 +532993 +532994 +532995 +532996 +532997 +532998 +532999 +533024 +533025 +533026 +533027 +533028 +533029 +533030 +533031 +533056 +533057 +533058 +533059 +533060 +533061 +533062 +533063 +533088 +533089 +533090 +533091 +533092 +533093 +533094 +533095 +533120 +533121 +533122 +533123 +533124 +533125 +533126 +533127 +533152 +533153 +533154 +533155 +533156 +533157 +533158 +533159 +533184 +533185 +533186 +533187 +533188 +533189 +533190 +533191 +533216 +533217 +533218 +533219 +533220 +533221 +533222 +533223 +533248 +533249 +533250 +533251 +533252 +533253 +533254 +533255 +533280 +533281 +533282 +533283 +533284 +533285 +533286 +533287 +533312 +533313 +533314 +533315 +533316 +533317 +533318 +533319 +533344 +533345 +533346 +533347 +533348 +533349 +533350 +533351 +533376 +533377 +533378 +533379 +533380 +533381 +533382 +533383 +533408 +533409 +533410 +533411 +533412 +533413 +533414 +533415 +533440 +533441 +533442 +533443 +533444 +533445 +533446 +533447 +533472 +533473 +533474 +533475 +533476 +533477 +533478 +533479 +533504 +533505 +533506 +533507 +533508 +533509 +533510 +533511 +533536 +533537 +533538 +533539 +533540 +533541 +533542 +533543 +533568 +533569 +533570 +533571 +533572 +533573 +533574 +533575 +533600 +533601 +533602 +533603 +533604 +533605 +533606 +533607 +533632 +533633 +533634 +533635 +533636 +533637 +533638 +533639 +533664 +533665 +533666 +533667 +533668 +533669 +533670 +533671 +533696 +533697 +533698 +533699 +533700 +533701 +533702 +533703 +533728 +533729 +533730 +533731 +533732 +533733 +533734 +533735 +533760 +533761 +533762 +533763 +533764 +533765 +533766 +533767 +533792 +533793 +533794 +533795 +533796 +533797 +533798 +533799 +533824 +533825 +533826 +533827 +533828 +533829 +533830 +533831 +533856 +533857 +533858 +533859 +533860 +533861 +533862 +533863 +533888 +533889 +533890 +533891 +533892 +533893 +533894 +533895 +533920 +533921 +533922 +533923 +533924 +533925 +533926 +533927 +533952 +533953 +533954 +533955 +533956 +533957 +533958 +533959 +533984 +533985 +533986 +533987 +533988 +533989 +533990 +533991 +534016 +534017 +534018 +534019 +534020 +534021 +534022 +534023 +534048 +534049 +534050 +534051 +534052 +534053 +534054 +534055 +534080 +534081 +534082 +534083 +534084 +534085 +534086 +534087 +534112 +534113 +534114 +534115 +534116 +534117 +534118 +534119 +534144 +534145 +534146 +534147 +534148 +534149 +534150 +534151 +534176 +534177 +534178 +534179 +534180 +534181 +534182 +534183 +534208 +534209 +534210 +534211 +534212 +534213 +534214 +534215 +534240 +534241 +534242 +534243 +534244 +534245 +534246 +534247 +534272 +534273 +534274 +534275 +534276 +534277 +534278 +534279 +534304 +534305 +534306 +534307 +534308 +534309 +534310 +534311 +534336 +534337 +534338 +534339 +534340 +534341 +534342 +534343 +534368 +534369 +534370 +534371 +534372 +534373 +534374 +534375 +534400 +534401 +534402 +534403 +534404 +534405 +534406 +534407 +534432 +534433 +534434 +534435 +534436 +534437 +534438 +534439 +534464 +534465 +534466 +534467 +534468 +534469 +534470 +534471 +534496 +534497 +534498 +534499 +534500 +534501 +534502 +534503 +534528 +534529 +534530 +534531 +534532 +534533 +534534 +534535 +534560 +534561 +534562 +534563 +534564 +534565 +534566 +534567 +534592 +534593 +534594 +534595 +534596 +534597 +534598 +534599 +534624 +534625 +534626 +534627 +534628 +534629 +534630 +534631 +534656 +534657 +534658 +534659 +534660 +534661 +534662 +534663 +534688 +534689 +534690 +534691 +534692 +534693 +534694 +534695 +534720 +534721 +534722 +534723 +534724 +534725 +534726 +534727 +534752 +534753 +534754 +534755 +534756 +534757 +534758 +534759 +534784 +534785 +534786 +534787 +534788 +534789 +534790 +534791 +534816 +534817 +534818 +534819 +534820 +534821 +534822 +534823 +534848 +534849 +534850 +534851 +534852 +534853 +534854 +534855 +534880 +534881 +534882 +534883 +534884 +534885 +534886 +534887 +534912 +534913 +534914 +534915 +534916 +534917 +534918 +534919 +534944 +534945 +534946 +534947 +534948 +534949 +534950 +534951 +534976 +534977 +534978 +534979 +534980 +534981 +534982 +534983 +535008 +535009 +535010 +535011 +535012 +535013 +535014 +535015 +535040 +535041 +535042 +535043 +535044 +535045 +535046 +535047 +535072 +535073 +535074 +535075 +535076 +535077 +535078 +535079 +535104 +535105 +535106 +535107 +535108 +535109 +535110 +535111 +535136 +535137 +535138 +535139 +535140 +535141 +535142 +535143 +535168 +535169 +535170 +535171 +535172 +535173 +535174 +535175 +535200 +535201 +535202 +535203 +535204 +535205 +535206 +535207 +535232 +535233 +535234 +535235 +535236 +535237 +535238 +535239 +535264 +535265 +535266 +535267 +535268 +535269 +535270 +535271 +535296 +535297 +535298 +535299 +535300 +535301 +535302 +535303 +535328 +535329 +535330 +535331 +535332 +535333 +535334 +535335 +535360 +535361 +535362 +535363 +535364 +535365 +535366 +535367 +535392 +535393 +535394 +535395 +535396 +535397 +535398 +535399 +535424 +535425 +535426 +535427 +535428 +535429 +535430 +535431 +535456 +535457 +535458 +535459 +535460 +535461 +535462 +535463 +535488 +535489 +535490 +535491 +535492 +535493 +535494 +535495 +535520 +535521 +535522 +535523 +535524 +535525 +535526 +535527 +535552 +535553 +535554 +535555 +535556 +535557 +535558 +535559 +535584 +535585 +535586 +535587 +535588 +535589 +535590 +535591 +535616 +535617 +535618 +535619 +535620 +535621 +535622 +535623 +535648 +535649 +535650 +535651 +535652 +535653 +535654 +535655 +535680 +535681 +535682 +535683 +535684 +535685 +535686 +535687 +535712 +535713 +535714 +535715 +535716 +535717 +535718 +535719 +535744 +535745 +535746 +535747 +535748 +535749 +535750 +535751 +535776 +535777 +535778 +535779 +535780 +535781 +535782 +535783 +535808 +535809 +535810 +535811 +535812 +535813 +535814 +535815 +535840 +535841 +535842 +535843 +535844 +535845 +535846 +535847 +535872 +535873 +535874 +535875 +535876 +535877 +535878 +535879 +535904 +535905 +535906 +535907 +535908 +535909 +535910 +535911 +535936 +535937 +535938 +535939 +535940 +535941 +535942 +535943 +535968 +535969 +535970 +535971 +535972 +535973 +535974 +535975 +536000 +536001 +536002 +536003 +536004 +536005 +536006 +536007 +536032 +536033 +536034 +536035 +536036 +536037 +536038 +536039 +536064 +536065 +536066 +536067 +536068 +536069 +536070 +536071 +536096 +536097 +536098 +536099 +536100 +536101 +536102 +536103 +536128 +536129 +536130 +536131 +536132 +536133 +536134 +536135 +536160 +536161 +536162 +536163 +536164 +536165 +536166 +536167 +536192 +536193 +536194 +536195 +536196 +536197 +536198 +536199 +536224 +536225 +536226 +536227 +536228 +536229 +536230 +536231 +536256 +536257 +536258 +536259 +536260 +536261 +536262 +536263 +536288 +536289 +536290 +536291 +536292 +536293 +536294 +536295 +536320 +536321 +536322 +536323 +536324 +536325 +536326 +536327 +536352 +536353 +536354 +536355 +536356 +536357 +536358 +536359 +536384 +536385 +536386 +536387 +536388 +536389 +536390 +536391 +536416 +536417 +536418 +536419 +536420 +536421 +536422 +536423 +536448 +536449 +536450 +536451 +536452 +536453 +536454 +536455 +536480 +536481 +536482 +536483 +536484 +536485 +536486 +536487 +536512 +536513 +536514 +536515 +536516 +536517 +536518 +536519 +536544 +536545 +536546 +536547 +536548 +536549 +536550 +536551 +536576 +536577 +536578 +536579 +536580 +536581 +536582 +536583 +536608 +536609 +536610 +536611 +536612 +536613 +536614 +536615 +536640 +536641 +536642 +536643 +536644 +536645 +536646 +536647 +536672 +536673 +536674 +536675 +536676 +536677 +536678 +536679 +536704 +536705 +536706 +536707 +536708 +536709 +536710 +536711 +536736 +536737 +536738 +536739 +536740 +536741 +536742 +536743 +536768 +536769 +536770 +536771 +536772 +536773 +536774 +536775 +536800 +536801 +536802 +536803 +536804 +536805 +536806 +536807 +536832 +536833 +536834 +536835 +536836 +536837 +536838 +536839 +536864 +536865 +536866 +536867 +536868 +536869 +536870 +536871 +536896 +536897 +536898 +536899 +536900 +536901 +536902 +536903 +536928 +536929 +536930 +536931 +536932 +536933 +536934 +536935 +536960 +536961 +536962 +536963 +536964 +536965 +536966 +536967 +536992 +536993 +536994 +536995 +536996 +536997 +536998 +536999 +537024 +537025 +537026 +537027 +537028 +537029 +537030 +537031 +537056 +537057 +537058 +537059 +537060 +537061 +537062 +537063 +537088 +537089 +537090 +537091 +537092 +537093 +537094 +537095 +537120 +537121 +537122 +537123 +537124 +537125 +537126 +537127 +537152 +537153 +537154 +537155 +537156 +537157 +537158 +537159 +537184 +537185 +537186 +537187 +537188 +537189 +537190 +537191 +537216 +537217 +537218 +537219 +537220 +537221 +537222 +537223 +537248 +537249 +537250 +537251 +537252 +537253 +537254 +537255 +537280 +537281 +537282 +537283 +537284 +537285 +537286 +537287 +537312 +537313 +537314 +537315 +537316 +537317 +537318 +537319 +537344 +537345 +537346 +537347 +537348 +537349 +537350 +537351 +537376 +537377 +537378 +537379 +537380 +537381 +537382 +537383 +537408 +537409 +537410 +537411 +537412 +537413 +537414 +537415 +537440 +537441 +537442 +537443 +537444 +537445 +537446 +537447 +537472 +537473 +537474 +537475 +537476 +537477 +537478 +537479 +537504 +537505 +537506 +537507 +537508 +537509 +537510 +537511 +537536 +537537 +537538 +537539 +537540 +537541 +537542 +537543 +537568 +537569 +537570 +537571 +537572 +537573 +537574 +537575 +537600 +537601 +537602 +537603 +537604 +537605 +537606 +537607 +537632 +537633 +537634 +537635 +537636 +537637 +537638 +537639 +537664 +537665 +537666 +537667 +537668 +537669 +537670 +537671 +537696 +537697 +537698 +537699 +537700 +537701 +537702 +537703 +537728 +537729 +537730 +537731 +537732 +537733 +537734 +537735 +537760 +537761 +537762 +537763 +537764 +537765 +537766 +537767 +537792 +537793 +537794 +537795 +537796 +537797 +537798 +537799 +537824 +537825 +537826 +537827 +537828 +537829 +537830 +537831 +537856 +537857 +537858 +537859 +537860 +537861 +537862 +537863 +537888 +537889 +537890 +537891 +537892 +537893 +537894 +537895 +537920 +537921 +537922 +537923 +537924 +537925 +537926 +537927 +537952 +537953 +537954 +537955 +537956 +537957 +537958 +537959 +537984 +537985 +537986 +537987 +537988 +537989 +537990 +537991 +538016 +538017 +538018 +538019 +538020 +538021 +538022 +538023 +538048 +538049 +538050 +538051 +538052 +538053 +538054 +538055 +538080 +538081 +538082 +538083 +538084 +538085 +538086 +538087 +538112 +538113 +538114 +538115 +538116 +538117 +538118 +538119 +538144 +538145 +538146 +538147 +538148 +538149 +538150 +538151 +538176 +538177 +538178 +538179 +538180 +538181 +538182 +538183 +538208 +538209 +538210 +538211 +538212 +538213 +538214 +538215 +538240 +538241 +538242 +538243 +538244 +538245 +538246 +538247 +538272 +538273 +538274 +538275 +538276 +538277 +538278 +538279 +538304 +538305 +538306 +538307 +538308 +538309 +538310 +538311 +538336 +538337 +538338 +538339 +538340 +538341 +538342 +538343 +538368 +538369 +538370 +538371 +538372 +538373 +538374 +538375 +538400 +538401 +538402 +538403 +538404 +538405 +538406 +538407 +538432 +538433 +538434 +538435 +538436 +538437 +538438 +538439 +538464 +538465 +538466 +538467 +538468 +538469 +538470 +538471 +538496 +538497 +538498 +538499 +538500 +538501 +538502 +538503 +538528 +538529 +538530 +538531 +538532 +538533 +538534 +538535 +538560 +538561 +538562 +538563 +538564 +538565 +538566 +538567 +538592 +538593 +538594 +538595 +538596 +538597 +538598 +538599 +538624 +538625 +538626 +538627 +538628 +538629 +538630 +538631 +538656 +538657 +538658 +538659 +538660 +538661 +538662 +538663 +538688 +538689 +538690 +538691 +538692 +538693 +538694 +538695 +538720 +538721 +538722 +538723 +538724 +538725 +538726 +538727 +538752 +538753 +538754 +538755 +538756 +538757 +538758 +538759 +538784 +538785 +538786 +538787 +538788 +538789 +538790 +538791 +538816 +538817 +538818 +538819 +538820 +538821 +538822 +538823 +538848 +538849 +538850 +538851 +538852 +538853 +538854 +538855 +538880 +538881 +538882 +538883 +538884 +538885 +538886 +538887 +538912 +538913 +538914 +538915 +538916 +538917 +538918 +538919 +538944 +538945 +538946 +538947 +538948 +538949 +538950 +538951 +538976 +538977 +538978 +538979 +538980 +538981 +538982 +538983 +539008 +539009 +539010 +539011 +539012 +539013 +539014 +539015 +539040 +539041 +539042 +539043 +539044 +539045 +539046 +539047 +539072 +539073 +539074 +539075 +539076 +539077 +539078 +539079 +539104 +539105 +539106 +539107 +539108 +539109 +539110 +539111 +539136 +539137 +539138 +539139 +539140 +539141 +539142 +539143 +539168 +539169 +539170 +539171 +539172 +539173 +539174 +539175 +539200 +539201 +539202 +539203 +539204 +539205 +539206 +539207 +539232 +539233 +539234 +539235 +539236 +539237 +539238 +539239 +539264 +539265 +539266 +539267 +539268 +539269 +539270 +539271 +539296 +539297 +539298 +539299 +539300 +539301 +539302 +539303 +539328 +539329 +539330 +539331 +539332 +539333 +539334 +539335 +539360 +539361 +539362 +539363 +539364 +539365 +539366 +539367 +539392 +539393 +539394 +539395 +539396 +539397 +539398 +539399 +539424 +539425 +539426 +539427 +539428 +539429 +539430 +539431 +539456 +539457 +539458 +539459 +539460 +539461 +539462 +539463 +539488 +539489 +539490 +539491 +539492 +539493 +539494 +539495 +539520 +539521 +539522 +539523 +539524 +539525 +539526 +539527 +539552 +539553 +539554 +539555 +539556 +539557 +539558 +539559 +539584 +539585 +539586 +539587 +539588 +539589 +539590 +539591 +539616 +539617 +539618 +539619 +539620 +539621 +539622 +539623 +539648 +539649 +539650 +539651 +539652 +539653 +539654 +539655 +539680 +539681 +539682 +539683 +539684 +539685 +539686 +539687 +539712 +539713 +539714 +539715 +539716 +539717 +539718 +539719 +539744 +539745 +539746 +539747 +539748 +539749 +539750 +539751 +539776 +539777 +539778 +539779 +539780 +539781 +539782 +539783 +539808 +539809 +539810 +539811 +539812 +539813 +539814 +539815 +539840 +539841 +539842 +539843 +539844 +539845 +539846 +539847 +539872 +539873 +539874 +539875 +539876 +539877 +539878 +539879 +539904 +539905 +539906 +539907 +539908 +539909 +539910 +539911 +539936 +539937 +539938 +539939 +539940 +539941 +539942 +539943 +539968 +539969 +539970 +539971 +539972 +539973 +539974 +539975 +540000 +540001 +540002 +540003 +540004 +540005 +540006 +540007 +540032 +540033 +540034 +540035 +540036 +540037 +540038 +540039 +540064 +540065 +540066 +540067 +540068 +540069 +540070 +540071 +540096 +540097 +540098 +540099 +540100 +540101 +540102 +540103 +540128 +540129 +540130 +540131 +540132 +540133 +540134 +540135 +540160 +540161 +540162 +540163 +540164 +540165 +540166 +540167 +540192 +540193 +540194 +540195 +540196 +540197 +540198 +540199 +540224 +540225 +540226 +540227 +540228 +540229 +540230 +540231 +540256 +540257 +540258 +540259 +540260 +540261 +540262 +540263 +540288 +540289 +540290 +540291 +540292 +540293 +540294 +540295 +540320 +540321 +540322 +540323 +540324 +540325 +540326 +540327 +540352 +540353 +540354 +540355 +540356 +540357 +540358 +540359 +540384 +540385 +540386 +540387 +540388 +540389 +540390 +540391 +540416 +540417 +540418 +540419 +540420 +540421 +540422 +540423 +540448 +540449 +540450 +540451 +540452 +540453 +540454 +540455 +540480 +540481 +540482 +540483 +540484 +540485 +540486 +540487 +540512 +540513 +540514 +540515 +540516 +540517 +540518 +540519 +540544 +540545 +540546 +540547 +540548 +540549 +540550 +540551 +540576 +540577 +540578 +540579 +540580 +540581 +540582 +540583 +540608 +540609 +540610 +540611 +540612 +540613 +540614 +540615 +540640 +540641 +540642 +540643 +540644 +540645 +540646 +540647 +540672 +540673 +540674 +540675 +540676 +540677 +540678 +540679 +540704 +540705 +540706 +540707 +540708 +540709 +540710 +540711 +540736 +540737 +540738 +540739 +540740 +540741 +540742 +540743 +540768 +540769 +540770 +540771 +540772 +540773 +540774 +540775 +540800 +540801 +540802 +540803 +540804 +540805 +540806 +540807 +540832 +540833 +540834 +540835 +540836 +540837 +540838 +540839 +540864 +540865 +540866 +540867 +540868 +540869 +540870 +540871 +540896 +540897 +540898 +540899 +540900 +540901 +540902 +540903 +540928 +540929 +540930 +540931 +540932 +540933 +540934 +540935 +540960 +540961 +540962 +540963 +540964 +540965 +540966 +540967 +540992 +540993 +540994 +540995 +540996 +540997 +540998 +540999 +541024 +541025 +541026 +541027 +541028 +541029 +541030 +541031 +541056 +541057 +541058 +541059 +541060 +541061 +541062 +541063 +541088 +541089 +541090 +541091 +541092 +541093 +541094 +541095 +541120 +541121 +541122 +541123 +541124 +541125 +541126 +541127 +541152 +541153 +541154 +541155 +541156 +541157 +541158 +541159 +541184 +541185 +541186 +541187 +541188 +541189 +541190 +541191 +541216 +541217 +541218 +541219 +541220 +541221 +541222 +541223 +541248 +541249 +541250 +541251 +541252 +541253 +541254 +541255 +541280 +541281 +541282 +541283 +541284 +541285 +541286 +541287 +541312 +541313 +541314 +541315 +541316 +541317 +541318 +541319 +541344 +541345 +541346 +541347 +541348 +541349 +541350 +541351 +541376 +541377 +541378 +541379 +541380 +541381 +541382 +541383 +541408 +541409 +541410 +541411 +541412 +541413 +541414 +541415 +541440 +541441 +541442 +541443 +541444 +541445 +541446 +541447 +541472 +541473 +541474 +541475 +541476 +541477 +541478 +541479 +541504 +541505 +541506 +541507 +541508 +541509 +541510 +541511 +541536 +541537 +541538 +541539 +541540 +541541 +541542 +541543 +541568 +541569 +541570 +541571 +541572 +541573 +541574 +541575 +541600 +541601 +541602 +541603 +541604 +541605 +541606 +541607 +541632 +541633 +541634 +541635 +541636 +541637 +541638 +541639 +541664 +541665 +541666 +541667 +541668 +541669 +541670 +541671 +541696 +541697 +541698 +541699 +541700 +541701 +541702 +541703 +541728 +541729 +541730 +541731 +541732 +541733 +541734 +541735 +541760 +541761 +541762 +541763 +541764 +541765 +541766 +541767 +541792 +541793 +541794 +541795 +541796 +541797 +541798 +541799 +541824 +541825 +541826 +541827 +541828 +541829 +541830 +541831 +541856 +541857 +541858 +541859 +541860 +541861 +541862 +541863 +541888 +541889 +541890 +541891 +541892 +541893 +541894 +541895 +541920 +541921 +541922 +541923 +541924 +541925 +541926 +541927 +541952 +541953 +541954 +541955 +541956 +541957 +541958 +541959 +541984 +541985 +541986 +541987 +541988 +541989 +541990 +541991 +542016 +542017 +542018 +542019 +542020 +542021 +542022 +542023 +542048 +542049 +542050 +542051 +542052 +542053 +542054 +542055 +542080 +542081 +542082 +542083 +542084 +542085 +542086 +542087 +542112 +542113 +542114 +542115 +542116 +542117 +542118 +542119 +542144 +542145 +542146 +542147 +542148 +542149 +542150 +542151 +542176 +542177 +542178 +542179 +542180 +542181 +542182 +542183 +542208 +542209 +542210 +542211 +542212 +542213 +542214 +542215 +542240 +542241 +542242 +542243 +542244 +542245 +542246 +542247 +542272 +542273 +542274 +542275 +542276 +542277 +542278 +542279 +542304 +542305 +542306 +542307 +542308 +542309 +542310 +542311 +542336 +542337 +542338 +542339 +542340 +542341 +542342 +542343 +542368 +542369 +542370 +542371 +542372 +542373 +542374 +542375 +542400 +542401 +542402 +542403 +542404 +542405 +542406 +542407 +542432 +542433 +542434 +542435 +542436 +542437 +542438 +542439 +542464 +542465 +542466 +542467 +542468 +542469 +542470 +542471 +542496 +542497 +542498 +542499 +542500 +542501 +542502 +542503 +542528 +542529 +542530 +542531 +542532 +542533 +542534 +542535 +542560 +542561 +542562 +542563 +542564 +542565 +542566 +542567 +542592 +542593 +542594 +542595 +542596 +542597 +542598 +542599 +542624 +542625 +542626 +542627 +542628 +542629 +542630 +542631 +542656 +542657 +542658 +542659 +542660 +542661 +542662 +542663 +542688 +542689 +542690 +542691 +542692 +542693 +542694 +542695 +542720 +542721 +542722 +542723 +542724 +542725 +542726 +542727 +542752 +542753 +542754 +542755 +542756 +542757 +542758 +542759 +542784 +542785 +542786 +542787 +542788 +542789 +542790 +542791 +542816 +542817 +542818 +542819 +542820 +542821 +542822 +542823 +542848 +542849 +542850 +542851 +542852 +542853 +542854 +542855 +542880 +542881 +542882 +542883 +542884 +542885 +542886 +542887 +542912 +542913 +542914 +542915 +542916 +542917 +542918 +542919 +542944 +542945 +542946 +542947 +542948 +542949 +542950 +542951 +542976 +542977 +542978 +542979 +542980 +542981 +542982 +542983 +543008 +543009 +543010 +543011 +543012 +543013 +543014 +543015 +543040 +543041 +543042 +543043 +543044 +543045 +543046 +543047 +543072 +543073 +543074 +543075 +543076 +543077 +543078 +543079 +543104 +543105 +543106 +543107 +543108 +543109 +543110 +543111 +543136 +543137 +543138 +543139 +543140 +543141 +543142 +543143 +543168 +543169 +543170 +543171 +543172 +543173 +543174 +543175 +543200 +543201 +543202 +543203 +543204 +543205 +543206 +543207 +543232 +543233 +543234 +543235 +543236 +543237 +543238 +543239 +543264 +543265 +543266 +543267 +543268 +543269 +543270 +543271 +543296 +543297 +543298 +543299 +543300 +543301 +543302 +543303 +543328 +543329 +543330 +543331 +543332 +543333 +543334 +543335 +543360 +543361 +543362 +543363 +543364 +543365 +543366 +543367 +543392 +543393 +543394 +543395 +543396 +543397 +543398 +543399 +543424 +543425 +543426 +543427 +543428 +543429 +543430 +543431 +543456 +543457 +543458 +543459 +543460 +543461 +543462 +543463 +543488 +543489 +543490 +543491 +543492 +543493 +543494 +543495 +543520 +543521 +543522 +543523 +543524 +543525 +543526 +543527 +543552 +543553 +543554 +543555 +543556 +543557 +543558 +543559 +543584 +543585 +543586 +543587 +543588 +543589 +543590 +543591 +543616 +543617 +543618 +543619 +543620 +543621 +543622 +543623 +543648 +543649 +543650 +543651 +543652 +543653 +543654 +543655 +543680 +543681 +543682 +543683 +543684 +543685 +543686 +543687 +543712 +543713 +543714 +543715 +543716 +543717 +543718 +543719 +543744 +543745 +543746 +543747 +543748 +543749 +543750 +543751 +543776 +543777 +543778 +543779 +543780 +543781 +543782 +543783 +543808 +543809 +543810 +543811 +543812 +543813 +543814 +543815 +543840 +543841 +543842 +543843 +543844 +543845 +543846 +543847 +543872 +543873 +543874 +543875 +543876 +543877 +543878 +543879 +543904 +543905 +543906 +543907 +543908 +543909 +543910 +543911 +543936 +543937 +543938 +543939 +543940 +543941 +543942 +543943 +543968 +543969 +543970 +543971 +543972 +543973 +543974 +543975 +544000 +544001 +544002 +544003 +544004 +544005 +544006 +544007 +544032 +544033 +544034 +544035 +544036 +544037 +544038 +544039 +544064 +544065 +544066 +544067 +544068 +544069 +544070 +544071 +544096 +544097 +544098 +544099 +544100 +544101 +544102 +544103 +544128 +544129 +544130 +544131 +544132 +544133 +544134 +544135 +544160 +544161 +544162 +544163 +544164 +544165 +544166 +544167 +544192 +544193 +544194 +544195 +544196 +544197 +544198 +544199 +544224 +544225 +544226 +544227 +544228 +544229 +544230 +544231 +544256 +544257 +544258 +544259 +544260 +544261 +544262 +544263 +544288 +544289 +544290 +544291 +544292 +544293 +544294 +544295 +544320 +544321 +544322 +544323 +544324 +544325 +544326 +544327 +544352 +544353 +544354 +544355 +544356 +544357 +544358 +544359 +544384 +544385 +544386 +544387 +544388 +544389 +544390 +544391 +544416 +544417 +544418 +544419 +544420 +544421 +544422 +544423 +544448 +544449 +544450 +544451 +544452 +544453 +544454 +544455 +544480 +544481 +544482 +544483 +544484 +544485 +544486 +544487 +544512 +544513 +544514 +544515 +544516 +544517 +544518 +544519 +544544 +544545 +544546 +544547 +544548 +544549 +544550 +544551 +544576 +544577 +544578 +544579 +544580 +544581 +544582 +544583 +544608 +544609 +544610 +544611 +544612 +544613 +544614 +544615 +544640 +544641 +544642 +544643 +544644 +544645 +544646 +544647 +544672 +544673 +544674 +544675 +544676 +544677 +544678 +544679 +544704 +544705 +544706 +544707 +544708 +544709 +544710 +544711 +544736 +544737 +544738 +544739 +544740 +544741 +544742 +544743 +544768 +544769 +544770 +544771 +544772 +544773 +544774 +544775 +544800 +544801 +544802 +544803 +544804 +544805 +544806 +544807 +544832 +544833 +544834 +544835 +544836 +544837 +544838 +544839 +544864 +544865 +544866 +544867 +544868 +544869 +544870 +544871 +544896 +544897 +544898 +544899 +544900 +544901 +544902 +544903 +544928 +544929 +544930 +544931 +544932 +544933 +544934 +544935 +544960 +544961 +544962 +544963 +544964 +544965 +544966 +544967 +544992 +544993 +544994 +544995 +544996 +544997 +544998 +544999 +545024 +545025 +545026 +545027 +545028 +545029 +545030 +545031 +545056 +545057 +545058 +545059 +545060 +545061 +545062 +545063 +545088 +545089 +545090 +545091 +545092 +545093 +545094 +545095 +545120 +545121 +545122 +545123 +545124 +545125 +545126 +545127 +545152 +545153 +545154 +545155 +545156 +545157 +545158 +545159 +545184 +545185 +545186 +545187 +545188 +545189 +545190 +545191 +545216 +545217 +545218 +545219 +545220 +545221 +545222 +545223 +545248 +545249 +545250 +545251 +545252 +545253 +545254 +545255 +545280 +545281 +545282 +545283 +545284 +545285 +545286 +545287 +545312 +545313 +545314 +545315 +545316 +545317 +545318 +545319 +545344 +545345 +545346 +545347 +545348 +545349 +545350 +545351 +545376 +545377 +545378 +545379 +545380 +545381 +545382 +545383 +545408 +545409 +545410 +545411 +545412 +545413 +545414 +545415 +545440 +545441 +545442 +545443 +545444 +545445 +545446 +545447 +545472 +545473 +545474 +545475 +545476 +545477 +545478 +545479 +545504 +545505 +545506 +545507 +545508 +545509 +545510 +545511 +545536 +545537 +545538 +545539 +545540 +545541 +545542 +545543 +545568 +545569 +545570 +545571 +545572 +545573 +545574 +545575 +545600 +545601 +545602 +545603 +545604 +545605 +545606 +545607 +545632 +545633 +545634 +545635 +545636 +545637 +545638 +545639 +545664 +545665 +545666 +545667 +545668 +545669 +545670 +545671 +545696 +545697 +545698 +545699 +545700 +545701 +545702 +545703 +545728 +545729 +545730 +545731 +545732 +545733 +545734 +545735 +545760 +545761 +545762 +545763 +545764 +545765 +545766 +545767 +545792 +545793 +545794 +545795 +545796 +545797 +545798 +545799 +545824 +545825 +545826 +545827 +545828 +545829 +545830 +545831 +545856 +545857 +545858 +545859 +545860 +545861 +545862 +545863 +545888 +545889 +545890 +545891 +545892 +545893 +545894 +545895 +545920 +545921 +545922 +545923 +545924 +545925 +545926 +545927 +545952 +545953 +545954 +545955 +545956 +545957 +545958 +545959 +545984 +545985 +545986 +545987 +545988 +545989 +545990 +545991 +546016 +546017 +546018 +546019 +546020 +546021 +546022 +546023 +546048 +546049 +546050 +546051 +546052 +546053 +546054 +546055 +546080 +546081 +546082 +546083 +546084 +546085 +546086 +546087 +546112 +546113 +546114 +546115 +546116 +546117 +546118 +546119 +546144 +546145 +546146 +546147 +546148 +546149 +546150 +546151 +546176 +546177 +546178 +546179 +546180 +546181 +546182 +546183 +546208 +546209 +546210 +546211 +546212 +546213 +546214 +546215 +546240 +546241 +546242 +546243 +546244 +546245 +546246 +546247 +546272 +546273 +546274 +546275 +546276 +546277 +546278 +546279 +546304 +546305 +546306 +546307 +546308 +546309 +546310 +546311 +546336 +546337 +546338 +546339 +546340 +546341 +546342 +546343 +546368 +546369 +546370 +546371 +546372 +546373 +546374 +546375 +546400 +546401 +546402 +546403 +546404 +546405 +546406 +546407 +546432 +546433 +546434 +546435 +546436 +546437 +546438 +546439 +546464 +546465 +546466 +546467 +546468 +546469 +546470 +546471 +546496 +546497 +546498 +546499 +546500 +546501 +546502 +546503 +546528 +546529 +546530 +546531 +546532 +546533 +546534 +546535 +546560 +546561 +546562 +546563 +546564 +546565 +546566 +546567 +546592 +546593 +546594 +546595 +546596 +546597 +546598 +546599 +546624 +546625 +546626 +546627 +546628 +546629 +546630 +546631 +546656 +546657 +546658 +546659 +546660 +546661 +546662 +546663 +546688 +546689 +546690 +546691 +546692 +546693 +546694 +546695 +546720 +546721 +546722 +546723 +546724 +546725 +546726 +546727 +546752 +546753 +546754 +546755 +546756 +546757 +546758 +546759 +546784 +546785 +546786 +546787 +546788 +546789 +546790 +546791 +546816 +546817 +546818 +546819 +546820 +546821 +546822 +546823 +546848 +546849 +546850 +546851 +546852 +546853 +546854 +546855 +546880 +546881 +546882 +546883 +546884 +546885 +546886 +546887 +546912 +546913 +546914 +546915 +546916 +546917 +546918 +546919 +546944 +546945 +546946 +546947 +546948 +546949 +546950 +546951 +546976 +546977 +546978 +546979 +546980 +546981 +546982 +546983 +547008 +547009 +547010 +547011 +547012 +547013 +547014 +547015 +547040 +547041 +547042 +547043 +547044 +547045 +547046 +547047 +547072 +547073 +547074 +547075 +547076 +547077 +547078 +547079 +547104 +547105 +547106 +547107 +547108 +547109 +547110 +547111 +547136 +547137 +547138 +547139 +547140 +547141 +547142 +547143 +547168 +547169 +547170 +547171 +547172 +547173 +547174 +547175 +547200 +547201 +547202 +547203 +547204 +547205 +547206 +547207 +547232 +547233 +547234 +547235 +547236 +547237 +547238 +547239 +547264 +547265 +547266 +547267 +547268 +547269 +547270 +547271 +547296 +547297 +547298 +547299 +547300 +547301 +547302 +547303 +547328 +547329 +547330 +547331 +547332 +547333 +547334 +547335 +547360 +547361 +547362 +547363 +547364 +547365 +547366 +547367 +547392 +547393 +547394 +547395 +547396 +547397 +547398 +547399 +547424 +547425 +547426 +547427 +547428 +547429 +547430 +547431 +547456 +547457 +547458 +547459 +547460 +547461 +547462 +547463 +547488 +547489 +547490 +547491 +547492 +547493 +547494 +547495 +547520 +547521 +547522 +547523 +547524 +547525 +547526 +547527 +547552 +547553 +547554 +547555 +547556 +547557 +547558 +547559 +547584 +547585 +547586 +547587 +547588 +547589 +547590 +547591 +547616 +547617 +547618 +547619 +547620 +547621 +547622 +547623 +547648 +547649 +547650 +547651 +547652 +547653 +547654 +547655 +547680 +547681 +547682 +547683 +547684 +547685 +547686 +547687 +547712 +547713 +547714 +547715 +547716 +547717 +547718 +547719 +547744 +547745 +547746 +547747 +547748 +547749 +547750 +547751 +547776 +547777 +547778 +547779 +547780 +547781 +547782 +547783 +547808 +547809 +547810 +547811 +547812 +547813 +547814 +547815 +547840 +547841 +547842 +547843 +547844 +547845 +547846 +547847 +547872 +547873 +547874 +547875 +547876 +547877 +547878 +547879 +547904 +547905 +547906 +547907 +547908 +547909 +547910 +547911 +547936 +547937 +547938 +547939 +547940 +547941 +547942 +547943 +547968 +547969 +547970 +547971 +547972 +547973 +547974 +547975 +548000 +548001 +548002 +548003 +548004 +548005 +548006 +548007 +548032 +548033 +548034 +548035 +548036 +548037 +548038 +548039 +548064 +548065 +548066 +548067 +548068 +548069 +548070 +548071 +548096 +548097 +548098 +548099 +548100 +548101 +548102 +548103 +548128 +548129 +548130 +548131 +548132 +548133 +548134 +548135 +548160 +548161 +548162 +548163 +548164 +548165 +548166 +548167 +548192 +548193 +548194 +548195 +548196 +548197 +548198 +548199 +548224 +548225 +548226 +548227 +548228 +548229 +548230 +548231 +548256 +548257 +548258 +548259 +548260 +548261 +548262 +548263 +548288 +548289 +548290 +548291 +548292 +548293 +548294 +548295 +548320 +548321 +548322 +548323 +548324 +548325 +548326 +548327 +548352 +548353 +548354 +548355 +548356 +548357 +548358 +548359 +548384 +548385 +548386 +548387 +548388 +548389 +548390 +548391 +548416 +548417 +548418 +548419 +548420 +548421 +548422 +548423 +548448 +548449 +548450 +548451 +548452 +548453 +548454 +548455 +548480 +548481 +548482 +548483 +548484 +548485 +548486 +548487 +548512 +548513 +548514 +548515 +548516 +548517 +548518 +548519 +548544 +548545 +548546 +548547 +548548 +548549 +548550 +548551 +548576 +548577 +548578 +548579 +548580 +548581 +548582 +548583 +548608 +548609 +548610 +548611 +548612 +548613 +548614 +548615 +548640 +548641 +548642 +548643 +548644 +548645 +548646 +548647 +548672 +548673 +548674 +548675 +548676 +548677 +548678 +548679 +548704 +548705 +548706 +548707 +548708 +548709 +548710 +548711 +548736 +548737 +548738 +548739 +548740 +548741 +548742 +548743 +548768 +548769 +548770 +548771 +548772 +548773 +548774 +548775 +548800 +548801 +548802 +548803 +548804 +548805 +548806 +548807 +548832 +548833 +548834 +548835 +548836 +548837 +548838 +548839 +548864 +548865 +548866 +548867 +548868 +548869 +548870 +548871 +548896 +548897 +548898 +548899 +548900 +548901 +548902 +548903 +548928 +548929 +548930 +548931 +548932 +548933 +548934 +548935 +548960 +548961 +548962 +548963 +548964 +548965 +548966 +548967 +548992 +548993 +548994 +548995 +548996 +548997 +548998 +548999 +549024 +549025 +549026 +549027 +549028 +549029 +549030 +549031 +549056 +549057 +549058 +549059 +549060 +549061 +549062 +549063 +549088 +549089 +549090 +549091 +549092 +549093 +549094 +549095 +549120 +549121 +549122 +549123 +549124 +549125 +549126 +549127 +549152 +549153 +549154 +549155 +549156 +549157 +549158 +549159 +549184 +549185 +549186 +549187 +549188 +549189 +549190 +549191 +549216 +549217 +549218 +549219 +549220 +549221 +549222 +549223 +549248 +549249 +549250 +549251 +549252 +549253 +549254 +549255 +549280 +549281 +549282 +549283 +549284 +549285 +549286 +549287 +549312 +549313 +549314 +549315 +549316 +549317 +549318 +549319 +549344 +549345 +549346 +549347 +549348 +549349 +549350 +549351 +549376 +549377 +549378 +549379 +549380 +549381 +549382 +549383 +549408 +549409 +549410 +549411 +549412 +549413 +549414 +549415 +549440 +549441 +549442 +549443 +549444 +549445 +549446 +549447 +549472 +549473 +549474 +549475 +549476 +549477 +549478 +549479 +549504 +549505 +549506 +549507 +549508 +549509 +549510 +549511 +549536 +549537 +549538 +549539 +549540 +549541 +549542 +549543 +549568 +549569 +549570 +549571 +549572 +549573 +549574 +549575 +549600 +549601 +549602 +549603 +549604 +549605 +549606 +549607 +549632 +549633 +549634 +549635 +549636 +549637 +549638 +549639 +549664 +549665 +549666 +549667 +549668 +549669 +549670 +549671 +549696 +549697 +549698 +549699 +549700 +549701 +549702 +549703 +549728 +549729 +549730 +549731 +549732 +549733 +549734 +549735 +549760 +549761 +549762 +549763 +549764 +549765 +549766 +549767 +549792 +549793 +549794 +549795 +549796 +549797 +549798 +549799 +549824 +549825 +549826 +549827 +549828 +549829 +549830 +549831 +549856 +549857 +549858 +549859 +549860 +549861 +549862 +549863 +549888 +549889 +549890 +549891 +549892 +549893 +549894 +549895 +549920 +549921 +549922 +549923 +549924 +549925 +549926 +549927 +549952 +549953 +549954 +549955 +549956 +549957 +549958 +549959 +549984 +549985 +549986 +549987 +549988 +549989 +549990 +549991 +550016 +550017 +550018 +550019 +550020 +550021 +550022 +550023 +550048 +550049 +550050 +550051 +550052 +550053 +550054 +550055 +550080 +550081 +550082 +550083 +550084 +550085 +550086 +550087 +550112 +550113 +550114 +550115 +550116 +550117 +550118 +550119 +550144 +550145 +550146 +550147 +550148 +550149 +550150 +550151 +550176 +550177 +550178 +550179 +550180 +550181 +550182 +550183 +550208 +550209 +550210 +550211 +550212 +550213 +550214 +550215 +550240 +550241 +550242 +550243 +550244 +550245 +550246 +550247 +550272 +550273 +550274 +550275 +550276 +550277 +550278 +550279 +550304 +550305 +550306 +550307 +550308 +550309 +550310 +550311 +550336 +550337 +550338 +550339 +550340 +550341 +550342 +550343 +550368 +550369 +550370 +550371 +550372 +550373 +550374 +550375 +550400 +550401 +550402 +550403 +550404 +550405 +550406 +550407 +550432 +550433 +550434 +550435 +550436 +550437 +550438 +550439 +550464 +550465 +550466 +550467 +550468 +550469 +550470 +550471 +550496 +550497 +550498 +550499 +550500 +550501 +550502 +550503 +550528 +550529 +550530 +550531 +550532 +550533 +550534 +550535 +550560 +550561 +550562 +550563 +550564 +550565 +550566 +550567 +550592 +550593 +550594 +550595 +550596 +550597 +550598 +550599 +550624 +550625 +550626 +550627 +550628 +550629 +550630 +550631 +550656 +550657 +550658 +550659 +550660 +550661 +550662 +550663 +550688 +550689 +550690 +550691 +550692 +550693 +550694 +550695 +550720 +550721 +550722 +550723 +550724 +550725 +550726 +550727 +550752 +550753 +550754 +550755 +550756 +550757 +550758 +550759 +550784 +550785 +550786 +550787 +550788 +550789 +550790 +550791 +550816 +550817 +550818 +550819 +550820 +550821 +550822 +550823 +550848 +550849 +550850 +550851 +550852 +550853 +550854 +550855 +550880 +550881 +550882 +550883 +550884 +550885 +550886 +550887 +550912 +550913 +550914 +550915 +550916 +550917 +550918 +550919 +550944 +550945 +550946 +550947 +550948 +550949 +550950 +550951 +550976 +550977 +550978 +550979 +550980 +550981 +550982 +550983 +551008 +551009 +551010 +551011 +551012 +551013 +551014 +551015 +551040 +551041 +551042 +551043 +551044 +551045 +551046 +551047 +551072 +551073 +551074 +551075 +551076 +551077 +551078 +551079 +551104 +551105 +551106 +551107 +551108 +551109 +551110 +551111 +551136 +551137 +551138 +551139 +551140 +551141 +551142 +551143 +551168 +551169 +551170 +551171 +551172 +551173 +551174 +551175 +551200 +551201 +551202 +551203 +551204 +551205 +551206 +551207 +551232 +551233 +551234 +551235 +551236 +551237 +551238 +551239 +551264 +551265 +551266 +551267 +551268 +551269 +551270 +551271 +551296 +551297 +551298 +551299 +551300 +551301 +551302 +551303 +551328 +551329 +551330 +551331 +551332 +551333 +551334 +551335 +551360 +551361 +551362 +551363 +551364 +551365 +551366 +551367 +551392 +551393 +551394 +551395 +551396 +551397 +551398 +551399 +551424 +551425 +551426 +551427 +551428 +551429 +551430 +551431 +551456 +551457 +551458 +551459 +551460 +551461 +551462 +551463 +551488 +551489 +551490 +551491 +551492 +551493 +551494 +551495 +551520 +551521 +551522 +551523 +551524 +551525 +551526 +551527 +551552 +551553 +551554 +551555 +551556 +551557 +551558 +551559 +551584 +551585 +551586 +551587 +551588 +551589 +551590 +551591 +551616 +551617 +551618 +551619 +551620 +551621 +551622 +551623 +551648 +551649 +551650 +551651 +551652 +551653 +551654 +551655 +551680 +551681 +551682 +551683 +551684 +551685 +551686 +551687 +551712 +551713 +551714 +551715 +551716 +551717 +551718 +551719 +551744 +551745 +551746 +551747 +551748 +551749 +551750 +551751 +551776 +551777 +551778 +551779 +551780 +551781 +551782 +551783 +551808 +551809 +551810 +551811 +551812 +551813 +551814 +551815 +551840 +551841 +551842 +551843 +551844 +551845 +551846 +551847 +551872 +551873 +551874 +551875 +551876 +551877 +551878 +551879 +551904 +551905 +551906 +551907 +551908 +551909 +551910 +551911 +551936 +551937 +551938 +551939 +551940 +551941 +551942 +551943 +551968 +551969 +551970 +551971 +551972 +551973 +551974 +551975 +552000 +552001 +552002 +552003 +552004 +552005 +552006 +552007 +552032 +552033 +552034 +552035 +552036 +552037 +552038 +552039 +552064 +552065 +552066 +552067 +552068 +552069 +552070 +552071 +552096 +552097 +552098 +552099 +552100 +552101 +552102 +552103 +552128 +552129 +552130 +552131 +552132 +552133 +552134 +552135 +552160 +552161 +552162 +552163 +552164 +552165 +552166 +552167 +552192 +552193 +552194 +552195 +552196 +552197 +552198 +552199 +552224 +552225 +552226 +552227 +552228 +552229 +552230 +552231 +552256 +552257 +552258 +552259 +552260 +552261 +552262 +552263 +552288 +552289 +552290 +552291 +552292 +552293 +552294 +552295 +552320 +552321 +552322 +552323 +552324 +552325 +552326 +552327 +552352 +552353 +552354 +552355 +552356 +552357 +552358 +552359 +552384 +552385 +552386 +552387 +552388 +552389 +552390 +552391 +552416 +552417 +552418 +552419 +552420 +552421 +552422 +552423 +552448 +552449 +552450 +552451 +552452 +552453 +552454 +552455 +552480 +552481 +552482 +552483 +552484 +552485 +552486 +552487 +552512 +552513 +552514 +552515 +552516 +552517 +552518 +552519 +552544 +552545 +552546 +552547 +552548 +552549 +552550 +552551 +552576 +552577 +552578 +552579 +552580 +552581 +552582 +552583 +552608 +552609 +552610 +552611 +552612 +552613 +552614 +552615 +552640 +552641 +552642 +552643 +552644 +552645 +552646 +552647 +552672 +552673 +552674 +552675 +552676 +552677 +552678 +552679 +552704 +552705 +552706 +552707 +552708 +552709 +552710 +552711 +552736 +552737 +552738 +552739 +552740 +552741 +552742 +552743 +552768 +552769 +552770 +552771 +552772 +552773 +552774 +552775 +552800 +552801 +552802 +552803 +552804 +552805 +552806 +552807 +552832 +552833 +552834 +552835 +552836 +552837 +552838 +552839 +552864 +552865 +552866 +552867 +552868 +552869 +552870 +552871 +552896 +552897 +552898 +552899 +552900 +552901 +552902 +552903 +552928 +552929 +552930 +552931 +552932 +552933 +552934 +552935 +552960 +552961 +552962 +552963 +552964 +552965 +552966 +552967 +552992 +552993 +552994 +552995 +552996 +552997 +552998 +552999 +553024 +553025 +553026 +553027 +553028 +553029 +553030 +553031 +553056 +553057 +553058 +553059 +553060 +553061 +553062 +553063 +553088 +553089 +553090 +553091 +553092 +553093 +553094 +553095 +553120 +553121 +553122 +553123 +553124 +553125 +553126 +553127 +553152 +553153 +553154 +553155 +553156 +553157 +553158 +553159 +553184 +553185 +553186 +553187 +553188 +553189 +553190 +553191 +553216 +553217 +553218 +553219 +553220 +553221 +553222 +553223 +553248 +553249 +553250 +553251 +553252 +553253 +553254 +553255 +553280 +553281 +553282 +553283 +553284 +553285 +553286 +553287 +553312 +553313 +553314 +553315 +553316 +553317 +553318 +553319 +553344 +553345 +553346 +553347 +553348 +553349 +553350 +553351 +553376 +553377 +553378 +553379 +553380 +553381 +553382 +553383 +553408 +553409 +553410 +553411 +553412 +553413 +553414 +553415 +553440 +553441 +553442 +553443 +553444 +553445 +553446 +553447 +553472 +553473 +553474 +553475 +553476 +553477 +553478 +553479 +553504 +553505 +553506 +553507 +553508 +553509 +553510 +553511 +553536 +553537 +553538 +553539 +553540 +553541 +553542 +553543 +553568 +553569 +553570 +553571 +553572 +553573 +553574 +553575 +553600 +553601 +553602 +553603 +553604 +553605 +553606 +553607 +553632 +553633 +553634 +553635 +553636 +553637 +553638 +553639 +553664 +553665 +553666 +553667 +553668 +553669 +553670 +553671 +553696 +553697 +553698 +553699 +553700 +553701 +553702 +553703 +553728 +553729 +553730 +553731 +553732 +553733 +553734 +553735 +553760 +553761 +553762 +553763 +553764 +553765 +553766 +553767 +553792 +553793 +553794 +553795 +553796 +553797 +553798 +553799 +553824 +553825 +553826 +553827 +553828 +553829 +553830 +553831 +553856 +553857 +553858 +553859 +553860 +553861 +553862 +553863 +553888 +553889 +553890 +553891 +553892 +553893 +553894 +553895 +553920 +553921 +553922 +553923 +553924 +553925 +553926 +553927 +553952 +553953 +553954 +553955 +553956 +553957 +553958 +553959 +553984 +553985 +553986 +553987 +553988 +553989 +553990 +553991 +554016 +554017 +554018 +554019 +554020 +554021 +554022 +554023 +554048 +554049 +554050 +554051 +554052 +554053 +554054 +554055 +554080 +554081 +554082 +554083 +554084 +554085 +554086 +554087 +554112 +554113 +554114 +554115 +554116 +554117 +554118 +554119 +554144 +554145 +554146 +554147 +554148 +554149 +554150 +554151 +554176 +554177 +554178 +554179 +554180 +554181 +554182 +554183 +554208 +554209 +554210 +554211 +554212 +554213 +554214 +554215 +554240 +554241 +554242 +554243 +554244 +554245 +554246 +554247 +554272 +554273 +554274 +554275 +554276 +554277 +554278 +554279 +554304 +554305 +554306 +554307 +554308 +554309 +554310 +554311 +554336 +554337 +554338 +554339 +554340 +554341 +554342 +554343 +554368 +554369 +554370 +554371 +554372 +554373 +554374 +554375 +554400 +554401 +554402 +554403 +554404 +554405 +554406 +554407 +554432 +554433 +554434 +554435 +554436 +554437 +554438 +554439 +554464 +554465 +554466 +554467 +554468 +554469 +554470 +554471 +554496 +554497 +554498 +554499 +554500 +554501 +554502 +554503 +554528 +554529 +554530 +554531 +554532 +554533 +554534 +554535 +554560 +554561 +554562 +554563 +554564 +554565 +554566 +554567 +554592 +554593 +554594 +554595 +554596 +554597 +554598 +554599 +554624 +554625 +554626 +554627 +554628 +554629 +554630 +554631 +554656 +554657 +554658 +554659 +554660 +554661 +554662 +554663 +554688 +554689 +554690 +554691 +554692 +554693 +554694 +554695 +554720 +554721 +554722 +554723 +554724 +554725 +554726 +554727 +554752 +554753 +554754 +554755 +554756 +554757 +554758 +554759 +554784 +554785 +554786 +554787 +554788 +554789 +554790 +554791 +554816 +554817 +554818 +554819 +554820 +554821 +554822 +554823 +554848 +554849 +554850 +554851 +554852 +554853 +554854 +554855 +554880 +554881 +554882 +554883 +554884 +554885 +554886 +554887 +554912 +554913 +554914 +554915 +554916 +554917 +554918 +554919 +554944 +554945 +554946 +554947 +554948 +554949 +554950 +554951 +554976 +554977 +554978 +554979 +554980 +554981 +554982 +554983 +555008 +555009 +555010 +555011 +555012 +555013 +555014 +555015 +555040 +555041 +555042 +555043 +555044 +555045 +555046 +555047 +555072 +555073 +555074 +555075 +555076 +555077 +555078 +555079 +555104 +555105 +555106 +555107 +555108 +555109 +555110 +555111 +555136 +555137 +555138 +555139 +555140 +555141 +555142 +555143 +555168 +555169 +555170 +555171 +555172 +555173 +555174 +555175 +555200 +555201 +555202 +555203 +555204 +555205 +555206 +555207 +555232 +555233 +555234 +555235 +555236 +555237 +555238 +555239 +555264 +555265 +555266 +555267 +555268 +555269 +555270 +555271 +555296 +555297 +555298 +555299 +555300 +555301 +555302 +555303 +555328 +555329 +555330 +555331 +555332 +555333 +555334 +555335 +555360 +555361 +555362 +555363 +555364 +555365 +555366 +555367 +555392 +555393 +555394 +555395 +555396 +555397 +555398 +555399 +555424 +555425 +555426 +555427 +555428 +555429 +555430 +555431 +555456 +555457 +555458 +555459 +555460 +555461 +555462 +555463 +555488 +555489 +555490 +555491 +555492 +555493 +555494 +555495 +555520 +555521 +555522 +555523 +555524 +555525 +555526 +555527 +555552 +555553 +555554 +555555 +555556 +555557 +555558 +555559 +555584 +555585 +555586 +555587 +555588 +555589 +555590 +555591 +555616 +555617 +555618 +555619 +555620 +555621 +555622 +555623 +555648 +555649 +555650 +555651 +555652 +555653 +555654 +555655 +555680 +555681 +555682 +555683 +555684 +555685 +555686 +555687 +555712 +555713 +555714 +555715 +555716 +555717 +555718 +555719 +555744 +555745 +555746 +555747 +555748 +555749 +555750 +555751 +555776 +555777 +555778 +555779 +555780 +555781 +555782 +555783 +555808 +555809 +555810 +555811 +555812 +555813 +555814 +555815 +555840 +555841 +555842 +555843 +555844 +555845 +555846 +555847 +555872 +555873 +555874 +555875 +555876 +555877 +555878 +555879 +555904 +555905 +555906 +555907 +555908 +555909 +555910 +555911 +555936 +555937 +555938 +555939 +555940 +555941 +555942 +555943 +555968 +555969 +555970 +555971 +555972 +555973 +555974 +555975 +556000 +556001 +556002 +556003 +556004 +556005 +556006 +556007 +556032 +556033 +556034 +556035 +556036 +556037 +556038 +556039 +556064 +556065 +556066 +556067 +556068 +556069 +556070 +556071 +556096 +556097 +556098 +556099 +556100 +556101 +556102 +556103 +556128 +556129 +556130 +556131 +556132 +556133 +556134 +556135 +556160 +556161 +556162 +556163 +556164 +556165 +556166 +556167 +556192 +556193 +556194 +556195 +556196 +556197 +556198 +556199 +556224 +556225 +556226 +556227 +556228 +556229 +556230 +556231 +556256 +556257 +556258 +556259 +556260 +556261 +556262 +556263 +556288 +556289 +556290 +556291 +556292 +556293 +556294 +556295 +556320 +556321 +556322 +556323 +556324 +556325 +556326 +556327 +556352 +556353 +556354 +556355 +556356 +556357 +556358 +556359 +556384 +556385 +556386 +556387 +556388 +556389 +556390 +556391 +556416 +556417 +556418 +556419 +556420 +556421 +556422 +556423 +556448 +556449 +556450 +556451 +556452 +556453 +556454 +556455 +556480 +556481 +556482 +556483 +556484 +556485 +556486 +556487 +556512 +556513 +556514 +556515 +556516 +556517 +556518 +556519 +556544 +556545 +556546 +556547 +556548 +556549 +556550 +556551 +556576 +556577 +556578 +556579 +556580 +556581 +556582 +556583 +556608 +556609 +556610 +556611 +556612 +556613 +556614 +556615 +556640 +556641 +556642 +556643 +556644 +556645 +556646 +556647 +556672 +556673 +556674 +556675 +556676 +556677 +556678 +556679 +556704 +556705 +556706 +556707 +556708 +556709 +556710 +556711 +556736 +556737 +556738 +556739 +556740 +556741 +556742 +556743 +556768 +556769 +556770 +556771 +556772 +556773 +556774 +556775 +556800 +556801 +556802 +556803 +556804 +556805 +556806 +556807 +556832 +556833 +556834 +556835 +556836 +556837 +556838 +556839 +556864 +556865 +556866 +556867 +556868 +556869 +556870 +556871 +556896 +556897 +556898 +556899 +556900 +556901 +556902 +556903 +556928 +556929 +556930 +556931 +556932 +556933 +556934 +556935 +556960 +556961 +556962 +556963 +556964 +556965 +556966 +556967 +556992 +556993 +556994 +556995 +556996 +556997 +556998 +556999 +557024 +557025 +557026 +557027 +557028 +557029 +557030 +557031 +557056 +557057 +557058 +557059 +557060 +557061 +557062 +557063 +557088 +557089 +557090 +557091 +557092 +557093 +557094 +557095 +557120 +557121 +557122 +557123 +557124 +557125 +557126 +557127 +557152 +557153 +557154 +557155 +557156 +557157 +557158 +557159 +557184 +557185 +557186 +557187 +557188 +557189 +557190 +557191 +557216 +557217 +557218 +557219 +557220 +557221 +557222 +557223 +557248 +557249 +557250 +557251 +557252 +557253 +557254 +557255 +557280 +557281 +557282 +557283 +557284 +557285 +557286 +557287 +557312 +557313 +557314 +557315 +557316 +557317 +557318 +557319 +557344 +557345 +557346 +557347 +557348 +557349 +557350 +557351 +557376 +557377 +557378 +557379 +557380 +557381 +557382 +557383 +557408 +557409 +557410 +557411 +557412 +557413 +557414 +557415 +557440 +557441 +557442 +557443 +557444 +557445 +557446 +557447 +557472 +557473 +557474 +557475 +557476 +557477 +557478 +557479 +557504 +557505 +557506 +557507 +557508 +557509 +557510 +557511 +557536 +557537 +557538 +557539 +557540 +557541 +557542 +557543 +557568 +557569 +557570 +557571 +557572 +557573 +557574 +557575 +557600 +557601 +557602 +557603 +557604 +557605 +557606 +557607 +557632 +557633 +557634 +557635 +557636 +557637 +557638 +557639 +557664 +557665 +557666 +557667 +557668 +557669 +557670 +557671 +557696 +557697 +557698 +557699 +557700 +557701 +557702 +557703 +557728 +557729 +557730 +557731 +557732 +557733 +557734 +557735 +557760 +557761 +557762 +557763 +557764 +557765 +557766 +557767 +557792 +557793 +557794 +557795 +557796 +557797 +557798 +557799 +557824 +557825 +557826 +557827 +557828 +557829 +557830 +557831 +557856 +557857 +557858 +557859 +557860 +557861 +557862 +557863 +557888 +557889 +557890 +557891 +557892 +557893 +557894 +557895 +557920 +557921 +557922 +557923 +557924 +557925 +557926 +557927 +557952 +557953 +557954 +557955 +557956 +557957 +557958 +557959 +557984 +557985 +557986 +557987 +557988 +557989 +557990 +557991 +558016 +558017 +558018 +558019 +558020 +558021 +558022 +558023 +558048 +558049 +558050 +558051 +558052 +558053 +558054 +558055 +558080 +558081 +558082 +558083 +558084 +558085 +558086 +558087 +558112 +558113 +558114 +558115 +558116 +558117 +558118 +558119 +558144 +558145 +558146 +558147 +558148 +558149 +558150 +558151 +558176 +558177 +558178 +558179 +558180 +558181 +558182 +558183 +558208 +558209 +558210 +558211 +558212 +558213 +558214 +558215 +558240 +558241 +558242 +558243 +558244 +558245 +558246 +558247 +558272 +558273 +558274 +558275 +558276 +558277 +558278 +558279 +558304 +558305 +558306 +558307 +558308 +558309 +558310 +558311 +558336 +558337 +558338 +558339 +558340 +558341 +558342 +558343 +558368 +558369 +558370 +558371 +558372 +558373 +558374 +558375 +558400 +558401 +558402 +558403 +558404 +558405 +558406 +558407 +558432 +558433 +558434 +558435 +558436 +558437 +558438 +558439 +558464 +558465 +558466 +558467 +558468 +558469 +558470 +558471 +558496 +558497 +558498 +558499 +558500 +558501 +558502 +558503 +558528 +558529 +558530 +558531 +558532 +558533 +558534 +558535 +558560 +558561 +558562 +558563 +558564 +558565 +558566 +558567 +558592 +558593 +558594 +558595 +558596 +558597 +558598 +558599 +558624 +558625 +558626 +558627 +558628 +558629 +558630 +558631 +558656 +558657 +558658 +558659 +558660 +558661 +558662 +558663 +558688 +558689 +558690 +558691 +558692 +558693 +558694 +558695 +558720 +558721 +558722 +558723 +558724 +558725 +558726 +558727 +558752 +558753 +558754 +558755 +558756 +558757 +558758 +558759 +558784 +558785 +558786 +558787 +558788 +558789 +558790 +558791 +558816 +558817 +558818 +558819 +558820 +558821 +558822 +558823 +558848 +558849 +558850 +558851 +558852 +558853 +558854 +558855 +558880 +558881 +558882 +558883 +558884 +558885 +558886 +558887 +558912 +558913 +558914 +558915 +558916 +558917 +558918 +558919 +558944 +558945 +558946 +558947 +558948 +558949 +558950 +558951 +558976 +558977 +558978 +558979 +558980 +558981 +558982 +558983 +559008 +559009 +559010 +559011 +559012 +559013 +559014 +559015 +559040 +559041 +559042 +559043 +559044 +559045 +559046 +559047 +559072 +559073 +559074 +559075 +559076 +559077 +559078 +559079 +559104 +559105 +559106 +559107 +559108 +559109 +559110 +559111 +559136 +559137 +559138 +559139 +559140 +559141 +559142 +559143 +559168 +559169 +559170 +559171 +559172 +559173 +559174 +559175 +559200 +559201 +559202 +559203 +559204 +559205 +559206 +559207 +559232 +559233 +559234 +559235 +559236 +559237 +559238 +559239 +559264 +559265 +559266 +559267 +559268 +559269 +559270 +559271 +559296 +559297 +559298 +559299 +559300 +559301 +559302 +559303 +559328 +559329 +559330 +559331 +559332 +559333 +559334 +559335 +559360 +559361 +559362 +559363 +559364 +559365 +559366 +559367 +559392 +559393 +559394 +559395 +559396 +559397 +559398 +559399 +559424 +559425 +559426 +559427 +559428 +559429 +559430 +559431 +559456 +559457 +559458 +559459 +559460 +559461 +559462 +559463 +559488 +559489 +559490 +559491 +559492 +559493 +559494 +559495 +559520 +559521 +559522 +559523 +559524 +559525 +559526 +559527 +559552 +559553 +559554 +559555 +559556 +559557 +559558 +559559 +559584 +559585 +559586 +559587 +559588 +559589 +559590 +559591 +559616 +559617 +559618 +559619 +559620 +559621 +559622 +559623 +559648 +559649 +559650 +559651 +559652 +559653 +559654 +559655 +559680 +559681 +559682 +559683 +559684 +559685 +559686 +559687 +559712 +559713 +559714 +559715 +559716 +559717 +559718 +559719 +559744 +559745 +559746 +559747 +559748 +559749 +559750 +559751 +559776 +559777 +559778 +559779 +559780 +559781 +559782 +559783 +559808 +559809 +559810 +559811 +559812 +559813 +559814 +559815 +559840 +559841 +559842 +559843 +559844 +559845 +559846 +559847 +559872 +559873 +559874 +559875 +559876 +559877 +559878 +559879 +559904 +559905 +559906 +559907 +559908 +559909 +559910 +559911 +559936 +559937 +559938 +559939 +559940 +559941 +559942 +559943 +559968 +559969 +559970 +559971 +559972 +559973 +559974 +559975 +560000 +560001 +560002 +560003 +560004 +560005 +560006 +560007 +560032 +560033 +560034 +560035 +560036 +560037 +560038 +560039 +560064 +560065 +560066 +560067 +560068 +560069 +560070 +560071 +560096 +560097 +560098 +560099 +560100 +560101 +560102 +560103 +560128 +560129 +560130 +560131 +560132 +560133 +560134 +560135 +560160 +560161 +560162 +560163 +560164 +560165 +560166 +560167 +560192 +560193 +560194 +560195 +560196 +560197 +560198 +560199 +560224 +560225 +560226 +560227 +560228 +560229 +560230 +560231 +560256 +560257 +560258 +560259 +560260 +560261 +560262 +560263 +560288 +560289 +560290 +560291 +560292 +560293 +560294 +560295 +560320 +560321 +560322 +560323 +560324 +560325 +560326 +560327 +560352 +560353 +560354 +560355 +560356 +560357 +560358 +560359 +560384 +560385 +560386 +560387 +560388 +560389 +560390 +560391 +560416 +560417 +560418 +560419 +560420 +560421 +560422 +560423 +560448 +560449 +560450 +560451 +560452 +560453 +560454 +560455 +560480 +560481 +560482 +560483 +560484 +560485 +560486 +560487 +560512 +560513 +560514 +560515 +560516 +560517 +560518 +560519 +560544 +560545 +560546 +560547 +560548 +560549 +560550 +560551 +560576 +560577 +560578 +560579 +560580 +560581 +560582 +560583 +560608 +560609 +560610 +560611 +560612 +560613 +560614 +560615 +560640 +560641 +560642 +560643 +560644 +560645 +560646 +560647 +560672 +560673 +560674 +560675 +560676 +560677 +560678 +560679 +560704 +560705 +560706 +560707 +560708 +560709 +560710 +560711 +560736 +560737 +560738 +560739 +560740 +560741 +560742 +560743 +560768 +560769 +560770 +560771 +560772 +560773 +560774 +560775 +560800 +560801 +560802 +560803 +560804 +560805 +560806 +560807 +560832 +560833 +560834 +560835 +560836 +560837 +560838 +560839 +560864 +560865 +560866 +560867 +560868 +560869 +560870 +560871 +560896 +560897 +560898 +560899 +560900 +560901 +560902 +560903 +560928 +560929 +560930 +560931 +560932 +560933 +560934 +560935 +560960 +560961 +560962 +560963 +560964 +560965 +560966 +560967 +560992 +560993 +560994 +560995 +560996 +560997 +560998 +560999 +561024 +561025 +561026 +561027 +561028 +561029 +561030 +561031 +561056 +561057 +561058 +561059 +561060 +561061 +561062 +561063 +561088 +561089 +561090 +561091 +561092 +561093 +561094 +561095 +561120 +561121 +561122 +561123 +561124 +561125 +561126 +561127 +561152 +561153 +561154 +561155 +561156 +561157 +561158 +561159 +561184 +561185 +561186 +561187 +561188 +561189 +561190 +561191 +561216 +561217 +561218 +561219 +561220 +561221 +561222 +561223 +561248 +561249 +561250 +561251 +561252 +561253 +561254 +561255 +561280 +561281 +561282 +561283 +561284 +561285 +561286 +561287 +561312 +561313 +561314 +561315 +561316 +561317 +561318 +561319 +561344 +561345 +561346 +561347 +561348 +561349 +561350 +561351 +561376 +561377 +561378 +561379 +561380 +561381 +561382 +561383 +561408 +561409 +561410 +561411 +561412 +561413 +561414 +561415 +561440 +561441 +561442 +561443 +561444 +561445 +561446 +561447 +561472 +561473 +561474 +561475 +561476 +561477 +561478 +561479 +561504 +561505 +561506 +561507 +561508 +561509 +561510 +561511 +561536 +561537 +561538 +561539 +561540 +561541 +561542 +561543 +561568 +561569 +561570 +561571 +561572 +561573 +561574 +561575 +561600 +561601 +561602 +561603 +561604 +561605 +561606 +561607 +561632 +561633 +561634 +561635 +561636 +561637 +561638 +561639 +561664 +561665 +561666 +561667 +561668 +561669 +561670 +561671 +561696 +561697 +561698 +561699 +561700 +561701 +561702 +561703 +561728 +561729 +561730 +561731 +561732 +561733 +561734 +561735 +561760 +561761 +561762 +561763 +561764 +561765 +561766 +561767 +561792 +561793 +561794 +561795 +561796 +561797 +561798 +561799 +561824 +561825 +561826 +561827 +561828 +561829 +561830 +561831 +561856 +561857 +561858 +561859 +561860 +561861 +561862 +561863 +561888 +561889 +561890 +561891 +561892 +561893 +561894 +561895 +561920 +561921 +561922 +561923 +561924 +561925 +561926 +561927 +561952 +561953 +561954 +561955 +561956 +561957 +561958 +561959 +561984 +561985 +561986 +561987 +561988 +561989 +561990 +561991 +562016 +562017 +562018 +562019 +562020 +562021 +562022 +562023 +562048 +562049 +562050 +562051 +562052 +562053 +562054 +562055 +562080 +562081 +562082 +562083 +562084 +562085 +562086 +562087 +562112 +562113 +562114 +562115 +562116 +562117 +562118 +562119 +562144 +562145 +562146 +562147 +562148 +562149 +562150 +562151 +562176 +562177 +562178 +562179 +562180 +562181 +562182 +562183 +562208 +562209 +562210 +562211 +562212 +562213 +562214 +562215 +562240 +562241 +562242 +562243 +562244 +562245 +562246 +562247 +562272 +562273 +562274 +562275 +562276 +562277 +562278 +562279 +562304 +562305 +562306 +562307 +562308 +562309 +562310 +562311 +562336 +562337 +562338 +562339 +562340 +562341 +562342 +562343 +562368 +562369 +562370 +562371 +562372 +562373 +562374 +562375 +562400 +562401 +562402 +562403 +562404 +562405 +562406 +562407 +562432 +562433 +562434 +562435 +562436 +562437 +562438 +562439 +562464 +562465 +562466 +562467 +562468 +562469 +562470 +562471 +562496 +562497 +562498 +562499 +562500 +562501 +562502 +562503 +562528 +562529 +562530 +562531 +562532 +562533 +562534 +562535 +562560 +562561 +562562 +562563 +562564 +562565 +562566 +562567 +562592 +562593 +562594 +562595 +562596 +562597 +562598 +562599 +562624 +562625 +562626 +562627 +562628 +562629 +562630 +562631 +562656 +562657 +562658 +562659 +562660 +562661 +562662 +562663 +562688 +562689 +562690 +562691 +562692 +562693 +562694 +562695 +562720 +562721 +562722 +562723 +562724 +562725 +562726 +562727 +562752 +562753 +562754 +562755 +562756 +562757 +562758 +562759 +562784 +562785 +562786 +562787 +562788 +562789 +562790 +562791 +562816 +562817 +562818 +562819 +562820 +562821 +562822 +562823 +562848 +562849 +562850 +562851 +562852 +562853 +562854 +562855 +562880 +562881 +562882 +562883 +562884 +562885 +562886 +562887 +562912 +562913 +562914 +562915 +562916 +562917 +562918 +562919 +562944 +562945 +562946 +562947 +562948 +562949 +562950 +562951 +562976 +562977 +562978 +562979 +562980 +562981 +562982 +562983 +563008 +563009 +563010 +563011 +563012 +563013 +563014 +563015 +563040 +563041 +563042 +563043 +563044 +563045 +563046 +563047 +563072 +563073 +563074 +563075 +563076 +563077 +563078 +563079 +563104 +563105 +563106 +563107 +563108 +563109 +563110 +563111 +563136 +563137 +563138 +563139 +563140 +563141 +563142 +563143 +563168 +563169 +563170 +563171 +563172 +563173 +563174 +563175 +563200 +563201 +563202 +563203 +563204 +563205 +563206 +563207 +563232 +563233 +563234 +563235 +563236 +563237 +563238 +563239 +563264 +563265 +563266 +563267 +563268 +563269 +563270 +563271 +563296 +563297 +563298 +563299 +563300 +563301 +563302 +563303 +563328 +563329 +563330 +563331 +563332 +563333 +563334 +563335 +563360 +563361 +563362 +563363 +563364 +563365 +563366 +563367 +563392 +563393 +563394 +563395 +563396 +563397 +563398 +563399 +563424 +563425 +563426 +563427 +563428 +563429 +563430 +563431 +563456 +563457 +563458 +563459 +563460 +563461 +563462 +563463 +563488 +563489 +563490 +563491 +563492 +563493 +563494 +563495 +563520 +563521 +563522 +563523 +563524 +563525 +563526 +563527 +563552 +563553 +563554 +563555 +563556 +563557 +563558 +563559 +563584 +563585 +563586 +563587 +563588 +563589 +563590 +563591 +563616 +563617 +563618 +563619 +563620 +563621 +563622 +563623 +563648 +563649 +563650 +563651 +563652 +563653 +563654 +563655 +563680 +563681 +563682 +563683 +563684 +563685 +563686 +563687 +563712 +563713 +563714 +563715 +563716 +563717 +563718 +563719 +563744 +563745 +563746 +563747 +563748 +563749 +563750 +563751 +563776 +563777 +563778 +563779 +563780 +563781 +563782 +563783 +563808 +563809 +563810 +563811 +563812 +563813 +563814 +563815 +563840 +563841 +563842 +563843 +563844 +563845 +563846 +563847 +563872 +563873 +563874 +563875 +563876 +563877 +563878 +563879 +563904 +563905 +563906 +563907 +563908 +563909 +563910 +563911 +563936 +563937 +563938 +563939 +563940 +563941 +563942 +563943 +563968 +563969 +563970 +563971 +563972 +563973 +563974 +563975 +564000 +564001 +564002 +564003 +564004 +564005 +564006 +564007 +564032 +564033 +564034 +564035 +564036 +564037 +564038 +564039 +564064 +564065 +564066 +564067 +564068 +564069 +564070 +564071 +564096 +564097 +564098 +564099 +564100 +564101 +564102 +564103 +564128 +564129 +564130 +564131 +564132 +564133 +564134 +564135 +564160 +564161 +564162 +564163 +564164 +564165 +564166 +564167 +564192 +564193 +564194 +564195 +564196 +564197 +564198 +564199 +564224 +564225 +564226 +564227 +564228 +564229 +564230 +564231 +564256 +564257 +564258 +564259 +564260 +564261 +564262 +564263 +564288 +564289 +564290 +564291 +564292 +564293 +564294 +564295 +564320 +564321 +564322 +564323 +564324 +564325 +564326 +564327 +564352 +564353 +564354 +564355 +564356 +564357 +564358 +564359 +564384 +564385 +564386 +564387 +564388 +564389 +564390 +564391 +564416 +564417 +564418 +564419 +564420 +564421 +564422 +564423 +564448 +564449 +564450 +564451 +564452 +564453 +564454 +564455 +564480 +564481 +564482 +564483 +564484 +564485 +564486 +564487 +564512 +564513 +564514 +564515 +564516 +564517 +564518 +564519 +564544 +564545 +564546 +564547 +564548 +564549 +564550 +564551 +564576 +564577 +564578 +564579 +564580 +564581 +564582 +564583 +564608 +564609 +564610 +564611 +564612 +564613 +564614 +564615 +564640 +564641 +564642 +564643 +564644 +564645 +564646 +564647 +564672 +564673 +564674 +564675 +564676 +564677 +564678 +564679 +564704 +564705 +564706 +564707 +564708 +564709 +564710 +564711 +564736 +564737 +564738 +564739 +564740 +564741 +564742 +564743 +564768 +564769 +564770 +564771 +564772 +564773 +564774 +564775 +564800 +564801 +564802 +564803 +564804 +564805 +564806 +564807 +564832 +564833 +564834 +564835 +564836 +564837 +564838 +564839 +564864 +564865 +564866 +564867 +564868 +564869 +564870 +564871 +564896 +564897 +564898 +564899 +564900 +564901 +564902 +564903 +564928 +564929 +564930 +564931 +564932 +564933 +564934 +564935 +564960 +564961 +564962 +564963 +564964 +564965 +564966 +564967 +564992 +564993 +564994 +564995 +564996 +564997 +564998 +564999 +565024 +565025 +565026 +565027 +565028 +565029 +565030 +565031 +565056 +565057 +565058 +565059 +565060 +565061 +565062 +565063 +565088 +565089 +565090 +565091 +565092 +565093 +565094 +565095 +565120 +565121 +565122 +565123 +565124 +565125 +565126 +565127 +565152 +565153 +565154 +565155 +565156 +565157 +565158 +565159 +565184 +565185 +565186 +565187 +565188 +565189 +565190 +565191 +565216 +565217 +565218 +565219 +565220 +565221 +565222 +565223 +565248 +565249 +565250 +565251 +565252 +565253 +565254 +565255 +565280 +565281 +565282 +565283 +565284 +565285 +565286 +565287 +565312 +565313 +565314 +565315 +565316 +565317 +565318 +565319 +565344 +565345 +565346 +565347 +565348 +565349 +565350 +565351 +565376 +565377 +565378 +565379 +565380 +565381 +565382 +565383 +565408 +565409 +565410 +565411 +565412 +565413 +565414 +565415 +565440 +565441 +565442 +565443 +565444 +565445 +565446 +565447 +565472 +565473 +565474 +565475 +565476 +565477 +565478 +565479 +565504 +565505 +565506 +565507 +565508 +565509 +565510 +565511 +565536 +565537 +565538 +565539 +565540 +565541 +565542 +565543 +565568 +565569 +565570 +565571 +565572 +565573 +565574 +565575 +565600 +565601 +565602 +565603 +565604 +565605 +565606 +565607 +565632 +565633 +565634 +565635 +565636 +565637 +565638 +565639 +565664 +565665 +565666 +565667 +565668 +565669 +565670 +565671 +565696 +565697 +565698 +565699 +565700 +565701 +565702 +565703 +565728 +565729 +565730 +565731 +565732 +565733 +565734 +565735 +565760 +565761 +565762 +565763 +565764 +565765 +565766 +565767 +565792 +565793 +565794 +565795 +565796 +565797 +565798 +565799 +565824 +565825 +565826 +565827 +565828 +565829 +565830 +565831 +565856 +565857 +565858 +565859 +565860 +565861 +565862 +565863 +565888 +565889 +565890 +565891 +565892 +565893 +565894 +565895 +565920 +565921 +565922 +565923 +565924 +565925 +565926 +565927 +565952 +565953 +565954 +565955 +565956 +565957 +565958 +565959 +565984 +565985 +565986 +565987 +565988 +565989 +565990 +565991 +566016 +566017 +566018 +566019 +566020 +566021 +566022 +566023 +566048 +566049 +566050 +566051 +566052 +566053 +566054 +566055 +566080 +566081 +566082 +566083 +566084 +566085 +566086 +566087 +566112 +566113 +566114 +566115 +566116 +566117 +566118 +566119 +566144 +566145 +566146 +566147 +566148 +566149 +566150 +566151 +566176 +566177 +566178 +566179 +566180 +566181 +566182 +566183 +566208 +566209 +566210 +566211 +566212 +566213 +566214 +566215 +566240 +566241 +566242 +566243 +566244 +566245 +566246 +566247 +566272 +566273 +566274 +566275 +566276 +566277 +566278 +566279 +566304 +566305 +566306 +566307 +566308 +566309 +566310 +566311 +566336 +566337 +566338 +566339 +566340 +566341 +566342 +566343 +566368 +566369 +566370 +566371 +566372 +566373 +566374 +566375 +566400 +566401 +566402 +566403 +566404 +566405 +566406 +566407 +566432 +566433 +566434 +566435 +566436 +566437 +566438 +566439 +566464 +566465 +566466 +566467 +566468 +566469 +566470 +566471 +566496 +566497 +566498 +566499 +566500 +566501 +566502 +566503 +566528 +566529 +566530 +566531 +566532 +566533 +566534 +566535 +566560 +566561 +566562 +566563 +566564 +566565 +566566 +566567 +566592 +566593 +566594 +566595 +566596 +566597 +566598 +566599 +566624 +566625 +566626 +566627 +566628 +566629 +566630 +566631 +566656 +566657 +566658 +566659 +566660 +566661 +566662 +566663 +566688 +566689 +566690 +566691 +566692 +566693 +566694 +566695 +566720 +566721 +566722 +566723 +566724 +566725 +566726 +566727 +566752 +566753 +566754 +566755 +566756 +566757 +566758 +566759 +566784 +566785 +566786 +566787 +566788 +566789 +566790 +566791 +566816 +566817 +566818 +566819 +566820 +566821 +566822 +566823 +566848 +566849 +566850 +566851 +566852 +566853 +566854 +566855 +566880 +566881 +566882 +566883 +566884 +566885 +566886 +566887 +566912 +566913 +566914 +566915 +566916 +566917 +566918 +566919 +566944 +566945 +566946 +566947 +566948 +566949 +566950 +566951 +566976 +566977 +566978 +566979 +566980 +566981 +566982 +566983 +567008 +567009 +567010 +567011 +567012 +567013 +567014 +567015 +567040 +567041 +567042 +567043 +567044 +567045 +567046 +567047 +567072 +567073 +567074 +567075 +567076 +567077 +567078 +567079 +567104 +567105 +567106 +567107 +567108 +567109 +567110 +567111 +567136 +567137 +567138 +567139 +567140 +567141 +567142 +567143 +567168 +567169 +567170 +567171 +567172 +567173 +567174 +567175 +567200 +567201 +567202 +567203 +567204 +567205 +567206 +567207 +567232 +567233 +567234 +567235 +567236 +567237 +567238 +567239 +567264 +567265 +567266 +567267 +567268 +567269 +567270 +567271 +567296 +567297 +567298 +567299 +567300 +567301 +567302 +567303 +567328 +567329 +567330 +567331 +567332 +567333 +567334 +567335 +567360 +567361 +567362 +567363 +567364 +567365 +567366 +567367 +567392 +567393 +567394 +567395 +567396 +567397 +567398 +567399 +567424 +567425 +567426 +567427 +567428 +567429 +567430 +567431 +567456 +567457 +567458 +567459 +567460 +567461 +567462 +567463 +567488 +567489 +567490 +567491 +567492 +567493 +567494 +567495 +567520 +567521 +567522 +567523 +567524 +567525 +567526 +567527 +567552 +567553 +567554 +567555 +567556 +567557 +567558 +567559 +567584 +567585 +567586 +567587 +567588 +567589 +567590 +567591 +567616 +567617 +567618 +567619 +567620 +567621 +567622 +567623 +567648 +567649 +567650 +567651 +567652 +567653 +567654 +567655 +567680 +567681 +567682 +567683 +567684 +567685 +567686 +567687 +567712 +567713 +567714 +567715 +567716 +567717 +567718 +567719 +567744 +567745 +567746 +567747 +567748 +567749 +567750 +567751 +567776 +567777 +567778 +567779 +567780 +567781 +567782 +567783 +567808 +567809 +567810 +567811 +567812 +567813 +567814 +567815 +567840 +567841 +567842 +567843 +567844 +567845 +567846 +567847 +567872 +567873 +567874 +567875 +567876 +567877 +567878 +567879 +567904 +567905 +567906 +567907 +567908 +567909 +567910 +567911 +567936 +567937 +567938 +567939 +567940 +567941 +567942 +567943 +567968 +567969 +567970 +567971 +567972 +567973 +567974 +567975 +568000 +568001 +568002 +568003 +568004 +568005 +568006 +568007 +568032 +568033 +568034 +568035 +568036 +568037 +568038 +568039 +568064 +568065 +568066 +568067 +568068 +568069 +568070 +568071 +568096 +568097 +568098 +568099 +568100 +568101 +568102 +568103 +568128 +568129 +568130 +568131 +568132 +568133 +568134 +568135 +568160 +568161 +568162 +568163 +568164 +568165 +568166 +568167 +568192 +568193 +568194 +568195 +568196 +568197 +568198 +568199 +568224 +568225 +568226 +568227 +568228 +568229 +568230 +568231 +568256 +568257 +568258 +568259 +568260 +568261 +568262 +568263 +568288 +568289 +568290 +568291 +568292 +568293 +568294 +568295 +568320 +568321 +568322 +568323 +568324 +568325 +568326 +568327 +568352 +568353 +568354 +568355 +568356 +568357 +568358 +568359 +568384 +568385 +568386 +568387 +568388 +568389 +568390 +568391 +568416 +568417 +568418 +568419 +568420 +568421 +568422 +568423 +568448 +568449 +568450 +568451 +568452 +568453 +568454 +568455 +568480 +568481 +568482 +568483 +568484 +568485 +568486 +568487 +568512 +568513 +568514 +568515 +568516 +568517 +568518 +568519 +568544 +568545 +568546 +568547 +568548 +568549 +568550 +568551 +568576 +568577 +568578 +568579 +568580 +568581 +568582 +568583 +568608 +568609 +568610 +568611 +568612 +568613 +568614 +568615 +568640 +568641 +568642 +568643 +568644 +568645 +568646 +568647 +568672 +568673 +568674 +568675 +568676 +568677 +568678 +568679 +568704 +568705 +568706 +568707 +568708 +568709 +568710 +568711 +568736 +568737 +568738 +568739 +568740 +568741 +568742 +568743 +568768 +568769 +568770 +568771 +568772 +568773 +568774 +568775 +568800 +568801 +568802 +568803 +568804 +568805 +568806 +568807 +568832 +568833 +568834 +568835 +568836 +568837 +568838 +568839 +568864 +568865 +568866 +568867 +568868 +568869 +568870 +568871 +568896 +568897 +568898 +568899 +568900 +568901 +568902 +568903 +568928 +568929 +568930 +568931 +568932 +568933 +568934 +568935 +568960 +568961 +568962 +568963 +568964 +568965 +568966 +568967 +568992 +568993 +568994 +568995 +568996 +568997 +568998 +568999 +569024 +569025 +569026 +569027 +569028 +569029 +569030 +569031 +569056 +569057 +569058 +569059 +569060 +569061 +569062 +569063 +569088 +569089 +569090 +569091 +569092 +569093 +569094 +569095 +569120 +569121 +569122 +569123 +569124 +569125 +569126 +569127 +569152 +569153 +569154 +569155 +569156 +569157 +569158 +569159 +569184 +569185 +569186 +569187 +569188 +569189 +569190 +569191 +569216 +569217 +569218 +569219 +569220 +569221 +569222 +569223 +569248 +569249 +569250 +569251 +569252 +569253 +569254 +569255 +569280 +569281 +569282 +569283 +569284 +569285 +569286 +569287 +569312 +569313 +569314 +569315 +569316 +569317 +569318 +569319 +569344 +569345 +569346 +569347 +569348 +569349 +569350 +569351 +569376 +569377 +569378 +569379 +569380 +569381 +569382 +569383 +569408 +569409 +569410 +569411 +569412 +569413 +569414 +569415 +569440 +569441 +569442 +569443 +569444 +569445 +569446 +569447 +569472 +569473 +569474 +569475 +569476 +569477 +569478 +569479 +569504 +569505 +569506 +569507 +569508 +569509 +569510 +569511 +569536 +569537 +569538 +569539 +569540 +569541 +569542 +569543 +569568 +569569 +569570 +569571 +569572 +569573 +569574 +569575 +569600 +569601 +569602 +569603 +569604 +569605 +569606 +569607 +569632 +569633 +569634 +569635 +569636 +569637 +569638 +569639 +569664 +569665 +569666 +569667 +569668 +569669 +569670 +569671 +569696 +569697 +569698 +569699 +569700 +569701 +569702 +569703 +569728 +569729 +569730 +569731 +569732 +569733 +569734 +569735 +569760 +569761 +569762 +569763 +569764 +569765 +569766 +569767 +569792 +569793 +569794 +569795 +569796 +569797 +569798 +569799 +569824 +569825 +569826 +569827 +569828 +569829 +569830 +569831 +569856 +569857 +569858 +569859 +569860 +569861 +569862 +569863 +569888 +569889 +569890 +569891 +569892 +569893 +569894 +569895 +569920 +569921 +569922 +569923 +569924 +569925 +569926 +569927 +569952 +569953 +569954 +569955 +569956 +569957 +569958 +569959 +569984 +569985 +569986 +569987 +569988 +569989 +569990 +569991 +570016 +570017 +570018 +570019 +570020 +570021 +570022 +570023 +570048 +570049 +570050 +570051 +570052 +570053 +570054 +570055 +570080 +570081 +570082 +570083 +570084 +570085 +570086 +570087 +570112 +570113 +570114 +570115 +570116 +570117 +570118 +570119 +570144 +570145 +570146 +570147 +570148 +570149 +570150 +570151 +570176 +570177 +570178 +570179 +570180 +570181 +570182 +570183 +570208 +570209 +570210 +570211 +570212 +570213 +570214 +570215 +570240 +570241 +570242 +570243 +570244 +570245 +570246 +570247 +570272 +570273 +570274 +570275 +570276 +570277 +570278 +570279 +570304 +570305 +570306 +570307 +570308 +570309 +570310 +570311 +570336 +570337 +570338 +570339 +570340 +570341 +570342 +570343 +570368 +570369 +570370 +570371 +570372 +570373 +570374 +570375 +570400 +570401 +570402 +570403 +570404 +570405 +570406 +570407 +570432 +570433 +570434 +570435 +570436 +570437 +570438 +570439 +570464 +570465 +570466 +570467 +570468 +570469 +570470 +570471 +570496 +570497 +570498 +570499 +570500 +570501 +570502 +570503 +570528 +570529 +570530 +570531 +570532 +570533 +570534 +570535 +570560 +570561 +570562 +570563 +570564 +570565 +570566 +570567 +570592 +570593 +570594 +570595 +570596 +570597 +570598 +570599 +570624 +570625 +570626 +570627 +570628 +570629 +570630 +570631 +570656 +570657 +570658 +570659 +570660 +570661 +570662 +570663 +570688 +570689 +570690 +570691 +570692 +570693 +570694 +570695 +570720 +570721 +570722 +570723 +570724 +570725 +570726 +570727 +570752 +570753 +570754 +570755 +570756 +570757 +570758 +570759 +570784 +570785 +570786 +570787 +570788 +570789 +570790 +570791 +570816 +570817 +570818 +570819 +570820 +570821 +570822 +570823 +570848 +570849 +570850 +570851 +570852 +570853 +570854 +570855 +570880 +570881 +570882 +570883 +570884 +570885 +570886 +570887 +570912 +570913 +570914 +570915 +570916 +570917 +570918 +570919 +570944 +570945 +570946 +570947 +570948 +570949 +570950 +570951 +570976 +570977 +570978 +570979 +570980 +570981 +570982 +570983 +571008 +571009 +571010 +571011 +571012 +571013 +571014 +571015 +571040 +571041 +571042 +571043 +571044 +571045 +571046 +571047 +571072 +571073 +571074 +571075 +571076 +571077 +571078 +571079 +571104 +571105 +571106 +571107 +571108 +571109 +571110 +571111 +571136 +571137 +571138 +571139 +571140 +571141 +571142 +571143 +571168 +571169 +571170 +571171 +571172 +571173 +571174 +571175 +571200 +571201 +571202 +571203 +571204 +571205 +571206 +571207 +571232 +571233 +571234 +571235 +571236 +571237 +571238 +571239 +571264 +571265 +571266 +571267 +571268 +571269 +571270 +571271 +571296 +571297 +571298 +571299 +571300 +571301 +571302 +571303 +571328 +571329 +571330 +571331 +571332 +571333 +571334 +571335 +571360 +571361 +571362 +571363 +571364 +571365 +571366 +571367 +571392 +571393 +571394 +571395 +571396 +571397 +571398 +571399 +571424 +571425 +571426 +571427 +571428 +571429 +571430 +571431 +571456 +571457 +571458 +571459 +571460 +571461 +571462 +571463 +571488 +571489 +571490 +571491 +571492 +571493 +571494 +571495 +571520 +571521 +571522 +571523 +571524 +571525 +571526 +571527 +571552 +571553 +571554 +571555 +571556 +571557 +571558 +571559 +571584 +571585 +571586 +571587 +571588 +571589 +571590 +571591 +571616 +571617 +571618 +571619 +571620 +571621 +571622 +571623 +571648 +571649 +571650 +571651 +571652 +571653 +571654 +571655 +571680 +571681 +571682 +571683 +571684 +571685 +571686 +571687 +571712 +571713 +571714 +571715 +571716 +571717 +571718 +571719 +571744 +571745 +571746 +571747 +571748 +571749 +571750 +571751 +571776 +571777 +571778 +571779 +571780 +571781 +571782 +571783 +571808 +571809 +571810 +571811 +571812 +571813 +571814 +571815 +571840 +571841 +571842 +571843 +571844 +571845 +571846 +571847 +571872 +571873 +571874 +571875 +571876 +571877 +571878 +571879 +571904 +571905 +571906 +571907 +571908 +571909 +571910 +571911 +571936 +571937 +571938 +571939 +571940 +571941 +571942 +571943 +571968 +571969 +571970 +571971 +571972 +571973 +571974 +571975 +572000 +572001 +572002 +572003 +572004 +572005 +572006 +572007 +572032 +572033 +572034 +572035 +572036 +572037 +572038 +572039 +572064 +572065 +572066 +572067 +572068 +572069 +572070 +572071 +572096 +572097 +572098 +572099 +572100 +572101 +572102 +572103 +572128 +572129 +572130 +572131 +572132 +572133 +572134 +572135 +572160 +572161 +572162 +572163 +572164 +572165 +572166 +572167 +572192 +572193 +572194 +572195 +572196 +572197 +572198 +572199 +572224 +572225 +572226 +572227 +572228 +572229 +572230 +572231 +572256 +572257 +572258 +572259 +572260 +572261 +572262 +572263 +572288 +572289 +572290 +572291 +572292 +572293 +572294 +572295 +572320 +572321 +572322 +572323 +572324 +572325 +572326 +572327 +572352 +572353 +572354 +572355 +572356 +572357 +572358 +572359 +572384 +572385 +572386 +572387 +572388 +572389 +572390 +572391 +572416 +572417 +572418 +572419 +572420 +572421 +572422 +572423 +572448 +572449 +572450 +572451 +572452 +572453 +572454 +572455 +572480 +572481 +572482 +572483 +572484 +572485 +572486 +572487 +572512 +572513 +572514 +572515 +572516 +572517 +572518 +572519 +572544 +572545 +572546 +572547 +572548 +572549 +572550 +572551 +572576 +572577 +572578 +572579 +572580 +572581 +572582 +572583 +572608 +572609 +572610 +572611 +572612 +572613 +572614 +572615 +572640 +572641 +572642 +572643 +572644 +572645 +572646 +572647 +572672 +572673 +572674 +572675 +572676 +572677 +572678 +572679 +572704 +572705 +572706 +572707 +572708 +572709 +572710 +572711 +572736 +572737 +572738 +572739 +572740 +572741 +572742 +572743 +572768 +572769 +572770 +572771 +572772 +572773 +572774 +572775 +572800 +572801 +572802 +572803 +572804 +572805 +572806 +572807 +572832 +572833 +572834 +572835 +572836 +572837 +572838 +572839 +572864 +572865 +572866 +572867 +572868 +572869 +572870 +572871 +572896 +572897 +572898 +572899 +572900 +572901 +572902 +572903 +572928 +572929 +572930 +572931 +572932 +572933 +572934 +572935 +572960 +572961 +572962 +572963 +572964 +572965 +572966 +572967 +572992 +572993 +572994 +572995 +572996 +572997 +572998 +572999 +573024 +573025 +573026 +573027 +573028 +573029 +573030 +573031 +573056 +573057 +573058 +573059 +573060 +573061 +573062 +573063 +573088 +573089 +573090 +573091 +573092 +573093 +573094 +573095 +573120 +573121 +573122 +573123 +573124 +573125 +573126 +573127 +573152 +573153 +573154 +573155 +573156 +573157 +573158 +573159 +573184 +573185 +573186 +573187 +573188 +573189 +573190 +573191 +573216 +573217 +573218 +573219 +573220 +573221 +573222 +573223 +573248 +573249 +573250 +573251 +573252 +573253 +573254 +573255 +573280 +573281 +573282 +573283 +573284 +573285 +573286 +573287 +573312 +573313 +573314 +573315 +573316 +573317 +573318 +573319 +573344 +573345 +573346 +573347 +573348 +573349 +573350 +573351 +573376 +573377 +573378 +573379 +573380 +573381 +573382 +573383 +573408 +573409 +573410 +573411 +573412 +573413 +573414 +573415 +573440 +573441 +573442 +573443 +573444 +573445 +573446 +573447 +573472 +573473 +573474 +573475 +573476 +573477 +573478 +573479 +573504 +573505 +573506 +573507 +573508 +573509 +573510 +573511 +573536 +573537 +573538 +573539 +573540 +573541 +573542 +573543 +573568 +573569 +573570 +573571 +573572 +573573 +573574 +573575 +573600 +573601 +573602 +573603 +573604 +573605 +573606 +573607 +573632 +573633 +573634 +573635 +573636 +573637 +573638 +573639 +573664 +573665 +573666 +573667 +573668 +573669 +573670 +573671 +573696 +573697 +573698 +573699 +573700 +573701 +573702 +573703 +573728 +573729 +573730 +573731 +573732 +573733 +573734 +573735 +573760 +573761 +573762 +573763 +573764 +573765 +573766 +573767 +573792 +573793 +573794 +573795 +573796 +573797 +573798 +573799 +573824 +573825 +573826 +573827 +573828 +573829 +573830 +573831 +573856 +573857 +573858 +573859 +573860 +573861 +573862 +573863 +573888 +573889 +573890 +573891 +573892 +573893 +573894 +573895 +573920 +573921 +573922 +573923 +573924 +573925 +573926 +573927 +573952 +573953 +573954 +573955 +573956 +573957 +573958 +573959 +573984 +573985 +573986 +573987 +573988 +573989 +573990 +573991 +574016 +574017 +574018 +574019 +574020 +574021 +574022 +574023 +574048 +574049 +574050 +574051 +574052 +574053 +574054 +574055 +574080 +574081 +574082 +574083 +574084 +574085 +574086 +574087 +574112 +574113 +574114 +574115 +574116 +574117 +574118 +574119 +574144 +574145 +574146 +574147 +574148 +574149 +574150 +574151 +574176 +574177 +574178 +574179 +574180 +574181 +574182 +574183 +574208 +574209 +574210 +574211 +574212 +574213 +574214 +574215 +574240 +574241 +574242 +574243 +574244 +574245 +574246 +574247 +574272 +574273 +574274 +574275 +574276 +574277 +574278 +574279 +574304 +574305 +574306 +574307 +574308 +574309 +574310 +574311 +574336 +574337 +574338 +574339 +574340 +574341 +574342 +574343 +574368 +574369 +574370 +574371 +574372 +574373 +574374 +574375 +574400 +574401 +574402 +574403 +574404 +574405 +574406 +574407 +574432 +574433 +574434 +574435 +574436 +574437 +574438 +574439 +574464 +574465 +574466 +574467 +574468 +574469 +574470 +574471 +574496 +574497 +574498 +574499 +574500 +574501 +574502 +574503 +574528 +574529 +574530 +574531 +574532 +574533 +574534 +574535 +574560 +574561 +574562 +574563 +574564 +574565 +574566 +574567 +574592 +574593 +574594 +574595 +574596 +574597 +574598 +574599 +574624 +574625 +574626 +574627 +574628 +574629 +574630 +574631 +574656 +574657 +574658 +574659 +574660 +574661 +574662 +574663 +574688 +574689 +574690 +574691 +574692 +574693 +574694 +574695 +574720 +574721 +574722 +574723 +574724 +574725 +574726 +574727 +574752 +574753 +574754 +574755 +574756 +574757 +574758 +574759 +574784 +574785 +574786 +574787 +574788 +574789 +574790 +574791 +574816 +574817 +574818 +574819 +574820 +574821 +574822 +574823 +574848 +574849 +574850 +574851 +574852 +574853 +574854 +574855 +574880 +574881 +574882 +574883 +574884 +574885 +574886 +574887 +574912 +574913 +574914 +574915 +574916 +574917 +574918 +574919 +574944 +574945 +574946 +574947 +574948 +574949 +574950 +574951 +574976 +574977 +574978 +574979 +574980 +574981 +574982 +574983 +575008 +575009 +575010 +575011 +575012 +575013 +575014 +575015 +575040 +575041 +575042 +575043 +575044 +575045 +575046 +575047 +575072 +575073 +575074 +575075 +575076 +575077 +575078 +575079 +575104 +575105 +575106 +575107 +575108 +575109 +575110 +575111 +575136 +575137 +575138 +575139 +575140 +575141 +575142 +575143 +575168 +575169 +575170 +575171 +575172 +575173 +575174 +575175 +575200 +575201 +575202 +575203 +575204 +575205 +575206 +575207 +575232 +575233 +575234 +575235 +575236 +575237 +575238 +575239 +575264 +575265 +575266 +575267 +575268 +575269 +575270 +575271 +575296 +575297 +575298 +575299 +575300 +575301 +575302 +575303 +575328 +575329 +575330 +575331 +575332 +575333 +575334 +575335 +575360 +575361 +575362 +575363 +575364 +575365 +575366 +575367 +575392 +575393 +575394 +575395 +575396 +575397 +575398 +575399 +575424 +575425 +575426 +575427 +575428 +575429 +575430 +575431 +575456 +575457 +575458 +575459 +575460 +575461 +575462 +575463 +575488 +575489 +575490 +575491 +575492 +575493 +575494 +575495 +575520 +575521 +575522 +575523 +575524 +575525 +575526 +575527 +575552 +575553 +575554 +575555 +575556 +575557 +575558 +575559 +575584 +575585 +575586 +575587 +575588 +575589 +575590 +575591 +575616 +575617 +575618 +575619 +575620 +575621 +575622 +575623 +575648 +575649 +575650 +575651 +575652 +575653 +575654 +575655 +575680 +575681 +575682 +575683 +575684 +575685 +575686 +575687 +575712 +575713 +575714 +575715 +575716 +575717 +575718 +575719 +575744 +575745 +575746 +575747 +575748 +575749 +575750 +575751 +575776 +575777 +575778 +575779 +575780 +575781 +575782 +575783 +575808 +575809 +575810 +575811 +575812 +575813 +575814 +575815 +575840 +575841 +575842 +575843 +575844 +575845 +575846 +575847 +575872 +575873 +575874 +575875 +575876 +575877 +575878 +575879 +575904 +575905 +575906 +575907 +575908 +575909 +575910 +575911 +575936 +575937 +575938 +575939 +575940 +575941 +575942 +575943 +575968 +575969 +575970 +575971 +575972 +575973 +575974 +575975 +576000 +576001 +576002 +576003 +576004 +576005 +576006 +576007 +576032 +576033 +576034 +576035 +576036 +576037 +576038 +576039 +576064 +576065 +576066 +576067 +576068 +576069 +576070 +576071 +576096 +576097 +576098 +576099 +576100 +576101 +576102 +576103 +576128 +576129 +576130 +576131 +576132 +576133 +576134 +576135 +576160 +576161 +576162 +576163 +576164 +576165 +576166 +576167 +576192 +576193 +576194 +576195 +576196 +576197 +576198 +576199 +576224 +576225 +576226 +576227 +576228 +576229 +576230 +576231 +576256 +576257 +576258 +576259 +576260 +576261 +576262 +576263 +576288 +576289 +576290 +576291 +576292 +576293 +576294 +576295 +576320 +576321 +576322 +576323 +576324 +576325 +576326 +576327 +576352 +576353 +576354 +576355 +576356 +576357 +576358 +576359 +576384 +576385 +576386 +576387 +576388 +576389 +576390 +576391 +576416 +576417 +576418 +576419 +576420 +576421 +576422 +576423 +576448 +576449 +576450 +576451 +576452 +576453 +576454 +576455 +576480 +576481 +576482 +576483 +576484 +576485 +576486 +576487 +576512 +576513 +576514 +576515 +576516 +576517 +576518 +576519 +576544 +576545 +576546 +576547 +576548 +576549 +576550 +576551 +576576 +576577 +576578 +576579 +576580 +576581 +576582 +576583 +576608 +576609 +576610 +576611 +576612 +576613 +576614 +576615 +576640 +576641 +576642 +576643 +576644 +576645 +576646 +576647 +576672 +576673 +576674 +576675 +576676 +576677 +576678 +576679 +576704 +576705 +576706 +576707 +576708 +576709 +576710 +576711 +576736 +576737 +576738 +576739 +576740 +576741 +576742 +576743 +576768 +576769 +576770 +576771 +576772 +576773 +576774 +576775 +576800 +576801 +576802 +576803 +576804 +576805 +576806 +576807 +576832 +576833 +576834 +576835 +576836 +576837 +576838 +576839 +576864 +576865 +576866 +576867 +576868 +576869 +576870 +576871 +576896 +576897 +576898 +576899 +576900 +576901 +576902 +576903 +576928 +576929 +576930 +576931 +576932 +576933 +576934 +576935 +576960 +576961 +576962 +576963 +576964 +576965 +576966 +576967 +576992 +576993 +576994 +576995 +576996 +576997 +576998 +576999 +577024 +577025 +577026 +577027 +577028 +577029 +577030 +577031 +577056 +577057 +577058 +577059 +577060 +577061 +577062 +577063 +577088 +577089 +577090 +577091 +577092 +577093 +577094 +577095 +577120 +577121 +577122 +577123 +577124 +577125 +577126 +577127 +577152 +577153 +577154 +577155 +577156 +577157 +577158 +577159 +577184 +577185 +577186 +577187 +577188 +577189 +577190 +577191 +577216 +577217 +577218 +577219 +577220 +577221 +577222 +577223 +577248 +577249 +577250 +577251 +577252 +577253 +577254 +577255 +577280 +577281 +577282 +577283 +577284 +577285 +577286 +577287 +577312 +577313 +577314 +577315 +577316 +577317 +577318 +577319 +577344 +577345 +577346 +577347 +577348 +577349 +577350 +577351 +577376 +577377 +577378 +577379 +577380 +577381 +577382 +577383 +577408 +577409 +577410 +577411 +577412 +577413 +577414 +577415 +577440 +577441 +577442 +577443 +577444 +577445 +577446 +577447 +577472 +577473 +577474 +577475 +577476 +577477 +577478 +577479 +577504 +577505 +577506 +577507 +577508 +577509 +577510 +577511 +577536 +577537 +577538 +577539 +577540 +577541 +577542 +577543 +577568 +577569 +577570 +577571 +577572 +577573 +577574 +577575 +577600 +577601 +577602 +577603 +577604 +577605 +577606 +577607 +577632 +577633 +577634 +577635 +577636 +577637 +577638 +577639 +577664 +577665 +577666 +577667 +577668 +577669 +577670 +577671 +577696 +577697 +577698 +577699 +577700 +577701 +577702 +577703 +577728 +577729 +577730 +577731 +577732 +577733 +577734 +577735 +577760 +577761 +577762 +577763 +577764 +577765 +577766 +577767 +577792 +577793 +577794 +577795 +577796 +577797 +577798 +577799 +577824 +577825 +577826 +577827 +577828 +577829 +577830 +577831 +577856 +577857 +577858 +577859 +577860 +577861 +577862 +577863 +577888 +577889 +577890 +577891 +577892 +577893 +577894 +577895 +577920 +577921 +577922 +577923 +577924 +577925 +577926 +577927 +577952 +577953 +577954 +577955 +577956 +577957 +577958 +577959 +577984 +577985 +577986 +577987 +577988 +577989 +577990 +577991 +578016 +578017 +578018 +578019 +578020 +578021 +578022 +578023 +578048 +578049 +578050 +578051 +578052 +578053 +578054 +578055 +578080 +578081 +578082 +578083 +578084 +578085 +578086 +578087 +578112 +578113 +578114 +578115 +578116 +578117 +578118 +578119 +578144 +578145 +578146 +578147 +578148 +578149 +578150 +578151 +578176 +578177 +578178 +578179 +578180 +578181 +578182 +578183 +578208 +578209 +578210 +578211 +578212 +578213 +578214 +578215 +578240 +578241 +578242 +578243 +578244 +578245 +578246 +578247 +578272 +578273 +578274 +578275 +578276 +578277 +578278 +578279 +578304 +578305 +578306 +578307 +578308 +578309 +578310 +578311 +578336 +578337 +578338 +578339 +578340 +578341 +578342 +578343 +578368 +578369 +578370 +578371 +578372 +578373 +578374 +578375 +578400 +578401 +578402 +578403 +578404 +578405 +578406 +578407 +578432 +578433 +578434 +578435 +578436 +578437 +578438 +578439 +578464 +578465 +578466 +578467 +578468 +578469 +578470 +578471 +578496 +578497 +578498 +578499 +578500 +578501 +578502 +578503 +578528 +578529 +578530 +578531 +578532 +578533 +578534 +578535 +578560 +578561 +578562 +578563 +578564 +578565 +578566 +578567 +578592 +578593 +578594 +578595 +578596 +578597 +578598 +578599 +578624 +578625 +578626 +578627 +578628 +578629 +578630 +578631 +578656 +578657 +578658 +578659 +578660 +578661 +578662 +578663 +578688 +578689 +578690 +578691 +578692 +578693 +578694 +578695 +578720 +578721 +578722 +578723 +578724 +578725 +578726 +578727 +578752 +578753 +578754 +578755 +578756 +578757 +578758 +578759 +578784 +578785 +578786 +578787 +578788 +578789 +578790 +578791 +578816 +578817 +578818 +578819 +578820 +578821 +578822 +578823 +578848 +578849 +578850 +578851 +578852 +578853 +578854 +578855 +578880 +578881 +578882 +578883 +578884 +578885 +578886 +578887 +578912 +578913 +578914 +578915 +578916 +578917 +578918 +578919 +578944 +578945 +578946 +578947 +578948 +578949 +578950 +578951 +578976 +578977 +578978 +578979 +578980 +578981 +578982 +578983 +579008 +579009 +579010 +579011 +579012 +579013 +579014 +579015 +579040 +579041 +579042 +579043 +579044 +579045 +579046 +579047 +579072 +579073 +579074 +579075 +579076 +579077 +579078 +579079 +579104 +579105 +579106 +579107 +579108 +579109 +579110 +579111 +579136 +579137 +579138 +579139 +579140 +579141 +579142 +579143 +579168 +579169 +579170 +579171 +579172 +579173 +579174 +579175 +579200 +579201 +579202 +579203 +579204 +579205 +579206 +579207 +579232 +579233 +579234 +579235 +579236 +579237 +579238 +579239 +579264 +579265 +579266 +579267 +579268 +579269 +579270 +579271 +579296 +579297 +579298 +579299 +579300 +579301 +579302 +579303 +579328 +579329 +579330 +579331 +579332 +579333 +579334 +579335 +579360 +579361 +579362 +579363 +579364 +579365 +579366 +579367 +579392 +579393 +579394 +579395 +579396 +579397 +579398 +579399 +579424 +579425 +579426 +579427 +579428 +579429 +579430 +579431 +579456 +579457 +579458 +579459 +579460 +579461 +579462 +579463 +579488 +579489 +579490 +579491 +579492 +579493 +579494 +579495 +579520 +579521 +579522 +579523 +579524 +579525 +579526 +579527 +579552 +579553 +579554 +579555 +579556 +579557 +579558 +579559 +579584 +579585 +579586 +579587 +579588 +579589 +579590 +579591 +579616 +579617 +579618 +579619 +579620 +579621 +579622 +579623 +579648 +579649 +579650 +579651 +579652 +579653 +579654 +579655 +579680 +579681 +579682 +579683 +579684 +579685 +579686 +579687 +579712 +579713 +579714 +579715 +579716 +579717 +579718 +579719 +579744 +579745 +579746 +579747 +579748 +579749 +579750 +579751 +579776 +579777 +579778 +579779 +579780 +579781 +579782 +579783 +579808 +579809 +579810 +579811 +579812 +579813 +579814 +579815 +579840 +579841 +579842 +579843 +579844 +579845 +579846 +579847 +579872 +579873 +579874 +579875 +579876 +579877 +579878 +579879 +579904 +579905 +579906 +579907 +579908 +579909 +579910 +579911 +579936 +579937 +579938 +579939 +579940 +579941 +579942 +579943 +579968 +579969 +579970 +579971 +579972 +579973 +579974 +579975 +580000 +580001 +580002 +580003 +580004 +580005 +580006 +580007 +580032 +580033 +580034 +580035 +580036 +580037 +580038 +580039 +580064 +580065 +580066 +580067 +580068 +580069 +580070 +580071 +580096 +580097 +580098 +580099 +580100 +580101 +580102 +580103 +580128 +580129 +580130 +580131 +580132 +580133 +580134 +580135 +580160 +580161 +580162 +580163 +580164 +580165 +580166 +580167 +580192 +580193 +580194 +580195 +580196 +580197 +580198 +580199 +580224 +580225 +580226 +580227 +580228 +580229 +580230 +580231 +580256 +580257 +580258 +580259 +580260 +580261 +580262 +580263 +580288 +580289 +580290 +580291 +580292 +580293 +580294 +580295 +580320 +580321 +580322 +580323 +580324 +580325 +580326 +580327 +580352 +580353 +580354 +580355 +580356 +580357 +580358 +580359 +580384 +580385 +580386 +580387 +580388 +580389 +580390 +580391 +580416 +580417 +580418 +580419 +580420 +580421 +580422 +580423 +580448 +580449 +580450 +580451 +580452 +580453 +580454 +580455 +580480 +580481 +580482 +580483 +580484 +580485 +580486 +580487 +580512 +580513 +580514 +580515 +580516 +580517 +580518 +580519 +580544 +580545 +580546 +580547 +580548 +580549 +580550 +580551 +580576 +580577 +580578 +580579 +580580 +580581 +580582 +580583 +580608 +580609 +580610 +580611 +580612 +580613 +580614 +580615 +580640 +580641 +580642 +580643 +580644 +580645 +580646 +580647 +580672 +580673 +580674 +580675 +580676 +580677 +580678 +580679 +580704 +580705 +580706 +580707 +580708 +580709 +580710 +580711 +580736 +580737 +580738 +580739 +580740 +580741 +580742 +580743 +580768 +580769 +580770 +580771 +580772 +580773 +580774 +580775 +580800 +580801 +580802 +580803 +580804 +580805 +580806 +580807 +580832 +580833 +580834 +580835 +580836 +580837 +580838 +580839 +580864 +580865 +580866 +580867 +580868 +580869 +580870 +580871 +580896 +580897 +580898 +580899 +580900 +580901 +580902 +580903 +580928 +580929 +580930 +580931 +580932 +580933 +580934 +580935 +580960 +580961 +580962 +580963 +580964 +580965 +580966 +580967 +580992 +580993 +580994 +580995 +580996 +580997 +580998 +580999 +581024 +581025 +581026 +581027 +581028 +581029 +581030 +581031 +581056 +581057 +581058 +581059 +581060 +581061 +581062 +581063 +581088 +581089 +581090 +581091 +581092 +581093 +581094 +581095 +581120 +581121 +581122 +581123 +581124 +581125 +581126 +581127 +581152 +581153 +581154 +581155 +581156 +581157 +581158 +581159 +581184 +581185 +581186 +581187 +581188 +581189 +581190 +581191 +581216 +581217 +581218 +581219 +581220 +581221 +581222 +581223 +581248 +581249 +581250 +581251 +581252 +581253 +581254 +581255 +581280 +581281 +581282 +581283 +581284 +581285 +581286 +581287 +581312 +581313 +581314 +581315 +581316 +581317 +581318 +581319 +581344 +581345 +581346 +581347 +581348 +581349 +581350 +581351 +581376 +581377 +581378 +581379 +581380 +581381 +581382 +581383 +581408 +581409 +581410 +581411 +581412 +581413 +581414 +581415 +581440 +581441 +581442 +581443 +581444 +581445 +581446 +581447 +581472 +581473 +581474 +581475 +581476 +581477 +581478 +581479 +581504 +581505 +581506 +581507 +581508 +581509 +581510 +581511 +581536 +581537 +581538 +581539 +581540 +581541 +581542 +581543 +581568 +581569 +581570 +581571 +581572 +581573 +581574 +581575 +581600 +581601 +581602 +581603 +581604 +581605 +581606 +581607 +581632 +581633 +581634 +581635 +581636 +581637 +581638 +581639 +581664 +581665 +581666 +581667 +581668 +581669 +581670 +581671 +581696 +581697 +581698 +581699 +581700 +581701 +581702 +581703 +581728 +581729 +581730 +581731 +581732 +581733 +581734 +581735 +581760 +581761 +581762 +581763 +581764 +581765 +581766 +581767 +581792 +581793 +581794 +581795 +581796 +581797 +581798 +581799 +581824 +581825 +581826 +581827 +581828 +581829 +581830 +581831 +581856 +581857 +581858 +581859 +581860 +581861 +581862 +581863 +581888 +581889 +581890 +581891 +581892 +581893 +581894 +581895 +581920 +581921 +581922 +581923 +581924 +581925 +581926 +581927 +581952 +581953 +581954 +581955 +581956 +581957 +581958 +581959 +581984 +581985 +581986 +581987 +581988 +581989 +581990 +581991 +582016 +582017 +582018 +582019 +582020 +582021 +582022 +582023 +582048 +582049 +582050 +582051 +582052 +582053 +582054 +582055 +582080 +582081 +582082 +582083 +582084 +582085 +582086 +582087 +582112 +582113 +582114 +582115 +582116 +582117 +582118 +582119 +582144 +582145 +582146 +582147 +582148 +582149 +582150 +582151 +582176 +582177 +582178 +582179 +582180 +582181 +582182 +582183 +582208 +582209 +582210 +582211 +582212 +582213 +582214 +582215 +582240 +582241 +582242 +582243 +582244 +582245 +582246 +582247 +582272 +582273 +582274 +582275 +582276 +582277 +582278 +582279 +582304 +582305 +582306 +582307 +582308 +582309 +582310 +582311 +582336 +582337 +582338 +582339 +582340 +582341 +582342 +582343 +582368 +582369 +582370 +582371 +582372 +582373 +582374 +582375 +582400 +582401 +582402 +582403 +582404 +582405 +582406 +582407 +582432 +582433 +582434 +582435 +582436 +582437 +582438 +582439 +582464 +582465 +582466 +582467 +582468 +582469 +582470 +582471 +582496 +582497 +582498 +582499 +582500 +582501 +582502 +582503 +582528 +582529 +582530 +582531 +582532 +582533 +582534 +582535 +582560 +582561 +582562 +582563 +582564 +582565 +582566 +582567 +582592 +582593 +582594 +582595 +582596 +582597 +582598 +582599 +582624 +582625 +582626 +582627 +582628 +582629 +582630 +582631 +582656 +582657 +582658 +582659 +582660 +582661 +582662 +582663 +582688 +582689 +582690 +582691 +582692 +582693 +582694 +582695 +582720 +582721 +582722 +582723 +582724 +582725 +582726 +582727 +582752 +582753 +582754 +582755 +582756 +582757 +582758 +582759 +582784 +582785 +582786 +582787 +582788 +582789 +582790 +582791 +582816 +582817 +582818 +582819 +582820 +582821 +582822 +582823 +582848 +582849 +582850 +582851 +582852 +582853 +582854 +582855 +582880 +582881 +582882 +582883 +582884 +582885 +582886 +582887 +582912 +582913 +582914 +582915 +582916 +582917 +582918 +582919 +582944 +582945 +582946 +582947 +582948 +582949 +582950 +582951 +582976 +582977 +582978 +582979 +582980 +582981 +582982 +582983 +583008 +583009 +583010 +583011 +583012 +583013 +583014 +583015 +583040 +583041 +583042 +583043 +583044 +583045 +583046 +583047 +583072 +583073 +583074 +583075 +583076 +583077 +583078 +583079 +583104 +583105 +583106 +583107 +583108 +583109 +583110 +583111 +583136 +583137 +583138 +583139 +583140 +583141 +583142 +583143 +583168 +583169 +583170 +583171 +583172 +583173 +583174 +583175 +583200 +583201 +583202 +583203 +583204 +583205 +583206 +583207 +583232 +583233 +583234 +583235 +583236 +583237 +583238 +583239 +583264 +583265 +583266 +583267 +583268 +583269 +583270 +583271 +583296 +583297 +583298 +583299 +583300 +583301 +583302 +583303 +583328 +583329 +583330 +583331 +583332 +583333 +583334 +583335 +583360 +583361 +583362 +583363 +583364 +583365 +583366 +583367 +583392 +583393 +583394 +583395 +583396 +583397 +583398 +583399 +583424 +583425 +583426 +583427 +583428 +583429 +583430 +583431 +583456 +583457 +583458 +583459 +583460 +583461 +583462 +583463 +583488 +583489 +583490 +583491 +583492 +583493 +583494 +583495 +583520 +583521 +583522 +583523 +583524 +583525 +583526 +583527 +583552 +583553 +583554 +583555 +583556 +583557 +583558 +583559 +583584 +583585 +583586 +583587 +583588 +583589 +583590 +583591 +583616 +583617 +583618 +583619 +583620 +583621 +583622 +583623 +583648 +583649 +583650 +583651 +583652 +583653 +583654 +583655 +583680 +583681 +583682 +583683 +583684 +583685 +583686 +583687 +583712 +583713 +583714 +583715 +583716 +583717 +583718 +583719 +583744 +583745 +583746 +583747 +583748 +583749 +583750 +583751 +583776 +583777 +583778 +583779 +583780 +583781 +583782 +583783 +583808 +583809 +583810 +583811 +583812 +583813 +583814 +583815 +583840 +583841 +583842 +583843 +583844 +583845 +583846 +583847 +583872 +583873 +583874 +583875 +583876 +583877 +583878 +583879 +583904 +583905 +583906 +583907 +583908 +583909 +583910 +583911 +583936 +583937 +583938 +583939 +583940 +583941 +583942 +583943 +583968 +583969 +583970 +583971 +583972 +583973 +583974 +583975 +584000 +584001 +584002 +584003 +584004 +584005 +584006 +584007 +584032 +584033 +584034 +584035 +584036 +584037 +584038 +584039 +584064 +584065 +584066 +584067 +584068 +584069 +584070 +584071 +584096 +584097 +584098 +584099 +584100 +584101 +584102 +584103 +584128 +584129 +584130 +584131 +584132 +584133 +584134 +584135 +584160 +584161 +584162 +584163 +584164 +584165 +584166 +584167 +584192 +584193 +584194 +584195 +584196 +584197 +584198 +584199 +584224 +584225 +584226 +584227 +584228 +584229 +584230 +584231 +584256 +584257 +584258 +584259 +584260 +584261 +584262 +584263 +584288 +584289 +584290 +584291 +584292 +584293 +584294 +584295 +584320 +584321 +584322 +584323 +584324 +584325 +584326 +584327 +584352 +584353 +584354 +584355 +584356 +584357 +584358 +584359 +584384 +584385 +584386 +584387 +584388 +584389 +584390 +584391 +584416 +584417 +584418 +584419 +584420 +584421 +584422 +584423 +584448 +584449 +584450 +584451 +584452 +584453 +584454 +584455 +584480 +584481 +584482 +584483 +584484 +584485 +584486 +584487 +584512 +584513 +584514 +584515 +584516 +584517 +584518 +584519 +584544 +584545 +584546 +584547 +584548 +584549 +584550 +584551 +584576 +584577 +584578 +584579 +584580 +584581 +584582 +584583 +584608 +584609 +584610 +584611 +584612 +584613 +584614 +584615 +584640 +584641 +584642 +584643 +584644 +584645 +584646 +584647 +584672 +584673 +584674 +584675 +584676 +584677 +584678 +584679 +584704 +584705 +584706 +584707 +584708 +584709 +584710 +584711 +584736 +584737 +584738 +584739 +584740 +584741 +584742 +584743 +584768 +584769 +584770 +584771 +584772 +584773 +584774 +584775 +584800 +584801 +584802 +584803 +584804 +584805 +584806 +584807 +584832 +584833 +584834 +584835 +584836 +584837 +584838 +584839 +584864 +584865 +584866 +584867 +584868 +584869 +584870 +584871 +584896 +584897 +584898 +584899 +584900 +584901 +584902 +584903 +584928 +584929 +584930 +584931 +584932 +584933 +584934 +584935 +584960 +584961 +584962 +584963 +584964 +584965 +584966 +584967 +584992 +584993 +584994 +584995 +584996 +584997 +584998 +584999 +585024 +585025 +585026 +585027 +585028 +585029 +585030 +585031 +585056 +585057 +585058 +585059 +585060 +585061 +585062 +585063 +585088 +585089 +585090 +585091 +585092 +585093 +585094 +585095 +585120 +585121 +585122 +585123 +585124 +585125 +585126 +585127 +585152 +585153 +585154 +585155 +585156 +585157 +585158 +585159 +585184 +585185 +585186 +585187 +585188 +585189 +585190 +585191 +585216 +585217 +585218 +585219 +585220 +585221 +585222 +585223 +585248 +585249 +585250 +585251 +585252 +585253 +585254 +585255 +585280 +585281 +585282 +585283 +585284 +585285 +585286 +585287 +585312 +585313 +585314 +585315 +585316 +585317 +585318 +585319 +585344 +585345 +585346 +585347 +585348 +585349 +585350 +585351 +585376 +585377 +585378 +585379 +585380 +585381 +585382 +585383 +585408 +585409 +585410 +585411 +585412 +585413 +585414 +585415 +585440 +585441 +585442 +585443 +585444 +585445 +585446 +585447 +585472 +585473 +585474 +585475 +585476 +585477 +585478 +585479 +585504 +585505 +585506 +585507 +585508 +585509 +585510 +585511 +585536 +585537 +585538 +585539 +585540 +585541 +585542 +585543 +585568 +585569 +585570 +585571 +585572 +585573 +585574 +585575 +585600 +585601 +585602 +585603 +585604 +585605 +585606 +585607 +585632 +585633 +585634 +585635 +585636 +585637 +585638 +585639 +585664 +585665 +585666 +585667 +585668 +585669 +585670 +585671 +585696 +585697 +585698 +585699 +585700 +585701 +585702 +585703 +585728 +585729 +585730 +585731 +585732 +585733 +585734 +585735 +585760 +585761 +585762 +585763 +585764 +585765 +585766 +585767 +585792 +585793 +585794 +585795 +585796 +585797 +585798 +585799 +585824 +585825 +585826 +585827 +585828 +585829 +585830 +585831 +585856 +585857 +585858 +585859 +585860 +585861 +585862 +585863 +585888 +585889 +585890 +585891 +585892 +585893 +585894 +585895 +585920 +585921 +585922 +585923 +585924 +585925 +585926 +585927 +585952 +585953 +585954 +585955 +585956 +585957 +585958 +585959 +585984 +585985 +585986 +585987 +585988 +585989 +585990 +585991 +586016 +586017 +586018 +586019 +586020 +586021 +586022 +586023 +586048 +586049 +586050 +586051 +586052 +586053 +586054 +586055 +586080 +586081 +586082 +586083 +586084 +586085 +586086 +586087 +586112 +586113 +586114 +586115 +586116 +586117 +586118 +586119 +586144 +586145 +586146 +586147 +586148 +586149 +586150 +586151 +586176 +586177 +586178 +586179 +586180 +586181 +586182 +586183 +586208 +586209 +586210 +586211 +586212 +586213 +586214 +586215 +586240 +586241 +586242 +586243 +586244 +586245 +586246 +586247 +586272 +586273 +586274 +586275 +586276 +586277 +586278 +586279 +586304 +586305 +586306 +586307 +586308 +586309 +586310 +586311 +586336 +586337 +586338 +586339 +586340 +586341 +586342 +586343 +586368 +586369 +586370 +586371 +586372 +586373 +586374 +586375 +586400 +586401 +586402 +586403 +586404 +586405 +586406 +586407 +586432 +586433 +586434 +586435 +586436 +586437 +586438 +586439 +586464 +586465 +586466 +586467 +586468 +586469 +586470 +586471 +586496 +586497 +586498 +586499 +586500 +586501 +586502 +586503 +586528 +586529 +586530 +586531 +586532 +586533 +586534 +586535 +586560 +586561 +586562 +586563 +586564 +586565 +586566 +586567 +586592 +586593 +586594 +586595 +586596 +586597 +586598 +586599 +586624 +586625 +586626 +586627 +586628 +586629 +586630 +586631 +586656 +586657 +586658 +586659 +586660 +586661 +586662 +586663 +586688 +586689 +586690 +586691 +586692 +586693 +586694 +586695 +586720 +586721 +586722 +586723 +586724 +586725 +586726 +586727 +586752 +586753 +586754 +586755 +586756 +586757 +586758 +586759 +586784 +586785 +586786 +586787 +586788 +586789 +586790 +586791 +586816 +586817 +586818 +586819 +586820 +586821 +586822 +586823 +586848 +586849 +586850 +586851 +586852 +586853 +586854 +586855 +586880 +586881 +586882 +586883 +586884 +586885 +586886 +586887 +586912 +586913 +586914 +586915 +586916 +586917 +586918 +586919 +586944 +586945 +586946 +586947 +586948 +586949 +586950 +586951 +586976 +586977 +586978 +586979 +586980 +586981 +586982 +586983 +587008 +587009 +587010 +587011 +587012 +587013 +587014 +587015 +587040 +587041 +587042 +587043 +587044 +587045 +587046 +587047 +587072 +587073 +587074 +587075 +587076 +587077 +587078 +587079 +587104 +587105 +587106 +587107 +587108 +587109 +587110 +587111 +587136 +587137 +587138 +587139 +587140 +587141 +587142 +587143 +587168 +587169 +587170 +587171 +587172 +587173 +587174 +587175 +587200 +587201 +587202 +587203 +587204 +587205 +587206 +587207 +587232 +587233 +587234 +587235 +587236 +587237 +587238 +587239 +587264 +587265 +587266 +587267 +587268 +587269 +587270 +587271 +587296 +587297 +587298 +587299 +587300 +587301 +587302 +587303 +587328 +587329 +587330 +587331 +587332 +587333 +587334 +587335 +587360 +587361 +587362 +587363 +587364 +587365 +587366 +587367 +587392 +587393 +587394 +587395 +587396 +587397 +587398 +587399 +587424 +587425 +587426 +587427 +587428 +587429 +587430 +587431 +587456 +587457 +587458 +587459 +587460 +587461 +587462 +587463 +587488 +587489 +587490 +587491 +587492 +587493 +587494 +587495 +587520 +587521 +587522 +587523 +587524 +587525 +587526 +587527 +587552 +587553 +587554 +587555 +587556 +587557 +587558 +587559 +587584 +587585 +587586 +587587 +587588 +587589 +587590 +587591 +587616 +587617 +587618 +587619 +587620 +587621 +587622 +587623 +587648 +587649 +587650 +587651 +587652 +587653 +587654 +587655 +587680 +587681 +587682 +587683 +587684 +587685 +587686 +587687 +587712 +587713 +587714 +587715 +587716 +587717 +587718 +587719 +587744 +587745 +587746 +587747 +587748 +587749 +587750 +587751 +587776 +587777 +587778 +587779 +587780 +587781 +587782 +587783 +587808 +587809 +587810 +587811 +587812 +587813 +587814 +587815 +587840 +587841 +587842 +587843 +587844 +587845 +587846 +587847 +587872 +587873 +587874 +587875 +587876 +587877 +587878 +587879 +587904 +587905 +587906 +587907 +587908 +587909 +587910 +587911 +587936 +587937 +587938 +587939 +587940 +587941 +587942 +587943 +587968 +587969 +587970 +587971 +587972 +587973 +587974 +587975 +588000 +588001 +588002 +588003 +588004 +588005 +588006 +588007 +588032 +588033 +588034 +588035 +588036 +588037 +588038 +588039 +588064 +588065 +588066 +588067 +588068 +588069 +588070 +588071 +588096 +588097 +588098 +588099 +588100 +588101 +588102 +588103 +588128 +588129 +588130 +588131 +588132 +588133 +588134 +588135 +588160 +588161 +588162 +588163 +588164 +588165 +588166 +588167 +588192 +588193 +588194 +588195 +588196 +588197 +588198 +588199 +588224 +588225 +588226 +588227 +588228 +588229 +588230 +588231 +588256 +588257 +588258 +588259 +588260 +588261 +588262 +588263 +588288 +588289 +588290 +588291 +588292 +588293 +588294 +588295 +588320 +588321 +588322 +588323 +588324 +588325 +588326 +588327 +588352 +588353 +588354 +588355 +588356 +588357 +588358 +588359 +588384 +588385 +588386 +588387 +588388 +588389 +588390 +588391 +588416 +588417 +588418 +588419 +588420 +588421 +588422 +588423 +588448 +588449 +588450 +588451 +588452 +588453 +588454 +588455 +588480 +588481 +588482 +588483 +588484 +588485 +588486 +588487 +588512 +588513 +588514 +588515 +588516 +588517 +588518 +588519 +588544 +588545 +588546 +588547 +588548 +588549 +588550 +588551 +588576 +588577 +588578 +588579 +588580 +588581 +588582 +588583 +588608 +588609 +588610 +588611 +588612 +588613 +588614 +588615 +588640 +588641 +588642 +588643 +588644 +588645 +588646 +588647 +588672 +588673 +588674 +588675 +588676 +588677 +588678 +588679 +588704 +588705 +588706 +588707 +588708 +588709 +588710 +588711 +588736 +588737 +588738 +588739 +588740 +588741 +588742 +588743 +588768 +588769 +588770 +588771 +588772 +588773 +588774 +588775 +588800 +588801 +588802 +588803 +588804 +588805 +588806 +588807 +588832 +588833 +588834 +588835 +588836 +588837 +588838 +588839 +588864 +588865 +588866 +588867 +588868 +588869 +588870 +588871 +588896 +588897 +588898 +588899 +588900 +588901 +588902 +588903 +588928 +588929 +588930 +588931 +588932 +588933 +588934 +588935 +588960 +588961 +588962 +588963 +588964 +588965 +588966 +588967 +588992 +588993 +588994 +588995 +588996 +588997 +588998 +588999 +589024 +589025 +589026 +589027 +589028 +589029 +589030 +589031 +589056 +589057 +589058 +589059 +589060 +589061 +589062 +589063 +589088 +589089 +589090 +589091 +589092 +589093 +589094 +589095 +589120 +589121 +589122 +589123 +589124 +589125 +589126 +589127 +589152 +589153 +589154 +589155 +589156 +589157 +589158 +589159 +589184 +589185 +589186 +589187 +589188 +589189 +589190 +589191 +589216 +589217 +589218 +589219 +589220 +589221 +589222 +589223 +589248 +589249 +589250 +589251 +589252 +589253 +589254 +589255 +589280 +589281 +589282 +589283 +589284 +589285 +589286 +589287 +589312 +589313 +589314 +589315 +589316 +589317 +589318 +589319 +589344 +589345 +589346 +589347 +589348 +589349 +589350 +589351 +589376 +589377 +589378 +589379 +589380 +589381 +589382 +589383 +589408 +589409 +589410 +589411 +589412 +589413 +589414 +589415 +589440 +589441 +589442 +589443 +589444 +589445 +589446 +589447 +589472 +589473 +589474 +589475 +589476 +589477 +589478 +589479 +589504 +589505 +589506 +589507 +589508 +589509 +589510 +589511 +589536 +589537 +589538 +589539 +589540 +589541 +589542 +589543 +589568 +589569 +589570 +589571 +589572 +589573 +589574 +589575 +589600 +589601 +589602 +589603 +589604 +589605 +589606 +589607 +589632 +589633 +589634 +589635 +589636 +589637 +589638 +589639 +589664 +589665 +589666 +589667 +589668 +589669 +589670 +589671 +589696 +589697 +589698 +589699 +589700 +589701 +589702 +589703 +589728 +589729 +589730 +589731 +589732 +589733 +589734 +589735 +589760 +589761 +589762 +589763 +589764 +589765 +589766 +589767 +589792 +589793 +589794 +589795 +589796 +589797 +589798 +589799 +589824 +589825 +589826 +589827 +589828 +589829 +589830 +589831 +589856 +589857 +589858 +589859 +589860 +589861 +589862 +589863 +589888 +589889 +589890 +589891 +589892 +589893 +589894 +589895 +589920 +589921 +589922 +589923 +589924 +589925 +589926 +589927 +589952 +589953 +589954 +589955 +589956 +589957 +589958 +589959 +589984 +589985 +589986 +589987 +589988 +589989 +589990 +589991 +590016 +590017 +590018 +590019 +590020 +590021 +590022 +590023 +590048 +590049 +590050 +590051 +590052 +590053 +590054 +590055 +590080 +590081 +590082 +590083 +590084 +590085 +590086 +590087 +590112 +590113 +590114 +590115 +590116 +590117 +590118 +590119 +590144 +590145 +590146 +590147 +590148 +590149 +590150 +590151 +590176 +590177 +590178 +590179 +590180 +590181 +590182 +590183 +590208 +590209 +590210 +590211 +590212 +590213 +590214 +590215 +590240 +590241 +590242 +590243 +590244 +590245 +590246 +590247 +590272 +590273 +590274 +590275 +590276 +590277 +590278 +590279 +590304 +590305 +590306 +590307 +590308 +590309 +590310 +590311 +590336 +590337 +590338 +590339 +590340 +590341 +590342 +590343 +590368 +590369 +590370 +590371 +590372 +590373 +590374 +590375 +590400 +590401 +590402 +590403 +590404 +590405 +590406 +590407 +590432 +590433 +590434 +590435 +590436 +590437 +590438 +590439 +590464 +590465 +590466 +590467 +590468 +590469 +590470 +590471 +590496 +590497 +590498 +590499 +590500 +590501 +590502 +590503 +590528 +590529 +590530 +590531 +590532 +590533 +590534 +590535 +590560 +590561 +590562 +590563 +590564 +590565 +590566 +590567 +590592 +590593 +590594 +590595 +590596 +590597 +590598 +590599 +590624 +590625 +590626 +590627 +590628 +590629 +590630 +590631 +590656 +590657 +590658 +590659 +590660 +590661 +590662 +590663 +590688 +590689 +590690 +590691 +590692 +590693 +590694 +590695 +590720 +590721 +590722 +590723 +590724 +590725 +590726 +590727 +590752 +590753 +590754 +590755 +590756 +590757 +590758 +590759 +590784 +590785 +590786 +590787 +590788 +590789 +590790 +590791 +590816 +590817 +590818 +590819 +590820 +590821 +590822 +590823 +590848 +590849 +590850 +590851 +590852 +590853 +590854 +590855 +590880 +590881 +590882 +590883 +590884 +590885 +590886 +590887 +590912 +590913 +590914 +590915 +590916 +590917 +590918 +590919 +590944 +590945 +590946 +590947 +590948 +590949 +590950 +590951 +590976 +590977 +590978 +590979 +590980 +590981 +590982 +590983 +591008 +591009 +591010 +591011 +591012 +591013 +591014 +591015 +591040 +591041 +591042 +591043 +591044 +591045 +591046 +591047 +591072 +591073 +591074 +591075 +591076 +591077 +591078 +591079 +591104 +591105 +591106 +591107 +591108 +591109 +591110 +591111 +591136 +591137 +591138 +591139 +591140 +591141 +591142 +591143 +591168 +591169 +591170 +591171 +591172 +591173 +591174 +591175 +591200 +591201 +591202 +591203 +591204 +591205 +591206 +591207 +591232 +591233 +591234 +591235 +591236 +591237 +591238 +591239 +591264 +591265 +591266 +591267 +591268 +591269 +591270 +591271 +591296 +591297 +591298 +591299 +591300 +591301 +591302 +591303 +591328 +591329 +591330 +591331 +591332 +591333 +591334 +591335 +591360 +591361 +591362 +591363 +591364 +591365 +591366 +591367 +591392 +591393 +591394 +591395 +591396 +591397 +591398 +591399 +591424 +591425 +591426 +591427 +591428 +591429 +591430 +591431 +591456 +591457 +591458 +591459 +591460 +591461 +591462 +591463 +591488 +591489 +591490 +591491 +591492 +591493 +591494 +591495 +591520 +591521 +591522 +591523 +591524 +591525 +591526 +591527 +591552 +591553 +591554 +591555 +591556 +591557 +591558 +591559 +591584 +591585 +591586 +591587 +591588 +591589 +591590 +591591 +591616 +591617 +591618 +591619 +591620 +591621 +591622 +591623 +591648 +591649 +591650 +591651 +591652 +591653 +591654 +591655 +591680 +591681 +591682 +591683 +591684 +591685 +591686 +591687 +591712 +591713 +591714 +591715 +591716 +591717 +591718 +591719 +591744 +591745 +591746 +591747 +591748 +591749 +591750 +591751 +591776 +591777 +591778 +591779 +591780 +591781 +591782 +591783 +591808 +591809 +591810 +591811 +591812 +591813 +591814 +591815 +591840 +591841 +591842 +591843 +591844 +591845 +591846 +591847 +591872 +591873 +591874 +591875 +591876 +591877 +591878 +591879 +591904 +591905 +591906 +591907 +591908 +591909 +591910 +591911 +591936 +591937 +591938 +591939 +591940 +591941 +591942 +591943 +591968 +591969 +591970 +591971 +591972 +591973 +591974 +591975 +592000 +592001 +592002 +592003 +592004 +592005 +592006 +592007 +592032 +592033 +592034 +592035 +592036 +592037 +592038 +592039 +592064 +592065 +592066 +592067 +592068 +592069 +592070 +592071 +592096 +592097 +592098 +592099 +592100 +592101 +592102 +592103 +592128 +592129 +592130 +592131 +592132 +592133 +592134 +592135 +592160 +592161 +592162 +592163 +592164 +592165 +592166 +592167 +592192 +592193 +592194 +592195 +592196 +592197 +592198 +592199 +592224 +592225 +592226 +592227 +592228 +592229 +592230 +592231 +592256 +592257 +592258 +592259 +592260 +592261 +592262 +592263 +592288 +592289 +592290 +592291 +592292 +592293 +592294 +592295 +592320 +592321 +592322 +592323 +592324 +592325 +592326 +592327 +592352 +592353 +592354 +592355 +592356 +592357 +592358 +592359 +592384 +592385 +592386 +592387 +592388 +592389 +592390 +592391 +592416 +592417 +592418 +592419 +592420 +592421 +592422 +592423 +592448 +592449 +592450 +592451 +592452 +592453 +592454 +592455 +592480 +592481 +592482 +592483 +592484 +592485 +592486 +592487 +592512 +592513 +592514 +592515 +592516 +592517 +592518 +592519 +592544 +592545 +592546 +592547 +592548 +592549 +592550 +592551 +592576 +592577 +592578 +592579 +592580 +592581 +592582 +592583 +592608 +592609 +592610 +592611 +592612 +592613 +592614 +592615 +592640 +592641 +592642 +592643 +592644 +592645 +592646 +592647 +592672 +592673 +592674 +592675 +592676 +592677 +592678 +592679 +592704 +592705 +592706 +592707 +592708 +592709 +592710 +592711 +592736 +592737 +592738 +592739 +592740 +592741 +592742 +592743 +592768 +592769 +592770 +592771 +592772 +592773 +592774 +592775 +592800 +592801 +592802 +592803 +592804 +592805 +592806 +592807 +592832 +592833 +592834 +592835 +592836 +592837 +592838 +592839 +592864 +592865 +592866 +592867 +592868 +592869 +592870 +592871 +592896 +592897 +592898 +592899 +592900 +592901 +592902 +592903 +592928 +592929 +592930 +592931 +592932 +592933 +592934 +592935 +592960 +592961 +592962 +592963 +592964 +592965 +592966 +592967 +592992 +592993 +592994 +592995 +592996 +592997 +592998 +592999 +593024 +593025 +593026 +593027 +593028 +593029 +593030 +593031 +593056 +593057 +593058 +593059 +593060 +593061 +593062 +593063 +593088 +593089 +593090 +593091 +593092 +593093 +593094 +593095 +593120 +593121 +593122 +593123 +593124 +593125 +593126 +593127 +593152 +593153 +593154 +593155 +593156 +593157 +593158 +593159 +593184 +593185 +593186 +593187 +593188 +593189 +593190 +593191 +593216 +593217 +593218 +593219 +593220 +593221 +593222 +593223 +593248 +593249 +593250 +593251 +593252 +593253 +593254 +593255 +593280 +593281 +593282 +593283 +593284 +593285 +593286 +593287 +593312 +593313 +593314 +593315 +593316 +593317 +593318 +593319 +593344 +593345 +593346 +593347 +593348 +593349 +593350 +593351 +593376 +593377 +593378 +593379 +593380 +593381 +593382 +593383 +593408 +593409 +593410 +593411 +593412 +593413 +593414 +593415 +593440 +593441 +593442 +593443 +593444 +593445 +593446 +593447 +593472 +593473 +593474 +593475 +593476 +593477 +593478 +593479 +593504 +593505 +593506 +593507 +593508 +593509 +593510 +593511 +593536 +593537 +593538 +593539 +593540 +593541 +593542 +593543 +593568 +593569 +593570 +593571 +593572 +593573 +593574 +593575 +593600 +593601 +593602 +593603 +593604 +593605 +593606 +593607 +593632 +593633 +593634 +593635 +593636 +593637 +593638 +593639 +593664 +593665 +593666 +593667 +593668 +593669 +593670 +593671 +593696 +593697 +593698 +593699 +593700 +593701 +593702 +593703 +593728 +593729 +593730 +593731 +593732 +593733 +593734 +593735 +593760 +593761 +593762 +593763 +593764 +593765 +593766 +593767 +593792 +593793 +593794 +593795 +593796 +593797 +593798 +593799 +593824 +593825 +593826 +593827 +593828 +593829 +593830 +593831 +593856 +593857 +593858 +593859 +593860 +593861 +593862 +593863 +593888 +593889 +593890 +593891 +593892 +593893 +593894 +593895 +593920 +593921 +593922 +593923 +593924 +593925 +593926 +593927 +593952 +593953 +593954 +593955 +593956 +593957 +593958 +593959 +593984 +593985 +593986 +593987 +593988 +593989 +593990 +593991 +594016 +594017 +594018 +594019 +594020 +594021 +594022 +594023 +594048 +594049 +594050 +594051 +594052 +594053 +594054 +594055 +594080 +594081 +594082 +594083 +594084 +594085 +594086 +594087 +594112 +594113 +594114 +594115 +594116 +594117 +594118 +594119 +594144 +594145 +594146 +594147 +594148 +594149 +594150 +594151 +594176 +594177 +594178 +594179 +594180 +594181 +594182 +594183 +594208 +594209 +594210 +594211 +594212 +594213 +594214 +594215 +594240 +594241 +594242 +594243 +594244 +594245 +594246 +594247 +594272 +594273 +594274 +594275 +594276 +594277 +594278 +594279 +594304 +594305 +594306 +594307 +594308 +594309 +594310 +594311 +594336 +594337 +594338 +594339 +594340 +594341 +594342 +594343 +594368 +594369 +594370 +594371 +594372 +594373 +594374 +594375 +594400 +594401 +594402 +594403 +594404 +594405 +594406 +594407 +594432 +594433 +594434 +594435 +594436 +594437 +594438 +594439 +594464 +594465 +594466 +594467 +594468 +594469 +594470 +594471 +594496 +594497 +594498 +594499 +594500 +594501 +594502 +594503 +594528 +594529 +594530 +594531 +594532 +594533 +594534 +594535 +594560 +594561 +594562 +594563 +594564 +594565 +594566 +594567 +594592 +594593 +594594 +594595 +594596 +594597 +594598 +594599 +594624 +594625 +594626 +594627 +594628 +594629 +594630 +594631 +594656 +594657 +594658 +594659 +594660 +594661 +594662 +594663 +594688 +594689 +594690 +594691 +594692 +594693 +594694 +594695 +594720 +594721 +594722 +594723 +594724 +594725 +594726 +594727 +594752 +594753 +594754 +594755 +594756 +594757 +594758 +594759 +594784 +594785 +594786 +594787 +594788 +594789 +594790 +594791 +594816 +594817 +594818 +594819 +594820 +594821 +594822 +594823 +594848 +594849 +594850 +594851 +594852 +594853 +594854 +594855 +594880 +594881 +594882 +594883 +594884 +594885 +594886 +594887 +594912 +594913 +594914 +594915 +594916 +594917 +594918 +594919 +594944 +594945 +594946 +594947 +594948 +594949 +594950 +594951 +594976 +594977 +594978 +594979 +594980 +594981 +594982 +594983 +595008 +595009 +595010 +595011 +595012 +595013 +595014 +595015 +595040 +595041 +595042 +595043 +595044 +595045 +595046 +595047 +595072 +595073 +595074 +595075 +595076 +595077 +595078 +595079 +595104 +595105 +595106 +595107 +595108 +595109 +595110 +595111 +595136 +595137 +595138 +595139 +595140 +595141 +595142 +595143 +595168 +595169 +595170 +595171 +595172 +595173 +595174 +595175 +595200 +595201 +595202 +595203 +595204 +595205 +595206 +595207 +595232 +595233 +595234 +595235 +595236 +595237 +595238 +595239 +595264 +595265 +595266 +595267 +595268 +595269 +595270 +595271 +595296 +595297 +595298 +595299 +595300 +595301 +595302 +595303 +595328 +595329 +595330 +595331 +595332 +595333 +595334 +595335 +595360 +595361 +595362 +595363 +595364 +595365 +595366 +595367 +595392 +595393 +595394 +595395 +595396 +595397 +595398 +595399 +595424 +595425 +595426 +595427 +595428 +595429 +595430 +595431 +595456 +595457 +595458 +595459 +595460 +595461 +595462 +595463 +595488 +595489 +595490 +595491 +595492 +595493 +595494 +595495 +595520 +595521 +595522 +595523 +595524 +595525 +595526 +595527 +595552 +595553 +595554 +595555 +595556 +595557 +595558 +595559 +595584 +595585 +595586 +595587 +595588 +595589 +595590 +595591 +595616 +595617 +595618 +595619 +595620 +595621 +595622 +595623 +595648 +595649 +595650 +595651 +595652 +595653 +595654 +595655 +595680 +595681 +595682 +595683 +595684 +595685 +595686 +595687 +595712 +595713 +595714 +595715 +595716 +595717 +595718 +595719 +595744 +595745 +595746 +595747 +595748 +595749 +595750 +595751 +595776 +595777 +595778 +595779 +595780 +595781 +595782 +595783 +595808 +595809 +595810 +595811 +595812 +595813 +595814 +595815 +595840 +595841 +595842 +595843 +595844 +595845 +595846 +595847 +595872 +595873 +595874 +595875 +595876 +595877 +595878 +595879 +595904 +595905 +595906 +595907 +595908 +595909 +595910 +595911 +595936 +595937 +595938 +595939 +595940 +595941 +595942 +595943 +595968 +595969 +595970 +595971 +595972 +595973 +595974 +595975 +596000 +596001 +596002 +596003 +596004 +596005 +596006 +596007 +596032 +596033 +596034 +596035 +596036 +596037 +596038 +596039 +596064 +596065 +596066 +596067 +596068 +596069 +596070 +596071 +596096 +596097 +596098 +596099 +596100 +596101 +596102 +596103 +596128 +596129 +596130 +596131 +596132 +596133 +596134 +596135 +596160 +596161 +596162 +596163 +596164 +596165 +596166 +596167 +596192 +596193 +596194 +596195 +596196 +596197 +596198 +596199 +596224 +596225 +596226 +596227 +596228 +596229 +596230 +596231 +596256 +596257 +596258 +596259 +596260 +596261 +596262 +596263 +596288 +596289 +596290 +596291 +596292 +596293 +596294 +596295 +596320 +596321 +596322 +596323 +596324 +596325 +596326 +596327 +596352 +596353 +596354 +596355 +596356 +596357 +596358 +596359 +596384 +596385 +596386 +596387 +596388 +596389 +596390 +596391 +596416 +596417 +596418 +596419 +596420 +596421 +596422 +596423 +596448 +596449 +596450 +596451 +596452 +596453 +596454 +596455 +596480 +596481 +596482 +596483 +596484 +596485 +596486 +596487 +596512 +596513 +596514 +596515 +596516 +596517 +596518 +596519 +596544 +596545 +596546 +596547 +596548 +596549 +596550 +596551 +596576 +596577 +596578 +596579 +596580 +596581 +596582 +596583 +596608 +596609 +596610 +596611 +596612 +596613 +596614 +596615 +596640 +596641 +596642 +596643 +596644 +596645 +596646 +596647 +596672 +596673 +596674 +596675 +596676 +596677 +596678 +596679 +596704 +596705 +596706 +596707 +596708 +596709 +596710 +596711 +596736 +596737 +596738 +596739 +596740 +596741 +596742 +596743 +596768 +596769 +596770 +596771 +596772 +596773 +596774 +596775 +596800 +596801 +596802 +596803 +596804 +596805 +596806 +596807 +596832 +596833 +596834 +596835 +596836 +596837 +596838 +596839 +596864 +596865 +596866 +596867 +596868 +596869 +596870 +596871 +596896 +596897 +596898 +596899 +596900 +596901 +596902 +596903 +596928 +596929 +596930 +596931 +596932 +596933 +596934 +596935 +596960 +596961 +596962 +596963 +596964 +596965 +596966 +596967 +596992 +596993 +596994 +596995 +596996 +596997 +596998 +596999 +597024 +597025 +597026 +597027 +597028 +597029 +597030 +597031 +597056 +597057 +597058 +597059 +597060 +597061 +597062 +597063 +597088 +597089 +597090 +597091 +597092 +597093 +597094 +597095 +597120 +597121 +597122 +597123 +597124 +597125 +597126 +597127 +597152 +597153 +597154 +597155 +597156 +597157 +597158 +597159 +597184 +597185 +597186 +597187 +597188 +597189 +597190 +597191 +597216 +597217 +597218 +597219 +597220 +597221 +597222 +597223 +597248 +597249 +597250 +597251 +597252 +597253 +597254 +597255 +597280 +597281 +597282 +597283 +597284 +597285 +597286 +597287 +597312 +597313 +597314 +597315 +597316 +597317 +597318 +597319 +597344 +597345 +597346 +597347 +597348 +597349 +597350 +597351 +597376 +597377 +597378 +597379 +597380 +597381 +597382 +597383 +597408 +597409 +597410 +597411 +597412 +597413 +597414 +597415 +597440 +597441 +597442 +597443 +597444 +597445 +597446 +597447 +597472 +597473 +597474 +597475 +597476 +597477 +597478 +597479 +597504 +597505 +597506 +597507 +597508 +597509 +597510 +597511 +597536 +597537 +597538 +597539 +597540 +597541 +597542 +597543 +597568 +597569 +597570 +597571 +597572 +597573 +597574 +597575 +597600 +597601 +597602 +597603 +597604 +597605 +597606 +597607 +597632 +597633 +597634 +597635 +597636 +597637 +597638 +597639 +597664 +597665 +597666 +597667 +597668 +597669 +597670 +597671 +597696 +597697 +597698 +597699 +597700 +597701 +597702 +597703 +597728 +597729 +597730 +597731 +597732 +597733 +597734 +597735 +597760 +597761 +597762 +597763 +597764 +597765 +597766 +597767 +597792 +597793 +597794 +597795 +597796 +597797 +597798 +597799 +597824 +597825 +597826 +597827 +597828 +597829 +597830 +597831 +597856 +597857 +597858 +597859 +597860 +597861 +597862 +597863 +597888 +597889 +597890 +597891 +597892 +597893 +597894 +597895 +597920 +597921 +597922 +597923 +597924 +597925 +597926 +597927 +597952 +597953 +597954 +597955 +597956 +597957 +597958 +597959 +597984 +597985 +597986 +597987 +597988 +597989 +597990 +597991 +598016 +598017 +598018 +598019 +598020 +598021 +598022 +598023 +598048 +598049 +598050 +598051 +598052 +598053 +598054 +598055 +598080 +598081 +598082 +598083 +598084 +598085 +598086 +598087 +598112 +598113 +598114 +598115 +598116 +598117 +598118 +598119 +598144 +598145 +598146 +598147 +598148 +598149 +598150 +598151 +598176 +598177 +598178 +598179 +598180 +598181 +598182 +598183 +598208 +598209 +598210 +598211 +598212 +598213 +598214 +598215 +598240 +598241 +598242 +598243 +598244 +598245 +598246 +598247 +598272 +598273 +598274 +598275 +598276 +598277 +598278 +598279 +598304 +598305 +598306 +598307 +598308 +598309 +598310 +598311 +598336 +598337 +598338 +598339 +598340 +598341 +598342 +598343 +598368 +598369 +598370 +598371 +598372 +598373 +598374 +598375 +598400 +598401 +598402 +598403 +598404 +598405 +598406 +598407 +598432 +598433 +598434 +598435 +598436 +598437 +598438 +598439 +598464 +598465 +598466 +598467 +598468 +598469 +598470 +598471 +598496 +598497 +598498 +598499 +598500 +598501 +598502 +598503 +598528 +598529 +598530 +598531 +598532 +598533 +598534 +598535 +598560 +598561 +598562 +598563 +598564 +598565 +598566 +598567 +598592 +598593 +598594 +598595 +598596 +598597 +598598 +598599 +598624 +598625 +598626 +598627 +598628 +598629 +598630 +598631 +598656 +598657 +598658 +598659 +598660 +598661 +598662 +598663 +598688 +598689 +598690 +598691 +598692 +598693 +598694 +598695 +598720 +598721 +598722 +598723 +598724 +598725 +598726 +598727 +598752 +598753 +598754 +598755 +598756 +598757 +598758 +598759 +598784 +598785 +598786 +598787 +598788 +598789 +598790 +598791 +598816 +598817 +598818 +598819 +598820 +598821 +598822 +598823 +598848 +598849 +598850 +598851 +598852 +598853 +598854 +598855 +598880 +598881 +598882 +598883 +598884 +598885 +598886 +598887 +598912 +598913 +598914 +598915 +598916 +598917 +598918 +598919 +598944 +598945 +598946 +598947 +598948 +598949 +598950 +598951 +598976 +598977 +598978 +598979 +598980 +598981 +598982 +598983 +599008 +599009 +599010 +599011 +599012 +599013 +599014 +599015 +599040 +599041 +599042 +599043 +599044 +599045 +599046 +599047 +599072 +599073 +599074 +599075 +599076 +599077 +599078 +599079 +599104 +599105 +599106 +599107 +599108 +599109 +599110 +599111 +599136 +599137 +599138 +599139 +599140 +599141 +599142 +599143 +599168 +599169 +599170 +599171 +599172 +599173 +599174 +599175 +599200 +599201 +599202 +599203 +599204 +599205 +599206 +599207 +599232 +599233 +599234 +599235 +599236 +599237 +599238 +599239 +599264 +599265 +599266 +599267 +599268 +599269 +599270 +599271 +599296 +599297 +599298 +599299 +599300 +599301 +599302 +599303 +599328 +599329 +599330 +599331 +599332 +599333 +599334 +599335 +599360 +599361 +599362 +599363 +599364 +599365 +599366 +599367 +599392 +599393 +599394 +599395 +599396 +599397 +599398 +599399 +599424 +599425 +599426 +599427 +599428 +599429 +599430 +599431 +599456 +599457 +599458 +599459 +599460 +599461 +599462 +599463 +599488 +599489 +599490 +599491 +599492 +599493 +599494 +599495 +599520 +599521 +599522 +599523 +599524 +599525 +599526 +599527 +599552 +599553 +599554 +599555 +599556 +599557 +599558 +599559 +599584 +599585 +599586 +599587 +599588 +599589 +599590 +599591 +599616 +599617 +599618 +599619 +599620 +599621 +599622 +599623 +599648 +599649 +599650 +599651 +599652 +599653 +599654 +599655 +599680 +599681 +599682 +599683 +599684 +599685 +599686 +599687 +599712 +599713 +599714 +599715 +599716 +599717 +599718 +599719 +599744 +599745 +599746 +599747 +599748 +599749 +599750 +599751 +599776 +599777 +599778 +599779 +599780 +599781 +599782 +599783 +599808 +599809 +599810 +599811 +599812 +599813 +599814 +599815 +599840 +599841 +599842 +599843 +599844 +599845 +599846 +599847 +599872 +599873 +599874 +599875 +599876 +599877 +599878 +599879 +599904 +599905 +599906 +599907 +599908 +599909 +599910 +599911 +599936 +599937 +599938 +599939 +599940 +599941 +599942 +599943 +599968 +599969 +599970 +599971 +599972 +599973 +599974 +599975 +600000 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-generate-outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-generate-outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-acero_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-acero_outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-acero_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-acero_outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-duckdb_outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset-isthmus-duckdb_outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset_result_data.txt b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset_result_data.txt index ef29e0d3..ee70f16e 100644 --- a/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset_result_data.txt +++ b/substrait_consumer/tests/functional/relations/fetch_snapshots/relation_test_results/fetch_with_offset_result_data.txt @@ -3,4 +3,149994 @@ 32 33 34 +35 +36 +37 +38 +39 +64 +65 +66 +67 +68 +69 +70 +71 +96 +97 +98 +99 +100 +101 +102 +103 +128 +129 +130 +131 +132 +133 +134 +135 +160 +161 +162 +163 +164 +165 +166 +167 +192 +193 +194 +195 +196 +197 +198 +199 +224 +225 +226 +227 +228 +229 +230 +231 +256 +257 +258 +259 +260 +261 +262 +263 +288 +289 +290 +291 +292 +293 +294 +295 +320 +321 +322 +323 +324 +325 +326 +327 +352 +353 +354 +355 +356 +357 +358 +359 +384 +385 +386 +387 +388 +389 +390 +391 +416 +417 +418 +419 +420 +421 +422 +423 +448 +449 +450 +451 +452 +453 +454 +455 +480 +481 +482 +483 +484 +485 +486 +487 +512 +513 +514 +515 +516 +517 +518 +519 +544 +545 +546 +547 +548 +549 +550 +551 +576 +577 +578 +579 +580 +581 +582 +583 +608 +609 +610 +611 +612 +613 +614 +615 +640 +641 +642 +643 +644 +645 +646 +647 +672 +673 +674 +675 +676 +677 +678 +679 +704 +705 +706 +707 +708 +709 +710 +711 +736 +737 +738 +739 +740 +741 +742 +743 +768 +769 +770 +771 +772 +773 +774 +775 +800 +801 +802 +803 +804 +805 +806 +807 +832 +833 +834 +835 +836 +837 +838 +839 +864 +865 +866 +867 +868 +869 +870 +871 +896 +897 +898 +899 +900 +901 +902 +903 +928 +929 +930 +931 +932 +933 +934 +935 +960 +961 +962 +963 +964 +965 +966 +967 +992 +993 +994 +995 +996 +997 +998 +999 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1472 +1473 +1474 +1475 +1476 +1477 +1478 +1479 +1504 +1505 +1506 +1507 +1508 +1509 +1510 +1511 +1536 +1537 +1538 +1539 +1540 +1541 +1542 +1543 +1568 +1569 +1570 +1571 +1572 +1573 +1574 +1575 +1600 +1601 +1602 +1603 +1604 +1605 +1606 +1607 +1632 +1633 +1634 +1635 +1636 +1637 +1638 +1639 +1664 +1665 +1666 +1667 +1668 +1669 +1670 +1671 +1696 +1697 +1698 +1699 +1700 +1701 +1702 +1703 +1728 +1729 +1730 +1731 +1732 +1733 +1734 +1735 +1760 +1761 +1762 +1763 +1764 +1765 +1766 +1767 +1792 +1793 +1794 +1795 +1796 +1797 +1798 +1799 +1824 +1825 +1826 +1827 +1828 +1829 +1830 +1831 +1856 +1857 +1858 +1859 +1860 +1861 +1862 +1863 +1888 +1889 +1890 +1891 +1892 +1893 +1894 +1895 +1920 +1921 +1922 +1923 +1924 +1925 +1926 +1927 +1952 +1953 +1954 +1955 +1956 +1957 +1958 +1959 +1984 +1985 +1986 +1987 +1988 +1989 +1990 +1991 +2016 +2017 +2018 +2019 +2020 +2021 +2022 +2023 +2048 +2049 +2050 +2051 +2052 +2053 +2054 +2055 +2080 +2081 +2082 +2083 +2084 +2085 +2086 +2087 +2112 +2113 +2114 +2115 +2116 +2117 +2118 +2119 +2144 +2145 +2146 +2147 +2148 +2149 +2150 +2151 +2176 +2177 +2178 +2179 +2180 +2181 +2182 +2183 +2208 +2209 +2210 +2211 +2212 +2213 +2214 +2215 +2240 +2241 +2242 +2243 +2244 +2245 +2246 +2247 +2272 +2273 +2274 +2275 +2276 +2277 +2278 +2279 +2304 +2305 +2306 +2307 +2308 +2309 +2310 +2311 +2336 +2337 +2338 +2339 +2340 +2341 +2342 +2343 +2368 +2369 +2370 +2371 +2372 +2373 +2374 +2375 +2400 +2401 +2402 +2403 +2404 +2405 +2406 +2407 +2432 +2433 +2434 +2435 +2436 +2437 +2438 +2439 +2464 +2465 +2466 +2467 +2468 +2469 +2470 +2471 +2496 +2497 +2498 +2499 +2500 +2501 +2502 +2503 +2528 +2529 +2530 +2531 +2532 +2533 +2534 +2535 +2560 +2561 +2562 +2563 +2564 +2565 +2566 +2567 +2592 +2593 +2594 +2595 +2596 +2597 +2598 +2599 +2624 +2625 +2626 +2627 +2628 +2629 +2630 +2631 +2656 +2657 +2658 +2659 +2660 +2661 +2662 +2663 +2688 +2689 +2690 +2691 +2692 +2693 +2694 +2695 +2720 +2721 +2722 +2723 +2724 +2725 +2726 +2727 +2752 +2753 +2754 +2755 +2756 +2757 +2758 +2759 +2784 +2785 +2786 +2787 +2788 +2789 +2790 +2791 +2816 +2817 +2818 +2819 +2820 +2821 +2822 +2823 +2848 +2849 +2850 +2851 +2852 +2853 +2854 +2855 +2880 +2881 +2882 +2883 +2884 +2885 +2886 +2887 +2912 +2913 +2914 +2915 +2916 +2917 +2918 +2919 +2944 +2945 +2946 +2947 +2948 +2949 +2950 +2951 +2976 +2977 +2978 +2979 +2980 +2981 +2982 +2983 +3008 +3009 +3010 +3011 +3012 +3013 +3014 +3015 +3040 +3041 +3042 +3043 +3044 +3045 +3046 +3047 +3072 +3073 +3074 +3075 +3076 +3077 +3078 +3079 +3104 +3105 +3106 +3107 +3108 +3109 +3110 +3111 +3136 +3137 +3138 +3139 +3140 +3141 +3142 +3143 +3168 +3169 +3170 +3171 +3172 +3173 +3174 +3175 +3200 +3201 +3202 +3203 +3204 +3205 +3206 +3207 +3232 +3233 +3234 +3235 +3236 +3237 +3238 +3239 +3264 +3265 +3266 +3267 +3268 +3269 +3270 +3271 +3296 +3297 +3298 +3299 +3300 +3301 +3302 +3303 +3328 +3329 +3330 +3331 +3332 +3333 +3334 +3335 +3360 +3361 +3362 +3363 +3364 +3365 +3366 +3367 +3392 +3393 +3394 +3395 +3396 +3397 +3398 +3399 +3424 +3425 +3426 +3427 +3428 +3429 +3430 +3431 +3456 +3457 +3458 +3459 +3460 +3461 +3462 +3463 +3488 +3489 +3490 +3491 +3492 +3493 +3494 +3495 +3520 +3521 +3522 +3523 +3524 +3525 +3526 +3527 +3552 +3553 +3554 +3555 +3556 +3557 +3558 +3559 +3584 +3585 +3586 +3587 +3588 +3589 +3590 +3591 +3616 +3617 +3618 +3619 +3620 +3621 +3622 +3623 +3648 +3649 +3650 +3651 +3652 +3653 +3654 +3655 +3680 +3681 +3682 +3683 +3684 +3685 +3686 +3687 +3712 +3713 +3714 +3715 +3716 +3717 +3718 +3719 +3744 +3745 +3746 +3747 +3748 +3749 +3750 +3751 +3776 +3777 +3778 +3779 +3780 +3781 +3782 +3783 +3808 +3809 +3810 +3811 +3812 +3813 +3814 +3815 +3840 +3841 +3842 +3843 +3844 +3845 +3846 +3847 +3872 +3873 +3874 +3875 +3876 +3877 +3878 +3879 +3904 +3905 +3906 +3907 +3908 +3909 +3910 +3911 +3936 +3937 +3938 +3939 +3940 +3941 +3942 +3943 +3968 +3969 +3970 +3971 +3972 +3973 +3974 +3975 +4000 +4001 +4002 +4003 +4004 +4005 +4006 +4007 +4032 +4033 +4034 +4035 +4036 +4037 +4038 +4039 +4064 +4065 +4066 +4067 +4068 +4069 +4070 +4071 +4096 +4097 +4098 +4099 +4100 +4101 +4102 +4103 +4128 +4129 +4130 +4131 +4132 +4133 +4134 +4135 +4160 +4161 +4162 +4163 +4164 +4165 +4166 +4167 +4192 +4193 +4194 +4195 +4196 +4197 +4198 +4199 +4224 +4225 +4226 +4227 +4228 +4229 +4230 +4231 +4256 +4257 +4258 +4259 +4260 +4261 +4262 +4263 +4288 +4289 +4290 +4291 +4292 +4293 +4294 +4295 +4320 +4321 +4322 +4323 +4324 +4325 +4326 +4327 +4352 +4353 +4354 +4355 +4356 +4357 +4358 +4359 +4384 +4385 +4386 +4387 +4388 +4389 +4390 +4391 +4416 +4417 +4418 +4419 +4420 +4421 +4422 +4423 +4448 +4449 +4450 +4451 +4452 +4453 +4454 +4455 +4480 +4481 +4482 +4483 +4484 +4485 +4486 +4487 +4512 +4513 +4514 +4515 +4516 +4517 +4518 +4519 +4544 +4545 +4546 +4547 +4548 +4549 +4550 +4551 +4576 +4577 +4578 +4579 +4580 +4581 +4582 +4583 +4608 +4609 +4610 +4611 +4612 +4613 +4614 +4615 +4640 +4641 +4642 +4643 +4644 +4645 +4646 +4647 +4672 +4673 +4674 +4675 +4676 +4677 +4678 +4679 +4704 +4705 +4706 +4707 +4708 +4709 +4710 +4711 +4736 +4737 +4738 +4739 +4740 +4741 +4742 +4743 +4768 +4769 +4770 +4771 +4772 +4773 +4774 +4775 +4800 +4801 +4802 +4803 +4804 +4805 +4806 +4807 +4832 +4833 +4834 +4835 +4836 +4837 +4838 +4839 +4864 +4865 +4866 +4867 +4868 +4869 +4870 +4871 +4896 +4897 +4898 +4899 +4900 +4901 +4902 +4903 +4928 +4929 +4930 +4931 +4932 +4933 +4934 +4935 +4960 +4961 +4962 +4963 +4964 +4965 +4966 +4967 +4992 +4993 +4994 +4995 +4996 +4997 +4998 +4999 +5024 +5025 +5026 +5027 +5028 +5029 +5030 +5031 +5056 +5057 +5058 +5059 +5060 +5061 +5062 +5063 +5088 +5089 +5090 +5091 +5092 +5093 +5094 +5095 +5120 +5121 +5122 +5123 +5124 +5125 +5126 +5127 +5152 +5153 +5154 +5155 +5156 +5157 +5158 +5159 +5184 +5185 +5186 +5187 +5188 +5189 +5190 +5191 +5216 +5217 +5218 +5219 +5220 +5221 +5222 +5223 +5248 +5249 +5250 +5251 +5252 +5253 +5254 +5255 +5280 +5281 +5282 +5283 +5284 +5285 +5286 +5287 +5312 +5313 +5314 +5315 +5316 +5317 +5318 +5319 +5344 +5345 +5346 +5347 +5348 +5349 +5350 +5351 +5376 +5377 +5378 +5379 +5380 +5381 +5382 +5383 +5408 +5409 +5410 +5411 +5412 +5413 +5414 +5415 +5440 +5441 +5442 +5443 +5444 +5445 +5446 +5447 +5472 +5473 +5474 +5475 +5476 +5477 +5478 +5479 +5504 +5505 +5506 +5507 +5508 +5509 +5510 +5511 +5536 +5537 +5538 +5539 +5540 +5541 +5542 +5543 +5568 +5569 +5570 +5571 +5572 +5573 +5574 +5575 +5600 +5601 +5602 +5603 +5604 +5605 +5606 +5607 +5632 +5633 +5634 +5635 +5636 +5637 +5638 +5639 +5664 +5665 +5666 +5667 +5668 +5669 +5670 +5671 +5696 +5697 +5698 +5699 +5700 +5701 +5702 +5703 +5728 +5729 +5730 +5731 +5732 +5733 +5734 +5735 +5760 +5761 +5762 +5763 +5764 +5765 +5766 +5767 +5792 +5793 +5794 +5795 +5796 +5797 +5798 +5799 +5824 +5825 +5826 +5827 +5828 +5829 +5830 +5831 +5856 +5857 +5858 +5859 +5860 +5861 +5862 +5863 +5888 +5889 +5890 +5891 +5892 +5893 +5894 +5895 +5920 +5921 +5922 +5923 +5924 +5925 +5926 +5927 +5952 +5953 +5954 +5955 +5956 +5957 +5958 +5959 +5984 +5985 +5986 +5987 +5988 +5989 +5990 +5991 +6016 +6017 +6018 +6019 +6020 +6021 +6022 +6023 +6048 +6049 +6050 +6051 +6052 +6053 +6054 +6055 +6080 +6081 +6082 +6083 +6084 +6085 +6086 +6087 +6112 +6113 +6114 +6115 +6116 +6117 +6118 +6119 +6144 +6145 +6146 +6147 +6148 +6149 +6150 +6151 +6176 +6177 +6178 +6179 +6180 +6181 +6182 +6183 +6208 +6209 +6210 +6211 +6212 +6213 +6214 +6215 +6240 +6241 +6242 +6243 +6244 +6245 +6246 +6247 +6272 +6273 +6274 +6275 +6276 +6277 +6278 +6279 +6304 +6305 +6306 +6307 +6308 +6309 +6310 +6311 +6336 +6337 +6338 +6339 +6340 +6341 +6342 +6343 +6368 +6369 +6370 +6371 +6372 +6373 +6374 +6375 +6400 +6401 +6402 +6403 +6404 +6405 +6406 +6407 +6432 +6433 +6434 +6435 +6436 +6437 +6438 +6439 +6464 +6465 +6466 +6467 +6468 +6469 +6470 +6471 +6496 +6497 +6498 +6499 +6500 +6501 +6502 +6503 +6528 +6529 +6530 +6531 +6532 +6533 +6534 +6535 +6560 +6561 +6562 +6563 +6564 +6565 +6566 +6567 +6592 +6593 +6594 +6595 +6596 +6597 +6598 +6599 +6624 +6625 +6626 +6627 +6628 +6629 +6630 +6631 +6656 +6657 +6658 +6659 +6660 +6661 +6662 +6663 +6688 +6689 +6690 +6691 +6692 +6693 +6694 +6695 +6720 +6721 +6722 +6723 +6724 +6725 +6726 +6727 +6752 +6753 +6754 +6755 +6756 +6757 +6758 +6759 +6784 +6785 +6786 +6787 +6788 +6789 +6790 +6791 +6816 +6817 +6818 +6819 +6820 +6821 +6822 +6823 +6848 +6849 +6850 +6851 +6852 +6853 +6854 +6855 +6880 +6881 +6882 +6883 +6884 +6885 +6886 +6887 +6912 +6913 +6914 +6915 +6916 +6917 +6918 +6919 +6944 +6945 +6946 +6947 +6948 +6949 +6950 +6951 +6976 +6977 +6978 +6979 +6980 +6981 +6982 +6983 +7008 +7009 +7010 +7011 +7012 +7013 +7014 +7015 +7040 +7041 +7042 +7043 +7044 +7045 +7046 +7047 +7072 +7073 +7074 +7075 +7076 +7077 +7078 +7079 +7104 +7105 +7106 +7107 +7108 +7109 +7110 +7111 +7136 +7137 +7138 +7139 +7140 +7141 +7142 +7143 +7168 +7169 +7170 +7171 +7172 +7173 +7174 +7175 +7200 +7201 +7202 +7203 +7204 +7205 +7206 +7207 +7232 +7233 +7234 +7235 +7236 +7237 +7238 +7239 +7264 +7265 +7266 +7267 +7268 +7269 +7270 +7271 +7296 +7297 +7298 +7299 +7300 +7301 +7302 +7303 +7328 +7329 +7330 +7331 +7332 +7333 +7334 +7335 +7360 +7361 +7362 +7363 +7364 +7365 +7366 +7367 +7392 +7393 +7394 +7395 +7396 +7397 +7398 +7399 +7424 +7425 +7426 +7427 +7428 +7429 +7430 +7431 +7456 +7457 +7458 +7459 +7460 +7461 +7462 +7463 +7488 +7489 +7490 +7491 +7492 +7493 +7494 +7495 +7520 +7521 +7522 +7523 +7524 +7525 +7526 +7527 +7552 +7553 +7554 +7555 +7556 +7557 +7558 +7559 +7584 +7585 +7586 +7587 +7588 +7589 +7590 +7591 +7616 +7617 +7618 +7619 +7620 +7621 +7622 +7623 +7648 +7649 +7650 +7651 +7652 +7653 +7654 +7655 +7680 +7681 +7682 +7683 +7684 +7685 +7686 +7687 +7712 +7713 +7714 +7715 +7716 +7717 +7718 +7719 +7744 +7745 +7746 +7747 +7748 +7749 +7750 +7751 +7776 +7777 +7778 +7779 +7780 +7781 +7782 +7783 +7808 +7809 +7810 +7811 +7812 +7813 +7814 +7815 +7840 +7841 +7842 +7843 +7844 +7845 +7846 +7847 +7872 +7873 +7874 +7875 +7876 +7877 +7878 +7879 +7904 +7905 +7906 +7907 +7908 +7909 +7910 +7911 +7936 +7937 +7938 +7939 +7940 +7941 +7942 +7943 +7968 +7969 +7970 +7971 +7972 +7973 +7974 +7975 +8000 +8001 +8002 +8003 +8004 +8005 +8006 +8007 +8032 +8033 +8034 +8035 +8036 +8037 +8038 +8039 +8064 +8065 +8066 +8067 +8068 +8069 +8070 +8071 +8096 +8097 +8098 +8099 +8100 +8101 +8102 +8103 +8128 +8129 +8130 +8131 +8132 +8133 +8134 +8135 +8160 +8161 +8162 +8163 +8164 +8165 +8166 +8167 +8192 +8193 +8194 +8195 +8196 +8197 +8198 +8199 +8224 +8225 +8226 +8227 +8228 +8229 +8230 +8231 +8256 +8257 +8258 +8259 +8260 +8261 +8262 +8263 +8288 +8289 +8290 +8291 +8292 +8293 +8294 +8295 +8320 +8321 +8322 +8323 +8324 +8325 +8326 +8327 +8352 +8353 +8354 +8355 +8356 +8357 +8358 +8359 +8384 +8385 +8386 +8387 +8388 +8389 +8390 +8391 +8416 +8417 +8418 +8419 +8420 +8421 +8422 +8423 +8448 +8449 +8450 +8451 +8452 +8453 +8454 +8455 +8480 +8481 +8482 +8483 +8484 +8485 +8486 +8487 +8512 +8513 +8514 +8515 +8516 +8517 +8518 +8519 +8544 +8545 +8546 +8547 +8548 +8549 +8550 +8551 +8576 +8577 +8578 +8579 +8580 +8581 +8582 +8583 +8608 +8609 +8610 +8611 +8612 +8613 +8614 +8615 +8640 +8641 +8642 +8643 +8644 +8645 +8646 +8647 +8672 +8673 +8674 +8675 +8676 +8677 +8678 +8679 +8704 +8705 +8706 +8707 +8708 +8709 +8710 +8711 +8736 +8737 +8738 +8739 +8740 +8741 +8742 +8743 +8768 +8769 +8770 +8771 +8772 +8773 +8774 +8775 +8800 +8801 +8802 +8803 +8804 +8805 +8806 +8807 +8832 +8833 +8834 +8835 +8836 +8837 +8838 +8839 +8864 +8865 +8866 +8867 +8868 +8869 +8870 +8871 +8896 +8897 +8898 +8899 +8900 +8901 +8902 +8903 +8928 +8929 +8930 +8931 +8932 +8933 +8934 +8935 +8960 +8961 +8962 +8963 +8964 +8965 +8966 +8967 +8992 +8993 +8994 +8995 +8996 +8997 +8998 +8999 +9024 +9025 +9026 +9027 +9028 +9029 +9030 +9031 +9056 +9057 +9058 +9059 +9060 +9061 +9062 +9063 +9088 +9089 +9090 +9091 +9092 +9093 +9094 +9095 +9120 +9121 +9122 +9123 +9124 +9125 +9126 +9127 +9152 +9153 +9154 +9155 +9156 +9157 +9158 +9159 +9184 +9185 +9186 +9187 +9188 +9189 +9190 +9191 +9216 +9217 +9218 +9219 +9220 +9221 +9222 +9223 +9248 +9249 +9250 +9251 +9252 +9253 +9254 +9255 +9280 +9281 +9282 +9283 +9284 +9285 +9286 +9287 +9312 +9313 +9314 +9315 +9316 +9317 +9318 +9319 +9344 +9345 +9346 +9347 +9348 +9349 +9350 +9351 +9376 +9377 +9378 +9379 +9380 +9381 +9382 +9383 +9408 +9409 +9410 +9411 +9412 +9413 +9414 +9415 +9440 +9441 +9442 +9443 +9444 +9445 +9446 +9447 +9472 +9473 +9474 +9475 +9476 +9477 +9478 +9479 +9504 +9505 +9506 +9507 +9508 +9509 +9510 +9511 +9536 +9537 +9538 +9539 +9540 +9541 +9542 +9543 +9568 +9569 +9570 +9571 +9572 +9573 +9574 +9575 +9600 +9601 +9602 +9603 +9604 +9605 +9606 +9607 +9632 +9633 +9634 +9635 +9636 +9637 +9638 +9639 +9664 +9665 +9666 +9667 +9668 +9669 +9670 +9671 +9696 +9697 +9698 +9699 +9700 +9701 +9702 +9703 +9728 +9729 +9730 +9731 +9732 +9733 +9734 +9735 +9760 +9761 +9762 +9763 +9764 +9765 +9766 +9767 +9792 +9793 +9794 +9795 +9796 +9797 +9798 +9799 +9824 +9825 +9826 +9827 +9828 +9829 +9830 +9831 +9856 +9857 +9858 +9859 +9860 +9861 +9862 +9863 +9888 +9889 +9890 +9891 +9892 +9893 +9894 +9895 +9920 +9921 +9922 +9923 +9924 +9925 +9926 +9927 +9952 +9953 +9954 +9955 +9956 +9957 +9958 +9959 +9984 +9985 +9986 +9987 +9988 +9989 +9990 +9991 +10016 +10017 +10018 +10019 +10020 +10021 +10022 +10023 +10048 +10049 +10050 +10051 +10052 +10053 +10054 +10055 +10080 +10081 +10082 +10083 +10084 +10085 +10086 +10087 +10112 +10113 +10114 +10115 +10116 +10117 +10118 +10119 +10144 +10145 +10146 +10147 +10148 +10149 +10150 +10151 +10176 +10177 +10178 +10179 +10180 +10181 +10182 +10183 +10208 +10209 +10210 +10211 +10212 +10213 +10214 +10215 +10240 +10241 +10242 +10243 +10244 +10245 +10246 +10247 +10272 +10273 +10274 +10275 +10276 +10277 +10278 +10279 +10304 +10305 +10306 +10307 +10308 +10309 +10310 +10311 +10336 +10337 +10338 +10339 +10340 +10341 +10342 +10343 +10368 +10369 +10370 +10371 +10372 +10373 +10374 +10375 +10400 +10401 +10402 +10403 +10404 +10405 +10406 +10407 +10432 +10433 +10434 +10435 +10436 +10437 +10438 +10439 +10464 +10465 +10466 +10467 +10468 +10469 +10470 +10471 +10496 +10497 +10498 +10499 +10500 +10501 +10502 +10503 +10528 +10529 +10530 +10531 +10532 +10533 +10534 +10535 +10560 +10561 +10562 +10563 +10564 +10565 +10566 +10567 +10592 +10593 +10594 +10595 +10596 +10597 +10598 +10599 +10624 +10625 +10626 +10627 +10628 +10629 +10630 +10631 +10656 +10657 +10658 +10659 +10660 +10661 +10662 +10663 +10688 +10689 +10690 +10691 +10692 +10693 +10694 +10695 +10720 +10721 +10722 +10723 +10724 +10725 +10726 +10727 +10752 +10753 +10754 +10755 +10756 +10757 +10758 +10759 +10784 +10785 +10786 +10787 +10788 +10789 +10790 +10791 +10816 +10817 +10818 +10819 +10820 +10821 +10822 +10823 +10848 +10849 +10850 +10851 +10852 +10853 +10854 +10855 +10880 +10881 +10882 +10883 +10884 +10885 +10886 +10887 +10912 +10913 +10914 +10915 +10916 +10917 +10918 +10919 +10944 +10945 +10946 +10947 +10948 +10949 +10950 +10951 +10976 +10977 +10978 +10979 +10980 +10981 +10982 +10983 +11008 +11009 +11010 +11011 +11012 +11013 +11014 +11015 +11040 +11041 +11042 +11043 +11044 +11045 +11046 +11047 +11072 +11073 +11074 +11075 +11076 +11077 +11078 +11079 +11104 +11105 +11106 +11107 +11108 +11109 +11110 +11111 +11136 +11137 +11138 +11139 +11140 +11141 +11142 +11143 +11168 +11169 +11170 +11171 +11172 +11173 +11174 +11175 +11200 +11201 +11202 +11203 +11204 +11205 +11206 +11207 +11232 +11233 +11234 +11235 +11236 +11237 +11238 +11239 +11264 +11265 +11266 +11267 +11268 +11269 +11270 +11271 +11296 +11297 +11298 +11299 +11300 +11301 +11302 +11303 +11328 +11329 +11330 +11331 +11332 +11333 +11334 +11335 +11360 +11361 +11362 +11363 +11364 +11365 +11366 +11367 +11392 +11393 +11394 +11395 +11396 +11397 +11398 +11399 +11424 +11425 +11426 +11427 +11428 +11429 +11430 +11431 +11456 +11457 +11458 +11459 +11460 +11461 +11462 +11463 +11488 +11489 +11490 +11491 +11492 +11493 +11494 +11495 +11520 +11521 +11522 +11523 +11524 +11525 +11526 +11527 +11552 +11553 +11554 +11555 +11556 +11557 +11558 +11559 +11584 +11585 +11586 +11587 +11588 +11589 +11590 +11591 +11616 +11617 +11618 +11619 +11620 +11621 +11622 +11623 +11648 +11649 +11650 +11651 +11652 +11653 +11654 +11655 +11680 +11681 +11682 +11683 +11684 +11685 +11686 +11687 +11712 +11713 +11714 +11715 +11716 +11717 +11718 +11719 +11744 +11745 +11746 +11747 +11748 +11749 +11750 +11751 +11776 +11777 +11778 +11779 +11780 +11781 +11782 +11783 +11808 +11809 +11810 +11811 +11812 +11813 +11814 +11815 +11840 +11841 +11842 +11843 +11844 +11845 +11846 +11847 +11872 +11873 +11874 +11875 +11876 +11877 +11878 +11879 +11904 +11905 +11906 +11907 +11908 +11909 +11910 +11911 +11936 +11937 +11938 +11939 +11940 +11941 +11942 +11943 +11968 +11969 +11970 +11971 +11972 +11973 +11974 +11975 +12000 +12001 +12002 +12003 +12004 +12005 +12006 +12007 +12032 +12033 +12034 +12035 +12036 +12037 +12038 +12039 +12064 +12065 +12066 +12067 +12068 +12069 +12070 +12071 +12096 +12097 +12098 +12099 +12100 +12101 +12102 +12103 +12128 +12129 +12130 +12131 +12132 +12133 +12134 +12135 +12160 +12161 +12162 +12163 +12164 +12165 +12166 +12167 +12192 +12193 +12194 +12195 +12196 +12197 +12198 +12199 +12224 +12225 +12226 +12227 +12228 +12229 +12230 +12231 +12256 +12257 +12258 +12259 +12260 +12261 +12262 +12263 +12288 +12289 +12290 +12291 +12292 +12293 +12294 +12295 +12320 +12321 +12322 +12323 +12324 +12325 +12326 +12327 +12352 +12353 +12354 +12355 +12356 +12357 +12358 +12359 +12384 +12385 +12386 +12387 +12388 +12389 +12390 +12391 +12416 +12417 +12418 +12419 +12420 +12421 +12422 +12423 +12448 +12449 +12450 +12451 +12452 +12453 +12454 +12455 +12480 +12481 +12482 +12483 +12484 +12485 +12486 +12487 +12512 +12513 +12514 +12515 +12516 +12517 +12518 +12519 +12544 +12545 +12546 +12547 +12548 +12549 +12550 +12551 +12576 +12577 +12578 +12579 +12580 +12581 +12582 +12583 +12608 +12609 +12610 +12611 +12612 +12613 +12614 +12615 +12640 +12641 +12642 +12643 +12644 +12645 +12646 +12647 +12672 +12673 +12674 +12675 +12676 +12677 +12678 +12679 +12704 +12705 +12706 +12707 +12708 +12709 +12710 +12711 +12736 +12737 +12738 +12739 +12740 +12741 +12742 +12743 +12768 +12769 +12770 +12771 +12772 +12773 +12774 +12775 +12800 +12801 +12802 +12803 +12804 +12805 +12806 +12807 +12832 +12833 +12834 +12835 +12836 +12837 +12838 +12839 +12864 +12865 +12866 +12867 +12868 +12869 +12870 +12871 +12896 +12897 +12898 +12899 +12900 +12901 +12902 +12903 +12928 +12929 +12930 +12931 +12932 +12933 +12934 +12935 +12960 +12961 +12962 +12963 +12964 +12965 +12966 +12967 +12992 +12993 +12994 +12995 +12996 +12997 +12998 +12999 +13024 +13025 +13026 +13027 +13028 +13029 +13030 +13031 +13056 +13057 +13058 +13059 +13060 +13061 +13062 +13063 +13088 +13089 +13090 +13091 +13092 +13093 +13094 +13095 +13120 +13121 +13122 +13123 +13124 +13125 +13126 +13127 +13152 +13153 +13154 +13155 +13156 +13157 +13158 +13159 +13184 +13185 +13186 +13187 +13188 +13189 +13190 +13191 +13216 +13217 +13218 +13219 +13220 +13221 +13222 +13223 +13248 +13249 +13250 +13251 +13252 +13253 +13254 +13255 +13280 +13281 +13282 +13283 +13284 +13285 +13286 +13287 +13312 +13313 +13314 +13315 +13316 +13317 +13318 +13319 +13344 +13345 +13346 +13347 +13348 +13349 +13350 +13351 +13376 +13377 +13378 +13379 +13380 +13381 +13382 +13383 +13408 +13409 +13410 +13411 +13412 +13413 +13414 +13415 +13440 +13441 +13442 +13443 +13444 +13445 +13446 +13447 +13472 +13473 +13474 +13475 +13476 +13477 +13478 +13479 +13504 +13505 +13506 +13507 +13508 +13509 +13510 +13511 +13536 +13537 +13538 +13539 +13540 +13541 +13542 +13543 +13568 +13569 +13570 +13571 +13572 +13573 +13574 +13575 +13600 +13601 +13602 +13603 +13604 +13605 +13606 +13607 +13632 +13633 +13634 +13635 +13636 +13637 +13638 +13639 +13664 +13665 +13666 +13667 +13668 +13669 +13670 +13671 +13696 +13697 +13698 +13699 +13700 +13701 +13702 +13703 +13728 +13729 +13730 +13731 +13732 +13733 +13734 +13735 +13760 +13761 +13762 +13763 +13764 +13765 +13766 +13767 +13792 +13793 +13794 +13795 +13796 +13797 +13798 +13799 +13824 +13825 +13826 +13827 +13828 +13829 +13830 +13831 +13856 +13857 +13858 +13859 +13860 +13861 +13862 +13863 +13888 +13889 +13890 +13891 +13892 +13893 +13894 +13895 +13920 +13921 +13922 +13923 +13924 +13925 +13926 +13927 +13952 +13953 +13954 +13955 +13956 +13957 +13958 +13959 +13984 +13985 +13986 +13987 +13988 +13989 +13990 +13991 +14016 +14017 +14018 +14019 +14020 +14021 +14022 +14023 +14048 +14049 +14050 +14051 +14052 +14053 +14054 +14055 +14080 +14081 +14082 +14083 +14084 +14085 +14086 +14087 +14112 +14113 +14114 +14115 +14116 +14117 +14118 +14119 +14144 +14145 +14146 +14147 +14148 +14149 +14150 +14151 +14176 +14177 +14178 +14179 +14180 +14181 +14182 +14183 +14208 +14209 +14210 +14211 +14212 +14213 +14214 +14215 +14240 +14241 +14242 +14243 +14244 +14245 +14246 +14247 +14272 +14273 +14274 +14275 +14276 +14277 +14278 +14279 +14304 +14305 +14306 +14307 +14308 +14309 +14310 +14311 +14336 +14337 +14338 +14339 +14340 +14341 +14342 +14343 +14368 +14369 +14370 +14371 +14372 +14373 +14374 +14375 +14400 +14401 +14402 +14403 +14404 +14405 +14406 +14407 +14432 +14433 +14434 +14435 +14436 +14437 +14438 +14439 +14464 +14465 +14466 +14467 +14468 +14469 +14470 +14471 +14496 +14497 +14498 +14499 +14500 +14501 +14502 +14503 +14528 +14529 +14530 +14531 +14532 +14533 +14534 +14535 +14560 +14561 +14562 +14563 +14564 +14565 +14566 +14567 +14592 +14593 +14594 +14595 +14596 +14597 +14598 +14599 +14624 +14625 +14626 +14627 +14628 +14629 +14630 +14631 +14656 +14657 +14658 +14659 +14660 +14661 +14662 +14663 +14688 +14689 +14690 +14691 +14692 +14693 +14694 +14695 +14720 +14721 +14722 +14723 +14724 +14725 +14726 +14727 +14752 +14753 +14754 +14755 +14756 +14757 +14758 +14759 +14784 +14785 +14786 +14787 +14788 +14789 +14790 +14791 +14816 +14817 +14818 +14819 +14820 +14821 +14822 +14823 +14848 +14849 +14850 +14851 +14852 +14853 +14854 +14855 +14880 +14881 +14882 +14883 +14884 +14885 +14886 +14887 +14912 +14913 +14914 +14915 +14916 +14917 +14918 +14919 +14944 +14945 +14946 +14947 +14948 +14949 +14950 +14951 +14976 +14977 +14978 +14979 +14980 +14981 +14982 +14983 +15008 +15009 +15010 +15011 +15012 +15013 +15014 +15015 +15040 +15041 +15042 +15043 +15044 +15045 +15046 +15047 +15072 +15073 +15074 +15075 +15076 +15077 +15078 +15079 +15104 +15105 +15106 +15107 +15108 +15109 +15110 +15111 +15136 +15137 +15138 +15139 +15140 +15141 +15142 +15143 +15168 +15169 +15170 +15171 +15172 +15173 +15174 +15175 +15200 +15201 +15202 +15203 +15204 +15205 +15206 +15207 +15232 +15233 +15234 +15235 +15236 +15237 +15238 +15239 +15264 +15265 +15266 +15267 +15268 +15269 +15270 +15271 +15296 +15297 +15298 +15299 +15300 +15301 +15302 +15303 +15328 +15329 +15330 +15331 +15332 +15333 +15334 +15335 +15360 +15361 +15362 +15363 +15364 +15365 +15366 +15367 +15392 +15393 +15394 +15395 +15396 +15397 +15398 +15399 +15424 +15425 +15426 +15427 +15428 +15429 +15430 +15431 +15456 +15457 +15458 +15459 +15460 +15461 +15462 +15463 +15488 +15489 +15490 +15491 +15492 +15493 +15494 +15495 +15520 +15521 +15522 +15523 +15524 +15525 +15526 +15527 +15552 +15553 +15554 +15555 +15556 +15557 +15558 +15559 +15584 +15585 +15586 +15587 +15588 +15589 +15590 +15591 +15616 +15617 +15618 +15619 +15620 +15621 +15622 +15623 +15648 +15649 +15650 +15651 +15652 +15653 +15654 +15655 +15680 +15681 +15682 +15683 +15684 +15685 +15686 +15687 +15712 +15713 +15714 +15715 +15716 +15717 +15718 +15719 +15744 +15745 +15746 +15747 +15748 +15749 +15750 +15751 +15776 +15777 +15778 +15779 +15780 +15781 +15782 +15783 +15808 +15809 +15810 +15811 +15812 +15813 +15814 +15815 +15840 +15841 +15842 +15843 +15844 +15845 +15846 +15847 +15872 +15873 +15874 +15875 +15876 +15877 +15878 +15879 +15904 +15905 +15906 +15907 +15908 +15909 +15910 +15911 +15936 +15937 +15938 +15939 +15940 +15941 +15942 +15943 +15968 +15969 +15970 +15971 +15972 +15973 +15974 +15975 +16000 +16001 +16002 +16003 +16004 +16005 +16006 +16007 +16032 +16033 +16034 +16035 +16036 +16037 +16038 +16039 +16064 +16065 +16066 +16067 +16068 +16069 +16070 +16071 +16096 +16097 +16098 +16099 +16100 +16101 +16102 +16103 +16128 +16129 +16130 +16131 +16132 +16133 +16134 +16135 +16160 +16161 +16162 +16163 +16164 +16165 +16166 +16167 +16192 +16193 +16194 +16195 +16196 +16197 +16198 +16199 +16224 +16225 +16226 +16227 +16228 +16229 +16230 +16231 +16256 +16257 +16258 +16259 +16260 +16261 +16262 +16263 +16288 +16289 +16290 +16291 +16292 +16293 +16294 +16295 +16320 +16321 +16322 +16323 +16324 +16325 +16326 +16327 +16352 +16353 +16354 +16355 +16356 +16357 +16358 +16359 +16384 +16385 +16386 +16387 +16388 +16389 +16390 +16391 +16416 +16417 +16418 +16419 +16420 +16421 +16422 +16423 +16448 +16449 +16450 +16451 +16452 +16453 +16454 +16455 +16480 +16481 +16482 +16483 +16484 +16485 +16486 +16487 +16512 +16513 +16514 +16515 +16516 +16517 +16518 +16519 +16544 +16545 +16546 +16547 +16548 +16549 +16550 +16551 +16576 +16577 +16578 +16579 +16580 +16581 +16582 +16583 +16608 +16609 +16610 +16611 +16612 +16613 +16614 +16615 +16640 +16641 +16642 +16643 +16644 +16645 +16646 +16647 +16672 +16673 +16674 +16675 +16676 +16677 +16678 +16679 +16704 +16705 +16706 +16707 +16708 +16709 +16710 +16711 +16736 +16737 +16738 +16739 +16740 +16741 +16742 +16743 +16768 +16769 +16770 +16771 +16772 +16773 +16774 +16775 +16800 +16801 +16802 +16803 +16804 +16805 +16806 +16807 +16832 +16833 +16834 +16835 +16836 +16837 +16838 +16839 +16864 +16865 +16866 +16867 +16868 +16869 +16870 +16871 +16896 +16897 +16898 +16899 +16900 +16901 +16902 +16903 +16928 +16929 +16930 +16931 +16932 +16933 +16934 +16935 +16960 +16961 +16962 +16963 +16964 +16965 +16966 +16967 +16992 +16993 +16994 +16995 +16996 +16997 +16998 +16999 +17024 +17025 +17026 +17027 +17028 +17029 +17030 +17031 +17056 +17057 +17058 +17059 +17060 +17061 +17062 +17063 +17088 +17089 +17090 +17091 +17092 +17093 +17094 +17095 +17120 +17121 +17122 +17123 +17124 +17125 +17126 +17127 +17152 +17153 +17154 +17155 +17156 +17157 +17158 +17159 +17184 +17185 +17186 +17187 +17188 +17189 +17190 +17191 +17216 +17217 +17218 +17219 +17220 +17221 +17222 +17223 +17248 +17249 +17250 +17251 +17252 +17253 +17254 +17255 +17280 +17281 +17282 +17283 +17284 +17285 +17286 +17287 +17312 +17313 +17314 +17315 +17316 +17317 +17318 +17319 +17344 +17345 +17346 +17347 +17348 +17349 +17350 +17351 +17376 +17377 +17378 +17379 +17380 +17381 +17382 +17383 +17408 +17409 +17410 +17411 +17412 +17413 +17414 +17415 +17440 +17441 +17442 +17443 +17444 +17445 +17446 +17447 +17472 +17473 +17474 +17475 +17476 +17477 +17478 +17479 +17504 +17505 +17506 +17507 +17508 +17509 +17510 +17511 +17536 +17537 +17538 +17539 +17540 +17541 +17542 +17543 +17568 +17569 +17570 +17571 +17572 +17573 +17574 +17575 +17600 +17601 +17602 +17603 +17604 +17605 +17606 +17607 +17632 +17633 +17634 +17635 +17636 +17637 +17638 +17639 +17664 +17665 +17666 +17667 +17668 +17669 +17670 +17671 +17696 +17697 +17698 +17699 +17700 +17701 +17702 +17703 +17728 +17729 +17730 +17731 +17732 +17733 +17734 +17735 +17760 +17761 +17762 +17763 +17764 +17765 +17766 +17767 +17792 +17793 +17794 +17795 +17796 +17797 +17798 +17799 +17824 +17825 +17826 +17827 +17828 +17829 +17830 +17831 +17856 +17857 +17858 +17859 +17860 +17861 +17862 +17863 +17888 +17889 +17890 +17891 +17892 +17893 +17894 +17895 +17920 +17921 +17922 +17923 +17924 +17925 +17926 +17927 +17952 +17953 +17954 +17955 +17956 +17957 +17958 +17959 +17984 +17985 +17986 +17987 +17988 +17989 +17990 +17991 +18016 +18017 +18018 +18019 +18020 +18021 +18022 +18023 +18048 +18049 +18050 +18051 +18052 +18053 +18054 +18055 +18080 +18081 +18082 +18083 +18084 +18085 +18086 +18087 +18112 +18113 +18114 +18115 +18116 +18117 +18118 +18119 +18144 +18145 +18146 +18147 +18148 +18149 +18150 +18151 +18176 +18177 +18178 +18179 +18180 +18181 +18182 +18183 +18208 +18209 +18210 +18211 +18212 +18213 +18214 +18215 +18240 +18241 +18242 +18243 +18244 +18245 +18246 +18247 +18272 +18273 +18274 +18275 +18276 +18277 +18278 +18279 +18304 +18305 +18306 +18307 +18308 +18309 +18310 +18311 +18336 +18337 +18338 +18339 +18340 +18341 +18342 +18343 +18368 +18369 +18370 +18371 +18372 +18373 +18374 +18375 +18400 +18401 +18402 +18403 +18404 +18405 +18406 +18407 +18432 +18433 +18434 +18435 +18436 +18437 +18438 +18439 +18464 +18465 +18466 +18467 +18468 +18469 +18470 +18471 +18496 +18497 +18498 +18499 +18500 +18501 +18502 +18503 +18528 +18529 +18530 +18531 +18532 +18533 +18534 +18535 +18560 +18561 +18562 +18563 +18564 +18565 +18566 +18567 +18592 +18593 +18594 +18595 +18596 +18597 +18598 +18599 +18624 +18625 +18626 +18627 +18628 +18629 +18630 +18631 +18656 +18657 +18658 +18659 +18660 +18661 +18662 +18663 +18688 +18689 +18690 +18691 +18692 +18693 +18694 +18695 +18720 +18721 +18722 +18723 +18724 +18725 +18726 +18727 +18752 +18753 +18754 +18755 +18756 +18757 +18758 +18759 +18784 +18785 +18786 +18787 +18788 +18789 +18790 +18791 +18816 +18817 +18818 +18819 +18820 +18821 +18822 +18823 +18848 +18849 +18850 +18851 +18852 +18853 +18854 +18855 +18880 +18881 +18882 +18883 +18884 +18885 +18886 +18887 +18912 +18913 +18914 +18915 +18916 +18917 +18918 +18919 +18944 +18945 +18946 +18947 +18948 +18949 +18950 +18951 +18976 +18977 +18978 +18979 +18980 +18981 +18982 +18983 +19008 +19009 +19010 +19011 +19012 +19013 +19014 +19015 +19040 +19041 +19042 +19043 +19044 +19045 +19046 +19047 +19072 +19073 +19074 +19075 +19076 +19077 +19078 +19079 +19104 +19105 +19106 +19107 +19108 +19109 +19110 +19111 +19136 +19137 +19138 +19139 +19140 +19141 +19142 +19143 +19168 +19169 +19170 +19171 +19172 +19173 +19174 +19175 +19200 +19201 +19202 +19203 +19204 +19205 +19206 +19207 +19232 +19233 +19234 +19235 +19236 +19237 +19238 +19239 +19264 +19265 +19266 +19267 +19268 +19269 +19270 +19271 +19296 +19297 +19298 +19299 +19300 +19301 +19302 +19303 +19328 +19329 +19330 +19331 +19332 +19333 +19334 +19335 +19360 +19361 +19362 +19363 +19364 +19365 +19366 +19367 +19392 +19393 +19394 +19395 +19396 +19397 +19398 +19399 +19424 +19425 +19426 +19427 +19428 +19429 +19430 +19431 +19456 +19457 +19458 +19459 +19460 +19461 +19462 +19463 +19488 +19489 +19490 +19491 +19492 +19493 +19494 +19495 +19520 +19521 +19522 +19523 +19524 +19525 +19526 +19527 +19552 +19553 +19554 +19555 +19556 +19557 +19558 +19559 +19584 +19585 +19586 +19587 +19588 +19589 +19590 +19591 +19616 +19617 +19618 +19619 +19620 +19621 +19622 +19623 +19648 +19649 +19650 +19651 +19652 +19653 +19654 +19655 +19680 +19681 +19682 +19683 +19684 +19685 +19686 +19687 +19712 +19713 +19714 +19715 +19716 +19717 +19718 +19719 +19744 +19745 +19746 +19747 +19748 +19749 +19750 +19751 +19776 +19777 +19778 +19779 +19780 +19781 +19782 +19783 +19808 +19809 +19810 +19811 +19812 +19813 +19814 +19815 +19840 +19841 +19842 +19843 +19844 +19845 +19846 +19847 +19872 +19873 +19874 +19875 +19876 +19877 +19878 +19879 +19904 +19905 +19906 +19907 +19908 +19909 +19910 +19911 +19936 +19937 +19938 +19939 +19940 +19941 +19942 +19943 +19968 +19969 +19970 +19971 +19972 +19973 +19974 +19975 +20000 +20001 +20002 +20003 +20004 +20005 +20006 +20007 +20032 +20033 +20034 +20035 +20036 +20037 +20038 +20039 +20064 +20065 +20066 +20067 +20068 +20069 +20070 +20071 +20096 +20097 +20098 +20099 +20100 +20101 +20102 +20103 +20128 +20129 +20130 +20131 +20132 +20133 +20134 +20135 +20160 +20161 +20162 +20163 +20164 +20165 +20166 +20167 +20192 +20193 +20194 +20195 +20196 +20197 +20198 +20199 +20224 +20225 +20226 +20227 +20228 +20229 +20230 +20231 +20256 +20257 +20258 +20259 +20260 +20261 +20262 +20263 +20288 +20289 +20290 +20291 +20292 +20293 +20294 +20295 +20320 +20321 +20322 +20323 +20324 +20325 +20326 +20327 +20352 +20353 +20354 +20355 +20356 +20357 +20358 +20359 +20384 +20385 +20386 +20387 +20388 +20389 +20390 +20391 +20416 +20417 +20418 +20419 +20420 +20421 +20422 +20423 +20448 +20449 +20450 +20451 +20452 +20453 +20454 +20455 +20480 +20481 +20482 +20483 +20484 +20485 +20486 +20487 +20512 +20513 +20514 +20515 +20516 +20517 +20518 +20519 +20544 +20545 +20546 +20547 +20548 +20549 +20550 +20551 +20576 +20577 +20578 +20579 +20580 +20581 +20582 +20583 +20608 +20609 +20610 +20611 +20612 +20613 +20614 +20615 +20640 +20641 +20642 +20643 +20644 +20645 +20646 +20647 +20672 +20673 +20674 +20675 +20676 +20677 +20678 +20679 +20704 +20705 +20706 +20707 +20708 +20709 +20710 +20711 +20736 +20737 +20738 +20739 +20740 +20741 +20742 +20743 +20768 +20769 +20770 +20771 +20772 +20773 +20774 +20775 +20800 +20801 +20802 +20803 +20804 +20805 +20806 +20807 +20832 +20833 +20834 +20835 +20836 +20837 +20838 +20839 +20864 +20865 +20866 +20867 +20868 +20869 +20870 +20871 +20896 +20897 +20898 +20899 +20900 +20901 +20902 +20903 +20928 +20929 +20930 +20931 +20932 +20933 +20934 +20935 +20960 +20961 +20962 +20963 +20964 +20965 +20966 +20967 +20992 +20993 +20994 +20995 +20996 +20997 +20998 +20999 +21024 +21025 +21026 +21027 +21028 +21029 +21030 +21031 +21056 +21057 +21058 +21059 +21060 +21061 +21062 +21063 +21088 +21089 +21090 +21091 +21092 +21093 +21094 +21095 +21120 +21121 +21122 +21123 +21124 +21125 +21126 +21127 +21152 +21153 +21154 +21155 +21156 +21157 +21158 +21159 +21184 +21185 +21186 +21187 +21188 +21189 +21190 +21191 +21216 +21217 +21218 +21219 +21220 +21221 +21222 +21223 +21248 +21249 +21250 +21251 +21252 +21253 +21254 +21255 +21280 +21281 +21282 +21283 +21284 +21285 +21286 +21287 +21312 +21313 +21314 +21315 +21316 +21317 +21318 +21319 +21344 +21345 +21346 +21347 +21348 +21349 +21350 +21351 +21376 +21377 +21378 +21379 +21380 +21381 +21382 +21383 +21408 +21409 +21410 +21411 +21412 +21413 +21414 +21415 +21440 +21441 +21442 +21443 +21444 +21445 +21446 +21447 +21472 +21473 +21474 +21475 +21476 +21477 +21478 +21479 +21504 +21505 +21506 +21507 +21508 +21509 +21510 +21511 +21536 +21537 +21538 +21539 +21540 +21541 +21542 +21543 +21568 +21569 +21570 +21571 +21572 +21573 +21574 +21575 +21600 +21601 +21602 +21603 +21604 +21605 +21606 +21607 +21632 +21633 +21634 +21635 +21636 +21637 +21638 +21639 +21664 +21665 +21666 +21667 +21668 +21669 +21670 +21671 +21696 +21697 +21698 +21699 +21700 +21701 +21702 +21703 +21728 +21729 +21730 +21731 +21732 +21733 +21734 +21735 +21760 +21761 +21762 +21763 +21764 +21765 +21766 +21767 +21792 +21793 +21794 +21795 +21796 +21797 +21798 +21799 +21824 +21825 +21826 +21827 +21828 +21829 +21830 +21831 +21856 +21857 +21858 +21859 +21860 +21861 +21862 +21863 +21888 +21889 +21890 +21891 +21892 +21893 +21894 +21895 +21920 +21921 +21922 +21923 +21924 +21925 +21926 +21927 +21952 +21953 +21954 +21955 +21956 +21957 +21958 +21959 +21984 +21985 +21986 +21987 +21988 +21989 +21990 +21991 +22016 +22017 +22018 +22019 +22020 +22021 +22022 +22023 +22048 +22049 +22050 +22051 +22052 +22053 +22054 +22055 +22080 +22081 +22082 +22083 +22084 +22085 +22086 +22087 +22112 +22113 +22114 +22115 +22116 +22117 +22118 +22119 +22144 +22145 +22146 +22147 +22148 +22149 +22150 +22151 +22176 +22177 +22178 +22179 +22180 +22181 +22182 +22183 +22208 +22209 +22210 +22211 +22212 +22213 +22214 +22215 +22240 +22241 +22242 +22243 +22244 +22245 +22246 +22247 +22272 +22273 +22274 +22275 +22276 +22277 +22278 +22279 +22304 +22305 +22306 +22307 +22308 +22309 +22310 +22311 +22336 +22337 +22338 +22339 +22340 +22341 +22342 +22343 +22368 +22369 +22370 +22371 +22372 +22373 +22374 +22375 +22400 +22401 +22402 +22403 +22404 +22405 +22406 +22407 +22432 +22433 +22434 +22435 +22436 +22437 +22438 +22439 +22464 +22465 +22466 +22467 +22468 +22469 +22470 +22471 +22496 +22497 +22498 +22499 +22500 +22501 +22502 +22503 +22528 +22529 +22530 +22531 +22532 +22533 +22534 +22535 +22560 +22561 +22562 +22563 +22564 +22565 +22566 +22567 +22592 +22593 +22594 +22595 +22596 +22597 +22598 +22599 +22624 +22625 +22626 +22627 +22628 +22629 +22630 +22631 +22656 +22657 +22658 +22659 +22660 +22661 +22662 +22663 +22688 +22689 +22690 +22691 +22692 +22693 +22694 +22695 +22720 +22721 +22722 +22723 +22724 +22725 +22726 +22727 +22752 +22753 +22754 +22755 +22756 +22757 +22758 +22759 +22784 +22785 +22786 +22787 +22788 +22789 +22790 +22791 +22816 +22817 +22818 +22819 +22820 +22821 +22822 +22823 +22848 +22849 +22850 +22851 +22852 +22853 +22854 +22855 +22880 +22881 +22882 +22883 +22884 +22885 +22886 +22887 +22912 +22913 +22914 +22915 +22916 +22917 +22918 +22919 +22944 +22945 +22946 +22947 +22948 +22949 +22950 +22951 +22976 +22977 +22978 +22979 +22980 +22981 +22982 +22983 +23008 +23009 +23010 +23011 +23012 +23013 +23014 +23015 +23040 +23041 +23042 +23043 +23044 +23045 +23046 +23047 +23072 +23073 +23074 +23075 +23076 +23077 +23078 +23079 +23104 +23105 +23106 +23107 +23108 +23109 +23110 +23111 +23136 +23137 +23138 +23139 +23140 +23141 +23142 +23143 +23168 +23169 +23170 +23171 +23172 +23173 +23174 +23175 +23200 +23201 +23202 +23203 +23204 +23205 +23206 +23207 +23232 +23233 +23234 +23235 +23236 +23237 +23238 +23239 +23264 +23265 +23266 +23267 +23268 +23269 +23270 +23271 +23296 +23297 +23298 +23299 +23300 +23301 +23302 +23303 +23328 +23329 +23330 +23331 +23332 +23333 +23334 +23335 +23360 +23361 +23362 +23363 +23364 +23365 +23366 +23367 +23392 +23393 +23394 +23395 +23396 +23397 +23398 +23399 +23424 +23425 +23426 +23427 +23428 +23429 +23430 +23431 +23456 +23457 +23458 +23459 +23460 +23461 +23462 +23463 +23488 +23489 +23490 +23491 +23492 +23493 +23494 +23495 +23520 +23521 +23522 +23523 +23524 +23525 +23526 +23527 +23552 +23553 +23554 +23555 +23556 +23557 +23558 +23559 +23584 +23585 +23586 +23587 +23588 +23589 +23590 +23591 +23616 +23617 +23618 +23619 +23620 +23621 +23622 +23623 +23648 +23649 +23650 +23651 +23652 +23653 +23654 +23655 +23680 +23681 +23682 +23683 +23684 +23685 +23686 +23687 +23712 +23713 +23714 +23715 +23716 +23717 +23718 +23719 +23744 +23745 +23746 +23747 +23748 +23749 +23750 +23751 +23776 +23777 +23778 +23779 +23780 +23781 +23782 +23783 +23808 +23809 +23810 +23811 +23812 +23813 +23814 +23815 +23840 +23841 +23842 +23843 +23844 +23845 +23846 +23847 +23872 +23873 +23874 +23875 +23876 +23877 +23878 +23879 +23904 +23905 +23906 +23907 +23908 +23909 +23910 +23911 +23936 +23937 +23938 +23939 +23940 +23941 +23942 +23943 +23968 +23969 +23970 +23971 +23972 +23973 +23974 +23975 +24000 +24001 +24002 +24003 +24004 +24005 +24006 +24007 +24032 +24033 +24034 +24035 +24036 +24037 +24038 +24039 +24064 +24065 +24066 +24067 +24068 +24069 +24070 +24071 +24096 +24097 +24098 +24099 +24100 +24101 +24102 +24103 +24128 +24129 +24130 +24131 +24132 +24133 +24134 +24135 +24160 +24161 +24162 +24163 +24164 +24165 +24166 +24167 +24192 +24193 +24194 +24195 +24196 +24197 +24198 +24199 +24224 +24225 +24226 +24227 +24228 +24229 +24230 +24231 +24256 +24257 +24258 +24259 +24260 +24261 +24262 +24263 +24288 +24289 +24290 +24291 +24292 +24293 +24294 +24295 +24320 +24321 +24322 +24323 +24324 +24325 +24326 +24327 +24352 +24353 +24354 +24355 +24356 +24357 +24358 +24359 +24384 +24385 +24386 +24387 +24388 +24389 +24390 +24391 +24416 +24417 +24418 +24419 +24420 +24421 +24422 +24423 +24448 +24449 +24450 +24451 +24452 +24453 +24454 +24455 +24480 +24481 +24482 +24483 +24484 +24485 +24486 +24487 +24512 +24513 +24514 +24515 +24516 +24517 +24518 +24519 +24544 +24545 +24546 +24547 +24548 +24549 +24550 +24551 +24576 +24577 +24578 +24579 +24580 +24581 +24582 +24583 +24608 +24609 +24610 +24611 +24612 +24613 +24614 +24615 +24640 +24641 +24642 +24643 +24644 +24645 +24646 +24647 +24672 +24673 +24674 +24675 +24676 +24677 +24678 +24679 +24704 +24705 +24706 +24707 +24708 +24709 +24710 +24711 +24736 +24737 +24738 +24739 +24740 +24741 +24742 +24743 +24768 +24769 +24770 +24771 +24772 +24773 +24774 +24775 +24800 +24801 +24802 +24803 +24804 +24805 +24806 +24807 +24832 +24833 +24834 +24835 +24836 +24837 +24838 +24839 +24864 +24865 +24866 +24867 +24868 +24869 +24870 +24871 +24896 +24897 +24898 +24899 +24900 +24901 +24902 +24903 +24928 +24929 +24930 +24931 +24932 +24933 +24934 +24935 +24960 +24961 +24962 +24963 +24964 +24965 +24966 +24967 +24992 +24993 +24994 +24995 +24996 +24997 +24998 +24999 +25024 +25025 +25026 +25027 +25028 +25029 +25030 +25031 +25056 +25057 +25058 +25059 +25060 +25061 +25062 +25063 +25088 +25089 +25090 +25091 +25092 +25093 +25094 +25095 +25120 +25121 +25122 +25123 +25124 +25125 +25126 +25127 +25152 +25153 +25154 +25155 +25156 +25157 +25158 +25159 +25184 +25185 +25186 +25187 +25188 +25189 +25190 +25191 +25216 +25217 +25218 +25219 +25220 +25221 +25222 +25223 +25248 +25249 +25250 +25251 +25252 +25253 +25254 +25255 +25280 +25281 +25282 +25283 +25284 +25285 +25286 +25287 +25312 +25313 +25314 +25315 +25316 +25317 +25318 +25319 +25344 +25345 +25346 +25347 +25348 +25349 +25350 +25351 +25376 +25377 +25378 +25379 +25380 +25381 +25382 +25383 +25408 +25409 +25410 +25411 +25412 +25413 +25414 +25415 +25440 +25441 +25442 +25443 +25444 +25445 +25446 +25447 +25472 +25473 +25474 +25475 +25476 +25477 +25478 +25479 +25504 +25505 +25506 +25507 +25508 +25509 +25510 +25511 +25536 +25537 +25538 +25539 +25540 +25541 +25542 +25543 +25568 +25569 +25570 +25571 +25572 +25573 +25574 +25575 +25600 +25601 +25602 +25603 +25604 +25605 +25606 +25607 +25632 +25633 +25634 +25635 +25636 +25637 +25638 +25639 +25664 +25665 +25666 +25667 +25668 +25669 +25670 +25671 +25696 +25697 +25698 +25699 +25700 +25701 +25702 +25703 +25728 +25729 +25730 +25731 +25732 +25733 +25734 +25735 +25760 +25761 +25762 +25763 +25764 +25765 +25766 +25767 +25792 +25793 +25794 +25795 +25796 +25797 +25798 +25799 +25824 +25825 +25826 +25827 +25828 +25829 +25830 +25831 +25856 +25857 +25858 +25859 +25860 +25861 +25862 +25863 +25888 +25889 +25890 +25891 +25892 +25893 +25894 +25895 +25920 +25921 +25922 +25923 +25924 +25925 +25926 +25927 +25952 +25953 +25954 +25955 +25956 +25957 +25958 +25959 +25984 +25985 +25986 +25987 +25988 +25989 +25990 +25991 +26016 +26017 +26018 +26019 +26020 +26021 +26022 +26023 +26048 +26049 +26050 +26051 +26052 +26053 +26054 +26055 +26080 +26081 +26082 +26083 +26084 +26085 +26086 +26087 +26112 +26113 +26114 +26115 +26116 +26117 +26118 +26119 +26144 +26145 +26146 +26147 +26148 +26149 +26150 +26151 +26176 +26177 +26178 +26179 +26180 +26181 +26182 +26183 +26208 +26209 +26210 +26211 +26212 +26213 +26214 +26215 +26240 +26241 +26242 +26243 +26244 +26245 +26246 +26247 +26272 +26273 +26274 +26275 +26276 +26277 +26278 +26279 +26304 +26305 +26306 +26307 +26308 +26309 +26310 +26311 +26336 +26337 +26338 +26339 +26340 +26341 +26342 +26343 +26368 +26369 +26370 +26371 +26372 +26373 +26374 +26375 +26400 +26401 +26402 +26403 +26404 +26405 +26406 +26407 +26432 +26433 +26434 +26435 +26436 +26437 +26438 +26439 +26464 +26465 +26466 +26467 +26468 +26469 +26470 +26471 +26496 +26497 +26498 +26499 +26500 +26501 +26502 +26503 +26528 +26529 +26530 +26531 +26532 +26533 +26534 +26535 +26560 +26561 +26562 +26563 +26564 +26565 +26566 +26567 +26592 +26593 +26594 +26595 +26596 +26597 +26598 +26599 +26624 +26625 +26626 +26627 +26628 +26629 +26630 +26631 +26656 +26657 +26658 +26659 +26660 +26661 +26662 +26663 +26688 +26689 +26690 +26691 +26692 +26693 +26694 +26695 +26720 +26721 +26722 +26723 +26724 +26725 +26726 +26727 +26752 +26753 +26754 +26755 +26756 +26757 +26758 +26759 +26784 +26785 +26786 +26787 +26788 +26789 +26790 +26791 +26816 +26817 +26818 +26819 +26820 +26821 +26822 +26823 +26848 +26849 +26850 +26851 +26852 +26853 +26854 +26855 +26880 +26881 +26882 +26883 +26884 +26885 +26886 +26887 +26912 +26913 +26914 +26915 +26916 +26917 +26918 +26919 +26944 +26945 +26946 +26947 +26948 +26949 +26950 +26951 +26976 +26977 +26978 +26979 +26980 +26981 +26982 +26983 +27008 +27009 +27010 +27011 +27012 +27013 +27014 +27015 +27040 +27041 +27042 +27043 +27044 +27045 +27046 +27047 +27072 +27073 +27074 +27075 +27076 +27077 +27078 +27079 +27104 +27105 +27106 +27107 +27108 +27109 +27110 +27111 +27136 +27137 +27138 +27139 +27140 +27141 +27142 +27143 +27168 +27169 +27170 +27171 +27172 +27173 +27174 +27175 +27200 +27201 +27202 +27203 +27204 +27205 +27206 +27207 +27232 +27233 +27234 +27235 +27236 +27237 +27238 +27239 +27264 +27265 +27266 +27267 +27268 +27269 +27270 +27271 +27296 +27297 +27298 +27299 +27300 +27301 +27302 +27303 +27328 +27329 +27330 +27331 +27332 +27333 +27334 +27335 +27360 +27361 +27362 +27363 +27364 +27365 +27366 +27367 +27392 +27393 +27394 +27395 +27396 +27397 +27398 +27399 +27424 +27425 +27426 +27427 +27428 +27429 +27430 +27431 +27456 +27457 +27458 +27459 +27460 +27461 +27462 +27463 +27488 +27489 +27490 +27491 +27492 +27493 +27494 +27495 +27520 +27521 +27522 +27523 +27524 +27525 +27526 +27527 +27552 +27553 +27554 +27555 +27556 +27557 +27558 +27559 +27584 +27585 +27586 +27587 +27588 +27589 +27590 +27591 +27616 +27617 +27618 +27619 +27620 +27621 +27622 +27623 +27648 +27649 +27650 +27651 +27652 +27653 +27654 +27655 +27680 +27681 +27682 +27683 +27684 +27685 +27686 +27687 +27712 +27713 +27714 +27715 +27716 +27717 +27718 +27719 +27744 +27745 +27746 +27747 +27748 +27749 +27750 +27751 +27776 +27777 +27778 +27779 +27780 +27781 +27782 +27783 +27808 +27809 +27810 +27811 +27812 +27813 +27814 +27815 +27840 +27841 +27842 +27843 +27844 +27845 +27846 +27847 +27872 +27873 +27874 +27875 +27876 +27877 +27878 +27879 +27904 +27905 +27906 +27907 +27908 +27909 +27910 +27911 +27936 +27937 +27938 +27939 +27940 +27941 +27942 +27943 +27968 +27969 +27970 +27971 +27972 +27973 +27974 +27975 +28000 +28001 +28002 +28003 +28004 +28005 +28006 +28007 +28032 +28033 +28034 +28035 +28036 +28037 +28038 +28039 +28064 +28065 +28066 +28067 +28068 +28069 +28070 +28071 +28096 +28097 +28098 +28099 +28100 +28101 +28102 +28103 +28128 +28129 +28130 +28131 +28132 +28133 +28134 +28135 +28160 +28161 +28162 +28163 +28164 +28165 +28166 +28167 +28192 +28193 +28194 +28195 +28196 +28197 +28198 +28199 +28224 +28225 +28226 +28227 +28228 +28229 +28230 +28231 +28256 +28257 +28258 +28259 +28260 +28261 +28262 +28263 +28288 +28289 +28290 +28291 +28292 +28293 +28294 +28295 +28320 +28321 +28322 +28323 +28324 +28325 +28326 +28327 +28352 +28353 +28354 +28355 +28356 +28357 +28358 +28359 +28384 +28385 +28386 +28387 +28388 +28389 +28390 +28391 +28416 +28417 +28418 +28419 +28420 +28421 +28422 +28423 +28448 +28449 +28450 +28451 +28452 +28453 +28454 +28455 +28480 +28481 +28482 +28483 +28484 +28485 +28486 +28487 +28512 +28513 +28514 +28515 +28516 +28517 +28518 +28519 +28544 +28545 +28546 +28547 +28548 +28549 +28550 +28551 +28576 +28577 +28578 +28579 +28580 +28581 +28582 +28583 +28608 +28609 +28610 +28611 +28612 +28613 +28614 +28615 +28640 +28641 +28642 +28643 +28644 +28645 +28646 +28647 +28672 +28673 +28674 +28675 +28676 +28677 +28678 +28679 +28704 +28705 +28706 +28707 +28708 +28709 +28710 +28711 +28736 +28737 +28738 +28739 +28740 +28741 +28742 +28743 +28768 +28769 +28770 +28771 +28772 +28773 +28774 +28775 +28800 +28801 +28802 +28803 +28804 +28805 +28806 +28807 +28832 +28833 +28834 +28835 +28836 +28837 +28838 +28839 +28864 +28865 +28866 +28867 +28868 +28869 +28870 +28871 +28896 +28897 +28898 +28899 +28900 +28901 +28902 +28903 +28928 +28929 +28930 +28931 +28932 +28933 +28934 +28935 +28960 +28961 +28962 +28963 +28964 +28965 +28966 +28967 +28992 +28993 +28994 +28995 +28996 +28997 +28998 +28999 +29024 +29025 +29026 +29027 +29028 +29029 +29030 +29031 +29056 +29057 +29058 +29059 +29060 +29061 +29062 +29063 +29088 +29089 +29090 +29091 +29092 +29093 +29094 +29095 +29120 +29121 +29122 +29123 +29124 +29125 +29126 +29127 +29152 +29153 +29154 +29155 +29156 +29157 +29158 +29159 +29184 +29185 +29186 +29187 +29188 +29189 +29190 +29191 +29216 +29217 +29218 +29219 +29220 +29221 +29222 +29223 +29248 +29249 +29250 +29251 +29252 +29253 +29254 +29255 +29280 +29281 +29282 +29283 +29284 +29285 +29286 +29287 +29312 +29313 +29314 +29315 +29316 +29317 +29318 +29319 +29344 +29345 +29346 +29347 +29348 +29349 +29350 +29351 +29376 +29377 +29378 +29379 +29380 +29381 +29382 +29383 +29408 +29409 +29410 +29411 +29412 +29413 +29414 +29415 +29440 +29441 +29442 +29443 +29444 +29445 +29446 +29447 +29472 +29473 +29474 +29475 +29476 +29477 +29478 +29479 +29504 +29505 +29506 +29507 +29508 +29509 +29510 +29511 +29536 +29537 +29538 +29539 +29540 +29541 +29542 +29543 +29568 +29569 +29570 +29571 +29572 +29573 +29574 +29575 +29600 +29601 +29602 +29603 +29604 +29605 +29606 +29607 +29632 +29633 +29634 +29635 +29636 +29637 +29638 +29639 +29664 +29665 +29666 +29667 +29668 +29669 +29670 +29671 +29696 +29697 +29698 +29699 +29700 +29701 +29702 +29703 +29728 +29729 +29730 +29731 +29732 +29733 +29734 +29735 +29760 +29761 +29762 +29763 +29764 +29765 +29766 +29767 +29792 +29793 +29794 +29795 +29796 +29797 +29798 +29799 +29824 +29825 +29826 +29827 +29828 +29829 +29830 +29831 +29856 +29857 +29858 +29859 +29860 +29861 +29862 +29863 +29888 +29889 +29890 +29891 +29892 +29893 +29894 +29895 +29920 +29921 +29922 +29923 +29924 +29925 +29926 +29927 +29952 +29953 +29954 +29955 +29956 +29957 +29958 +29959 +29984 +29985 +29986 +29987 +29988 +29989 +29990 +29991 +30016 +30017 +30018 +30019 +30020 +30021 +30022 +30023 +30048 +30049 +30050 +30051 +30052 +30053 +30054 +30055 +30080 +30081 +30082 +30083 +30084 +30085 +30086 +30087 +30112 +30113 +30114 +30115 +30116 +30117 +30118 +30119 +30144 +30145 +30146 +30147 +30148 +30149 +30150 +30151 +30176 +30177 +30178 +30179 +30180 +30181 +30182 +30183 +30208 +30209 +30210 +30211 +30212 +30213 +30214 +30215 +30240 +30241 +30242 +30243 +30244 +30245 +30246 +30247 +30272 +30273 +30274 +30275 +30276 +30277 +30278 +30279 +30304 +30305 +30306 +30307 +30308 +30309 +30310 +30311 +30336 +30337 +30338 +30339 +30340 +30341 +30342 +30343 +30368 +30369 +30370 +30371 +30372 +30373 +30374 +30375 +30400 +30401 +30402 +30403 +30404 +30405 +30406 +30407 +30432 +30433 +30434 +30435 +30436 +30437 +30438 +30439 +30464 +30465 +30466 +30467 +30468 +30469 +30470 +30471 +30496 +30497 +30498 +30499 +30500 +30501 +30502 +30503 +30528 +30529 +30530 +30531 +30532 +30533 +30534 +30535 +30560 +30561 +30562 +30563 +30564 +30565 +30566 +30567 +30592 +30593 +30594 +30595 +30596 +30597 +30598 +30599 +30624 +30625 +30626 +30627 +30628 +30629 +30630 +30631 +30656 +30657 +30658 +30659 +30660 +30661 +30662 +30663 +30688 +30689 +30690 +30691 +30692 +30693 +30694 +30695 +30720 +30721 +30722 +30723 +30724 +30725 +30726 +30727 +30752 +30753 +30754 +30755 +30756 +30757 +30758 +30759 +30784 +30785 +30786 +30787 +30788 +30789 +30790 +30791 +30816 +30817 +30818 +30819 +30820 +30821 +30822 +30823 +30848 +30849 +30850 +30851 +30852 +30853 +30854 +30855 +30880 +30881 +30882 +30883 +30884 +30885 +30886 +30887 +30912 +30913 +30914 +30915 +30916 +30917 +30918 +30919 +30944 +30945 +30946 +30947 +30948 +30949 +30950 +30951 +30976 +30977 +30978 +30979 +30980 +30981 +30982 +30983 +31008 +31009 +31010 +31011 +31012 +31013 +31014 +31015 +31040 +31041 +31042 +31043 +31044 +31045 +31046 +31047 +31072 +31073 +31074 +31075 +31076 +31077 +31078 +31079 +31104 +31105 +31106 +31107 +31108 +31109 +31110 +31111 +31136 +31137 +31138 +31139 +31140 +31141 +31142 +31143 +31168 +31169 +31170 +31171 +31172 +31173 +31174 +31175 +31200 +31201 +31202 +31203 +31204 +31205 +31206 +31207 +31232 +31233 +31234 +31235 +31236 +31237 +31238 +31239 +31264 +31265 +31266 +31267 +31268 +31269 +31270 +31271 +31296 +31297 +31298 +31299 +31300 +31301 +31302 +31303 +31328 +31329 +31330 +31331 +31332 +31333 +31334 +31335 +31360 +31361 +31362 +31363 +31364 +31365 +31366 +31367 +31392 +31393 +31394 +31395 +31396 +31397 +31398 +31399 +31424 +31425 +31426 +31427 +31428 +31429 +31430 +31431 +31456 +31457 +31458 +31459 +31460 +31461 +31462 +31463 +31488 +31489 +31490 +31491 +31492 +31493 +31494 +31495 +31520 +31521 +31522 +31523 +31524 +31525 +31526 +31527 +31552 +31553 +31554 +31555 +31556 +31557 +31558 +31559 +31584 +31585 +31586 +31587 +31588 +31589 +31590 +31591 +31616 +31617 +31618 +31619 +31620 +31621 +31622 +31623 +31648 +31649 +31650 +31651 +31652 +31653 +31654 +31655 +31680 +31681 +31682 +31683 +31684 +31685 +31686 +31687 +31712 +31713 +31714 +31715 +31716 +31717 +31718 +31719 +31744 +31745 +31746 +31747 +31748 +31749 +31750 +31751 +31776 +31777 +31778 +31779 +31780 +31781 +31782 +31783 +31808 +31809 +31810 +31811 +31812 +31813 +31814 +31815 +31840 +31841 +31842 +31843 +31844 +31845 +31846 +31847 +31872 +31873 +31874 +31875 +31876 +31877 +31878 +31879 +31904 +31905 +31906 +31907 +31908 +31909 +31910 +31911 +31936 +31937 +31938 +31939 +31940 +31941 +31942 +31943 +31968 +31969 +31970 +31971 +31972 +31973 +31974 +31975 +32000 +32001 +32002 +32003 +32004 +32005 +32006 +32007 +32032 +32033 +32034 +32035 +32036 +32037 +32038 +32039 +32064 +32065 +32066 +32067 +32068 +32069 +32070 +32071 +32096 +32097 +32098 +32099 +32100 +32101 +32102 +32103 +32128 +32129 +32130 +32131 +32132 +32133 +32134 +32135 +32160 +32161 +32162 +32163 +32164 +32165 +32166 +32167 +32192 +32193 +32194 +32195 +32196 +32197 +32198 +32199 +32224 +32225 +32226 +32227 +32228 +32229 +32230 +32231 +32256 +32257 +32258 +32259 +32260 +32261 +32262 +32263 +32288 +32289 +32290 +32291 +32292 +32293 +32294 +32295 +32320 +32321 +32322 +32323 +32324 +32325 +32326 +32327 +32352 +32353 +32354 +32355 +32356 +32357 +32358 +32359 +32384 +32385 +32386 +32387 +32388 +32389 +32390 +32391 +32416 +32417 +32418 +32419 +32420 +32421 +32422 +32423 +32448 +32449 +32450 +32451 +32452 +32453 +32454 +32455 +32480 +32481 +32482 +32483 +32484 +32485 +32486 +32487 +32512 +32513 +32514 +32515 +32516 +32517 +32518 +32519 +32544 +32545 +32546 +32547 +32548 +32549 +32550 +32551 +32576 +32577 +32578 +32579 +32580 +32581 +32582 +32583 +32608 +32609 +32610 +32611 +32612 +32613 +32614 +32615 +32640 +32641 +32642 +32643 +32644 +32645 +32646 +32647 +32672 +32673 +32674 +32675 +32676 +32677 +32678 +32679 +32704 +32705 +32706 +32707 +32708 +32709 +32710 +32711 +32736 +32737 +32738 +32739 +32740 +32741 +32742 +32743 +32768 +32769 +32770 +32771 +32772 +32773 +32774 +32775 +32800 +32801 +32802 +32803 +32804 +32805 +32806 +32807 +32832 +32833 +32834 +32835 +32836 +32837 +32838 +32839 +32864 +32865 +32866 +32867 +32868 +32869 +32870 +32871 +32896 +32897 +32898 +32899 +32900 +32901 +32902 +32903 +32928 +32929 +32930 +32931 +32932 +32933 +32934 +32935 +32960 +32961 +32962 +32963 +32964 +32965 +32966 +32967 +32992 +32993 +32994 +32995 +32996 +32997 +32998 +32999 +33024 +33025 +33026 +33027 +33028 +33029 +33030 +33031 +33056 +33057 +33058 +33059 +33060 +33061 +33062 +33063 +33088 +33089 +33090 +33091 +33092 +33093 +33094 +33095 +33120 +33121 +33122 +33123 +33124 +33125 +33126 +33127 +33152 +33153 +33154 +33155 +33156 +33157 +33158 +33159 +33184 +33185 +33186 +33187 +33188 +33189 +33190 +33191 +33216 +33217 +33218 +33219 +33220 +33221 +33222 +33223 +33248 +33249 +33250 +33251 +33252 +33253 +33254 +33255 +33280 +33281 +33282 +33283 +33284 +33285 +33286 +33287 +33312 +33313 +33314 +33315 +33316 +33317 +33318 +33319 +33344 +33345 +33346 +33347 +33348 +33349 +33350 +33351 +33376 +33377 +33378 +33379 +33380 +33381 +33382 +33383 +33408 +33409 +33410 +33411 +33412 +33413 +33414 +33415 +33440 +33441 +33442 +33443 +33444 +33445 +33446 +33447 +33472 +33473 +33474 +33475 +33476 +33477 +33478 +33479 +33504 +33505 +33506 +33507 +33508 +33509 +33510 +33511 +33536 +33537 +33538 +33539 +33540 +33541 +33542 +33543 +33568 +33569 +33570 +33571 +33572 +33573 +33574 +33575 +33600 +33601 +33602 +33603 +33604 +33605 +33606 +33607 +33632 +33633 +33634 +33635 +33636 +33637 +33638 +33639 +33664 +33665 +33666 +33667 +33668 +33669 +33670 +33671 +33696 +33697 +33698 +33699 +33700 +33701 +33702 +33703 +33728 +33729 +33730 +33731 +33732 +33733 +33734 +33735 +33760 +33761 +33762 +33763 +33764 +33765 +33766 +33767 +33792 +33793 +33794 +33795 +33796 +33797 +33798 +33799 +33824 +33825 +33826 +33827 +33828 +33829 +33830 +33831 +33856 +33857 +33858 +33859 +33860 +33861 +33862 +33863 +33888 +33889 +33890 +33891 +33892 +33893 +33894 +33895 +33920 +33921 +33922 +33923 +33924 +33925 +33926 +33927 +33952 +33953 +33954 +33955 +33956 +33957 +33958 +33959 +33984 +33985 +33986 +33987 +33988 +33989 +33990 +33991 +34016 +34017 +34018 +34019 +34020 +34021 +34022 +34023 +34048 +34049 +34050 +34051 +34052 +34053 +34054 +34055 +34080 +34081 +34082 +34083 +34084 +34085 +34086 +34087 +34112 +34113 +34114 +34115 +34116 +34117 +34118 +34119 +34144 +34145 +34146 +34147 +34148 +34149 +34150 +34151 +34176 +34177 +34178 +34179 +34180 +34181 +34182 +34183 +34208 +34209 +34210 +34211 +34212 +34213 +34214 +34215 +34240 +34241 +34242 +34243 +34244 +34245 +34246 +34247 +34272 +34273 +34274 +34275 +34276 +34277 +34278 +34279 +34304 +34305 +34306 +34307 +34308 +34309 +34310 +34311 +34336 +34337 +34338 +34339 +34340 +34341 +34342 +34343 +34368 +34369 +34370 +34371 +34372 +34373 +34374 +34375 +34400 +34401 +34402 +34403 +34404 +34405 +34406 +34407 +34432 +34433 +34434 +34435 +34436 +34437 +34438 +34439 +34464 +34465 +34466 +34467 +34468 +34469 +34470 +34471 +34496 +34497 +34498 +34499 +34500 +34501 +34502 +34503 +34528 +34529 +34530 +34531 +34532 +34533 +34534 +34535 +34560 +34561 +34562 +34563 +34564 +34565 +34566 +34567 +34592 +34593 +34594 +34595 +34596 +34597 +34598 +34599 +34624 +34625 +34626 +34627 +34628 +34629 +34630 +34631 +34656 +34657 +34658 +34659 +34660 +34661 +34662 +34663 +34688 +34689 +34690 +34691 +34692 +34693 +34694 +34695 +34720 +34721 +34722 +34723 +34724 +34725 +34726 +34727 +34752 +34753 +34754 +34755 +34756 +34757 +34758 +34759 +34784 +34785 +34786 +34787 +34788 +34789 +34790 +34791 +34816 +34817 +34818 +34819 +34820 +34821 +34822 +34823 +34848 +34849 +34850 +34851 +34852 +34853 +34854 +34855 +34880 +34881 +34882 +34883 +34884 +34885 +34886 +34887 +34912 +34913 +34914 +34915 +34916 +34917 +34918 +34919 +34944 +34945 +34946 +34947 +34948 +34949 +34950 +34951 +34976 +34977 +34978 +34979 +34980 +34981 +34982 +34983 +35008 +35009 +35010 +35011 +35012 +35013 +35014 +35015 +35040 +35041 +35042 +35043 +35044 +35045 +35046 +35047 +35072 +35073 +35074 +35075 +35076 +35077 +35078 +35079 +35104 +35105 +35106 +35107 +35108 +35109 +35110 +35111 +35136 +35137 +35138 +35139 +35140 +35141 +35142 +35143 +35168 +35169 +35170 +35171 +35172 +35173 +35174 +35175 +35200 +35201 +35202 +35203 +35204 +35205 +35206 +35207 +35232 +35233 +35234 +35235 +35236 +35237 +35238 +35239 +35264 +35265 +35266 +35267 +35268 +35269 +35270 +35271 +35296 +35297 +35298 +35299 +35300 +35301 +35302 +35303 +35328 +35329 +35330 +35331 +35332 +35333 +35334 +35335 +35360 +35361 +35362 +35363 +35364 +35365 +35366 +35367 +35392 +35393 +35394 +35395 +35396 +35397 +35398 +35399 +35424 +35425 +35426 +35427 +35428 +35429 +35430 +35431 +35456 +35457 +35458 +35459 +35460 +35461 +35462 +35463 +35488 +35489 +35490 +35491 +35492 +35493 +35494 +35495 +35520 +35521 +35522 +35523 +35524 +35525 +35526 +35527 +35552 +35553 +35554 +35555 +35556 +35557 +35558 +35559 +35584 +35585 +35586 +35587 +35588 +35589 +35590 +35591 +35616 +35617 +35618 +35619 +35620 +35621 +35622 +35623 +35648 +35649 +35650 +35651 +35652 +35653 +35654 +35655 +35680 +35681 +35682 +35683 +35684 +35685 +35686 +35687 +35712 +35713 +35714 +35715 +35716 +35717 +35718 +35719 +35744 +35745 +35746 +35747 +35748 +35749 +35750 +35751 +35776 +35777 +35778 +35779 +35780 +35781 +35782 +35783 +35808 +35809 +35810 +35811 +35812 +35813 +35814 +35815 +35840 +35841 +35842 +35843 +35844 +35845 +35846 +35847 +35872 +35873 +35874 +35875 +35876 +35877 +35878 +35879 +35904 +35905 +35906 +35907 +35908 +35909 +35910 +35911 +35936 +35937 +35938 +35939 +35940 +35941 +35942 +35943 +35968 +35969 +35970 +35971 +35972 +35973 +35974 +35975 +36000 +36001 +36002 +36003 +36004 +36005 +36006 +36007 +36032 +36033 +36034 +36035 +36036 +36037 +36038 +36039 +36064 +36065 +36066 +36067 +36068 +36069 +36070 +36071 +36096 +36097 +36098 +36099 +36100 +36101 +36102 +36103 +36128 +36129 +36130 +36131 +36132 +36133 +36134 +36135 +36160 +36161 +36162 +36163 +36164 +36165 +36166 +36167 +36192 +36193 +36194 +36195 +36196 +36197 +36198 +36199 +36224 +36225 +36226 +36227 +36228 +36229 +36230 +36231 +36256 +36257 +36258 +36259 +36260 +36261 +36262 +36263 +36288 +36289 +36290 +36291 +36292 +36293 +36294 +36295 +36320 +36321 +36322 +36323 +36324 +36325 +36326 +36327 +36352 +36353 +36354 +36355 +36356 +36357 +36358 +36359 +36384 +36385 +36386 +36387 +36388 +36389 +36390 +36391 +36416 +36417 +36418 +36419 +36420 +36421 +36422 +36423 +36448 +36449 +36450 +36451 +36452 +36453 +36454 +36455 +36480 +36481 +36482 +36483 +36484 +36485 +36486 +36487 +36512 +36513 +36514 +36515 +36516 +36517 +36518 +36519 +36544 +36545 +36546 +36547 +36548 +36549 +36550 +36551 +36576 +36577 +36578 +36579 +36580 +36581 +36582 +36583 +36608 +36609 +36610 +36611 +36612 +36613 +36614 +36615 +36640 +36641 +36642 +36643 +36644 +36645 +36646 +36647 +36672 +36673 +36674 +36675 +36676 +36677 +36678 +36679 +36704 +36705 +36706 +36707 +36708 +36709 +36710 +36711 +36736 +36737 +36738 +36739 +36740 +36741 +36742 +36743 +36768 +36769 +36770 +36771 +36772 +36773 +36774 +36775 +36800 +36801 +36802 +36803 +36804 +36805 +36806 +36807 +36832 +36833 +36834 +36835 +36836 +36837 +36838 +36839 +36864 +36865 +36866 +36867 +36868 +36869 +36870 +36871 +36896 +36897 +36898 +36899 +36900 +36901 +36902 +36903 +36928 +36929 +36930 +36931 +36932 +36933 +36934 +36935 +36960 +36961 +36962 +36963 +36964 +36965 +36966 +36967 +36992 +36993 +36994 +36995 +36996 +36997 +36998 +36999 +37024 +37025 +37026 +37027 +37028 +37029 +37030 +37031 +37056 +37057 +37058 +37059 +37060 +37061 +37062 +37063 +37088 +37089 +37090 +37091 +37092 +37093 +37094 +37095 +37120 +37121 +37122 +37123 +37124 +37125 +37126 +37127 +37152 +37153 +37154 +37155 +37156 +37157 +37158 +37159 +37184 +37185 +37186 +37187 +37188 +37189 +37190 +37191 +37216 +37217 +37218 +37219 +37220 +37221 +37222 +37223 +37248 +37249 +37250 +37251 +37252 +37253 +37254 +37255 +37280 +37281 +37282 +37283 +37284 +37285 +37286 +37287 +37312 +37313 +37314 +37315 +37316 +37317 +37318 +37319 +37344 +37345 +37346 +37347 +37348 +37349 +37350 +37351 +37376 +37377 +37378 +37379 +37380 +37381 +37382 +37383 +37408 +37409 +37410 +37411 +37412 +37413 +37414 +37415 +37440 +37441 +37442 +37443 +37444 +37445 +37446 +37447 +37472 +37473 +37474 +37475 +37476 +37477 +37478 +37479 +37504 +37505 +37506 +37507 +37508 +37509 +37510 +37511 +37536 +37537 +37538 +37539 +37540 +37541 +37542 +37543 +37568 +37569 +37570 +37571 +37572 +37573 +37574 +37575 +37600 +37601 +37602 +37603 +37604 +37605 +37606 +37607 +37632 +37633 +37634 +37635 +37636 +37637 +37638 +37639 +37664 +37665 +37666 +37667 +37668 +37669 +37670 +37671 +37696 +37697 +37698 +37699 +37700 +37701 +37702 +37703 +37728 +37729 +37730 +37731 +37732 +37733 +37734 +37735 +37760 +37761 +37762 +37763 +37764 +37765 +37766 +37767 +37792 +37793 +37794 +37795 +37796 +37797 +37798 +37799 +37824 +37825 +37826 +37827 +37828 +37829 +37830 +37831 +37856 +37857 +37858 +37859 +37860 +37861 +37862 +37863 +37888 +37889 +37890 +37891 +37892 +37893 +37894 +37895 +37920 +37921 +37922 +37923 +37924 +37925 +37926 +37927 +37952 +37953 +37954 +37955 +37956 +37957 +37958 +37959 +37984 +37985 +37986 +37987 +37988 +37989 +37990 +37991 +38016 +38017 +38018 +38019 +38020 +38021 +38022 +38023 +38048 +38049 +38050 +38051 +38052 +38053 +38054 +38055 +38080 +38081 +38082 +38083 +38084 +38085 +38086 +38087 +38112 +38113 +38114 +38115 +38116 +38117 +38118 +38119 +38144 +38145 +38146 +38147 +38148 +38149 +38150 +38151 +38176 +38177 +38178 +38179 +38180 +38181 +38182 +38183 +38208 +38209 +38210 +38211 +38212 +38213 +38214 +38215 +38240 +38241 +38242 +38243 +38244 +38245 +38246 +38247 +38272 +38273 +38274 +38275 +38276 +38277 +38278 +38279 +38304 +38305 +38306 +38307 +38308 +38309 +38310 +38311 +38336 +38337 +38338 +38339 +38340 +38341 +38342 +38343 +38368 +38369 +38370 +38371 +38372 +38373 +38374 +38375 +38400 +38401 +38402 +38403 +38404 +38405 +38406 +38407 +38432 +38433 +38434 +38435 +38436 +38437 +38438 +38439 +38464 +38465 +38466 +38467 +38468 +38469 +38470 +38471 +38496 +38497 +38498 +38499 +38500 +38501 +38502 +38503 +38528 +38529 +38530 +38531 +38532 +38533 +38534 +38535 +38560 +38561 +38562 +38563 +38564 +38565 +38566 +38567 +38592 +38593 +38594 +38595 +38596 +38597 +38598 +38599 +38624 +38625 +38626 +38627 +38628 +38629 +38630 +38631 +38656 +38657 +38658 +38659 +38660 +38661 +38662 +38663 +38688 +38689 +38690 +38691 +38692 +38693 +38694 +38695 +38720 +38721 +38722 +38723 +38724 +38725 +38726 +38727 +38752 +38753 +38754 +38755 +38756 +38757 +38758 +38759 +38784 +38785 +38786 +38787 +38788 +38789 +38790 +38791 +38816 +38817 +38818 +38819 +38820 +38821 +38822 +38823 +38848 +38849 +38850 +38851 +38852 +38853 +38854 +38855 +38880 +38881 +38882 +38883 +38884 +38885 +38886 +38887 +38912 +38913 +38914 +38915 +38916 +38917 +38918 +38919 +38944 +38945 +38946 +38947 +38948 +38949 +38950 +38951 +38976 +38977 +38978 +38979 +38980 +38981 +38982 +38983 +39008 +39009 +39010 +39011 +39012 +39013 +39014 +39015 +39040 +39041 +39042 +39043 +39044 +39045 +39046 +39047 +39072 +39073 +39074 +39075 +39076 +39077 +39078 +39079 +39104 +39105 +39106 +39107 +39108 +39109 +39110 +39111 +39136 +39137 +39138 +39139 +39140 +39141 +39142 +39143 +39168 +39169 +39170 +39171 +39172 +39173 +39174 +39175 +39200 +39201 +39202 +39203 +39204 +39205 +39206 +39207 +39232 +39233 +39234 +39235 +39236 +39237 +39238 +39239 +39264 +39265 +39266 +39267 +39268 +39269 +39270 +39271 +39296 +39297 +39298 +39299 +39300 +39301 +39302 +39303 +39328 +39329 +39330 +39331 +39332 +39333 +39334 +39335 +39360 +39361 +39362 +39363 +39364 +39365 +39366 +39367 +39392 +39393 +39394 +39395 +39396 +39397 +39398 +39399 +39424 +39425 +39426 +39427 +39428 +39429 +39430 +39431 +39456 +39457 +39458 +39459 +39460 +39461 +39462 +39463 +39488 +39489 +39490 +39491 +39492 +39493 +39494 +39495 +39520 +39521 +39522 +39523 +39524 +39525 +39526 +39527 +39552 +39553 +39554 +39555 +39556 +39557 +39558 +39559 +39584 +39585 +39586 +39587 +39588 +39589 +39590 +39591 +39616 +39617 +39618 +39619 +39620 +39621 +39622 +39623 +39648 +39649 +39650 +39651 +39652 +39653 +39654 +39655 +39680 +39681 +39682 +39683 +39684 +39685 +39686 +39687 +39712 +39713 +39714 +39715 +39716 +39717 +39718 +39719 +39744 +39745 +39746 +39747 +39748 +39749 +39750 +39751 +39776 +39777 +39778 +39779 +39780 +39781 +39782 +39783 +39808 +39809 +39810 +39811 +39812 +39813 +39814 +39815 +39840 +39841 +39842 +39843 +39844 +39845 +39846 +39847 +39872 +39873 +39874 +39875 +39876 +39877 +39878 +39879 +39904 +39905 +39906 +39907 +39908 +39909 +39910 +39911 +39936 +39937 +39938 +39939 +39940 +39941 +39942 +39943 +39968 +39969 +39970 +39971 +39972 +39973 +39974 +39975 +40000 +40001 +40002 +40003 +40004 +40005 +40006 +40007 +40032 +40033 +40034 +40035 +40036 +40037 +40038 +40039 +40064 +40065 +40066 +40067 +40068 +40069 +40070 +40071 +40096 +40097 +40098 +40099 +40100 +40101 +40102 +40103 +40128 +40129 +40130 +40131 +40132 +40133 +40134 +40135 +40160 +40161 +40162 +40163 +40164 +40165 +40166 +40167 +40192 +40193 +40194 +40195 +40196 +40197 +40198 +40199 +40224 +40225 +40226 +40227 +40228 +40229 +40230 +40231 +40256 +40257 +40258 +40259 +40260 +40261 +40262 +40263 +40288 +40289 +40290 +40291 +40292 +40293 +40294 +40295 +40320 +40321 +40322 +40323 +40324 +40325 +40326 +40327 +40352 +40353 +40354 +40355 +40356 +40357 +40358 +40359 +40384 +40385 +40386 +40387 +40388 +40389 +40390 +40391 +40416 +40417 +40418 +40419 +40420 +40421 +40422 +40423 +40448 +40449 +40450 +40451 +40452 +40453 +40454 +40455 +40480 +40481 +40482 +40483 +40484 +40485 +40486 +40487 +40512 +40513 +40514 +40515 +40516 +40517 +40518 +40519 +40544 +40545 +40546 +40547 +40548 +40549 +40550 +40551 +40576 +40577 +40578 +40579 +40580 +40581 +40582 +40583 +40608 +40609 +40610 +40611 +40612 +40613 +40614 +40615 +40640 +40641 +40642 +40643 +40644 +40645 +40646 +40647 +40672 +40673 +40674 +40675 +40676 +40677 +40678 +40679 +40704 +40705 +40706 +40707 +40708 +40709 +40710 +40711 +40736 +40737 +40738 +40739 +40740 +40741 +40742 +40743 +40768 +40769 +40770 +40771 +40772 +40773 +40774 +40775 +40800 +40801 +40802 +40803 +40804 +40805 +40806 +40807 +40832 +40833 +40834 +40835 +40836 +40837 +40838 +40839 +40864 +40865 +40866 +40867 +40868 +40869 +40870 +40871 +40896 +40897 +40898 +40899 +40900 +40901 +40902 +40903 +40928 +40929 +40930 +40931 +40932 +40933 +40934 +40935 +40960 +40961 +40962 +40963 +40964 +40965 +40966 +40967 +40992 +40993 +40994 +40995 +40996 +40997 +40998 +40999 +41024 +41025 +41026 +41027 +41028 +41029 +41030 +41031 +41056 +41057 +41058 +41059 +41060 +41061 +41062 +41063 +41088 +41089 +41090 +41091 +41092 +41093 +41094 +41095 +41120 +41121 +41122 +41123 +41124 +41125 +41126 +41127 +41152 +41153 +41154 +41155 +41156 +41157 +41158 +41159 +41184 +41185 +41186 +41187 +41188 +41189 +41190 +41191 +41216 +41217 +41218 +41219 +41220 +41221 +41222 +41223 +41248 +41249 +41250 +41251 +41252 +41253 +41254 +41255 +41280 +41281 +41282 +41283 +41284 +41285 +41286 +41287 +41312 +41313 +41314 +41315 +41316 +41317 +41318 +41319 +41344 +41345 +41346 +41347 +41348 +41349 +41350 +41351 +41376 +41377 +41378 +41379 +41380 +41381 +41382 +41383 +41408 +41409 +41410 +41411 +41412 +41413 +41414 +41415 +41440 +41441 +41442 +41443 +41444 +41445 +41446 +41447 +41472 +41473 +41474 +41475 +41476 +41477 +41478 +41479 +41504 +41505 +41506 +41507 +41508 +41509 +41510 +41511 +41536 +41537 +41538 +41539 +41540 +41541 +41542 +41543 +41568 +41569 +41570 +41571 +41572 +41573 +41574 +41575 +41600 +41601 +41602 +41603 +41604 +41605 +41606 +41607 +41632 +41633 +41634 +41635 +41636 +41637 +41638 +41639 +41664 +41665 +41666 +41667 +41668 +41669 +41670 +41671 +41696 +41697 +41698 +41699 +41700 +41701 +41702 +41703 +41728 +41729 +41730 +41731 +41732 +41733 +41734 +41735 +41760 +41761 +41762 +41763 +41764 +41765 +41766 +41767 +41792 +41793 +41794 +41795 +41796 +41797 +41798 +41799 +41824 +41825 +41826 +41827 +41828 +41829 +41830 +41831 +41856 +41857 +41858 +41859 +41860 +41861 +41862 +41863 +41888 +41889 +41890 +41891 +41892 +41893 +41894 +41895 +41920 +41921 +41922 +41923 +41924 +41925 +41926 +41927 +41952 +41953 +41954 +41955 +41956 +41957 +41958 +41959 +41984 +41985 +41986 +41987 +41988 +41989 +41990 +41991 +42016 +42017 +42018 +42019 +42020 +42021 +42022 +42023 +42048 +42049 +42050 +42051 +42052 +42053 +42054 +42055 +42080 +42081 +42082 +42083 +42084 +42085 +42086 +42087 +42112 +42113 +42114 +42115 +42116 +42117 +42118 +42119 +42144 +42145 +42146 +42147 +42148 +42149 +42150 +42151 +42176 +42177 +42178 +42179 +42180 +42181 +42182 +42183 +42208 +42209 +42210 +42211 +42212 +42213 +42214 +42215 +42240 +42241 +42242 +42243 +42244 +42245 +42246 +42247 +42272 +42273 +42274 +42275 +42276 +42277 +42278 +42279 +42304 +42305 +42306 +42307 +42308 +42309 +42310 +42311 +42336 +42337 +42338 +42339 +42340 +42341 +42342 +42343 +42368 +42369 +42370 +42371 +42372 +42373 +42374 +42375 +42400 +42401 +42402 +42403 +42404 +42405 +42406 +42407 +42432 +42433 +42434 +42435 +42436 +42437 +42438 +42439 +42464 +42465 +42466 +42467 +42468 +42469 +42470 +42471 +42496 +42497 +42498 +42499 +42500 +42501 +42502 +42503 +42528 +42529 +42530 +42531 +42532 +42533 +42534 +42535 +42560 +42561 +42562 +42563 +42564 +42565 +42566 +42567 +42592 +42593 +42594 +42595 +42596 +42597 +42598 +42599 +42624 +42625 +42626 +42627 +42628 +42629 +42630 +42631 +42656 +42657 +42658 +42659 +42660 +42661 +42662 +42663 +42688 +42689 +42690 +42691 +42692 +42693 +42694 +42695 +42720 +42721 +42722 +42723 +42724 +42725 +42726 +42727 +42752 +42753 +42754 +42755 +42756 +42757 +42758 +42759 +42784 +42785 +42786 +42787 +42788 +42789 +42790 +42791 +42816 +42817 +42818 +42819 +42820 +42821 +42822 +42823 +42848 +42849 +42850 +42851 +42852 +42853 +42854 +42855 +42880 +42881 +42882 +42883 +42884 +42885 +42886 +42887 +42912 +42913 +42914 +42915 +42916 +42917 +42918 +42919 +42944 +42945 +42946 +42947 +42948 +42949 +42950 +42951 +42976 +42977 +42978 +42979 +42980 +42981 +42982 +42983 +43008 +43009 +43010 +43011 +43012 +43013 +43014 +43015 +43040 +43041 +43042 +43043 +43044 +43045 +43046 +43047 +43072 +43073 +43074 +43075 +43076 +43077 +43078 +43079 +43104 +43105 +43106 +43107 +43108 +43109 +43110 +43111 +43136 +43137 +43138 +43139 +43140 +43141 +43142 +43143 +43168 +43169 +43170 +43171 +43172 +43173 +43174 +43175 +43200 +43201 +43202 +43203 +43204 +43205 +43206 +43207 +43232 +43233 +43234 +43235 +43236 +43237 +43238 +43239 +43264 +43265 +43266 +43267 +43268 +43269 +43270 +43271 +43296 +43297 +43298 +43299 +43300 +43301 +43302 +43303 +43328 +43329 +43330 +43331 +43332 +43333 +43334 +43335 +43360 +43361 +43362 +43363 +43364 +43365 +43366 +43367 +43392 +43393 +43394 +43395 +43396 +43397 +43398 +43399 +43424 +43425 +43426 +43427 +43428 +43429 +43430 +43431 +43456 +43457 +43458 +43459 +43460 +43461 +43462 +43463 +43488 +43489 +43490 +43491 +43492 +43493 +43494 +43495 +43520 +43521 +43522 +43523 +43524 +43525 +43526 +43527 +43552 +43553 +43554 +43555 +43556 +43557 +43558 +43559 +43584 +43585 +43586 +43587 +43588 +43589 +43590 +43591 +43616 +43617 +43618 +43619 +43620 +43621 +43622 +43623 +43648 +43649 +43650 +43651 +43652 +43653 +43654 +43655 +43680 +43681 +43682 +43683 +43684 +43685 +43686 +43687 +43712 +43713 +43714 +43715 +43716 +43717 +43718 +43719 +43744 +43745 +43746 +43747 +43748 +43749 +43750 +43751 +43776 +43777 +43778 +43779 +43780 +43781 +43782 +43783 +43808 +43809 +43810 +43811 +43812 +43813 +43814 +43815 +43840 +43841 +43842 +43843 +43844 +43845 +43846 +43847 +43872 +43873 +43874 +43875 +43876 +43877 +43878 +43879 +43904 +43905 +43906 +43907 +43908 +43909 +43910 +43911 +43936 +43937 +43938 +43939 +43940 +43941 +43942 +43943 +43968 +43969 +43970 +43971 +43972 +43973 +43974 +43975 +44000 +44001 +44002 +44003 +44004 +44005 +44006 +44007 +44032 +44033 +44034 +44035 +44036 +44037 +44038 +44039 +44064 +44065 +44066 +44067 +44068 +44069 +44070 +44071 +44096 +44097 +44098 +44099 +44100 +44101 +44102 +44103 +44128 +44129 +44130 +44131 +44132 +44133 +44134 +44135 +44160 +44161 +44162 +44163 +44164 +44165 +44166 +44167 +44192 +44193 +44194 +44195 +44196 +44197 +44198 +44199 +44224 +44225 +44226 +44227 +44228 +44229 +44230 +44231 +44256 +44257 +44258 +44259 +44260 +44261 +44262 +44263 +44288 +44289 +44290 +44291 +44292 +44293 +44294 +44295 +44320 +44321 +44322 +44323 +44324 +44325 +44326 +44327 +44352 +44353 +44354 +44355 +44356 +44357 +44358 +44359 +44384 +44385 +44386 +44387 +44388 +44389 +44390 +44391 +44416 +44417 +44418 +44419 +44420 +44421 +44422 +44423 +44448 +44449 +44450 +44451 +44452 +44453 +44454 +44455 +44480 +44481 +44482 +44483 +44484 +44485 +44486 +44487 +44512 +44513 +44514 +44515 +44516 +44517 +44518 +44519 +44544 +44545 +44546 +44547 +44548 +44549 +44550 +44551 +44576 +44577 +44578 +44579 +44580 +44581 +44582 +44583 +44608 +44609 +44610 +44611 +44612 +44613 +44614 +44615 +44640 +44641 +44642 +44643 +44644 +44645 +44646 +44647 +44672 +44673 +44674 +44675 +44676 +44677 +44678 +44679 +44704 +44705 +44706 +44707 +44708 +44709 +44710 +44711 +44736 +44737 +44738 +44739 +44740 +44741 +44742 +44743 +44768 +44769 +44770 +44771 +44772 +44773 +44774 +44775 +44800 +44801 +44802 +44803 +44804 +44805 +44806 +44807 +44832 +44833 +44834 +44835 +44836 +44837 +44838 +44839 +44864 +44865 +44866 +44867 +44868 +44869 +44870 +44871 +44896 +44897 +44898 +44899 +44900 +44901 +44902 +44903 +44928 +44929 +44930 +44931 +44932 +44933 +44934 +44935 +44960 +44961 +44962 +44963 +44964 +44965 +44966 +44967 +44992 +44993 +44994 +44995 +44996 +44997 +44998 +44999 +45024 +45025 +45026 +45027 +45028 +45029 +45030 +45031 +45056 +45057 +45058 +45059 +45060 +45061 +45062 +45063 +45088 +45089 +45090 +45091 +45092 +45093 +45094 +45095 +45120 +45121 +45122 +45123 +45124 +45125 +45126 +45127 +45152 +45153 +45154 +45155 +45156 +45157 +45158 +45159 +45184 +45185 +45186 +45187 +45188 +45189 +45190 +45191 +45216 +45217 +45218 +45219 +45220 +45221 +45222 +45223 +45248 +45249 +45250 +45251 +45252 +45253 +45254 +45255 +45280 +45281 +45282 +45283 +45284 +45285 +45286 +45287 +45312 +45313 +45314 +45315 +45316 +45317 +45318 +45319 +45344 +45345 +45346 +45347 +45348 +45349 +45350 +45351 +45376 +45377 +45378 +45379 +45380 +45381 +45382 +45383 +45408 +45409 +45410 +45411 +45412 +45413 +45414 +45415 +45440 +45441 +45442 +45443 +45444 +45445 +45446 +45447 +45472 +45473 +45474 +45475 +45476 +45477 +45478 +45479 +45504 +45505 +45506 +45507 +45508 +45509 +45510 +45511 +45536 +45537 +45538 +45539 +45540 +45541 +45542 +45543 +45568 +45569 +45570 +45571 +45572 +45573 +45574 +45575 +45600 +45601 +45602 +45603 +45604 +45605 +45606 +45607 +45632 +45633 +45634 +45635 +45636 +45637 +45638 +45639 +45664 +45665 +45666 +45667 +45668 +45669 +45670 +45671 +45696 +45697 +45698 +45699 +45700 +45701 +45702 +45703 +45728 +45729 +45730 +45731 +45732 +45733 +45734 +45735 +45760 +45761 +45762 +45763 +45764 +45765 +45766 +45767 +45792 +45793 +45794 +45795 +45796 +45797 +45798 +45799 +45824 +45825 +45826 +45827 +45828 +45829 +45830 +45831 +45856 +45857 +45858 +45859 +45860 +45861 +45862 +45863 +45888 +45889 +45890 +45891 +45892 +45893 +45894 +45895 +45920 +45921 +45922 +45923 +45924 +45925 +45926 +45927 +45952 +45953 +45954 +45955 +45956 +45957 +45958 +45959 +45984 +45985 +45986 +45987 +45988 +45989 +45990 +45991 +46016 +46017 +46018 +46019 +46020 +46021 +46022 +46023 +46048 +46049 +46050 +46051 +46052 +46053 +46054 +46055 +46080 +46081 +46082 +46083 +46084 +46085 +46086 +46087 +46112 +46113 +46114 +46115 +46116 +46117 +46118 +46119 +46144 +46145 +46146 +46147 +46148 +46149 +46150 +46151 +46176 +46177 +46178 +46179 +46180 +46181 +46182 +46183 +46208 +46209 +46210 +46211 +46212 +46213 +46214 +46215 +46240 +46241 +46242 +46243 +46244 +46245 +46246 +46247 +46272 +46273 +46274 +46275 +46276 +46277 +46278 +46279 +46304 +46305 +46306 +46307 +46308 +46309 +46310 +46311 +46336 +46337 +46338 +46339 +46340 +46341 +46342 +46343 +46368 +46369 +46370 +46371 +46372 +46373 +46374 +46375 +46400 +46401 +46402 +46403 +46404 +46405 +46406 +46407 +46432 +46433 +46434 +46435 +46436 +46437 +46438 +46439 +46464 +46465 +46466 +46467 +46468 +46469 +46470 +46471 +46496 +46497 +46498 +46499 +46500 +46501 +46502 +46503 +46528 +46529 +46530 +46531 +46532 +46533 +46534 +46535 +46560 +46561 +46562 +46563 +46564 +46565 +46566 +46567 +46592 +46593 +46594 +46595 +46596 +46597 +46598 +46599 +46624 +46625 +46626 +46627 +46628 +46629 +46630 +46631 +46656 +46657 +46658 +46659 +46660 +46661 +46662 +46663 +46688 +46689 +46690 +46691 +46692 +46693 +46694 +46695 +46720 +46721 +46722 +46723 +46724 +46725 +46726 +46727 +46752 +46753 +46754 +46755 +46756 +46757 +46758 +46759 +46784 +46785 +46786 +46787 +46788 +46789 +46790 +46791 +46816 +46817 +46818 +46819 +46820 +46821 +46822 +46823 +46848 +46849 +46850 +46851 +46852 +46853 +46854 +46855 +46880 +46881 +46882 +46883 +46884 +46885 +46886 +46887 +46912 +46913 +46914 +46915 +46916 +46917 +46918 +46919 +46944 +46945 +46946 +46947 +46948 +46949 +46950 +46951 +46976 +46977 +46978 +46979 +46980 +46981 +46982 +46983 +47008 +47009 +47010 +47011 +47012 +47013 +47014 +47015 +47040 +47041 +47042 +47043 +47044 +47045 +47046 +47047 +47072 +47073 +47074 +47075 +47076 +47077 +47078 +47079 +47104 +47105 +47106 +47107 +47108 +47109 +47110 +47111 +47136 +47137 +47138 +47139 +47140 +47141 +47142 +47143 +47168 +47169 +47170 +47171 +47172 +47173 +47174 +47175 +47200 +47201 +47202 +47203 +47204 +47205 +47206 +47207 +47232 +47233 +47234 +47235 +47236 +47237 +47238 +47239 +47264 +47265 +47266 +47267 +47268 +47269 +47270 +47271 +47296 +47297 +47298 +47299 +47300 +47301 +47302 +47303 +47328 +47329 +47330 +47331 +47332 +47333 +47334 +47335 +47360 +47361 +47362 +47363 +47364 +47365 +47366 +47367 +47392 +47393 +47394 +47395 +47396 +47397 +47398 +47399 +47424 +47425 +47426 +47427 +47428 +47429 +47430 +47431 +47456 +47457 +47458 +47459 +47460 +47461 +47462 +47463 +47488 +47489 +47490 +47491 +47492 +47493 +47494 +47495 +47520 +47521 +47522 +47523 +47524 +47525 +47526 +47527 +47552 +47553 +47554 +47555 +47556 +47557 +47558 +47559 +47584 +47585 +47586 +47587 +47588 +47589 +47590 +47591 +47616 +47617 +47618 +47619 +47620 +47621 +47622 +47623 +47648 +47649 +47650 +47651 +47652 +47653 +47654 +47655 +47680 +47681 +47682 +47683 +47684 +47685 +47686 +47687 +47712 +47713 +47714 +47715 +47716 +47717 +47718 +47719 +47744 +47745 +47746 +47747 +47748 +47749 +47750 +47751 +47776 +47777 +47778 +47779 +47780 +47781 +47782 +47783 +47808 +47809 +47810 +47811 +47812 +47813 +47814 +47815 +47840 +47841 +47842 +47843 +47844 +47845 +47846 +47847 +47872 +47873 +47874 +47875 +47876 +47877 +47878 +47879 +47904 +47905 +47906 +47907 +47908 +47909 +47910 +47911 +47936 +47937 +47938 +47939 +47940 +47941 +47942 +47943 +47968 +47969 +47970 +47971 +47972 +47973 +47974 +47975 +48000 +48001 +48002 +48003 +48004 +48005 +48006 +48007 +48032 +48033 +48034 +48035 +48036 +48037 +48038 +48039 +48064 +48065 +48066 +48067 +48068 +48069 +48070 +48071 +48096 +48097 +48098 +48099 +48100 +48101 +48102 +48103 +48128 +48129 +48130 +48131 +48132 +48133 +48134 +48135 +48160 +48161 +48162 +48163 +48164 +48165 +48166 +48167 +48192 +48193 +48194 +48195 +48196 +48197 +48198 +48199 +48224 +48225 +48226 +48227 +48228 +48229 +48230 +48231 +48256 +48257 +48258 +48259 +48260 +48261 +48262 +48263 +48288 +48289 +48290 +48291 +48292 +48293 +48294 +48295 +48320 +48321 +48322 +48323 +48324 +48325 +48326 +48327 +48352 +48353 +48354 +48355 +48356 +48357 +48358 +48359 +48384 +48385 +48386 +48387 +48388 +48389 +48390 +48391 +48416 +48417 +48418 +48419 +48420 +48421 +48422 +48423 +48448 +48449 +48450 +48451 +48452 +48453 +48454 +48455 +48480 +48481 +48482 +48483 +48484 +48485 +48486 +48487 +48512 +48513 +48514 +48515 +48516 +48517 +48518 +48519 +48544 +48545 +48546 +48547 +48548 +48549 +48550 +48551 +48576 +48577 +48578 +48579 +48580 +48581 +48582 +48583 +48608 +48609 +48610 +48611 +48612 +48613 +48614 +48615 +48640 +48641 +48642 +48643 +48644 +48645 +48646 +48647 +48672 +48673 +48674 +48675 +48676 +48677 +48678 +48679 +48704 +48705 +48706 +48707 +48708 +48709 +48710 +48711 +48736 +48737 +48738 +48739 +48740 +48741 +48742 +48743 +48768 +48769 +48770 +48771 +48772 +48773 +48774 +48775 +48800 +48801 +48802 +48803 +48804 +48805 +48806 +48807 +48832 +48833 +48834 +48835 +48836 +48837 +48838 +48839 +48864 +48865 +48866 +48867 +48868 +48869 +48870 +48871 +48896 +48897 +48898 +48899 +48900 +48901 +48902 +48903 +48928 +48929 +48930 +48931 +48932 +48933 +48934 +48935 +48960 +48961 +48962 +48963 +48964 +48965 +48966 +48967 +48992 +48993 +48994 +48995 +48996 +48997 +48998 +48999 +49024 +49025 +49026 +49027 +49028 +49029 +49030 +49031 +49056 +49057 +49058 +49059 +49060 +49061 +49062 +49063 +49088 +49089 +49090 +49091 +49092 +49093 +49094 +49095 +49120 +49121 +49122 +49123 +49124 +49125 +49126 +49127 +49152 +49153 +49154 +49155 +49156 +49157 +49158 +49159 +49184 +49185 +49186 +49187 +49188 +49189 +49190 +49191 +49216 +49217 +49218 +49219 +49220 +49221 +49222 +49223 +49248 +49249 +49250 +49251 +49252 +49253 +49254 +49255 +49280 +49281 +49282 +49283 +49284 +49285 +49286 +49287 +49312 +49313 +49314 +49315 +49316 +49317 +49318 +49319 +49344 +49345 +49346 +49347 +49348 +49349 +49350 +49351 +49376 +49377 +49378 +49379 +49380 +49381 +49382 +49383 +49408 +49409 +49410 +49411 +49412 +49413 +49414 +49415 +49440 +49441 +49442 +49443 +49444 +49445 +49446 +49447 +49472 +49473 +49474 +49475 +49476 +49477 +49478 +49479 +49504 +49505 +49506 +49507 +49508 +49509 +49510 +49511 +49536 +49537 +49538 +49539 +49540 +49541 +49542 +49543 +49568 +49569 +49570 +49571 +49572 +49573 +49574 +49575 +49600 +49601 +49602 +49603 +49604 +49605 +49606 +49607 +49632 +49633 +49634 +49635 +49636 +49637 +49638 +49639 +49664 +49665 +49666 +49667 +49668 +49669 +49670 +49671 +49696 +49697 +49698 +49699 +49700 +49701 +49702 +49703 +49728 +49729 +49730 +49731 +49732 +49733 +49734 +49735 +49760 +49761 +49762 +49763 +49764 +49765 +49766 +49767 +49792 +49793 +49794 +49795 +49796 +49797 +49798 +49799 +49824 +49825 +49826 +49827 +49828 +49829 +49830 +49831 +49856 +49857 +49858 +49859 +49860 +49861 +49862 +49863 +49888 +49889 +49890 +49891 +49892 +49893 +49894 +49895 +49920 +49921 +49922 +49923 +49924 +49925 +49926 +49927 +49952 +49953 +49954 +49955 +49956 +49957 +49958 +49959 +49984 +49985 +49986 +49987 +49988 +49989 +49990 +49991 +50016 +50017 +50018 +50019 +50020 +50021 +50022 +50023 +50048 +50049 +50050 +50051 +50052 +50053 +50054 +50055 +50080 +50081 +50082 +50083 +50084 +50085 +50086 +50087 +50112 +50113 +50114 +50115 +50116 +50117 +50118 +50119 +50144 +50145 +50146 +50147 +50148 +50149 +50150 +50151 +50176 +50177 +50178 +50179 +50180 +50181 +50182 +50183 +50208 +50209 +50210 +50211 +50212 +50213 +50214 +50215 +50240 +50241 +50242 +50243 +50244 +50245 +50246 +50247 +50272 +50273 +50274 +50275 +50276 +50277 +50278 +50279 +50304 +50305 +50306 +50307 +50308 +50309 +50310 +50311 +50336 +50337 +50338 +50339 +50340 +50341 +50342 +50343 +50368 +50369 +50370 +50371 +50372 +50373 +50374 +50375 +50400 +50401 +50402 +50403 +50404 +50405 +50406 +50407 +50432 +50433 +50434 +50435 +50436 +50437 +50438 +50439 +50464 +50465 +50466 +50467 +50468 +50469 +50470 +50471 +50496 +50497 +50498 +50499 +50500 +50501 +50502 +50503 +50528 +50529 +50530 +50531 +50532 +50533 +50534 +50535 +50560 +50561 +50562 +50563 +50564 +50565 +50566 +50567 +50592 +50593 +50594 +50595 +50596 +50597 +50598 +50599 +50624 +50625 +50626 +50627 +50628 +50629 +50630 +50631 +50656 +50657 +50658 +50659 +50660 +50661 +50662 +50663 +50688 +50689 +50690 +50691 +50692 +50693 +50694 +50695 +50720 +50721 +50722 +50723 +50724 +50725 +50726 +50727 +50752 +50753 +50754 +50755 +50756 +50757 +50758 +50759 +50784 +50785 +50786 +50787 +50788 +50789 +50790 +50791 +50816 +50817 +50818 +50819 +50820 +50821 +50822 +50823 +50848 +50849 +50850 +50851 +50852 +50853 +50854 +50855 +50880 +50881 +50882 +50883 +50884 +50885 +50886 +50887 +50912 +50913 +50914 +50915 +50916 +50917 +50918 +50919 +50944 +50945 +50946 +50947 +50948 +50949 +50950 +50951 +50976 +50977 +50978 +50979 +50980 +50981 +50982 +50983 +51008 +51009 +51010 +51011 +51012 +51013 +51014 +51015 +51040 +51041 +51042 +51043 +51044 +51045 +51046 +51047 +51072 +51073 +51074 +51075 +51076 +51077 +51078 +51079 +51104 +51105 +51106 +51107 +51108 +51109 +51110 +51111 +51136 +51137 +51138 +51139 +51140 +51141 +51142 +51143 +51168 +51169 +51170 +51171 +51172 +51173 +51174 +51175 +51200 +51201 +51202 +51203 +51204 +51205 +51206 +51207 +51232 +51233 +51234 +51235 +51236 +51237 +51238 +51239 +51264 +51265 +51266 +51267 +51268 +51269 +51270 +51271 +51296 +51297 +51298 +51299 +51300 +51301 +51302 +51303 +51328 +51329 +51330 +51331 +51332 +51333 +51334 +51335 +51360 +51361 +51362 +51363 +51364 +51365 +51366 +51367 +51392 +51393 +51394 +51395 +51396 +51397 +51398 +51399 +51424 +51425 +51426 +51427 +51428 +51429 +51430 +51431 +51456 +51457 +51458 +51459 +51460 +51461 +51462 +51463 +51488 +51489 +51490 +51491 +51492 +51493 +51494 +51495 +51520 +51521 +51522 +51523 +51524 +51525 +51526 +51527 +51552 +51553 +51554 +51555 +51556 +51557 +51558 +51559 +51584 +51585 +51586 +51587 +51588 +51589 +51590 +51591 +51616 +51617 +51618 +51619 +51620 +51621 +51622 +51623 +51648 +51649 +51650 +51651 +51652 +51653 +51654 +51655 +51680 +51681 +51682 +51683 +51684 +51685 +51686 +51687 +51712 +51713 +51714 +51715 +51716 +51717 +51718 +51719 +51744 +51745 +51746 +51747 +51748 +51749 +51750 +51751 +51776 +51777 +51778 +51779 +51780 +51781 +51782 +51783 +51808 +51809 +51810 +51811 +51812 +51813 +51814 +51815 +51840 +51841 +51842 +51843 +51844 +51845 +51846 +51847 +51872 +51873 +51874 +51875 +51876 +51877 +51878 +51879 +51904 +51905 +51906 +51907 +51908 +51909 +51910 +51911 +51936 +51937 +51938 +51939 +51940 +51941 +51942 +51943 +51968 +51969 +51970 +51971 +51972 +51973 +51974 +51975 +52000 +52001 +52002 +52003 +52004 +52005 +52006 +52007 +52032 +52033 +52034 +52035 +52036 +52037 +52038 +52039 +52064 +52065 +52066 +52067 +52068 +52069 +52070 +52071 +52096 +52097 +52098 +52099 +52100 +52101 +52102 +52103 +52128 +52129 +52130 +52131 +52132 +52133 +52134 +52135 +52160 +52161 +52162 +52163 +52164 +52165 +52166 +52167 +52192 +52193 +52194 +52195 +52196 +52197 +52198 +52199 +52224 +52225 +52226 +52227 +52228 +52229 +52230 +52231 +52256 +52257 +52258 +52259 +52260 +52261 +52262 +52263 +52288 +52289 +52290 +52291 +52292 +52293 +52294 +52295 +52320 +52321 +52322 +52323 +52324 +52325 +52326 +52327 +52352 +52353 +52354 +52355 +52356 +52357 +52358 +52359 +52384 +52385 +52386 +52387 +52388 +52389 +52390 +52391 +52416 +52417 +52418 +52419 +52420 +52421 +52422 +52423 +52448 +52449 +52450 +52451 +52452 +52453 +52454 +52455 +52480 +52481 +52482 +52483 +52484 +52485 +52486 +52487 +52512 +52513 +52514 +52515 +52516 +52517 +52518 +52519 +52544 +52545 +52546 +52547 +52548 +52549 +52550 +52551 +52576 +52577 +52578 +52579 +52580 +52581 +52582 +52583 +52608 +52609 +52610 +52611 +52612 +52613 +52614 +52615 +52640 +52641 +52642 +52643 +52644 +52645 +52646 +52647 +52672 +52673 +52674 +52675 +52676 +52677 +52678 +52679 +52704 +52705 +52706 +52707 +52708 +52709 +52710 +52711 +52736 +52737 +52738 +52739 +52740 +52741 +52742 +52743 +52768 +52769 +52770 +52771 +52772 +52773 +52774 +52775 +52800 +52801 +52802 +52803 +52804 +52805 +52806 +52807 +52832 +52833 +52834 +52835 +52836 +52837 +52838 +52839 +52864 +52865 +52866 +52867 +52868 +52869 +52870 +52871 +52896 +52897 +52898 +52899 +52900 +52901 +52902 +52903 +52928 +52929 +52930 +52931 +52932 +52933 +52934 +52935 +52960 +52961 +52962 +52963 +52964 +52965 +52966 +52967 +52992 +52993 +52994 +52995 +52996 +52997 +52998 +52999 +53024 +53025 +53026 +53027 +53028 +53029 +53030 +53031 +53056 +53057 +53058 +53059 +53060 +53061 +53062 +53063 +53088 +53089 +53090 +53091 +53092 +53093 +53094 +53095 +53120 +53121 +53122 +53123 +53124 +53125 +53126 +53127 +53152 +53153 +53154 +53155 +53156 +53157 +53158 +53159 +53184 +53185 +53186 +53187 +53188 +53189 +53190 +53191 +53216 +53217 +53218 +53219 +53220 +53221 +53222 +53223 +53248 +53249 +53250 +53251 +53252 +53253 +53254 +53255 +53280 +53281 +53282 +53283 +53284 +53285 +53286 +53287 +53312 +53313 +53314 +53315 +53316 +53317 +53318 +53319 +53344 +53345 +53346 +53347 +53348 +53349 +53350 +53351 +53376 +53377 +53378 +53379 +53380 +53381 +53382 +53383 +53408 +53409 +53410 +53411 +53412 +53413 +53414 +53415 +53440 +53441 +53442 +53443 +53444 +53445 +53446 +53447 +53472 +53473 +53474 +53475 +53476 +53477 +53478 +53479 +53504 +53505 +53506 +53507 +53508 +53509 +53510 +53511 +53536 +53537 +53538 +53539 +53540 +53541 +53542 +53543 +53568 +53569 +53570 +53571 +53572 +53573 +53574 +53575 +53600 +53601 +53602 +53603 +53604 +53605 +53606 +53607 +53632 +53633 +53634 +53635 +53636 +53637 +53638 +53639 +53664 +53665 +53666 +53667 +53668 +53669 +53670 +53671 +53696 +53697 +53698 +53699 +53700 +53701 +53702 +53703 +53728 +53729 +53730 +53731 +53732 +53733 +53734 +53735 +53760 +53761 +53762 +53763 +53764 +53765 +53766 +53767 +53792 +53793 +53794 +53795 +53796 +53797 +53798 +53799 +53824 +53825 +53826 +53827 +53828 +53829 +53830 +53831 +53856 +53857 +53858 +53859 +53860 +53861 +53862 +53863 +53888 +53889 +53890 +53891 +53892 +53893 +53894 +53895 +53920 +53921 +53922 +53923 +53924 +53925 +53926 +53927 +53952 +53953 +53954 +53955 +53956 +53957 +53958 +53959 +53984 +53985 +53986 +53987 +53988 +53989 +53990 +53991 +54016 +54017 +54018 +54019 +54020 +54021 +54022 +54023 +54048 +54049 +54050 +54051 +54052 +54053 +54054 +54055 +54080 +54081 +54082 +54083 +54084 +54085 +54086 +54087 +54112 +54113 +54114 +54115 +54116 +54117 +54118 +54119 +54144 +54145 +54146 +54147 +54148 +54149 +54150 +54151 +54176 +54177 +54178 +54179 +54180 +54181 +54182 +54183 +54208 +54209 +54210 +54211 +54212 +54213 +54214 +54215 +54240 +54241 +54242 +54243 +54244 +54245 +54246 +54247 +54272 +54273 +54274 +54275 +54276 +54277 +54278 +54279 +54304 +54305 +54306 +54307 +54308 +54309 +54310 +54311 +54336 +54337 +54338 +54339 +54340 +54341 +54342 +54343 +54368 +54369 +54370 +54371 +54372 +54373 +54374 +54375 +54400 +54401 +54402 +54403 +54404 +54405 +54406 +54407 +54432 +54433 +54434 +54435 +54436 +54437 +54438 +54439 +54464 +54465 +54466 +54467 +54468 +54469 +54470 +54471 +54496 +54497 +54498 +54499 +54500 +54501 +54502 +54503 +54528 +54529 +54530 +54531 +54532 +54533 +54534 +54535 +54560 +54561 +54562 +54563 +54564 +54565 +54566 +54567 +54592 +54593 +54594 +54595 +54596 +54597 +54598 +54599 +54624 +54625 +54626 +54627 +54628 +54629 +54630 +54631 +54656 +54657 +54658 +54659 +54660 +54661 +54662 +54663 +54688 +54689 +54690 +54691 +54692 +54693 +54694 +54695 +54720 +54721 +54722 +54723 +54724 +54725 +54726 +54727 +54752 +54753 +54754 +54755 +54756 +54757 +54758 +54759 +54784 +54785 +54786 +54787 +54788 +54789 +54790 +54791 +54816 +54817 +54818 +54819 +54820 +54821 +54822 +54823 +54848 +54849 +54850 +54851 +54852 +54853 +54854 +54855 +54880 +54881 +54882 +54883 +54884 +54885 +54886 +54887 +54912 +54913 +54914 +54915 +54916 +54917 +54918 +54919 +54944 +54945 +54946 +54947 +54948 +54949 +54950 +54951 +54976 +54977 +54978 +54979 +54980 +54981 +54982 +54983 +55008 +55009 +55010 +55011 +55012 +55013 +55014 +55015 +55040 +55041 +55042 +55043 +55044 +55045 +55046 +55047 +55072 +55073 +55074 +55075 +55076 +55077 +55078 +55079 +55104 +55105 +55106 +55107 +55108 +55109 +55110 +55111 +55136 +55137 +55138 +55139 +55140 +55141 +55142 +55143 +55168 +55169 +55170 +55171 +55172 +55173 +55174 +55175 +55200 +55201 +55202 +55203 +55204 +55205 +55206 +55207 +55232 +55233 +55234 +55235 +55236 +55237 +55238 +55239 +55264 +55265 +55266 +55267 +55268 +55269 +55270 +55271 +55296 +55297 +55298 +55299 +55300 +55301 +55302 +55303 +55328 +55329 +55330 +55331 +55332 +55333 +55334 +55335 +55360 +55361 +55362 +55363 +55364 +55365 +55366 +55367 +55392 +55393 +55394 +55395 +55396 +55397 +55398 +55399 +55424 +55425 +55426 +55427 +55428 +55429 +55430 +55431 +55456 +55457 +55458 +55459 +55460 +55461 +55462 +55463 +55488 +55489 +55490 +55491 +55492 +55493 +55494 +55495 +55520 +55521 +55522 +55523 +55524 +55525 +55526 +55527 +55552 +55553 +55554 +55555 +55556 +55557 +55558 +55559 +55584 +55585 +55586 +55587 +55588 +55589 +55590 +55591 +55616 +55617 +55618 +55619 +55620 +55621 +55622 +55623 +55648 +55649 +55650 +55651 +55652 +55653 +55654 +55655 +55680 +55681 +55682 +55683 +55684 +55685 +55686 +55687 +55712 +55713 +55714 +55715 +55716 +55717 +55718 +55719 +55744 +55745 +55746 +55747 +55748 +55749 +55750 +55751 +55776 +55777 +55778 +55779 +55780 +55781 +55782 +55783 +55808 +55809 +55810 +55811 +55812 +55813 +55814 +55815 +55840 +55841 +55842 +55843 +55844 +55845 +55846 +55847 +55872 +55873 +55874 +55875 +55876 +55877 +55878 +55879 +55904 +55905 +55906 +55907 +55908 +55909 +55910 +55911 +55936 +55937 +55938 +55939 +55940 +55941 +55942 +55943 +55968 +55969 +55970 +55971 +55972 +55973 +55974 +55975 +56000 +56001 +56002 +56003 +56004 +56005 +56006 +56007 +56032 +56033 +56034 +56035 +56036 +56037 +56038 +56039 +56064 +56065 +56066 +56067 +56068 +56069 +56070 +56071 +56096 +56097 +56098 +56099 +56100 +56101 +56102 +56103 +56128 +56129 +56130 +56131 +56132 +56133 +56134 +56135 +56160 +56161 +56162 +56163 +56164 +56165 +56166 +56167 +56192 +56193 +56194 +56195 +56196 +56197 +56198 +56199 +56224 +56225 +56226 +56227 +56228 +56229 +56230 +56231 +56256 +56257 +56258 +56259 +56260 +56261 +56262 +56263 +56288 +56289 +56290 +56291 +56292 +56293 +56294 +56295 +56320 +56321 +56322 +56323 +56324 +56325 +56326 +56327 +56352 +56353 +56354 +56355 +56356 +56357 +56358 +56359 +56384 +56385 +56386 +56387 +56388 +56389 +56390 +56391 +56416 +56417 +56418 +56419 +56420 +56421 +56422 +56423 +56448 +56449 +56450 +56451 +56452 +56453 +56454 +56455 +56480 +56481 +56482 +56483 +56484 +56485 +56486 +56487 +56512 +56513 +56514 +56515 +56516 +56517 +56518 +56519 +56544 +56545 +56546 +56547 +56548 +56549 +56550 +56551 +56576 +56577 +56578 +56579 +56580 +56581 +56582 +56583 +56608 +56609 +56610 +56611 +56612 +56613 +56614 +56615 +56640 +56641 +56642 +56643 +56644 +56645 +56646 +56647 +56672 +56673 +56674 +56675 +56676 +56677 +56678 +56679 +56704 +56705 +56706 +56707 +56708 +56709 +56710 +56711 +56736 +56737 +56738 +56739 +56740 +56741 +56742 +56743 +56768 +56769 +56770 +56771 +56772 +56773 +56774 +56775 +56800 +56801 +56802 +56803 +56804 +56805 +56806 +56807 +56832 +56833 +56834 +56835 +56836 +56837 +56838 +56839 +56864 +56865 +56866 +56867 +56868 +56869 +56870 +56871 +56896 +56897 +56898 +56899 +56900 +56901 +56902 +56903 +56928 +56929 +56930 +56931 +56932 +56933 +56934 +56935 +56960 +56961 +56962 +56963 +56964 +56965 +56966 +56967 +56992 +56993 +56994 +56995 +56996 +56997 +56998 +56999 +57024 +57025 +57026 +57027 +57028 +57029 +57030 +57031 +57056 +57057 +57058 +57059 +57060 +57061 +57062 +57063 +57088 +57089 +57090 +57091 +57092 +57093 +57094 +57095 +57120 +57121 +57122 +57123 +57124 +57125 +57126 +57127 +57152 +57153 +57154 +57155 +57156 +57157 +57158 +57159 +57184 +57185 +57186 +57187 +57188 +57189 +57190 +57191 +57216 +57217 +57218 +57219 +57220 +57221 +57222 +57223 +57248 +57249 +57250 +57251 +57252 +57253 +57254 +57255 +57280 +57281 +57282 +57283 +57284 +57285 +57286 +57287 +57312 +57313 +57314 +57315 +57316 +57317 +57318 +57319 +57344 +57345 +57346 +57347 +57348 +57349 +57350 +57351 +57376 +57377 +57378 +57379 +57380 +57381 +57382 +57383 +57408 +57409 +57410 +57411 +57412 +57413 +57414 +57415 +57440 +57441 +57442 +57443 +57444 +57445 +57446 +57447 +57472 +57473 +57474 +57475 +57476 +57477 +57478 +57479 +57504 +57505 +57506 +57507 +57508 +57509 +57510 +57511 +57536 +57537 +57538 +57539 +57540 +57541 +57542 +57543 +57568 +57569 +57570 +57571 +57572 +57573 +57574 +57575 +57600 +57601 +57602 +57603 +57604 +57605 +57606 +57607 +57632 +57633 +57634 +57635 +57636 +57637 +57638 +57639 +57664 +57665 +57666 +57667 +57668 +57669 +57670 +57671 +57696 +57697 +57698 +57699 +57700 +57701 +57702 +57703 +57728 +57729 +57730 +57731 +57732 +57733 +57734 +57735 +57760 +57761 +57762 +57763 +57764 +57765 +57766 +57767 +57792 +57793 +57794 +57795 +57796 +57797 +57798 +57799 +57824 +57825 +57826 +57827 +57828 +57829 +57830 +57831 +57856 +57857 +57858 +57859 +57860 +57861 +57862 +57863 +57888 +57889 +57890 +57891 +57892 +57893 +57894 +57895 +57920 +57921 +57922 +57923 +57924 +57925 +57926 +57927 +57952 +57953 +57954 +57955 +57956 +57957 +57958 +57959 +57984 +57985 +57986 +57987 +57988 +57989 +57990 +57991 +58016 +58017 +58018 +58019 +58020 +58021 +58022 +58023 +58048 +58049 +58050 +58051 +58052 +58053 +58054 +58055 +58080 +58081 +58082 +58083 +58084 +58085 +58086 +58087 +58112 +58113 +58114 +58115 +58116 +58117 +58118 +58119 +58144 +58145 +58146 +58147 +58148 +58149 +58150 +58151 +58176 +58177 +58178 +58179 +58180 +58181 +58182 +58183 +58208 +58209 +58210 +58211 +58212 +58213 +58214 +58215 +58240 +58241 +58242 +58243 +58244 +58245 +58246 +58247 +58272 +58273 +58274 +58275 +58276 +58277 +58278 +58279 +58304 +58305 +58306 +58307 +58308 +58309 +58310 +58311 +58336 +58337 +58338 +58339 +58340 +58341 +58342 +58343 +58368 +58369 +58370 +58371 +58372 +58373 +58374 +58375 +58400 +58401 +58402 +58403 +58404 +58405 +58406 +58407 +58432 +58433 +58434 +58435 +58436 +58437 +58438 +58439 +58464 +58465 +58466 +58467 +58468 +58469 +58470 +58471 +58496 +58497 +58498 +58499 +58500 +58501 +58502 +58503 +58528 +58529 +58530 +58531 +58532 +58533 +58534 +58535 +58560 +58561 +58562 +58563 +58564 +58565 +58566 +58567 +58592 +58593 +58594 +58595 +58596 +58597 +58598 +58599 +58624 +58625 +58626 +58627 +58628 +58629 +58630 +58631 +58656 +58657 +58658 +58659 +58660 +58661 +58662 +58663 +58688 +58689 +58690 +58691 +58692 +58693 +58694 +58695 +58720 +58721 +58722 +58723 +58724 +58725 +58726 +58727 +58752 +58753 +58754 +58755 +58756 +58757 +58758 +58759 +58784 +58785 +58786 +58787 +58788 +58789 +58790 +58791 +58816 +58817 +58818 +58819 +58820 +58821 +58822 +58823 +58848 +58849 +58850 +58851 +58852 +58853 +58854 +58855 +58880 +58881 +58882 +58883 +58884 +58885 +58886 +58887 +58912 +58913 +58914 +58915 +58916 +58917 +58918 +58919 +58944 +58945 +58946 +58947 +58948 +58949 +58950 +58951 +58976 +58977 +58978 +58979 +58980 +58981 +58982 +58983 +59008 +59009 +59010 +59011 +59012 +59013 +59014 +59015 +59040 +59041 +59042 +59043 +59044 +59045 +59046 +59047 +59072 +59073 +59074 +59075 +59076 +59077 +59078 +59079 +59104 +59105 +59106 +59107 +59108 +59109 +59110 +59111 +59136 +59137 +59138 +59139 +59140 +59141 +59142 +59143 +59168 +59169 +59170 +59171 +59172 +59173 +59174 +59175 +59200 +59201 +59202 +59203 +59204 +59205 +59206 +59207 +59232 +59233 +59234 +59235 +59236 +59237 +59238 +59239 +59264 +59265 +59266 +59267 +59268 +59269 +59270 +59271 +59296 +59297 +59298 +59299 +59300 +59301 +59302 +59303 +59328 +59329 +59330 +59331 +59332 +59333 +59334 +59335 +59360 +59361 +59362 +59363 +59364 +59365 +59366 +59367 +59392 +59393 +59394 +59395 +59396 +59397 +59398 +59399 +59424 +59425 +59426 +59427 +59428 +59429 +59430 +59431 +59456 +59457 +59458 +59459 +59460 +59461 +59462 +59463 +59488 +59489 +59490 +59491 +59492 +59493 +59494 +59495 +59520 +59521 +59522 +59523 +59524 +59525 +59526 +59527 +59552 +59553 +59554 +59555 +59556 +59557 +59558 +59559 +59584 +59585 +59586 +59587 +59588 +59589 +59590 +59591 +59616 +59617 +59618 +59619 +59620 +59621 +59622 +59623 +59648 +59649 +59650 +59651 +59652 +59653 +59654 +59655 +59680 +59681 +59682 +59683 +59684 +59685 +59686 +59687 +59712 +59713 +59714 +59715 +59716 +59717 +59718 +59719 +59744 +59745 +59746 +59747 +59748 +59749 +59750 +59751 +59776 +59777 +59778 +59779 +59780 +59781 +59782 +59783 +59808 +59809 +59810 +59811 +59812 +59813 +59814 +59815 +59840 +59841 +59842 +59843 +59844 +59845 +59846 +59847 +59872 +59873 +59874 +59875 +59876 +59877 +59878 +59879 +59904 +59905 +59906 +59907 +59908 +59909 +59910 +59911 +59936 +59937 +59938 +59939 +59940 +59941 +59942 +59943 +59968 +59969 +59970 +59971 +59972 +59973 +59974 +59975 +60000 +60001 +60002 +60003 +60004 +60005 +60006 +60007 +60032 +60033 +60034 +60035 +60036 +60037 +60038 +60039 +60064 +60065 +60066 +60067 +60068 +60069 +60070 +60071 +60096 +60097 +60098 +60099 +60100 +60101 +60102 +60103 +60128 +60129 +60130 +60131 +60132 +60133 +60134 +60135 +60160 +60161 +60162 +60163 +60164 +60165 +60166 +60167 +60192 +60193 +60194 +60195 +60196 +60197 +60198 +60199 +60224 +60225 +60226 +60227 +60228 +60229 +60230 +60231 +60256 +60257 +60258 +60259 +60260 +60261 +60262 +60263 +60288 +60289 +60290 +60291 +60292 +60293 +60294 +60295 +60320 +60321 +60322 +60323 +60324 +60325 +60326 +60327 +60352 +60353 +60354 +60355 +60356 +60357 +60358 +60359 +60384 +60385 +60386 +60387 +60388 +60389 +60390 +60391 +60416 +60417 +60418 +60419 +60420 +60421 +60422 +60423 +60448 +60449 +60450 +60451 +60452 +60453 +60454 +60455 +60480 +60481 +60482 +60483 +60484 +60485 +60486 +60487 +60512 +60513 +60514 +60515 +60516 +60517 +60518 +60519 +60544 +60545 +60546 +60547 +60548 +60549 +60550 +60551 +60576 +60577 +60578 +60579 +60580 +60581 +60582 +60583 +60608 +60609 +60610 +60611 +60612 +60613 +60614 +60615 +60640 +60641 +60642 +60643 +60644 +60645 +60646 +60647 +60672 +60673 +60674 +60675 +60676 +60677 +60678 +60679 +60704 +60705 +60706 +60707 +60708 +60709 +60710 +60711 +60736 +60737 +60738 +60739 +60740 +60741 +60742 +60743 +60768 +60769 +60770 +60771 +60772 +60773 +60774 +60775 +60800 +60801 +60802 +60803 +60804 +60805 +60806 +60807 +60832 +60833 +60834 +60835 +60836 +60837 +60838 +60839 +60864 +60865 +60866 +60867 +60868 +60869 +60870 +60871 +60896 +60897 +60898 +60899 +60900 +60901 +60902 +60903 +60928 +60929 +60930 +60931 +60932 +60933 +60934 +60935 +60960 +60961 +60962 +60963 +60964 +60965 +60966 +60967 +60992 +60993 +60994 +60995 +60996 +60997 +60998 +60999 +61024 +61025 +61026 +61027 +61028 +61029 +61030 +61031 +61056 +61057 +61058 +61059 +61060 +61061 +61062 +61063 +61088 +61089 +61090 +61091 +61092 +61093 +61094 +61095 +61120 +61121 +61122 +61123 +61124 +61125 +61126 +61127 +61152 +61153 +61154 +61155 +61156 +61157 +61158 +61159 +61184 +61185 +61186 +61187 +61188 +61189 +61190 +61191 +61216 +61217 +61218 +61219 +61220 +61221 +61222 +61223 +61248 +61249 +61250 +61251 +61252 +61253 +61254 +61255 +61280 +61281 +61282 +61283 +61284 +61285 +61286 +61287 +61312 +61313 +61314 +61315 +61316 +61317 +61318 +61319 +61344 +61345 +61346 +61347 +61348 +61349 +61350 +61351 +61376 +61377 +61378 +61379 +61380 +61381 +61382 +61383 +61408 +61409 +61410 +61411 +61412 +61413 +61414 +61415 +61440 +61441 +61442 +61443 +61444 +61445 +61446 +61447 +61472 +61473 +61474 +61475 +61476 +61477 +61478 +61479 +61504 +61505 +61506 +61507 +61508 +61509 +61510 +61511 +61536 +61537 +61538 +61539 +61540 +61541 +61542 +61543 +61568 +61569 +61570 +61571 +61572 +61573 +61574 +61575 +61600 +61601 +61602 +61603 +61604 +61605 +61606 +61607 +61632 +61633 +61634 +61635 +61636 +61637 +61638 +61639 +61664 +61665 +61666 +61667 +61668 +61669 +61670 +61671 +61696 +61697 +61698 +61699 +61700 +61701 +61702 +61703 +61728 +61729 +61730 +61731 +61732 +61733 +61734 +61735 +61760 +61761 +61762 +61763 +61764 +61765 +61766 +61767 +61792 +61793 +61794 +61795 +61796 +61797 +61798 +61799 +61824 +61825 +61826 +61827 +61828 +61829 +61830 +61831 +61856 +61857 +61858 +61859 +61860 +61861 +61862 +61863 +61888 +61889 +61890 +61891 +61892 +61893 +61894 +61895 +61920 +61921 +61922 +61923 +61924 +61925 +61926 +61927 +61952 +61953 +61954 +61955 +61956 +61957 +61958 +61959 +61984 +61985 +61986 +61987 +61988 +61989 +61990 +61991 +62016 +62017 +62018 +62019 +62020 +62021 +62022 +62023 +62048 +62049 +62050 +62051 +62052 +62053 +62054 +62055 +62080 +62081 +62082 +62083 +62084 +62085 +62086 +62087 +62112 +62113 +62114 +62115 +62116 +62117 +62118 +62119 +62144 +62145 +62146 +62147 +62148 +62149 +62150 +62151 +62176 +62177 +62178 +62179 +62180 +62181 +62182 +62183 +62208 +62209 +62210 +62211 +62212 +62213 +62214 +62215 +62240 +62241 +62242 +62243 +62244 +62245 +62246 +62247 +62272 +62273 +62274 +62275 +62276 +62277 +62278 +62279 +62304 +62305 +62306 +62307 +62308 +62309 +62310 +62311 +62336 +62337 +62338 +62339 +62340 +62341 +62342 +62343 +62368 +62369 +62370 +62371 +62372 +62373 +62374 +62375 +62400 +62401 +62402 +62403 +62404 +62405 +62406 +62407 +62432 +62433 +62434 +62435 +62436 +62437 +62438 +62439 +62464 +62465 +62466 +62467 +62468 +62469 +62470 +62471 +62496 +62497 +62498 +62499 +62500 +62501 +62502 +62503 +62528 +62529 +62530 +62531 +62532 +62533 +62534 +62535 +62560 +62561 +62562 +62563 +62564 +62565 +62566 +62567 +62592 +62593 +62594 +62595 +62596 +62597 +62598 +62599 +62624 +62625 +62626 +62627 +62628 +62629 +62630 +62631 +62656 +62657 +62658 +62659 +62660 +62661 +62662 +62663 +62688 +62689 +62690 +62691 +62692 +62693 +62694 +62695 +62720 +62721 +62722 +62723 +62724 +62725 +62726 +62727 +62752 +62753 +62754 +62755 +62756 +62757 +62758 +62759 +62784 +62785 +62786 +62787 +62788 +62789 +62790 +62791 +62816 +62817 +62818 +62819 +62820 +62821 +62822 +62823 +62848 +62849 +62850 +62851 +62852 +62853 +62854 +62855 +62880 +62881 +62882 +62883 +62884 +62885 +62886 +62887 +62912 +62913 +62914 +62915 +62916 +62917 +62918 +62919 +62944 +62945 +62946 +62947 +62948 +62949 +62950 +62951 +62976 +62977 +62978 +62979 +62980 +62981 +62982 +62983 +63008 +63009 +63010 +63011 +63012 +63013 +63014 +63015 +63040 +63041 +63042 +63043 +63044 +63045 +63046 +63047 +63072 +63073 +63074 +63075 +63076 +63077 +63078 +63079 +63104 +63105 +63106 +63107 +63108 +63109 +63110 +63111 +63136 +63137 +63138 +63139 +63140 +63141 +63142 +63143 +63168 +63169 +63170 +63171 +63172 +63173 +63174 +63175 +63200 +63201 +63202 +63203 +63204 +63205 +63206 +63207 +63232 +63233 +63234 +63235 +63236 +63237 +63238 +63239 +63264 +63265 +63266 +63267 +63268 +63269 +63270 +63271 +63296 +63297 +63298 +63299 +63300 +63301 +63302 +63303 +63328 +63329 +63330 +63331 +63332 +63333 +63334 +63335 +63360 +63361 +63362 +63363 +63364 +63365 +63366 +63367 +63392 +63393 +63394 +63395 +63396 +63397 +63398 +63399 +63424 +63425 +63426 +63427 +63428 +63429 +63430 +63431 +63456 +63457 +63458 +63459 +63460 +63461 +63462 +63463 +63488 +63489 +63490 +63491 +63492 +63493 +63494 +63495 +63520 +63521 +63522 +63523 +63524 +63525 +63526 +63527 +63552 +63553 +63554 +63555 +63556 +63557 +63558 +63559 +63584 +63585 +63586 +63587 +63588 +63589 +63590 +63591 +63616 +63617 +63618 +63619 +63620 +63621 +63622 +63623 +63648 +63649 +63650 +63651 +63652 +63653 +63654 +63655 +63680 +63681 +63682 +63683 +63684 +63685 +63686 +63687 +63712 +63713 +63714 +63715 +63716 +63717 +63718 +63719 +63744 +63745 +63746 +63747 +63748 +63749 +63750 +63751 +63776 +63777 +63778 +63779 +63780 +63781 +63782 +63783 +63808 +63809 +63810 +63811 +63812 +63813 +63814 +63815 +63840 +63841 +63842 +63843 +63844 +63845 +63846 +63847 +63872 +63873 +63874 +63875 +63876 +63877 +63878 +63879 +63904 +63905 +63906 +63907 +63908 +63909 +63910 +63911 +63936 +63937 +63938 +63939 +63940 +63941 +63942 +63943 +63968 +63969 +63970 +63971 +63972 +63973 +63974 +63975 +64000 +64001 +64002 +64003 +64004 +64005 +64006 +64007 +64032 +64033 +64034 +64035 +64036 +64037 +64038 +64039 +64064 +64065 +64066 +64067 +64068 +64069 +64070 +64071 +64096 +64097 +64098 +64099 +64100 +64101 +64102 +64103 +64128 +64129 +64130 +64131 +64132 +64133 +64134 +64135 +64160 +64161 +64162 +64163 +64164 +64165 +64166 +64167 +64192 +64193 +64194 +64195 +64196 +64197 +64198 +64199 +64224 +64225 +64226 +64227 +64228 +64229 +64230 +64231 +64256 +64257 +64258 +64259 +64260 +64261 +64262 +64263 +64288 +64289 +64290 +64291 +64292 +64293 +64294 +64295 +64320 +64321 +64322 +64323 +64324 +64325 +64326 +64327 +64352 +64353 +64354 +64355 +64356 +64357 +64358 +64359 +64384 +64385 +64386 +64387 +64388 +64389 +64390 +64391 +64416 +64417 +64418 +64419 +64420 +64421 +64422 +64423 +64448 +64449 +64450 +64451 +64452 +64453 +64454 +64455 +64480 +64481 +64482 +64483 +64484 +64485 +64486 +64487 +64512 +64513 +64514 +64515 +64516 +64517 +64518 +64519 +64544 +64545 +64546 +64547 +64548 +64549 +64550 +64551 +64576 +64577 +64578 +64579 +64580 +64581 +64582 +64583 +64608 +64609 +64610 +64611 +64612 +64613 +64614 +64615 +64640 +64641 +64642 +64643 +64644 +64645 +64646 +64647 +64672 +64673 +64674 +64675 +64676 +64677 +64678 +64679 +64704 +64705 +64706 +64707 +64708 +64709 +64710 +64711 +64736 +64737 +64738 +64739 +64740 +64741 +64742 +64743 +64768 +64769 +64770 +64771 +64772 +64773 +64774 +64775 +64800 +64801 +64802 +64803 +64804 +64805 +64806 +64807 +64832 +64833 +64834 +64835 +64836 +64837 +64838 +64839 +64864 +64865 +64866 +64867 +64868 +64869 +64870 +64871 +64896 +64897 +64898 +64899 +64900 +64901 +64902 +64903 +64928 +64929 +64930 +64931 +64932 +64933 +64934 +64935 +64960 +64961 +64962 +64963 +64964 +64965 +64966 +64967 +64992 +64993 +64994 +64995 +64996 +64997 +64998 +64999 +65024 +65025 +65026 +65027 +65028 +65029 +65030 +65031 +65056 +65057 +65058 +65059 +65060 +65061 +65062 +65063 +65088 +65089 +65090 +65091 +65092 +65093 +65094 +65095 +65120 +65121 +65122 +65123 +65124 +65125 +65126 +65127 +65152 +65153 +65154 +65155 +65156 +65157 +65158 +65159 +65184 +65185 +65186 +65187 +65188 +65189 +65190 +65191 +65216 +65217 +65218 +65219 +65220 +65221 +65222 +65223 +65248 +65249 +65250 +65251 +65252 +65253 +65254 +65255 +65280 +65281 +65282 +65283 +65284 +65285 +65286 +65287 +65312 +65313 +65314 +65315 +65316 +65317 +65318 +65319 +65344 +65345 +65346 +65347 +65348 +65349 +65350 +65351 +65376 +65377 +65378 +65379 +65380 +65381 +65382 +65383 +65408 +65409 +65410 +65411 +65412 +65413 +65414 +65415 +65440 +65441 +65442 +65443 +65444 +65445 +65446 +65447 +65472 +65473 +65474 +65475 +65476 +65477 +65478 +65479 +65504 +65505 +65506 +65507 +65508 +65509 +65510 +65511 +65536 +65537 +65538 +65539 +65540 +65541 +65542 +65543 +65568 +65569 +65570 +65571 +65572 +65573 +65574 +65575 +65600 +65601 +65602 +65603 +65604 +65605 +65606 +65607 +65632 +65633 +65634 +65635 +65636 +65637 +65638 +65639 +65664 +65665 +65666 +65667 +65668 +65669 +65670 +65671 +65696 +65697 +65698 +65699 +65700 +65701 +65702 +65703 +65728 +65729 +65730 +65731 +65732 +65733 +65734 +65735 +65760 +65761 +65762 +65763 +65764 +65765 +65766 +65767 +65792 +65793 +65794 +65795 +65796 +65797 +65798 +65799 +65824 +65825 +65826 +65827 +65828 +65829 +65830 +65831 +65856 +65857 +65858 +65859 +65860 +65861 +65862 +65863 +65888 +65889 +65890 +65891 +65892 +65893 +65894 +65895 +65920 +65921 +65922 +65923 +65924 +65925 +65926 +65927 +65952 +65953 +65954 +65955 +65956 +65957 +65958 +65959 +65984 +65985 +65986 +65987 +65988 +65989 +65990 +65991 +66016 +66017 +66018 +66019 +66020 +66021 +66022 +66023 +66048 +66049 +66050 +66051 +66052 +66053 +66054 +66055 +66080 +66081 +66082 +66083 +66084 +66085 +66086 +66087 +66112 +66113 +66114 +66115 +66116 +66117 +66118 +66119 +66144 +66145 +66146 +66147 +66148 +66149 +66150 +66151 +66176 +66177 +66178 +66179 +66180 +66181 +66182 +66183 +66208 +66209 +66210 +66211 +66212 +66213 +66214 +66215 +66240 +66241 +66242 +66243 +66244 +66245 +66246 +66247 +66272 +66273 +66274 +66275 +66276 +66277 +66278 +66279 +66304 +66305 +66306 +66307 +66308 +66309 +66310 +66311 +66336 +66337 +66338 +66339 +66340 +66341 +66342 +66343 +66368 +66369 +66370 +66371 +66372 +66373 +66374 +66375 +66400 +66401 +66402 +66403 +66404 +66405 +66406 +66407 +66432 +66433 +66434 +66435 +66436 +66437 +66438 +66439 +66464 +66465 +66466 +66467 +66468 +66469 +66470 +66471 +66496 +66497 +66498 +66499 +66500 +66501 +66502 +66503 +66528 +66529 +66530 +66531 +66532 +66533 +66534 +66535 +66560 +66561 +66562 +66563 +66564 +66565 +66566 +66567 +66592 +66593 +66594 +66595 +66596 +66597 +66598 +66599 +66624 +66625 +66626 +66627 +66628 +66629 +66630 +66631 +66656 +66657 +66658 +66659 +66660 +66661 +66662 +66663 +66688 +66689 +66690 +66691 +66692 +66693 +66694 +66695 +66720 +66721 +66722 +66723 +66724 +66725 +66726 +66727 +66752 +66753 +66754 +66755 +66756 +66757 +66758 +66759 +66784 +66785 +66786 +66787 +66788 +66789 +66790 +66791 +66816 +66817 +66818 +66819 +66820 +66821 +66822 +66823 +66848 +66849 +66850 +66851 +66852 +66853 +66854 +66855 +66880 +66881 +66882 +66883 +66884 +66885 +66886 +66887 +66912 +66913 +66914 +66915 +66916 +66917 +66918 +66919 +66944 +66945 +66946 +66947 +66948 +66949 +66950 +66951 +66976 +66977 +66978 +66979 +66980 +66981 +66982 +66983 +67008 +67009 +67010 +67011 +67012 +67013 +67014 +67015 +67040 +67041 +67042 +67043 +67044 +67045 +67046 +67047 +67072 +67073 +67074 +67075 +67076 +67077 +67078 +67079 +67104 +67105 +67106 +67107 +67108 +67109 +67110 +67111 +67136 +67137 +67138 +67139 +67140 +67141 +67142 +67143 +67168 +67169 +67170 +67171 +67172 +67173 +67174 +67175 +67200 +67201 +67202 +67203 +67204 +67205 +67206 +67207 +67232 +67233 +67234 +67235 +67236 +67237 +67238 +67239 +67264 +67265 +67266 +67267 +67268 +67269 +67270 +67271 +67296 +67297 +67298 +67299 +67300 +67301 +67302 +67303 +67328 +67329 +67330 +67331 +67332 +67333 +67334 +67335 +67360 +67361 +67362 +67363 +67364 +67365 +67366 +67367 +67392 +67393 +67394 +67395 +67396 +67397 +67398 +67399 +67424 +67425 +67426 +67427 +67428 +67429 +67430 +67431 +67456 +67457 +67458 +67459 +67460 +67461 +67462 +67463 +67488 +67489 +67490 +67491 +67492 +67493 +67494 +67495 +67520 +67521 +67522 +67523 +67524 +67525 +67526 +67527 +67552 +67553 +67554 +67555 +67556 +67557 +67558 +67559 +67584 +67585 +67586 +67587 +67588 +67589 +67590 +67591 +67616 +67617 +67618 +67619 +67620 +67621 +67622 +67623 +67648 +67649 +67650 +67651 +67652 +67653 +67654 +67655 +67680 +67681 +67682 +67683 +67684 +67685 +67686 +67687 +67712 +67713 +67714 +67715 +67716 +67717 +67718 +67719 +67744 +67745 +67746 +67747 +67748 +67749 +67750 +67751 +67776 +67777 +67778 +67779 +67780 +67781 +67782 +67783 +67808 +67809 +67810 +67811 +67812 +67813 +67814 +67815 +67840 +67841 +67842 +67843 +67844 +67845 +67846 +67847 +67872 +67873 +67874 +67875 +67876 +67877 +67878 +67879 +67904 +67905 +67906 +67907 +67908 +67909 +67910 +67911 +67936 +67937 +67938 +67939 +67940 +67941 +67942 +67943 +67968 +67969 +67970 +67971 +67972 +67973 +67974 +67975 +68000 +68001 +68002 +68003 +68004 +68005 +68006 +68007 +68032 +68033 +68034 +68035 +68036 +68037 +68038 +68039 +68064 +68065 +68066 +68067 +68068 +68069 +68070 +68071 +68096 +68097 +68098 +68099 +68100 +68101 +68102 +68103 +68128 +68129 +68130 +68131 +68132 +68133 +68134 +68135 +68160 +68161 +68162 +68163 +68164 +68165 +68166 +68167 +68192 +68193 +68194 +68195 +68196 +68197 +68198 +68199 +68224 +68225 +68226 +68227 +68228 +68229 +68230 +68231 +68256 +68257 +68258 +68259 +68260 +68261 +68262 +68263 +68288 +68289 +68290 +68291 +68292 +68293 +68294 +68295 +68320 +68321 +68322 +68323 +68324 +68325 +68326 +68327 +68352 +68353 +68354 +68355 +68356 +68357 +68358 +68359 +68384 +68385 +68386 +68387 +68388 +68389 +68390 +68391 +68416 +68417 +68418 +68419 +68420 +68421 +68422 +68423 +68448 +68449 +68450 +68451 +68452 +68453 +68454 +68455 +68480 +68481 +68482 +68483 +68484 +68485 +68486 +68487 +68512 +68513 +68514 +68515 +68516 +68517 +68518 +68519 +68544 +68545 +68546 +68547 +68548 +68549 +68550 +68551 +68576 +68577 +68578 +68579 +68580 +68581 +68582 +68583 +68608 +68609 +68610 +68611 +68612 +68613 +68614 +68615 +68640 +68641 +68642 +68643 +68644 +68645 +68646 +68647 +68672 +68673 +68674 +68675 +68676 +68677 +68678 +68679 +68704 +68705 +68706 +68707 +68708 +68709 +68710 +68711 +68736 +68737 +68738 +68739 +68740 +68741 +68742 +68743 +68768 +68769 +68770 +68771 +68772 +68773 +68774 +68775 +68800 +68801 +68802 +68803 +68804 +68805 +68806 +68807 +68832 +68833 +68834 +68835 +68836 +68837 +68838 +68839 +68864 +68865 +68866 +68867 +68868 +68869 +68870 +68871 +68896 +68897 +68898 +68899 +68900 +68901 +68902 +68903 +68928 +68929 +68930 +68931 +68932 +68933 +68934 +68935 +68960 +68961 +68962 +68963 +68964 +68965 +68966 +68967 +68992 +68993 +68994 +68995 +68996 +68997 +68998 +68999 +69024 +69025 +69026 +69027 +69028 +69029 +69030 +69031 +69056 +69057 +69058 +69059 +69060 +69061 +69062 +69063 +69088 +69089 +69090 +69091 +69092 +69093 +69094 +69095 +69120 +69121 +69122 +69123 +69124 +69125 +69126 +69127 +69152 +69153 +69154 +69155 +69156 +69157 +69158 +69159 +69184 +69185 +69186 +69187 +69188 +69189 +69190 +69191 +69216 +69217 +69218 +69219 +69220 +69221 +69222 +69223 +69248 +69249 +69250 +69251 +69252 +69253 +69254 +69255 +69280 +69281 +69282 +69283 +69284 +69285 +69286 +69287 +69312 +69313 +69314 +69315 +69316 +69317 +69318 +69319 +69344 +69345 +69346 +69347 +69348 +69349 +69350 +69351 +69376 +69377 +69378 +69379 +69380 +69381 +69382 +69383 +69408 +69409 +69410 +69411 +69412 +69413 +69414 +69415 +69440 +69441 +69442 +69443 +69444 +69445 +69446 +69447 +69472 +69473 +69474 +69475 +69476 +69477 +69478 +69479 +69504 +69505 +69506 +69507 +69508 +69509 +69510 +69511 +69536 +69537 +69538 +69539 +69540 +69541 +69542 +69543 +69568 +69569 +69570 +69571 +69572 +69573 +69574 +69575 +69600 +69601 +69602 +69603 +69604 +69605 +69606 +69607 +69632 +69633 +69634 +69635 +69636 +69637 +69638 +69639 +69664 +69665 +69666 +69667 +69668 +69669 +69670 +69671 +69696 +69697 +69698 +69699 +69700 +69701 +69702 +69703 +69728 +69729 +69730 +69731 +69732 +69733 +69734 +69735 +69760 +69761 +69762 +69763 +69764 +69765 +69766 +69767 +69792 +69793 +69794 +69795 +69796 +69797 +69798 +69799 +69824 +69825 +69826 +69827 +69828 +69829 +69830 +69831 +69856 +69857 +69858 +69859 +69860 +69861 +69862 +69863 +69888 +69889 +69890 +69891 +69892 +69893 +69894 +69895 +69920 +69921 +69922 +69923 +69924 +69925 +69926 +69927 +69952 +69953 +69954 +69955 +69956 +69957 +69958 +69959 +69984 +69985 +69986 +69987 +69988 +69989 +69990 +69991 +70016 +70017 +70018 +70019 +70020 +70021 +70022 +70023 +70048 +70049 +70050 +70051 +70052 +70053 +70054 +70055 +70080 +70081 +70082 +70083 +70084 +70085 +70086 +70087 +70112 +70113 +70114 +70115 +70116 +70117 +70118 +70119 +70144 +70145 +70146 +70147 +70148 +70149 +70150 +70151 +70176 +70177 +70178 +70179 +70180 +70181 +70182 +70183 +70208 +70209 +70210 +70211 +70212 +70213 +70214 +70215 +70240 +70241 +70242 +70243 +70244 +70245 +70246 +70247 +70272 +70273 +70274 +70275 +70276 +70277 +70278 +70279 +70304 +70305 +70306 +70307 +70308 +70309 +70310 +70311 +70336 +70337 +70338 +70339 +70340 +70341 +70342 +70343 +70368 +70369 +70370 +70371 +70372 +70373 +70374 +70375 +70400 +70401 +70402 +70403 +70404 +70405 +70406 +70407 +70432 +70433 +70434 +70435 +70436 +70437 +70438 +70439 +70464 +70465 +70466 +70467 +70468 +70469 +70470 +70471 +70496 +70497 +70498 +70499 +70500 +70501 +70502 +70503 +70528 +70529 +70530 +70531 +70532 +70533 +70534 +70535 +70560 +70561 +70562 +70563 +70564 +70565 +70566 +70567 +70592 +70593 +70594 +70595 +70596 +70597 +70598 +70599 +70624 +70625 +70626 +70627 +70628 +70629 +70630 +70631 +70656 +70657 +70658 +70659 +70660 +70661 +70662 +70663 +70688 +70689 +70690 +70691 +70692 +70693 +70694 +70695 +70720 +70721 +70722 +70723 +70724 +70725 +70726 +70727 +70752 +70753 +70754 +70755 +70756 +70757 +70758 +70759 +70784 +70785 +70786 +70787 +70788 +70789 +70790 +70791 +70816 +70817 +70818 +70819 +70820 +70821 +70822 +70823 +70848 +70849 +70850 +70851 +70852 +70853 +70854 +70855 +70880 +70881 +70882 +70883 +70884 +70885 +70886 +70887 +70912 +70913 +70914 +70915 +70916 +70917 +70918 +70919 +70944 +70945 +70946 +70947 +70948 +70949 +70950 +70951 +70976 +70977 +70978 +70979 +70980 +70981 +70982 +70983 +71008 +71009 +71010 +71011 +71012 +71013 +71014 +71015 +71040 +71041 +71042 +71043 +71044 +71045 +71046 +71047 +71072 +71073 +71074 +71075 +71076 +71077 +71078 +71079 +71104 +71105 +71106 +71107 +71108 +71109 +71110 +71111 +71136 +71137 +71138 +71139 +71140 +71141 +71142 +71143 +71168 +71169 +71170 +71171 +71172 +71173 +71174 +71175 +71200 +71201 +71202 +71203 +71204 +71205 +71206 +71207 +71232 +71233 +71234 +71235 +71236 +71237 +71238 +71239 +71264 +71265 +71266 +71267 +71268 +71269 +71270 +71271 +71296 +71297 +71298 +71299 +71300 +71301 +71302 +71303 +71328 +71329 +71330 +71331 +71332 +71333 +71334 +71335 +71360 +71361 +71362 +71363 +71364 +71365 +71366 +71367 +71392 +71393 +71394 +71395 +71396 +71397 +71398 +71399 +71424 +71425 +71426 +71427 +71428 +71429 +71430 +71431 +71456 +71457 +71458 +71459 +71460 +71461 +71462 +71463 +71488 +71489 +71490 +71491 +71492 +71493 +71494 +71495 +71520 +71521 +71522 +71523 +71524 +71525 +71526 +71527 +71552 +71553 +71554 +71555 +71556 +71557 +71558 +71559 +71584 +71585 +71586 +71587 +71588 +71589 +71590 +71591 +71616 +71617 +71618 +71619 +71620 +71621 +71622 +71623 +71648 +71649 +71650 +71651 +71652 +71653 +71654 +71655 +71680 +71681 +71682 +71683 +71684 +71685 +71686 +71687 +71712 +71713 +71714 +71715 +71716 +71717 +71718 +71719 +71744 +71745 +71746 +71747 +71748 +71749 +71750 +71751 +71776 +71777 +71778 +71779 +71780 +71781 +71782 +71783 +71808 +71809 +71810 +71811 +71812 +71813 +71814 +71815 +71840 +71841 +71842 +71843 +71844 +71845 +71846 +71847 +71872 +71873 +71874 +71875 +71876 +71877 +71878 +71879 +71904 +71905 +71906 +71907 +71908 +71909 +71910 +71911 +71936 +71937 +71938 +71939 +71940 +71941 +71942 +71943 +71968 +71969 +71970 +71971 +71972 +71973 +71974 +71975 +72000 +72001 +72002 +72003 +72004 +72005 +72006 +72007 +72032 +72033 +72034 +72035 +72036 +72037 +72038 +72039 +72064 +72065 +72066 +72067 +72068 +72069 +72070 +72071 +72096 +72097 +72098 +72099 +72100 +72101 +72102 +72103 +72128 +72129 +72130 +72131 +72132 +72133 +72134 +72135 +72160 +72161 +72162 +72163 +72164 +72165 +72166 +72167 +72192 +72193 +72194 +72195 +72196 +72197 +72198 +72199 +72224 +72225 +72226 +72227 +72228 +72229 +72230 +72231 +72256 +72257 +72258 +72259 +72260 +72261 +72262 +72263 +72288 +72289 +72290 +72291 +72292 +72293 +72294 +72295 +72320 +72321 +72322 +72323 +72324 +72325 +72326 +72327 +72352 +72353 +72354 +72355 +72356 +72357 +72358 +72359 +72384 +72385 +72386 +72387 +72388 +72389 +72390 +72391 +72416 +72417 +72418 +72419 +72420 +72421 +72422 +72423 +72448 +72449 +72450 +72451 +72452 +72453 +72454 +72455 +72480 +72481 +72482 +72483 +72484 +72485 +72486 +72487 +72512 +72513 +72514 +72515 +72516 +72517 +72518 +72519 +72544 +72545 +72546 +72547 +72548 +72549 +72550 +72551 +72576 +72577 +72578 +72579 +72580 +72581 +72582 +72583 +72608 +72609 +72610 +72611 +72612 +72613 +72614 +72615 +72640 +72641 +72642 +72643 +72644 +72645 +72646 +72647 +72672 +72673 +72674 +72675 +72676 +72677 +72678 +72679 +72704 +72705 +72706 +72707 +72708 +72709 +72710 +72711 +72736 +72737 +72738 +72739 +72740 +72741 +72742 +72743 +72768 +72769 +72770 +72771 +72772 +72773 +72774 +72775 +72800 +72801 +72802 +72803 +72804 +72805 +72806 +72807 +72832 +72833 +72834 +72835 +72836 +72837 +72838 +72839 +72864 +72865 +72866 +72867 +72868 +72869 +72870 +72871 +72896 +72897 +72898 +72899 +72900 +72901 +72902 +72903 +72928 +72929 +72930 +72931 +72932 +72933 +72934 +72935 +72960 +72961 +72962 +72963 +72964 +72965 +72966 +72967 +72992 +72993 +72994 +72995 +72996 +72997 +72998 +72999 +73024 +73025 +73026 +73027 +73028 +73029 +73030 +73031 +73056 +73057 +73058 +73059 +73060 +73061 +73062 +73063 +73088 +73089 +73090 +73091 +73092 +73093 +73094 +73095 +73120 +73121 +73122 +73123 +73124 +73125 +73126 +73127 +73152 +73153 +73154 +73155 +73156 +73157 +73158 +73159 +73184 +73185 +73186 +73187 +73188 +73189 +73190 +73191 +73216 +73217 +73218 +73219 +73220 +73221 +73222 +73223 +73248 +73249 +73250 +73251 +73252 +73253 +73254 +73255 +73280 +73281 +73282 +73283 +73284 +73285 +73286 +73287 +73312 +73313 +73314 +73315 +73316 +73317 +73318 +73319 +73344 +73345 +73346 +73347 +73348 +73349 +73350 +73351 +73376 +73377 +73378 +73379 +73380 +73381 +73382 +73383 +73408 +73409 +73410 +73411 +73412 +73413 +73414 +73415 +73440 +73441 +73442 +73443 +73444 +73445 +73446 +73447 +73472 +73473 +73474 +73475 +73476 +73477 +73478 +73479 +73504 +73505 +73506 +73507 +73508 +73509 +73510 +73511 +73536 +73537 +73538 +73539 +73540 +73541 +73542 +73543 +73568 +73569 +73570 +73571 +73572 +73573 +73574 +73575 +73600 +73601 +73602 +73603 +73604 +73605 +73606 +73607 +73632 +73633 +73634 +73635 +73636 +73637 +73638 +73639 +73664 +73665 +73666 +73667 +73668 +73669 +73670 +73671 +73696 +73697 +73698 +73699 +73700 +73701 +73702 +73703 +73728 +73729 +73730 +73731 +73732 +73733 +73734 +73735 +73760 +73761 +73762 +73763 +73764 +73765 +73766 +73767 +73792 +73793 +73794 +73795 +73796 +73797 +73798 +73799 +73824 +73825 +73826 +73827 +73828 +73829 +73830 +73831 +73856 +73857 +73858 +73859 +73860 +73861 +73862 +73863 +73888 +73889 +73890 +73891 +73892 +73893 +73894 +73895 +73920 +73921 +73922 +73923 +73924 +73925 +73926 +73927 +73952 +73953 +73954 +73955 +73956 +73957 +73958 +73959 +73984 +73985 +73986 +73987 +73988 +73989 +73990 +73991 +74016 +74017 +74018 +74019 +74020 +74021 +74022 +74023 +74048 +74049 +74050 +74051 +74052 +74053 +74054 +74055 +74080 +74081 +74082 +74083 +74084 +74085 +74086 +74087 +74112 +74113 +74114 +74115 +74116 +74117 +74118 +74119 +74144 +74145 +74146 +74147 +74148 +74149 +74150 +74151 +74176 +74177 +74178 +74179 +74180 +74181 +74182 +74183 +74208 +74209 +74210 +74211 +74212 +74213 +74214 +74215 +74240 +74241 +74242 +74243 +74244 +74245 +74246 +74247 +74272 +74273 +74274 +74275 +74276 +74277 +74278 +74279 +74304 +74305 +74306 +74307 +74308 +74309 +74310 +74311 +74336 +74337 +74338 +74339 +74340 +74341 +74342 +74343 +74368 +74369 +74370 +74371 +74372 +74373 +74374 +74375 +74400 +74401 +74402 +74403 +74404 +74405 +74406 +74407 +74432 +74433 +74434 +74435 +74436 +74437 +74438 +74439 +74464 +74465 +74466 +74467 +74468 +74469 +74470 +74471 +74496 +74497 +74498 +74499 +74500 +74501 +74502 +74503 +74528 +74529 +74530 +74531 +74532 +74533 +74534 +74535 +74560 +74561 +74562 +74563 +74564 +74565 +74566 +74567 +74592 +74593 +74594 +74595 +74596 +74597 +74598 +74599 +74624 +74625 +74626 +74627 +74628 +74629 +74630 +74631 +74656 +74657 +74658 +74659 +74660 +74661 +74662 +74663 +74688 +74689 +74690 +74691 +74692 +74693 +74694 +74695 +74720 +74721 +74722 +74723 +74724 +74725 +74726 +74727 +74752 +74753 +74754 +74755 +74756 +74757 +74758 +74759 +74784 +74785 +74786 +74787 +74788 +74789 +74790 +74791 +74816 +74817 +74818 +74819 +74820 +74821 +74822 +74823 +74848 +74849 +74850 +74851 +74852 +74853 +74854 +74855 +74880 +74881 +74882 +74883 +74884 +74885 +74886 +74887 +74912 +74913 +74914 +74915 +74916 +74917 +74918 +74919 +74944 +74945 +74946 +74947 +74948 +74949 +74950 +74951 +74976 +74977 +74978 +74979 +74980 +74981 +74982 +74983 +75008 +75009 +75010 +75011 +75012 +75013 +75014 +75015 +75040 +75041 +75042 +75043 +75044 +75045 +75046 +75047 +75072 +75073 +75074 +75075 +75076 +75077 +75078 +75079 +75104 +75105 +75106 +75107 +75108 +75109 +75110 +75111 +75136 +75137 +75138 +75139 +75140 +75141 +75142 +75143 +75168 +75169 +75170 +75171 +75172 +75173 +75174 +75175 +75200 +75201 +75202 +75203 +75204 +75205 +75206 +75207 +75232 +75233 +75234 +75235 +75236 +75237 +75238 +75239 +75264 +75265 +75266 +75267 +75268 +75269 +75270 +75271 +75296 +75297 +75298 +75299 +75300 +75301 +75302 +75303 +75328 +75329 +75330 +75331 +75332 +75333 +75334 +75335 +75360 +75361 +75362 +75363 +75364 +75365 +75366 +75367 +75392 +75393 +75394 +75395 +75396 +75397 +75398 +75399 +75424 +75425 +75426 +75427 +75428 +75429 +75430 +75431 +75456 +75457 +75458 +75459 +75460 +75461 +75462 +75463 +75488 +75489 +75490 +75491 +75492 +75493 +75494 +75495 +75520 +75521 +75522 +75523 +75524 +75525 +75526 +75527 +75552 +75553 +75554 +75555 +75556 +75557 +75558 +75559 +75584 +75585 +75586 +75587 +75588 +75589 +75590 +75591 +75616 +75617 +75618 +75619 +75620 +75621 +75622 +75623 +75648 +75649 +75650 +75651 +75652 +75653 +75654 +75655 +75680 +75681 +75682 +75683 +75684 +75685 +75686 +75687 +75712 +75713 +75714 +75715 +75716 +75717 +75718 +75719 +75744 +75745 +75746 +75747 +75748 +75749 +75750 +75751 +75776 +75777 +75778 +75779 +75780 +75781 +75782 +75783 +75808 +75809 +75810 +75811 +75812 +75813 +75814 +75815 +75840 +75841 +75842 +75843 +75844 +75845 +75846 +75847 +75872 +75873 +75874 +75875 +75876 +75877 +75878 +75879 +75904 +75905 +75906 +75907 +75908 +75909 +75910 +75911 +75936 +75937 +75938 +75939 +75940 +75941 +75942 +75943 +75968 +75969 +75970 +75971 +75972 +75973 +75974 +75975 +76000 +76001 +76002 +76003 +76004 +76005 +76006 +76007 +76032 +76033 +76034 +76035 +76036 +76037 +76038 +76039 +76064 +76065 +76066 +76067 +76068 +76069 +76070 +76071 +76096 +76097 +76098 +76099 +76100 +76101 +76102 +76103 +76128 +76129 +76130 +76131 +76132 +76133 +76134 +76135 +76160 +76161 +76162 +76163 +76164 +76165 +76166 +76167 +76192 +76193 +76194 +76195 +76196 +76197 +76198 +76199 +76224 +76225 +76226 +76227 +76228 +76229 +76230 +76231 +76256 +76257 +76258 +76259 +76260 +76261 +76262 +76263 +76288 +76289 +76290 +76291 +76292 +76293 +76294 +76295 +76320 +76321 +76322 +76323 +76324 +76325 +76326 +76327 +76352 +76353 +76354 +76355 +76356 +76357 +76358 +76359 +76384 +76385 +76386 +76387 +76388 +76389 +76390 +76391 +76416 +76417 +76418 +76419 +76420 +76421 +76422 +76423 +76448 +76449 +76450 +76451 +76452 +76453 +76454 +76455 +76480 +76481 +76482 +76483 +76484 +76485 +76486 +76487 +76512 +76513 +76514 +76515 +76516 +76517 +76518 +76519 +76544 +76545 +76546 +76547 +76548 +76549 +76550 +76551 +76576 +76577 +76578 +76579 +76580 +76581 +76582 +76583 +76608 +76609 +76610 +76611 +76612 +76613 +76614 +76615 +76640 +76641 +76642 +76643 +76644 +76645 +76646 +76647 +76672 +76673 +76674 +76675 +76676 +76677 +76678 +76679 +76704 +76705 +76706 +76707 +76708 +76709 +76710 +76711 +76736 +76737 +76738 +76739 +76740 +76741 +76742 +76743 +76768 +76769 +76770 +76771 +76772 +76773 +76774 +76775 +76800 +76801 +76802 +76803 +76804 +76805 +76806 +76807 +76832 +76833 +76834 +76835 +76836 +76837 +76838 +76839 +76864 +76865 +76866 +76867 +76868 +76869 +76870 +76871 +76896 +76897 +76898 +76899 +76900 +76901 +76902 +76903 +76928 +76929 +76930 +76931 +76932 +76933 +76934 +76935 +76960 +76961 +76962 +76963 +76964 +76965 +76966 +76967 +76992 +76993 +76994 +76995 +76996 +76997 +76998 +76999 +77024 +77025 +77026 +77027 +77028 +77029 +77030 +77031 +77056 +77057 +77058 +77059 +77060 +77061 +77062 +77063 +77088 +77089 +77090 +77091 +77092 +77093 +77094 +77095 +77120 +77121 +77122 +77123 +77124 +77125 +77126 +77127 +77152 +77153 +77154 +77155 +77156 +77157 +77158 +77159 +77184 +77185 +77186 +77187 +77188 +77189 +77190 +77191 +77216 +77217 +77218 +77219 +77220 +77221 +77222 +77223 +77248 +77249 +77250 +77251 +77252 +77253 +77254 +77255 +77280 +77281 +77282 +77283 +77284 +77285 +77286 +77287 +77312 +77313 +77314 +77315 +77316 +77317 +77318 +77319 +77344 +77345 +77346 +77347 +77348 +77349 +77350 +77351 +77376 +77377 +77378 +77379 +77380 +77381 +77382 +77383 +77408 +77409 +77410 +77411 +77412 +77413 +77414 +77415 +77440 +77441 +77442 +77443 +77444 +77445 +77446 +77447 +77472 +77473 +77474 +77475 +77476 +77477 +77478 +77479 +77504 +77505 +77506 +77507 +77508 +77509 +77510 +77511 +77536 +77537 +77538 +77539 +77540 +77541 +77542 +77543 +77568 +77569 +77570 +77571 +77572 +77573 +77574 +77575 +77600 +77601 +77602 +77603 +77604 +77605 +77606 +77607 +77632 +77633 +77634 +77635 +77636 +77637 +77638 +77639 +77664 +77665 +77666 +77667 +77668 +77669 +77670 +77671 +77696 +77697 +77698 +77699 +77700 +77701 +77702 +77703 +77728 +77729 +77730 +77731 +77732 +77733 +77734 +77735 +77760 +77761 +77762 +77763 +77764 +77765 +77766 +77767 +77792 +77793 +77794 +77795 +77796 +77797 +77798 +77799 +77824 +77825 +77826 +77827 +77828 +77829 +77830 +77831 +77856 +77857 +77858 +77859 +77860 +77861 +77862 +77863 +77888 +77889 +77890 +77891 +77892 +77893 +77894 +77895 +77920 +77921 +77922 +77923 +77924 +77925 +77926 +77927 +77952 +77953 +77954 +77955 +77956 +77957 +77958 +77959 +77984 +77985 +77986 +77987 +77988 +77989 +77990 +77991 +78016 +78017 +78018 +78019 +78020 +78021 +78022 +78023 +78048 +78049 +78050 +78051 +78052 +78053 +78054 +78055 +78080 +78081 +78082 +78083 +78084 +78085 +78086 +78087 +78112 +78113 +78114 +78115 +78116 +78117 +78118 +78119 +78144 +78145 +78146 +78147 +78148 +78149 +78150 +78151 +78176 +78177 +78178 +78179 +78180 +78181 +78182 +78183 +78208 +78209 +78210 +78211 +78212 +78213 +78214 +78215 +78240 +78241 +78242 +78243 +78244 +78245 +78246 +78247 +78272 +78273 +78274 +78275 +78276 +78277 +78278 +78279 +78304 +78305 +78306 +78307 +78308 +78309 +78310 +78311 +78336 +78337 +78338 +78339 +78340 +78341 +78342 +78343 +78368 +78369 +78370 +78371 +78372 +78373 +78374 +78375 +78400 +78401 +78402 +78403 +78404 +78405 +78406 +78407 +78432 +78433 +78434 +78435 +78436 +78437 +78438 +78439 +78464 +78465 +78466 +78467 +78468 +78469 +78470 +78471 +78496 +78497 +78498 +78499 +78500 +78501 +78502 +78503 +78528 +78529 +78530 +78531 +78532 +78533 +78534 +78535 +78560 +78561 +78562 +78563 +78564 +78565 +78566 +78567 +78592 +78593 +78594 +78595 +78596 +78597 +78598 +78599 +78624 +78625 +78626 +78627 +78628 +78629 +78630 +78631 +78656 +78657 +78658 +78659 +78660 +78661 +78662 +78663 +78688 +78689 +78690 +78691 +78692 +78693 +78694 +78695 +78720 +78721 +78722 +78723 +78724 +78725 +78726 +78727 +78752 +78753 +78754 +78755 +78756 +78757 +78758 +78759 +78784 +78785 +78786 +78787 +78788 +78789 +78790 +78791 +78816 +78817 +78818 +78819 +78820 +78821 +78822 +78823 +78848 +78849 +78850 +78851 +78852 +78853 +78854 +78855 +78880 +78881 +78882 +78883 +78884 +78885 +78886 +78887 +78912 +78913 +78914 +78915 +78916 +78917 +78918 +78919 +78944 +78945 +78946 +78947 +78948 +78949 +78950 +78951 +78976 +78977 +78978 +78979 +78980 +78981 +78982 +78983 +79008 +79009 +79010 +79011 +79012 +79013 +79014 +79015 +79040 +79041 +79042 +79043 +79044 +79045 +79046 +79047 +79072 +79073 +79074 +79075 +79076 +79077 +79078 +79079 +79104 +79105 +79106 +79107 +79108 +79109 +79110 +79111 +79136 +79137 +79138 +79139 +79140 +79141 +79142 +79143 +79168 +79169 +79170 +79171 +79172 +79173 +79174 +79175 +79200 +79201 +79202 +79203 +79204 +79205 +79206 +79207 +79232 +79233 +79234 +79235 +79236 +79237 +79238 +79239 +79264 +79265 +79266 +79267 +79268 +79269 +79270 +79271 +79296 +79297 +79298 +79299 +79300 +79301 +79302 +79303 +79328 +79329 +79330 +79331 +79332 +79333 +79334 +79335 +79360 +79361 +79362 +79363 +79364 +79365 +79366 +79367 +79392 +79393 +79394 +79395 +79396 +79397 +79398 +79399 +79424 +79425 +79426 +79427 +79428 +79429 +79430 +79431 +79456 +79457 +79458 +79459 +79460 +79461 +79462 +79463 +79488 +79489 +79490 +79491 +79492 +79493 +79494 +79495 +79520 +79521 +79522 +79523 +79524 +79525 +79526 +79527 +79552 +79553 +79554 +79555 +79556 +79557 +79558 +79559 +79584 +79585 +79586 +79587 +79588 +79589 +79590 +79591 +79616 +79617 +79618 +79619 +79620 +79621 +79622 +79623 +79648 +79649 +79650 +79651 +79652 +79653 +79654 +79655 +79680 +79681 +79682 +79683 +79684 +79685 +79686 +79687 +79712 +79713 +79714 +79715 +79716 +79717 +79718 +79719 +79744 +79745 +79746 +79747 +79748 +79749 +79750 +79751 +79776 +79777 +79778 +79779 +79780 +79781 +79782 +79783 +79808 +79809 +79810 +79811 +79812 +79813 +79814 +79815 +79840 +79841 +79842 +79843 +79844 +79845 +79846 +79847 +79872 +79873 +79874 +79875 +79876 +79877 +79878 +79879 +79904 +79905 +79906 +79907 +79908 +79909 +79910 +79911 +79936 +79937 +79938 +79939 +79940 +79941 +79942 +79943 +79968 +79969 +79970 +79971 +79972 +79973 +79974 +79975 +80000 +80001 +80002 +80003 +80004 +80005 +80006 +80007 +80032 +80033 +80034 +80035 +80036 +80037 +80038 +80039 +80064 +80065 +80066 +80067 +80068 +80069 +80070 +80071 +80096 +80097 +80098 +80099 +80100 +80101 +80102 +80103 +80128 +80129 +80130 +80131 +80132 +80133 +80134 +80135 +80160 +80161 +80162 +80163 +80164 +80165 +80166 +80167 +80192 +80193 +80194 +80195 +80196 +80197 +80198 +80199 +80224 +80225 +80226 +80227 +80228 +80229 +80230 +80231 +80256 +80257 +80258 +80259 +80260 +80261 +80262 +80263 +80288 +80289 +80290 +80291 +80292 +80293 +80294 +80295 +80320 +80321 +80322 +80323 +80324 +80325 +80326 +80327 +80352 +80353 +80354 +80355 +80356 +80357 +80358 +80359 +80384 +80385 +80386 +80387 +80388 +80389 +80390 +80391 +80416 +80417 +80418 +80419 +80420 +80421 +80422 +80423 +80448 +80449 +80450 +80451 +80452 +80453 +80454 +80455 +80480 +80481 +80482 +80483 +80484 +80485 +80486 +80487 +80512 +80513 +80514 +80515 +80516 +80517 +80518 +80519 +80544 +80545 +80546 +80547 +80548 +80549 +80550 +80551 +80576 +80577 +80578 +80579 +80580 +80581 +80582 +80583 +80608 +80609 +80610 +80611 +80612 +80613 +80614 +80615 +80640 +80641 +80642 +80643 +80644 +80645 +80646 +80647 +80672 +80673 +80674 +80675 +80676 +80677 +80678 +80679 +80704 +80705 +80706 +80707 +80708 +80709 +80710 +80711 +80736 +80737 +80738 +80739 +80740 +80741 +80742 +80743 +80768 +80769 +80770 +80771 +80772 +80773 +80774 +80775 +80800 +80801 +80802 +80803 +80804 +80805 +80806 +80807 +80832 +80833 +80834 +80835 +80836 +80837 +80838 +80839 +80864 +80865 +80866 +80867 +80868 +80869 +80870 +80871 +80896 +80897 +80898 +80899 +80900 +80901 +80902 +80903 +80928 +80929 +80930 +80931 +80932 +80933 +80934 +80935 +80960 +80961 +80962 +80963 +80964 +80965 +80966 +80967 +80992 +80993 +80994 +80995 +80996 +80997 +80998 +80999 +81024 +81025 +81026 +81027 +81028 +81029 +81030 +81031 +81056 +81057 +81058 +81059 +81060 +81061 +81062 +81063 +81088 +81089 +81090 +81091 +81092 +81093 +81094 +81095 +81120 +81121 +81122 +81123 +81124 +81125 +81126 +81127 +81152 +81153 +81154 +81155 +81156 +81157 +81158 +81159 +81184 +81185 +81186 +81187 +81188 +81189 +81190 +81191 +81216 +81217 +81218 +81219 +81220 +81221 +81222 +81223 +81248 +81249 +81250 +81251 +81252 +81253 +81254 +81255 +81280 +81281 +81282 +81283 +81284 +81285 +81286 +81287 +81312 +81313 +81314 +81315 +81316 +81317 +81318 +81319 +81344 +81345 +81346 +81347 +81348 +81349 +81350 +81351 +81376 +81377 +81378 +81379 +81380 +81381 +81382 +81383 +81408 +81409 +81410 +81411 +81412 +81413 +81414 +81415 +81440 +81441 +81442 +81443 +81444 +81445 +81446 +81447 +81472 +81473 +81474 +81475 +81476 +81477 +81478 +81479 +81504 +81505 +81506 +81507 +81508 +81509 +81510 +81511 +81536 +81537 +81538 +81539 +81540 +81541 +81542 +81543 +81568 +81569 +81570 +81571 +81572 +81573 +81574 +81575 +81600 +81601 +81602 +81603 +81604 +81605 +81606 +81607 +81632 +81633 +81634 +81635 +81636 +81637 +81638 +81639 +81664 +81665 +81666 +81667 +81668 +81669 +81670 +81671 +81696 +81697 +81698 +81699 +81700 +81701 +81702 +81703 +81728 +81729 +81730 +81731 +81732 +81733 +81734 +81735 +81760 +81761 +81762 +81763 +81764 +81765 +81766 +81767 +81792 +81793 +81794 +81795 +81796 +81797 +81798 +81799 +81824 +81825 +81826 +81827 +81828 +81829 +81830 +81831 +81856 +81857 +81858 +81859 +81860 +81861 +81862 +81863 +81888 +81889 +81890 +81891 +81892 +81893 +81894 +81895 +81920 +81921 +81922 +81923 +81924 +81925 +81926 +81927 +81952 +81953 +81954 +81955 +81956 +81957 +81958 +81959 +81984 +81985 +81986 +81987 +81988 +81989 +81990 +81991 +82016 +82017 +82018 +82019 +82020 +82021 +82022 +82023 +82048 +82049 +82050 +82051 +82052 +82053 +82054 +82055 +82080 +82081 +82082 +82083 +82084 +82085 +82086 +82087 +82112 +82113 +82114 +82115 +82116 +82117 +82118 +82119 +82144 +82145 +82146 +82147 +82148 +82149 +82150 +82151 +82176 +82177 +82178 +82179 +82180 +82181 +82182 +82183 +82208 +82209 +82210 +82211 +82212 +82213 +82214 +82215 +82240 +82241 +82242 +82243 +82244 +82245 +82246 +82247 +82272 +82273 +82274 +82275 +82276 +82277 +82278 +82279 +82304 +82305 +82306 +82307 +82308 +82309 +82310 +82311 +82336 +82337 +82338 +82339 +82340 +82341 +82342 +82343 +82368 +82369 +82370 +82371 +82372 +82373 +82374 +82375 +82400 +82401 +82402 +82403 +82404 +82405 +82406 +82407 +82432 +82433 +82434 +82435 +82436 +82437 +82438 +82439 +82464 +82465 +82466 +82467 +82468 +82469 +82470 +82471 +82496 +82497 +82498 +82499 +82500 +82501 +82502 +82503 +82528 +82529 +82530 +82531 +82532 +82533 +82534 +82535 +82560 +82561 +82562 +82563 +82564 +82565 +82566 +82567 +82592 +82593 +82594 +82595 +82596 +82597 +82598 +82599 +82624 +82625 +82626 +82627 +82628 +82629 +82630 +82631 +82656 +82657 +82658 +82659 +82660 +82661 +82662 +82663 +82688 +82689 +82690 +82691 +82692 +82693 +82694 +82695 +82720 +82721 +82722 +82723 +82724 +82725 +82726 +82727 +82752 +82753 +82754 +82755 +82756 +82757 +82758 +82759 +82784 +82785 +82786 +82787 +82788 +82789 +82790 +82791 +82816 +82817 +82818 +82819 +82820 +82821 +82822 +82823 +82848 +82849 +82850 +82851 +82852 +82853 +82854 +82855 +82880 +82881 +82882 +82883 +82884 +82885 +82886 +82887 +82912 +82913 +82914 +82915 +82916 +82917 +82918 +82919 +82944 +82945 +82946 +82947 +82948 +82949 +82950 +82951 +82976 +82977 +82978 +82979 +82980 +82981 +82982 +82983 +83008 +83009 +83010 +83011 +83012 +83013 +83014 +83015 +83040 +83041 +83042 +83043 +83044 +83045 +83046 +83047 +83072 +83073 +83074 +83075 +83076 +83077 +83078 +83079 +83104 +83105 +83106 +83107 +83108 +83109 +83110 +83111 +83136 +83137 +83138 +83139 +83140 +83141 +83142 +83143 +83168 +83169 +83170 +83171 +83172 +83173 +83174 +83175 +83200 +83201 +83202 +83203 +83204 +83205 +83206 +83207 +83232 +83233 +83234 +83235 +83236 +83237 +83238 +83239 +83264 +83265 +83266 +83267 +83268 +83269 +83270 +83271 +83296 +83297 +83298 +83299 +83300 +83301 +83302 +83303 +83328 +83329 +83330 +83331 +83332 +83333 +83334 +83335 +83360 +83361 +83362 +83363 +83364 +83365 +83366 +83367 +83392 +83393 +83394 +83395 +83396 +83397 +83398 +83399 +83424 +83425 +83426 +83427 +83428 +83429 +83430 +83431 +83456 +83457 +83458 +83459 +83460 +83461 +83462 +83463 +83488 +83489 +83490 +83491 +83492 +83493 +83494 +83495 +83520 +83521 +83522 +83523 +83524 +83525 +83526 +83527 +83552 +83553 +83554 +83555 +83556 +83557 +83558 +83559 +83584 +83585 +83586 +83587 +83588 +83589 +83590 +83591 +83616 +83617 +83618 +83619 +83620 +83621 +83622 +83623 +83648 +83649 +83650 +83651 +83652 +83653 +83654 +83655 +83680 +83681 +83682 +83683 +83684 +83685 +83686 +83687 +83712 +83713 +83714 +83715 +83716 +83717 +83718 +83719 +83744 +83745 +83746 +83747 +83748 +83749 +83750 +83751 +83776 +83777 +83778 +83779 +83780 +83781 +83782 +83783 +83808 +83809 +83810 +83811 +83812 +83813 +83814 +83815 +83840 +83841 +83842 +83843 +83844 +83845 +83846 +83847 +83872 +83873 +83874 +83875 +83876 +83877 +83878 +83879 +83904 +83905 +83906 +83907 +83908 +83909 +83910 +83911 +83936 +83937 +83938 +83939 +83940 +83941 +83942 +83943 +83968 +83969 +83970 +83971 +83972 +83973 +83974 +83975 +84000 +84001 +84002 +84003 +84004 +84005 +84006 +84007 +84032 +84033 +84034 +84035 +84036 +84037 +84038 +84039 +84064 +84065 +84066 +84067 +84068 +84069 +84070 +84071 +84096 +84097 +84098 +84099 +84100 +84101 +84102 +84103 +84128 +84129 +84130 +84131 +84132 +84133 +84134 +84135 +84160 +84161 +84162 +84163 +84164 +84165 +84166 +84167 +84192 +84193 +84194 +84195 +84196 +84197 +84198 +84199 +84224 +84225 +84226 +84227 +84228 +84229 +84230 +84231 +84256 +84257 +84258 +84259 +84260 +84261 +84262 +84263 +84288 +84289 +84290 +84291 +84292 +84293 +84294 +84295 +84320 +84321 +84322 +84323 +84324 +84325 +84326 +84327 +84352 +84353 +84354 +84355 +84356 +84357 +84358 +84359 +84384 +84385 +84386 +84387 +84388 +84389 +84390 +84391 +84416 +84417 +84418 +84419 +84420 +84421 +84422 +84423 +84448 +84449 +84450 +84451 +84452 +84453 +84454 +84455 +84480 +84481 +84482 +84483 +84484 +84485 +84486 +84487 +84512 +84513 +84514 +84515 +84516 +84517 +84518 +84519 +84544 +84545 +84546 +84547 +84548 +84549 +84550 +84551 +84576 +84577 +84578 +84579 +84580 +84581 +84582 +84583 +84608 +84609 +84610 +84611 +84612 +84613 +84614 +84615 +84640 +84641 +84642 +84643 +84644 +84645 +84646 +84647 +84672 +84673 +84674 +84675 +84676 +84677 +84678 +84679 +84704 +84705 +84706 +84707 +84708 +84709 +84710 +84711 +84736 +84737 +84738 +84739 +84740 +84741 +84742 +84743 +84768 +84769 +84770 +84771 +84772 +84773 +84774 +84775 +84800 +84801 +84802 +84803 +84804 +84805 +84806 +84807 +84832 +84833 +84834 +84835 +84836 +84837 +84838 +84839 +84864 +84865 +84866 +84867 +84868 +84869 +84870 +84871 +84896 +84897 +84898 +84899 +84900 +84901 +84902 +84903 +84928 +84929 +84930 +84931 +84932 +84933 +84934 +84935 +84960 +84961 +84962 +84963 +84964 +84965 +84966 +84967 +84992 +84993 +84994 +84995 +84996 +84997 +84998 +84999 +85024 +85025 +85026 +85027 +85028 +85029 +85030 +85031 +85056 +85057 +85058 +85059 +85060 +85061 +85062 +85063 +85088 +85089 +85090 +85091 +85092 +85093 +85094 +85095 +85120 +85121 +85122 +85123 +85124 +85125 +85126 +85127 +85152 +85153 +85154 +85155 +85156 +85157 +85158 +85159 +85184 +85185 +85186 +85187 +85188 +85189 +85190 +85191 +85216 +85217 +85218 +85219 +85220 +85221 +85222 +85223 +85248 +85249 +85250 +85251 +85252 +85253 +85254 +85255 +85280 +85281 +85282 +85283 +85284 +85285 +85286 +85287 +85312 +85313 +85314 +85315 +85316 +85317 +85318 +85319 +85344 +85345 +85346 +85347 +85348 +85349 +85350 +85351 +85376 +85377 +85378 +85379 +85380 +85381 +85382 +85383 +85408 +85409 +85410 +85411 +85412 +85413 +85414 +85415 +85440 +85441 +85442 +85443 +85444 +85445 +85446 +85447 +85472 +85473 +85474 +85475 +85476 +85477 +85478 +85479 +85504 +85505 +85506 +85507 +85508 +85509 +85510 +85511 +85536 +85537 +85538 +85539 +85540 +85541 +85542 +85543 +85568 +85569 +85570 +85571 +85572 +85573 +85574 +85575 +85600 +85601 +85602 +85603 +85604 +85605 +85606 +85607 +85632 +85633 +85634 +85635 +85636 +85637 +85638 +85639 +85664 +85665 +85666 +85667 +85668 +85669 +85670 +85671 +85696 +85697 +85698 +85699 +85700 +85701 +85702 +85703 +85728 +85729 +85730 +85731 +85732 +85733 +85734 +85735 +85760 +85761 +85762 +85763 +85764 +85765 +85766 +85767 +85792 +85793 +85794 +85795 +85796 +85797 +85798 +85799 +85824 +85825 +85826 +85827 +85828 +85829 +85830 +85831 +85856 +85857 +85858 +85859 +85860 +85861 +85862 +85863 +85888 +85889 +85890 +85891 +85892 +85893 +85894 +85895 +85920 +85921 +85922 +85923 +85924 +85925 +85926 +85927 +85952 +85953 +85954 +85955 +85956 +85957 +85958 +85959 +85984 +85985 +85986 +85987 +85988 +85989 +85990 +85991 +86016 +86017 +86018 +86019 +86020 +86021 +86022 +86023 +86048 +86049 +86050 +86051 +86052 +86053 +86054 +86055 +86080 +86081 +86082 +86083 +86084 +86085 +86086 +86087 +86112 +86113 +86114 +86115 +86116 +86117 +86118 +86119 +86144 +86145 +86146 +86147 +86148 +86149 +86150 +86151 +86176 +86177 +86178 +86179 +86180 +86181 +86182 +86183 +86208 +86209 +86210 +86211 +86212 +86213 +86214 +86215 +86240 +86241 +86242 +86243 +86244 +86245 +86246 +86247 +86272 +86273 +86274 +86275 +86276 +86277 +86278 +86279 +86304 +86305 +86306 +86307 +86308 +86309 +86310 +86311 +86336 +86337 +86338 +86339 +86340 +86341 +86342 +86343 +86368 +86369 +86370 +86371 +86372 +86373 +86374 +86375 +86400 +86401 +86402 +86403 +86404 +86405 +86406 +86407 +86432 +86433 +86434 +86435 +86436 +86437 +86438 +86439 +86464 +86465 +86466 +86467 +86468 +86469 +86470 +86471 +86496 +86497 +86498 +86499 +86500 +86501 +86502 +86503 +86528 +86529 +86530 +86531 +86532 +86533 +86534 +86535 +86560 +86561 +86562 +86563 +86564 +86565 +86566 +86567 +86592 +86593 +86594 +86595 +86596 +86597 +86598 +86599 +86624 +86625 +86626 +86627 +86628 +86629 +86630 +86631 +86656 +86657 +86658 +86659 +86660 +86661 +86662 +86663 +86688 +86689 +86690 +86691 +86692 +86693 +86694 +86695 +86720 +86721 +86722 +86723 +86724 +86725 +86726 +86727 +86752 +86753 +86754 +86755 +86756 +86757 +86758 +86759 +86784 +86785 +86786 +86787 +86788 +86789 +86790 +86791 +86816 +86817 +86818 +86819 +86820 +86821 +86822 +86823 +86848 +86849 +86850 +86851 +86852 +86853 +86854 +86855 +86880 +86881 +86882 +86883 +86884 +86885 +86886 +86887 +86912 +86913 +86914 +86915 +86916 +86917 +86918 +86919 +86944 +86945 +86946 +86947 +86948 +86949 +86950 +86951 +86976 +86977 +86978 +86979 +86980 +86981 +86982 +86983 +87008 +87009 +87010 +87011 +87012 +87013 +87014 +87015 +87040 +87041 +87042 +87043 +87044 +87045 +87046 +87047 +87072 +87073 +87074 +87075 +87076 +87077 +87078 +87079 +87104 +87105 +87106 +87107 +87108 +87109 +87110 +87111 +87136 +87137 +87138 +87139 +87140 +87141 +87142 +87143 +87168 +87169 +87170 +87171 +87172 +87173 +87174 +87175 +87200 +87201 +87202 +87203 +87204 +87205 +87206 +87207 +87232 +87233 +87234 +87235 +87236 +87237 +87238 +87239 +87264 +87265 +87266 +87267 +87268 +87269 +87270 +87271 +87296 +87297 +87298 +87299 +87300 +87301 +87302 +87303 +87328 +87329 +87330 +87331 +87332 +87333 +87334 +87335 +87360 +87361 +87362 +87363 +87364 +87365 +87366 +87367 +87392 +87393 +87394 +87395 +87396 +87397 +87398 +87399 +87424 +87425 +87426 +87427 +87428 +87429 +87430 +87431 +87456 +87457 +87458 +87459 +87460 +87461 +87462 +87463 +87488 +87489 +87490 +87491 +87492 +87493 +87494 +87495 +87520 +87521 +87522 +87523 +87524 +87525 +87526 +87527 +87552 +87553 +87554 +87555 +87556 +87557 +87558 +87559 +87584 +87585 +87586 +87587 +87588 +87589 +87590 +87591 +87616 +87617 +87618 +87619 +87620 +87621 +87622 +87623 +87648 +87649 +87650 +87651 +87652 +87653 +87654 +87655 +87680 +87681 +87682 +87683 +87684 +87685 +87686 +87687 +87712 +87713 +87714 +87715 +87716 +87717 +87718 +87719 +87744 +87745 +87746 +87747 +87748 +87749 +87750 +87751 +87776 +87777 +87778 +87779 +87780 +87781 +87782 +87783 +87808 +87809 +87810 +87811 +87812 +87813 +87814 +87815 +87840 +87841 +87842 +87843 +87844 +87845 +87846 +87847 +87872 +87873 +87874 +87875 +87876 +87877 +87878 +87879 +87904 +87905 +87906 +87907 +87908 +87909 +87910 +87911 +87936 +87937 +87938 +87939 +87940 +87941 +87942 +87943 +87968 +87969 +87970 +87971 +87972 +87973 +87974 +87975 +88000 +88001 +88002 +88003 +88004 +88005 +88006 +88007 +88032 +88033 +88034 +88035 +88036 +88037 +88038 +88039 +88064 +88065 +88066 +88067 +88068 +88069 +88070 +88071 +88096 +88097 +88098 +88099 +88100 +88101 +88102 +88103 +88128 +88129 +88130 +88131 +88132 +88133 +88134 +88135 +88160 +88161 +88162 +88163 +88164 +88165 +88166 +88167 +88192 +88193 +88194 +88195 +88196 +88197 +88198 +88199 +88224 +88225 +88226 +88227 +88228 +88229 +88230 +88231 +88256 +88257 +88258 +88259 +88260 +88261 +88262 +88263 +88288 +88289 +88290 +88291 +88292 +88293 +88294 +88295 +88320 +88321 +88322 +88323 +88324 +88325 +88326 +88327 +88352 +88353 +88354 +88355 +88356 +88357 +88358 +88359 +88384 +88385 +88386 +88387 +88388 +88389 +88390 +88391 +88416 +88417 +88418 +88419 +88420 +88421 +88422 +88423 +88448 +88449 +88450 +88451 +88452 +88453 +88454 +88455 +88480 +88481 +88482 +88483 +88484 +88485 +88486 +88487 +88512 +88513 +88514 +88515 +88516 +88517 +88518 +88519 +88544 +88545 +88546 +88547 +88548 +88549 +88550 +88551 +88576 +88577 +88578 +88579 +88580 +88581 +88582 +88583 +88608 +88609 +88610 +88611 +88612 +88613 +88614 +88615 +88640 +88641 +88642 +88643 +88644 +88645 +88646 +88647 +88672 +88673 +88674 +88675 +88676 +88677 +88678 +88679 +88704 +88705 +88706 +88707 +88708 +88709 +88710 +88711 +88736 +88737 +88738 +88739 +88740 +88741 +88742 +88743 +88768 +88769 +88770 +88771 +88772 +88773 +88774 +88775 +88800 +88801 +88802 +88803 +88804 +88805 +88806 +88807 +88832 +88833 +88834 +88835 +88836 +88837 +88838 +88839 +88864 +88865 +88866 +88867 +88868 +88869 +88870 +88871 +88896 +88897 +88898 +88899 +88900 +88901 +88902 +88903 +88928 +88929 +88930 +88931 +88932 +88933 +88934 +88935 +88960 +88961 +88962 +88963 +88964 +88965 +88966 +88967 +88992 +88993 +88994 +88995 +88996 +88997 +88998 +88999 +89024 +89025 +89026 +89027 +89028 +89029 +89030 +89031 +89056 +89057 +89058 +89059 +89060 +89061 +89062 +89063 +89088 +89089 +89090 +89091 +89092 +89093 +89094 +89095 +89120 +89121 +89122 +89123 +89124 +89125 +89126 +89127 +89152 +89153 +89154 +89155 +89156 +89157 +89158 +89159 +89184 +89185 +89186 +89187 +89188 +89189 +89190 +89191 +89216 +89217 +89218 +89219 +89220 +89221 +89222 +89223 +89248 +89249 +89250 +89251 +89252 +89253 +89254 +89255 +89280 +89281 +89282 +89283 +89284 +89285 +89286 +89287 +89312 +89313 +89314 +89315 +89316 +89317 +89318 +89319 +89344 +89345 +89346 +89347 +89348 +89349 +89350 +89351 +89376 +89377 +89378 +89379 +89380 +89381 +89382 +89383 +89408 +89409 +89410 +89411 +89412 +89413 +89414 +89415 +89440 +89441 +89442 +89443 +89444 +89445 +89446 +89447 +89472 +89473 +89474 +89475 +89476 +89477 +89478 +89479 +89504 +89505 +89506 +89507 +89508 +89509 +89510 +89511 +89536 +89537 +89538 +89539 +89540 +89541 +89542 +89543 +89568 +89569 +89570 +89571 +89572 +89573 +89574 +89575 +89600 +89601 +89602 +89603 +89604 +89605 +89606 +89607 +89632 +89633 +89634 +89635 +89636 +89637 +89638 +89639 +89664 +89665 +89666 +89667 +89668 +89669 +89670 +89671 +89696 +89697 +89698 +89699 +89700 +89701 +89702 +89703 +89728 +89729 +89730 +89731 +89732 +89733 +89734 +89735 +89760 +89761 +89762 +89763 +89764 +89765 +89766 +89767 +89792 +89793 +89794 +89795 +89796 +89797 +89798 +89799 +89824 +89825 +89826 +89827 +89828 +89829 +89830 +89831 +89856 +89857 +89858 +89859 +89860 +89861 +89862 +89863 +89888 +89889 +89890 +89891 +89892 +89893 +89894 +89895 +89920 +89921 +89922 +89923 +89924 +89925 +89926 +89927 +89952 +89953 +89954 +89955 +89956 +89957 +89958 +89959 +89984 +89985 +89986 +89987 +89988 +89989 +89990 +89991 +90016 +90017 +90018 +90019 +90020 +90021 +90022 +90023 +90048 +90049 +90050 +90051 +90052 +90053 +90054 +90055 +90080 +90081 +90082 +90083 +90084 +90085 +90086 +90087 +90112 +90113 +90114 +90115 +90116 +90117 +90118 +90119 +90144 +90145 +90146 +90147 +90148 +90149 +90150 +90151 +90176 +90177 +90178 +90179 +90180 +90181 +90182 +90183 +90208 +90209 +90210 +90211 +90212 +90213 +90214 +90215 +90240 +90241 +90242 +90243 +90244 +90245 +90246 +90247 +90272 +90273 +90274 +90275 +90276 +90277 +90278 +90279 +90304 +90305 +90306 +90307 +90308 +90309 +90310 +90311 +90336 +90337 +90338 +90339 +90340 +90341 +90342 +90343 +90368 +90369 +90370 +90371 +90372 +90373 +90374 +90375 +90400 +90401 +90402 +90403 +90404 +90405 +90406 +90407 +90432 +90433 +90434 +90435 +90436 +90437 +90438 +90439 +90464 +90465 +90466 +90467 +90468 +90469 +90470 +90471 +90496 +90497 +90498 +90499 +90500 +90501 +90502 +90503 +90528 +90529 +90530 +90531 +90532 +90533 +90534 +90535 +90560 +90561 +90562 +90563 +90564 +90565 +90566 +90567 +90592 +90593 +90594 +90595 +90596 +90597 +90598 +90599 +90624 +90625 +90626 +90627 +90628 +90629 +90630 +90631 +90656 +90657 +90658 +90659 +90660 +90661 +90662 +90663 +90688 +90689 +90690 +90691 +90692 +90693 +90694 +90695 +90720 +90721 +90722 +90723 +90724 +90725 +90726 +90727 +90752 +90753 +90754 +90755 +90756 +90757 +90758 +90759 +90784 +90785 +90786 +90787 +90788 +90789 +90790 +90791 +90816 +90817 +90818 +90819 +90820 +90821 +90822 +90823 +90848 +90849 +90850 +90851 +90852 +90853 +90854 +90855 +90880 +90881 +90882 +90883 +90884 +90885 +90886 +90887 +90912 +90913 +90914 +90915 +90916 +90917 +90918 +90919 +90944 +90945 +90946 +90947 +90948 +90949 +90950 +90951 +90976 +90977 +90978 +90979 +90980 +90981 +90982 +90983 +91008 +91009 +91010 +91011 +91012 +91013 +91014 +91015 +91040 +91041 +91042 +91043 +91044 +91045 +91046 +91047 +91072 +91073 +91074 +91075 +91076 +91077 +91078 +91079 +91104 +91105 +91106 +91107 +91108 +91109 +91110 +91111 +91136 +91137 +91138 +91139 +91140 +91141 +91142 +91143 +91168 +91169 +91170 +91171 +91172 +91173 +91174 +91175 +91200 +91201 +91202 +91203 +91204 +91205 +91206 +91207 +91232 +91233 +91234 +91235 +91236 +91237 +91238 +91239 +91264 +91265 +91266 +91267 +91268 +91269 +91270 +91271 +91296 +91297 +91298 +91299 +91300 +91301 +91302 +91303 +91328 +91329 +91330 +91331 +91332 +91333 +91334 +91335 +91360 +91361 +91362 +91363 +91364 +91365 +91366 +91367 +91392 +91393 +91394 +91395 +91396 +91397 +91398 +91399 +91424 +91425 +91426 +91427 +91428 +91429 +91430 +91431 +91456 +91457 +91458 +91459 +91460 +91461 +91462 +91463 +91488 +91489 +91490 +91491 +91492 +91493 +91494 +91495 +91520 +91521 +91522 +91523 +91524 +91525 +91526 +91527 +91552 +91553 +91554 +91555 +91556 +91557 +91558 +91559 +91584 +91585 +91586 +91587 +91588 +91589 +91590 +91591 +91616 +91617 +91618 +91619 +91620 +91621 +91622 +91623 +91648 +91649 +91650 +91651 +91652 +91653 +91654 +91655 +91680 +91681 +91682 +91683 +91684 +91685 +91686 +91687 +91712 +91713 +91714 +91715 +91716 +91717 +91718 +91719 +91744 +91745 +91746 +91747 +91748 +91749 +91750 +91751 +91776 +91777 +91778 +91779 +91780 +91781 +91782 +91783 +91808 +91809 +91810 +91811 +91812 +91813 +91814 +91815 +91840 +91841 +91842 +91843 +91844 +91845 +91846 +91847 +91872 +91873 +91874 +91875 +91876 +91877 +91878 +91879 +91904 +91905 +91906 +91907 +91908 +91909 +91910 +91911 +91936 +91937 +91938 +91939 +91940 +91941 +91942 +91943 +91968 +91969 +91970 +91971 +91972 +91973 +91974 +91975 +92000 +92001 +92002 +92003 +92004 +92005 +92006 +92007 +92032 +92033 +92034 +92035 +92036 +92037 +92038 +92039 +92064 +92065 +92066 +92067 +92068 +92069 +92070 +92071 +92096 +92097 +92098 +92099 +92100 +92101 +92102 +92103 +92128 +92129 +92130 +92131 +92132 +92133 +92134 +92135 +92160 +92161 +92162 +92163 +92164 +92165 +92166 +92167 +92192 +92193 +92194 +92195 +92196 +92197 +92198 +92199 +92224 +92225 +92226 +92227 +92228 +92229 +92230 +92231 +92256 +92257 +92258 +92259 +92260 +92261 +92262 +92263 +92288 +92289 +92290 +92291 +92292 +92293 +92294 +92295 +92320 +92321 +92322 +92323 +92324 +92325 +92326 +92327 +92352 +92353 +92354 +92355 +92356 +92357 +92358 +92359 +92384 +92385 +92386 +92387 +92388 +92389 +92390 +92391 +92416 +92417 +92418 +92419 +92420 +92421 +92422 +92423 +92448 +92449 +92450 +92451 +92452 +92453 +92454 +92455 +92480 +92481 +92482 +92483 +92484 +92485 +92486 +92487 +92512 +92513 +92514 +92515 +92516 +92517 +92518 +92519 +92544 +92545 +92546 +92547 +92548 +92549 +92550 +92551 +92576 +92577 +92578 +92579 +92580 +92581 +92582 +92583 +92608 +92609 +92610 +92611 +92612 +92613 +92614 +92615 +92640 +92641 +92642 +92643 +92644 +92645 +92646 +92647 +92672 +92673 +92674 +92675 +92676 +92677 +92678 +92679 +92704 +92705 +92706 +92707 +92708 +92709 +92710 +92711 +92736 +92737 +92738 +92739 +92740 +92741 +92742 +92743 +92768 +92769 +92770 +92771 +92772 +92773 +92774 +92775 +92800 +92801 +92802 +92803 +92804 +92805 +92806 +92807 +92832 +92833 +92834 +92835 +92836 +92837 +92838 +92839 +92864 +92865 +92866 +92867 +92868 +92869 +92870 +92871 +92896 +92897 +92898 +92899 +92900 +92901 +92902 +92903 +92928 +92929 +92930 +92931 +92932 +92933 +92934 +92935 +92960 +92961 +92962 +92963 +92964 +92965 +92966 +92967 +92992 +92993 +92994 +92995 +92996 +92997 +92998 +92999 +93024 +93025 +93026 +93027 +93028 +93029 +93030 +93031 +93056 +93057 +93058 +93059 +93060 +93061 +93062 +93063 +93088 +93089 +93090 +93091 +93092 +93093 +93094 +93095 +93120 +93121 +93122 +93123 +93124 +93125 +93126 +93127 +93152 +93153 +93154 +93155 +93156 +93157 +93158 +93159 +93184 +93185 +93186 +93187 +93188 +93189 +93190 +93191 +93216 +93217 +93218 +93219 +93220 +93221 +93222 +93223 +93248 +93249 +93250 +93251 +93252 +93253 +93254 +93255 +93280 +93281 +93282 +93283 +93284 +93285 +93286 +93287 +93312 +93313 +93314 +93315 +93316 +93317 +93318 +93319 +93344 +93345 +93346 +93347 +93348 +93349 +93350 +93351 +93376 +93377 +93378 +93379 +93380 +93381 +93382 +93383 +93408 +93409 +93410 +93411 +93412 +93413 +93414 +93415 +93440 +93441 +93442 +93443 +93444 +93445 +93446 +93447 +93472 +93473 +93474 +93475 +93476 +93477 +93478 +93479 +93504 +93505 +93506 +93507 +93508 +93509 +93510 +93511 +93536 +93537 +93538 +93539 +93540 +93541 +93542 +93543 +93568 +93569 +93570 +93571 +93572 +93573 +93574 +93575 +93600 +93601 +93602 +93603 +93604 +93605 +93606 +93607 +93632 +93633 +93634 +93635 +93636 +93637 +93638 +93639 +93664 +93665 +93666 +93667 +93668 +93669 +93670 +93671 +93696 +93697 +93698 +93699 +93700 +93701 +93702 +93703 +93728 +93729 +93730 +93731 +93732 +93733 +93734 +93735 +93760 +93761 +93762 +93763 +93764 +93765 +93766 +93767 +93792 +93793 +93794 +93795 +93796 +93797 +93798 +93799 +93824 +93825 +93826 +93827 +93828 +93829 +93830 +93831 +93856 +93857 +93858 +93859 +93860 +93861 +93862 +93863 +93888 +93889 +93890 +93891 +93892 +93893 +93894 +93895 +93920 +93921 +93922 +93923 +93924 +93925 +93926 +93927 +93952 +93953 +93954 +93955 +93956 +93957 +93958 +93959 +93984 +93985 +93986 +93987 +93988 +93989 +93990 +93991 +94016 +94017 +94018 +94019 +94020 +94021 +94022 +94023 +94048 +94049 +94050 +94051 +94052 +94053 +94054 +94055 +94080 +94081 +94082 +94083 +94084 +94085 +94086 +94087 +94112 +94113 +94114 +94115 +94116 +94117 +94118 +94119 +94144 +94145 +94146 +94147 +94148 +94149 +94150 +94151 +94176 +94177 +94178 +94179 +94180 +94181 +94182 +94183 +94208 +94209 +94210 +94211 +94212 +94213 +94214 +94215 +94240 +94241 +94242 +94243 +94244 +94245 +94246 +94247 +94272 +94273 +94274 +94275 +94276 +94277 +94278 +94279 +94304 +94305 +94306 +94307 +94308 +94309 +94310 +94311 +94336 +94337 +94338 +94339 +94340 +94341 +94342 +94343 +94368 +94369 +94370 +94371 +94372 +94373 +94374 +94375 +94400 +94401 +94402 +94403 +94404 +94405 +94406 +94407 +94432 +94433 +94434 +94435 +94436 +94437 +94438 +94439 +94464 +94465 +94466 +94467 +94468 +94469 +94470 +94471 +94496 +94497 +94498 +94499 +94500 +94501 +94502 +94503 +94528 +94529 +94530 +94531 +94532 +94533 +94534 +94535 +94560 +94561 +94562 +94563 +94564 +94565 +94566 +94567 +94592 +94593 +94594 +94595 +94596 +94597 +94598 +94599 +94624 +94625 +94626 +94627 +94628 +94629 +94630 +94631 +94656 +94657 +94658 +94659 +94660 +94661 +94662 +94663 +94688 +94689 +94690 +94691 +94692 +94693 +94694 +94695 +94720 +94721 +94722 +94723 +94724 +94725 +94726 +94727 +94752 +94753 +94754 +94755 +94756 +94757 +94758 +94759 +94784 +94785 +94786 +94787 +94788 +94789 +94790 +94791 +94816 +94817 +94818 +94819 +94820 +94821 +94822 +94823 +94848 +94849 +94850 +94851 +94852 +94853 +94854 +94855 +94880 +94881 +94882 +94883 +94884 +94885 +94886 +94887 +94912 +94913 +94914 +94915 +94916 +94917 +94918 +94919 +94944 +94945 +94946 +94947 +94948 +94949 +94950 +94951 +94976 +94977 +94978 +94979 +94980 +94981 +94982 +94983 +95008 +95009 +95010 +95011 +95012 +95013 +95014 +95015 +95040 +95041 +95042 +95043 +95044 +95045 +95046 +95047 +95072 +95073 +95074 +95075 +95076 +95077 +95078 +95079 +95104 +95105 +95106 +95107 +95108 +95109 +95110 +95111 +95136 +95137 +95138 +95139 +95140 +95141 +95142 +95143 +95168 +95169 +95170 +95171 +95172 +95173 +95174 +95175 +95200 +95201 +95202 +95203 +95204 +95205 +95206 +95207 +95232 +95233 +95234 +95235 +95236 +95237 +95238 +95239 +95264 +95265 +95266 +95267 +95268 +95269 +95270 +95271 +95296 +95297 +95298 +95299 +95300 +95301 +95302 +95303 +95328 +95329 +95330 +95331 +95332 +95333 +95334 +95335 +95360 +95361 +95362 +95363 +95364 +95365 +95366 +95367 +95392 +95393 +95394 +95395 +95396 +95397 +95398 +95399 +95424 +95425 +95426 +95427 +95428 +95429 +95430 +95431 +95456 +95457 +95458 +95459 +95460 +95461 +95462 +95463 +95488 +95489 +95490 +95491 +95492 +95493 +95494 +95495 +95520 +95521 +95522 +95523 +95524 +95525 +95526 +95527 +95552 +95553 +95554 +95555 +95556 +95557 +95558 +95559 +95584 +95585 +95586 +95587 +95588 +95589 +95590 +95591 +95616 +95617 +95618 +95619 +95620 +95621 +95622 +95623 +95648 +95649 +95650 +95651 +95652 +95653 +95654 +95655 +95680 +95681 +95682 +95683 +95684 +95685 +95686 +95687 +95712 +95713 +95714 +95715 +95716 +95717 +95718 +95719 +95744 +95745 +95746 +95747 +95748 +95749 +95750 +95751 +95776 +95777 +95778 +95779 +95780 +95781 +95782 +95783 +95808 +95809 +95810 +95811 +95812 +95813 +95814 +95815 +95840 +95841 +95842 +95843 +95844 +95845 +95846 +95847 +95872 +95873 +95874 +95875 +95876 +95877 +95878 +95879 +95904 +95905 +95906 +95907 +95908 +95909 +95910 +95911 +95936 +95937 +95938 +95939 +95940 +95941 +95942 +95943 +95968 +95969 +95970 +95971 +95972 +95973 +95974 +95975 +96000 +96001 +96002 +96003 +96004 +96005 +96006 +96007 +96032 +96033 +96034 +96035 +96036 +96037 +96038 +96039 +96064 +96065 +96066 +96067 +96068 +96069 +96070 +96071 +96096 +96097 +96098 +96099 +96100 +96101 +96102 +96103 +96128 +96129 +96130 +96131 +96132 +96133 +96134 +96135 +96160 +96161 +96162 +96163 +96164 +96165 +96166 +96167 +96192 +96193 +96194 +96195 +96196 +96197 +96198 +96199 +96224 +96225 +96226 +96227 +96228 +96229 +96230 +96231 +96256 +96257 +96258 +96259 +96260 +96261 +96262 +96263 +96288 +96289 +96290 +96291 +96292 +96293 +96294 +96295 +96320 +96321 +96322 +96323 +96324 +96325 +96326 +96327 +96352 +96353 +96354 +96355 +96356 +96357 +96358 +96359 +96384 +96385 +96386 +96387 +96388 +96389 +96390 +96391 +96416 +96417 +96418 +96419 +96420 +96421 +96422 +96423 +96448 +96449 +96450 +96451 +96452 +96453 +96454 +96455 +96480 +96481 +96482 +96483 +96484 +96485 +96486 +96487 +96512 +96513 +96514 +96515 +96516 +96517 +96518 +96519 +96544 +96545 +96546 +96547 +96548 +96549 +96550 +96551 +96576 +96577 +96578 +96579 +96580 +96581 +96582 +96583 +96608 +96609 +96610 +96611 +96612 +96613 +96614 +96615 +96640 +96641 +96642 +96643 +96644 +96645 +96646 +96647 +96672 +96673 +96674 +96675 +96676 +96677 +96678 +96679 +96704 +96705 +96706 +96707 +96708 +96709 +96710 +96711 +96736 +96737 +96738 +96739 +96740 +96741 +96742 +96743 +96768 +96769 +96770 +96771 +96772 +96773 +96774 +96775 +96800 +96801 +96802 +96803 +96804 +96805 +96806 +96807 +96832 +96833 +96834 +96835 +96836 +96837 +96838 +96839 +96864 +96865 +96866 +96867 +96868 +96869 +96870 +96871 +96896 +96897 +96898 +96899 +96900 +96901 +96902 +96903 +96928 +96929 +96930 +96931 +96932 +96933 +96934 +96935 +96960 +96961 +96962 +96963 +96964 +96965 +96966 +96967 +96992 +96993 +96994 +96995 +96996 +96997 +96998 +96999 +97024 +97025 +97026 +97027 +97028 +97029 +97030 +97031 +97056 +97057 +97058 +97059 +97060 +97061 +97062 +97063 +97088 +97089 +97090 +97091 +97092 +97093 +97094 +97095 +97120 +97121 +97122 +97123 +97124 +97125 +97126 +97127 +97152 +97153 +97154 +97155 +97156 +97157 +97158 +97159 +97184 +97185 +97186 +97187 +97188 +97189 +97190 +97191 +97216 +97217 +97218 +97219 +97220 +97221 +97222 +97223 +97248 +97249 +97250 +97251 +97252 +97253 +97254 +97255 +97280 +97281 +97282 +97283 +97284 +97285 +97286 +97287 +97312 +97313 +97314 +97315 +97316 +97317 +97318 +97319 +97344 +97345 +97346 +97347 +97348 +97349 +97350 +97351 +97376 +97377 +97378 +97379 +97380 +97381 +97382 +97383 +97408 +97409 +97410 +97411 +97412 +97413 +97414 +97415 +97440 +97441 +97442 +97443 +97444 +97445 +97446 +97447 +97472 +97473 +97474 +97475 +97476 +97477 +97478 +97479 +97504 +97505 +97506 +97507 +97508 +97509 +97510 +97511 +97536 +97537 +97538 +97539 +97540 +97541 +97542 +97543 +97568 +97569 +97570 +97571 +97572 +97573 +97574 +97575 +97600 +97601 +97602 +97603 +97604 +97605 +97606 +97607 +97632 +97633 +97634 +97635 +97636 +97637 +97638 +97639 +97664 +97665 +97666 +97667 +97668 +97669 +97670 +97671 +97696 +97697 +97698 +97699 +97700 +97701 +97702 +97703 +97728 +97729 +97730 +97731 +97732 +97733 +97734 +97735 +97760 +97761 +97762 +97763 +97764 +97765 +97766 +97767 +97792 +97793 +97794 +97795 +97796 +97797 +97798 +97799 +97824 +97825 +97826 +97827 +97828 +97829 +97830 +97831 +97856 +97857 +97858 +97859 +97860 +97861 +97862 +97863 +97888 +97889 +97890 +97891 +97892 +97893 +97894 +97895 +97920 +97921 +97922 +97923 +97924 +97925 +97926 +97927 +97952 +97953 +97954 +97955 +97956 +97957 +97958 +97959 +97984 +97985 +97986 +97987 +97988 +97989 +97990 +97991 +98016 +98017 +98018 +98019 +98020 +98021 +98022 +98023 +98048 +98049 +98050 +98051 +98052 +98053 +98054 +98055 +98080 +98081 +98082 +98083 +98084 +98085 +98086 +98087 +98112 +98113 +98114 +98115 +98116 +98117 +98118 +98119 +98144 +98145 +98146 +98147 +98148 +98149 +98150 +98151 +98176 +98177 +98178 +98179 +98180 +98181 +98182 +98183 +98208 +98209 +98210 +98211 +98212 +98213 +98214 +98215 +98240 +98241 +98242 +98243 +98244 +98245 +98246 +98247 +98272 +98273 +98274 +98275 +98276 +98277 +98278 +98279 +98304 +98305 +98306 +98307 +98308 +98309 +98310 +98311 +98336 +98337 +98338 +98339 +98340 +98341 +98342 +98343 +98368 +98369 +98370 +98371 +98372 +98373 +98374 +98375 +98400 +98401 +98402 +98403 +98404 +98405 +98406 +98407 +98432 +98433 +98434 +98435 +98436 +98437 +98438 +98439 +98464 +98465 +98466 +98467 +98468 +98469 +98470 +98471 +98496 +98497 +98498 +98499 +98500 +98501 +98502 +98503 +98528 +98529 +98530 +98531 +98532 +98533 +98534 +98535 +98560 +98561 +98562 +98563 +98564 +98565 +98566 +98567 +98592 +98593 +98594 +98595 +98596 +98597 +98598 +98599 +98624 +98625 +98626 +98627 +98628 +98629 +98630 +98631 +98656 +98657 +98658 +98659 +98660 +98661 +98662 +98663 +98688 +98689 +98690 +98691 +98692 +98693 +98694 +98695 +98720 +98721 +98722 +98723 +98724 +98725 +98726 +98727 +98752 +98753 +98754 +98755 +98756 +98757 +98758 +98759 +98784 +98785 +98786 +98787 +98788 +98789 +98790 +98791 +98816 +98817 +98818 +98819 +98820 +98821 +98822 +98823 +98848 +98849 +98850 +98851 +98852 +98853 +98854 +98855 +98880 +98881 +98882 +98883 +98884 +98885 +98886 +98887 +98912 +98913 +98914 +98915 +98916 +98917 +98918 +98919 +98944 +98945 +98946 +98947 +98948 +98949 +98950 +98951 +98976 +98977 +98978 +98979 +98980 +98981 +98982 +98983 +99008 +99009 +99010 +99011 +99012 +99013 +99014 +99015 +99040 +99041 +99042 +99043 +99044 +99045 +99046 +99047 +99072 +99073 +99074 +99075 +99076 +99077 +99078 +99079 +99104 +99105 +99106 +99107 +99108 +99109 +99110 +99111 +99136 +99137 +99138 +99139 +99140 +99141 +99142 +99143 +99168 +99169 +99170 +99171 +99172 +99173 +99174 +99175 +99200 +99201 +99202 +99203 +99204 +99205 +99206 +99207 +99232 +99233 +99234 +99235 +99236 +99237 +99238 +99239 +99264 +99265 +99266 +99267 +99268 +99269 +99270 +99271 +99296 +99297 +99298 +99299 +99300 +99301 +99302 +99303 +99328 +99329 +99330 +99331 +99332 +99333 +99334 +99335 +99360 +99361 +99362 +99363 +99364 +99365 +99366 +99367 +99392 +99393 +99394 +99395 +99396 +99397 +99398 +99399 +99424 +99425 +99426 +99427 +99428 +99429 +99430 +99431 +99456 +99457 +99458 +99459 +99460 +99461 +99462 +99463 +99488 +99489 +99490 +99491 +99492 +99493 +99494 +99495 +99520 +99521 +99522 +99523 +99524 +99525 +99526 +99527 +99552 +99553 +99554 +99555 +99556 +99557 +99558 +99559 +99584 +99585 +99586 +99587 +99588 +99589 +99590 +99591 +99616 +99617 +99618 +99619 +99620 +99621 +99622 +99623 +99648 +99649 +99650 +99651 +99652 +99653 +99654 +99655 +99680 +99681 +99682 +99683 +99684 +99685 +99686 +99687 +99712 +99713 +99714 +99715 +99716 +99717 +99718 +99719 +99744 +99745 +99746 +99747 +99748 +99749 +99750 +99751 +99776 +99777 +99778 +99779 +99780 +99781 +99782 +99783 +99808 +99809 +99810 +99811 +99812 +99813 +99814 +99815 +99840 +99841 +99842 +99843 +99844 +99845 +99846 +99847 +99872 +99873 +99874 +99875 +99876 +99877 +99878 +99879 +99904 +99905 +99906 +99907 +99908 +99909 +99910 +99911 +99936 +99937 +99938 +99939 +99940 +99941 +99942 +99943 +99968 +99969 +99970 +99971 +99972 +99973 +99974 +99975 +100000 +100001 +100002 +100003 +100004 +100005 +100006 +100007 +100032 +100033 +100034 +100035 +100036 +100037 +100038 +100039 +100064 +100065 +100066 +100067 +100068 +100069 +100070 +100071 +100096 +100097 +100098 +100099 +100100 +100101 +100102 +100103 +100128 +100129 +100130 +100131 +100132 +100133 +100134 +100135 +100160 +100161 +100162 +100163 +100164 +100165 +100166 +100167 +100192 +100193 +100194 +100195 +100196 +100197 +100198 +100199 +100224 +100225 +100226 +100227 +100228 +100229 +100230 +100231 +100256 +100257 +100258 +100259 +100260 +100261 +100262 +100263 +100288 +100289 +100290 +100291 +100292 +100293 +100294 +100295 +100320 +100321 +100322 +100323 +100324 +100325 +100326 +100327 +100352 +100353 +100354 +100355 +100356 +100357 +100358 +100359 +100384 +100385 +100386 +100387 +100388 +100389 +100390 +100391 +100416 +100417 +100418 +100419 +100420 +100421 +100422 +100423 +100448 +100449 +100450 +100451 +100452 +100453 +100454 +100455 +100480 +100481 +100482 +100483 +100484 +100485 +100486 +100487 +100512 +100513 +100514 +100515 +100516 +100517 +100518 +100519 +100544 +100545 +100546 +100547 +100548 +100549 +100550 +100551 +100576 +100577 +100578 +100579 +100580 +100581 +100582 +100583 +100608 +100609 +100610 +100611 +100612 +100613 +100614 +100615 +100640 +100641 +100642 +100643 +100644 +100645 +100646 +100647 +100672 +100673 +100674 +100675 +100676 +100677 +100678 +100679 +100704 +100705 +100706 +100707 +100708 +100709 +100710 +100711 +100736 +100737 +100738 +100739 +100740 +100741 +100742 +100743 +100768 +100769 +100770 +100771 +100772 +100773 +100774 +100775 +100800 +100801 +100802 +100803 +100804 +100805 +100806 +100807 +100832 +100833 +100834 +100835 +100836 +100837 +100838 +100839 +100864 +100865 +100866 +100867 +100868 +100869 +100870 +100871 +100896 +100897 +100898 +100899 +100900 +100901 +100902 +100903 +100928 +100929 +100930 +100931 +100932 +100933 +100934 +100935 +100960 +100961 +100962 +100963 +100964 +100965 +100966 +100967 +100992 +100993 +100994 +100995 +100996 +100997 +100998 +100999 +101024 +101025 +101026 +101027 +101028 +101029 +101030 +101031 +101056 +101057 +101058 +101059 +101060 +101061 +101062 +101063 +101088 +101089 +101090 +101091 +101092 +101093 +101094 +101095 +101120 +101121 +101122 +101123 +101124 +101125 +101126 +101127 +101152 +101153 +101154 +101155 +101156 +101157 +101158 +101159 +101184 +101185 +101186 +101187 +101188 +101189 +101190 +101191 +101216 +101217 +101218 +101219 +101220 +101221 +101222 +101223 +101248 +101249 +101250 +101251 +101252 +101253 +101254 +101255 +101280 +101281 +101282 +101283 +101284 +101285 +101286 +101287 +101312 +101313 +101314 +101315 +101316 +101317 +101318 +101319 +101344 +101345 +101346 +101347 +101348 +101349 +101350 +101351 +101376 +101377 +101378 +101379 +101380 +101381 +101382 +101383 +101408 +101409 +101410 +101411 +101412 +101413 +101414 +101415 +101440 +101441 +101442 +101443 +101444 +101445 +101446 +101447 +101472 +101473 +101474 +101475 +101476 +101477 +101478 +101479 +101504 +101505 +101506 +101507 +101508 +101509 +101510 +101511 +101536 +101537 +101538 +101539 +101540 +101541 +101542 +101543 +101568 +101569 +101570 +101571 +101572 +101573 +101574 +101575 +101600 +101601 +101602 +101603 +101604 +101605 +101606 +101607 +101632 +101633 +101634 +101635 +101636 +101637 +101638 +101639 +101664 +101665 +101666 +101667 +101668 +101669 +101670 +101671 +101696 +101697 +101698 +101699 +101700 +101701 +101702 +101703 +101728 +101729 +101730 +101731 +101732 +101733 +101734 +101735 +101760 +101761 +101762 +101763 +101764 +101765 +101766 +101767 +101792 +101793 +101794 +101795 +101796 +101797 +101798 +101799 +101824 +101825 +101826 +101827 +101828 +101829 +101830 +101831 +101856 +101857 +101858 +101859 +101860 +101861 +101862 +101863 +101888 +101889 +101890 +101891 +101892 +101893 +101894 +101895 +101920 +101921 +101922 +101923 +101924 +101925 +101926 +101927 +101952 +101953 +101954 +101955 +101956 +101957 +101958 +101959 +101984 +101985 +101986 +101987 +101988 +101989 +101990 +101991 +102016 +102017 +102018 +102019 +102020 +102021 +102022 +102023 +102048 +102049 +102050 +102051 +102052 +102053 +102054 +102055 +102080 +102081 +102082 +102083 +102084 +102085 +102086 +102087 +102112 +102113 +102114 +102115 +102116 +102117 +102118 +102119 +102144 +102145 +102146 +102147 +102148 +102149 +102150 +102151 +102176 +102177 +102178 +102179 +102180 +102181 +102182 +102183 +102208 +102209 +102210 +102211 +102212 +102213 +102214 +102215 +102240 +102241 +102242 +102243 +102244 +102245 +102246 +102247 +102272 +102273 +102274 +102275 +102276 +102277 +102278 +102279 +102304 +102305 +102306 +102307 +102308 +102309 +102310 +102311 +102336 +102337 +102338 +102339 +102340 +102341 +102342 +102343 +102368 +102369 +102370 +102371 +102372 +102373 +102374 +102375 +102400 +102401 +102402 +102403 +102404 +102405 +102406 +102407 +102432 +102433 +102434 +102435 +102436 +102437 +102438 +102439 +102464 +102465 +102466 +102467 +102468 +102469 +102470 +102471 +102496 +102497 +102498 +102499 +102500 +102501 +102502 +102503 +102528 +102529 +102530 +102531 +102532 +102533 +102534 +102535 +102560 +102561 +102562 +102563 +102564 +102565 +102566 +102567 +102592 +102593 +102594 +102595 +102596 +102597 +102598 +102599 +102624 +102625 +102626 +102627 +102628 +102629 +102630 +102631 +102656 +102657 +102658 +102659 +102660 +102661 +102662 +102663 +102688 +102689 +102690 +102691 +102692 +102693 +102694 +102695 +102720 +102721 +102722 +102723 +102724 +102725 +102726 +102727 +102752 +102753 +102754 +102755 +102756 +102757 +102758 +102759 +102784 +102785 +102786 +102787 +102788 +102789 +102790 +102791 +102816 +102817 +102818 +102819 +102820 +102821 +102822 +102823 +102848 +102849 +102850 +102851 +102852 +102853 +102854 +102855 +102880 +102881 +102882 +102883 +102884 +102885 +102886 +102887 +102912 +102913 +102914 +102915 +102916 +102917 +102918 +102919 +102944 +102945 +102946 +102947 +102948 +102949 +102950 +102951 +102976 +102977 +102978 +102979 +102980 +102981 +102982 +102983 +103008 +103009 +103010 +103011 +103012 +103013 +103014 +103015 +103040 +103041 +103042 +103043 +103044 +103045 +103046 +103047 +103072 +103073 +103074 +103075 +103076 +103077 +103078 +103079 +103104 +103105 +103106 +103107 +103108 +103109 +103110 +103111 +103136 +103137 +103138 +103139 +103140 +103141 +103142 +103143 +103168 +103169 +103170 +103171 +103172 +103173 +103174 +103175 +103200 +103201 +103202 +103203 +103204 +103205 +103206 +103207 +103232 +103233 +103234 +103235 +103236 +103237 +103238 +103239 +103264 +103265 +103266 +103267 +103268 +103269 +103270 +103271 +103296 +103297 +103298 +103299 +103300 +103301 +103302 +103303 +103328 +103329 +103330 +103331 +103332 +103333 +103334 +103335 +103360 +103361 +103362 +103363 +103364 +103365 +103366 +103367 +103392 +103393 +103394 +103395 +103396 +103397 +103398 +103399 +103424 +103425 +103426 +103427 +103428 +103429 +103430 +103431 +103456 +103457 +103458 +103459 +103460 +103461 +103462 +103463 +103488 +103489 +103490 +103491 +103492 +103493 +103494 +103495 +103520 +103521 +103522 +103523 +103524 +103525 +103526 +103527 +103552 +103553 +103554 +103555 +103556 +103557 +103558 +103559 +103584 +103585 +103586 +103587 +103588 +103589 +103590 +103591 +103616 +103617 +103618 +103619 +103620 +103621 +103622 +103623 +103648 +103649 +103650 +103651 +103652 +103653 +103654 +103655 +103680 +103681 +103682 +103683 +103684 +103685 +103686 +103687 +103712 +103713 +103714 +103715 +103716 +103717 +103718 +103719 +103744 +103745 +103746 +103747 +103748 +103749 +103750 +103751 +103776 +103777 +103778 +103779 +103780 +103781 +103782 +103783 +103808 +103809 +103810 +103811 +103812 +103813 +103814 +103815 +103840 +103841 +103842 +103843 +103844 +103845 +103846 +103847 +103872 +103873 +103874 +103875 +103876 +103877 +103878 +103879 +103904 +103905 +103906 +103907 +103908 +103909 +103910 +103911 +103936 +103937 +103938 +103939 +103940 +103941 +103942 +103943 +103968 +103969 +103970 +103971 +103972 +103973 +103974 +103975 +104000 +104001 +104002 +104003 +104004 +104005 +104006 +104007 +104032 +104033 +104034 +104035 +104036 +104037 +104038 +104039 +104064 +104065 +104066 +104067 +104068 +104069 +104070 +104071 +104096 +104097 +104098 +104099 +104100 +104101 +104102 +104103 +104128 +104129 +104130 +104131 +104132 +104133 +104134 +104135 +104160 +104161 +104162 +104163 +104164 +104165 +104166 +104167 +104192 +104193 +104194 +104195 +104196 +104197 +104198 +104199 +104224 +104225 +104226 +104227 +104228 +104229 +104230 +104231 +104256 +104257 +104258 +104259 +104260 +104261 +104262 +104263 +104288 +104289 +104290 +104291 +104292 +104293 +104294 +104295 +104320 +104321 +104322 +104323 +104324 +104325 +104326 +104327 +104352 +104353 +104354 +104355 +104356 +104357 +104358 +104359 +104384 +104385 +104386 +104387 +104388 +104389 +104390 +104391 +104416 +104417 +104418 +104419 +104420 +104421 +104422 +104423 +104448 +104449 +104450 +104451 +104452 +104453 +104454 +104455 +104480 +104481 +104482 +104483 +104484 +104485 +104486 +104487 +104512 +104513 +104514 +104515 +104516 +104517 +104518 +104519 +104544 +104545 +104546 +104547 +104548 +104549 +104550 +104551 +104576 +104577 +104578 +104579 +104580 +104581 +104582 +104583 +104608 +104609 +104610 +104611 +104612 +104613 +104614 +104615 +104640 +104641 +104642 +104643 +104644 +104645 +104646 +104647 +104672 +104673 +104674 +104675 +104676 +104677 +104678 +104679 +104704 +104705 +104706 +104707 +104708 +104709 +104710 +104711 +104736 +104737 +104738 +104739 +104740 +104741 +104742 +104743 +104768 +104769 +104770 +104771 +104772 +104773 +104774 +104775 +104800 +104801 +104802 +104803 +104804 +104805 +104806 +104807 +104832 +104833 +104834 +104835 +104836 +104837 +104838 +104839 +104864 +104865 +104866 +104867 +104868 +104869 +104870 +104871 +104896 +104897 +104898 +104899 +104900 +104901 +104902 +104903 +104928 +104929 +104930 +104931 +104932 +104933 +104934 +104935 +104960 +104961 +104962 +104963 +104964 +104965 +104966 +104967 +104992 +104993 +104994 +104995 +104996 +104997 +104998 +104999 +105024 +105025 +105026 +105027 +105028 +105029 +105030 +105031 +105056 +105057 +105058 +105059 +105060 +105061 +105062 +105063 +105088 +105089 +105090 +105091 +105092 +105093 +105094 +105095 +105120 +105121 +105122 +105123 +105124 +105125 +105126 +105127 +105152 +105153 +105154 +105155 +105156 +105157 +105158 +105159 +105184 +105185 +105186 +105187 +105188 +105189 +105190 +105191 +105216 +105217 +105218 +105219 +105220 +105221 +105222 +105223 +105248 +105249 +105250 +105251 +105252 +105253 +105254 +105255 +105280 +105281 +105282 +105283 +105284 +105285 +105286 +105287 +105312 +105313 +105314 +105315 +105316 +105317 +105318 +105319 +105344 +105345 +105346 +105347 +105348 +105349 +105350 +105351 +105376 +105377 +105378 +105379 +105380 +105381 +105382 +105383 +105408 +105409 +105410 +105411 +105412 +105413 +105414 +105415 +105440 +105441 +105442 +105443 +105444 +105445 +105446 +105447 +105472 +105473 +105474 +105475 +105476 +105477 +105478 +105479 +105504 +105505 +105506 +105507 +105508 +105509 +105510 +105511 +105536 +105537 +105538 +105539 +105540 +105541 +105542 +105543 +105568 +105569 +105570 +105571 +105572 +105573 +105574 +105575 +105600 +105601 +105602 +105603 +105604 +105605 +105606 +105607 +105632 +105633 +105634 +105635 +105636 +105637 +105638 +105639 +105664 +105665 +105666 +105667 +105668 +105669 +105670 +105671 +105696 +105697 +105698 +105699 +105700 +105701 +105702 +105703 +105728 +105729 +105730 +105731 +105732 +105733 +105734 +105735 +105760 +105761 +105762 +105763 +105764 +105765 +105766 +105767 +105792 +105793 +105794 +105795 +105796 +105797 +105798 +105799 +105824 +105825 +105826 +105827 +105828 +105829 +105830 +105831 +105856 +105857 +105858 +105859 +105860 +105861 +105862 +105863 +105888 +105889 +105890 +105891 +105892 +105893 +105894 +105895 +105920 +105921 +105922 +105923 +105924 +105925 +105926 +105927 +105952 +105953 +105954 +105955 +105956 +105957 +105958 +105959 +105984 +105985 +105986 +105987 +105988 +105989 +105990 +105991 +106016 +106017 +106018 +106019 +106020 +106021 +106022 +106023 +106048 +106049 +106050 +106051 +106052 +106053 +106054 +106055 +106080 +106081 +106082 +106083 +106084 +106085 +106086 +106087 +106112 +106113 +106114 +106115 +106116 +106117 +106118 +106119 +106144 +106145 +106146 +106147 +106148 +106149 +106150 +106151 +106176 +106177 +106178 +106179 +106180 +106181 +106182 +106183 +106208 +106209 +106210 +106211 +106212 +106213 +106214 +106215 +106240 +106241 +106242 +106243 +106244 +106245 +106246 +106247 +106272 +106273 +106274 +106275 +106276 +106277 +106278 +106279 +106304 +106305 +106306 +106307 +106308 +106309 +106310 +106311 +106336 +106337 +106338 +106339 +106340 +106341 +106342 +106343 +106368 +106369 +106370 +106371 +106372 +106373 +106374 +106375 +106400 +106401 +106402 +106403 +106404 +106405 +106406 +106407 +106432 +106433 +106434 +106435 +106436 +106437 +106438 +106439 +106464 +106465 +106466 +106467 +106468 +106469 +106470 +106471 +106496 +106497 +106498 +106499 +106500 +106501 +106502 +106503 +106528 +106529 +106530 +106531 +106532 +106533 +106534 +106535 +106560 +106561 +106562 +106563 +106564 +106565 +106566 +106567 +106592 +106593 +106594 +106595 +106596 +106597 +106598 +106599 +106624 +106625 +106626 +106627 +106628 +106629 +106630 +106631 +106656 +106657 +106658 +106659 +106660 +106661 +106662 +106663 +106688 +106689 +106690 +106691 +106692 +106693 +106694 +106695 +106720 +106721 +106722 +106723 +106724 +106725 +106726 +106727 +106752 +106753 +106754 +106755 +106756 +106757 +106758 +106759 +106784 +106785 +106786 +106787 +106788 +106789 +106790 +106791 +106816 +106817 +106818 +106819 +106820 +106821 +106822 +106823 +106848 +106849 +106850 +106851 +106852 +106853 +106854 +106855 +106880 +106881 +106882 +106883 +106884 +106885 +106886 +106887 +106912 +106913 +106914 +106915 +106916 +106917 +106918 +106919 +106944 +106945 +106946 +106947 +106948 +106949 +106950 +106951 +106976 +106977 +106978 +106979 +106980 +106981 +106982 +106983 +107008 +107009 +107010 +107011 +107012 +107013 +107014 +107015 +107040 +107041 +107042 +107043 +107044 +107045 +107046 +107047 +107072 +107073 +107074 +107075 +107076 +107077 +107078 +107079 +107104 +107105 +107106 +107107 +107108 +107109 +107110 +107111 +107136 +107137 +107138 +107139 +107140 +107141 +107142 +107143 +107168 +107169 +107170 +107171 +107172 +107173 +107174 +107175 +107200 +107201 +107202 +107203 +107204 +107205 +107206 +107207 +107232 +107233 +107234 +107235 +107236 +107237 +107238 +107239 +107264 +107265 +107266 +107267 +107268 +107269 +107270 +107271 +107296 +107297 +107298 +107299 +107300 +107301 +107302 +107303 +107328 +107329 +107330 +107331 +107332 +107333 +107334 +107335 +107360 +107361 +107362 +107363 +107364 +107365 +107366 +107367 +107392 +107393 +107394 +107395 +107396 +107397 +107398 +107399 +107424 +107425 +107426 +107427 +107428 +107429 +107430 +107431 +107456 +107457 +107458 +107459 +107460 +107461 +107462 +107463 +107488 +107489 +107490 +107491 +107492 +107493 +107494 +107495 +107520 +107521 +107522 +107523 +107524 +107525 +107526 +107527 +107552 +107553 +107554 +107555 +107556 +107557 +107558 +107559 +107584 +107585 +107586 +107587 +107588 +107589 +107590 +107591 +107616 +107617 +107618 +107619 +107620 +107621 +107622 +107623 +107648 +107649 +107650 +107651 +107652 +107653 +107654 +107655 +107680 +107681 +107682 +107683 +107684 +107685 +107686 +107687 +107712 +107713 +107714 +107715 +107716 +107717 +107718 +107719 +107744 +107745 +107746 +107747 +107748 +107749 +107750 +107751 +107776 +107777 +107778 +107779 +107780 +107781 +107782 +107783 +107808 +107809 +107810 +107811 +107812 +107813 +107814 +107815 +107840 +107841 +107842 +107843 +107844 +107845 +107846 +107847 +107872 +107873 +107874 +107875 +107876 +107877 +107878 +107879 +107904 +107905 +107906 +107907 +107908 +107909 +107910 +107911 +107936 +107937 +107938 +107939 +107940 +107941 +107942 +107943 +107968 +107969 +107970 +107971 +107972 +107973 +107974 +107975 +108000 +108001 +108002 +108003 +108004 +108005 +108006 +108007 +108032 +108033 +108034 +108035 +108036 +108037 +108038 +108039 +108064 +108065 +108066 +108067 +108068 +108069 +108070 +108071 +108096 +108097 +108098 +108099 +108100 +108101 +108102 +108103 +108128 +108129 +108130 +108131 +108132 +108133 +108134 +108135 +108160 +108161 +108162 +108163 +108164 +108165 +108166 +108167 +108192 +108193 +108194 +108195 +108196 +108197 +108198 +108199 +108224 +108225 +108226 +108227 +108228 +108229 +108230 +108231 +108256 +108257 +108258 +108259 +108260 +108261 +108262 +108263 +108288 +108289 +108290 +108291 +108292 +108293 +108294 +108295 +108320 +108321 +108322 +108323 +108324 +108325 +108326 +108327 +108352 +108353 +108354 +108355 +108356 +108357 +108358 +108359 +108384 +108385 +108386 +108387 +108388 +108389 +108390 +108391 +108416 +108417 +108418 +108419 +108420 +108421 +108422 +108423 +108448 +108449 +108450 +108451 +108452 +108453 +108454 +108455 +108480 +108481 +108482 +108483 +108484 +108485 +108486 +108487 +108512 +108513 +108514 +108515 +108516 +108517 +108518 +108519 +108544 +108545 +108546 +108547 +108548 +108549 +108550 +108551 +108576 +108577 +108578 +108579 +108580 +108581 +108582 +108583 +108608 +108609 +108610 +108611 +108612 +108613 +108614 +108615 +108640 +108641 +108642 +108643 +108644 +108645 +108646 +108647 +108672 +108673 +108674 +108675 +108676 +108677 +108678 +108679 +108704 +108705 +108706 +108707 +108708 +108709 +108710 +108711 +108736 +108737 +108738 +108739 +108740 +108741 +108742 +108743 +108768 +108769 +108770 +108771 +108772 +108773 +108774 +108775 +108800 +108801 +108802 +108803 +108804 +108805 +108806 +108807 +108832 +108833 +108834 +108835 +108836 +108837 +108838 +108839 +108864 +108865 +108866 +108867 +108868 +108869 +108870 +108871 +108896 +108897 +108898 +108899 +108900 +108901 +108902 +108903 +108928 +108929 +108930 +108931 +108932 +108933 +108934 +108935 +108960 +108961 +108962 +108963 +108964 +108965 +108966 +108967 +108992 +108993 +108994 +108995 +108996 +108997 +108998 +108999 +109024 +109025 +109026 +109027 +109028 +109029 +109030 +109031 +109056 +109057 +109058 +109059 +109060 +109061 +109062 +109063 +109088 +109089 +109090 +109091 +109092 +109093 +109094 +109095 +109120 +109121 +109122 +109123 +109124 +109125 +109126 +109127 +109152 +109153 +109154 +109155 +109156 +109157 +109158 +109159 +109184 +109185 +109186 +109187 +109188 +109189 +109190 +109191 +109216 +109217 +109218 +109219 +109220 +109221 +109222 +109223 +109248 +109249 +109250 +109251 +109252 +109253 +109254 +109255 +109280 +109281 +109282 +109283 +109284 +109285 +109286 +109287 +109312 +109313 +109314 +109315 +109316 +109317 +109318 +109319 +109344 +109345 +109346 +109347 +109348 +109349 +109350 +109351 +109376 +109377 +109378 +109379 +109380 +109381 +109382 +109383 +109408 +109409 +109410 +109411 +109412 +109413 +109414 +109415 +109440 +109441 +109442 +109443 +109444 +109445 +109446 +109447 +109472 +109473 +109474 +109475 +109476 +109477 +109478 +109479 +109504 +109505 +109506 +109507 +109508 +109509 +109510 +109511 +109536 +109537 +109538 +109539 +109540 +109541 +109542 +109543 +109568 +109569 +109570 +109571 +109572 +109573 +109574 +109575 +109600 +109601 +109602 +109603 +109604 +109605 +109606 +109607 +109632 +109633 +109634 +109635 +109636 +109637 +109638 +109639 +109664 +109665 +109666 +109667 +109668 +109669 +109670 +109671 +109696 +109697 +109698 +109699 +109700 +109701 +109702 +109703 +109728 +109729 +109730 +109731 +109732 +109733 +109734 +109735 +109760 +109761 +109762 +109763 +109764 +109765 +109766 +109767 +109792 +109793 +109794 +109795 +109796 +109797 +109798 +109799 +109824 +109825 +109826 +109827 +109828 +109829 +109830 +109831 +109856 +109857 +109858 +109859 +109860 +109861 +109862 +109863 +109888 +109889 +109890 +109891 +109892 +109893 +109894 +109895 +109920 +109921 +109922 +109923 +109924 +109925 +109926 +109927 +109952 +109953 +109954 +109955 +109956 +109957 +109958 +109959 +109984 +109985 +109986 +109987 +109988 +109989 +109990 +109991 +110016 +110017 +110018 +110019 +110020 +110021 +110022 +110023 +110048 +110049 +110050 +110051 +110052 +110053 +110054 +110055 +110080 +110081 +110082 +110083 +110084 +110085 +110086 +110087 +110112 +110113 +110114 +110115 +110116 +110117 +110118 +110119 +110144 +110145 +110146 +110147 +110148 +110149 +110150 +110151 +110176 +110177 +110178 +110179 +110180 +110181 +110182 +110183 +110208 +110209 +110210 +110211 +110212 +110213 +110214 +110215 +110240 +110241 +110242 +110243 +110244 +110245 +110246 +110247 +110272 +110273 +110274 +110275 +110276 +110277 +110278 +110279 +110304 +110305 +110306 +110307 +110308 +110309 +110310 +110311 +110336 +110337 +110338 +110339 +110340 +110341 +110342 +110343 +110368 +110369 +110370 +110371 +110372 +110373 +110374 +110375 +110400 +110401 +110402 +110403 +110404 +110405 +110406 +110407 +110432 +110433 +110434 +110435 +110436 +110437 +110438 +110439 +110464 +110465 +110466 +110467 +110468 +110469 +110470 +110471 +110496 +110497 +110498 +110499 +110500 +110501 +110502 +110503 +110528 +110529 +110530 +110531 +110532 +110533 +110534 +110535 +110560 +110561 +110562 +110563 +110564 +110565 +110566 +110567 +110592 +110593 +110594 +110595 +110596 +110597 +110598 +110599 +110624 +110625 +110626 +110627 +110628 +110629 +110630 +110631 +110656 +110657 +110658 +110659 +110660 +110661 +110662 +110663 +110688 +110689 +110690 +110691 +110692 +110693 +110694 +110695 +110720 +110721 +110722 +110723 +110724 +110725 +110726 +110727 +110752 +110753 +110754 +110755 +110756 +110757 +110758 +110759 +110784 +110785 +110786 +110787 +110788 +110789 +110790 +110791 +110816 +110817 +110818 +110819 +110820 +110821 +110822 +110823 +110848 +110849 +110850 +110851 +110852 +110853 +110854 +110855 +110880 +110881 +110882 +110883 +110884 +110885 +110886 +110887 +110912 +110913 +110914 +110915 +110916 +110917 +110918 +110919 +110944 +110945 +110946 +110947 +110948 +110949 +110950 +110951 +110976 +110977 +110978 +110979 +110980 +110981 +110982 +110983 +111008 +111009 +111010 +111011 +111012 +111013 +111014 +111015 +111040 +111041 +111042 +111043 +111044 +111045 +111046 +111047 +111072 +111073 +111074 +111075 +111076 +111077 +111078 +111079 +111104 +111105 +111106 +111107 +111108 +111109 +111110 +111111 +111136 +111137 +111138 +111139 +111140 +111141 +111142 +111143 +111168 +111169 +111170 +111171 +111172 +111173 +111174 +111175 +111200 +111201 +111202 +111203 +111204 +111205 +111206 +111207 +111232 +111233 +111234 +111235 +111236 +111237 +111238 +111239 +111264 +111265 +111266 +111267 +111268 +111269 +111270 +111271 +111296 +111297 +111298 +111299 +111300 +111301 +111302 +111303 +111328 +111329 +111330 +111331 +111332 +111333 +111334 +111335 +111360 +111361 +111362 +111363 +111364 +111365 +111366 +111367 +111392 +111393 +111394 +111395 +111396 +111397 +111398 +111399 +111424 +111425 +111426 +111427 +111428 +111429 +111430 +111431 +111456 +111457 +111458 +111459 +111460 +111461 +111462 +111463 +111488 +111489 +111490 +111491 +111492 +111493 +111494 +111495 +111520 +111521 +111522 +111523 +111524 +111525 +111526 +111527 +111552 +111553 +111554 +111555 +111556 +111557 +111558 +111559 +111584 +111585 +111586 +111587 +111588 +111589 +111590 +111591 +111616 +111617 +111618 +111619 +111620 +111621 +111622 +111623 +111648 +111649 +111650 +111651 +111652 +111653 +111654 +111655 +111680 +111681 +111682 +111683 +111684 +111685 +111686 +111687 +111712 +111713 +111714 +111715 +111716 +111717 +111718 +111719 +111744 +111745 +111746 +111747 +111748 +111749 +111750 +111751 +111776 +111777 +111778 +111779 +111780 +111781 +111782 +111783 +111808 +111809 +111810 +111811 +111812 +111813 +111814 +111815 +111840 +111841 +111842 +111843 +111844 +111845 +111846 +111847 +111872 +111873 +111874 +111875 +111876 +111877 +111878 +111879 +111904 +111905 +111906 +111907 +111908 +111909 +111910 +111911 +111936 +111937 +111938 +111939 +111940 +111941 +111942 +111943 +111968 +111969 +111970 +111971 +111972 +111973 +111974 +111975 +112000 +112001 +112002 +112003 +112004 +112005 +112006 +112007 +112032 +112033 +112034 +112035 +112036 +112037 +112038 +112039 +112064 +112065 +112066 +112067 +112068 +112069 +112070 +112071 +112096 +112097 +112098 +112099 +112100 +112101 +112102 +112103 +112128 +112129 +112130 +112131 +112132 +112133 +112134 +112135 +112160 +112161 +112162 +112163 +112164 +112165 +112166 +112167 +112192 +112193 +112194 +112195 +112196 +112197 +112198 +112199 +112224 +112225 +112226 +112227 +112228 +112229 +112230 +112231 +112256 +112257 +112258 +112259 +112260 +112261 +112262 +112263 +112288 +112289 +112290 +112291 +112292 +112293 +112294 +112295 +112320 +112321 +112322 +112323 +112324 +112325 +112326 +112327 +112352 +112353 +112354 +112355 +112356 +112357 +112358 +112359 +112384 +112385 +112386 +112387 +112388 +112389 +112390 +112391 +112416 +112417 +112418 +112419 +112420 +112421 +112422 +112423 +112448 +112449 +112450 +112451 +112452 +112453 +112454 +112455 +112480 +112481 +112482 +112483 +112484 +112485 +112486 +112487 +112512 +112513 +112514 +112515 +112516 +112517 +112518 +112519 +112544 +112545 +112546 +112547 +112548 +112549 +112550 +112551 +112576 +112577 +112578 +112579 +112580 +112581 +112582 +112583 +112608 +112609 +112610 +112611 +112612 +112613 +112614 +112615 +112640 +112641 +112642 +112643 +112644 +112645 +112646 +112647 +112672 +112673 +112674 +112675 +112676 +112677 +112678 +112679 +112704 +112705 +112706 +112707 +112708 +112709 +112710 +112711 +112736 +112737 +112738 +112739 +112740 +112741 +112742 +112743 +112768 +112769 +112770 +112771 +112772 +112773 +112774 +112775 +112800 +112801 +112802 +112803 +112804 +112805 +112806 +112807 +112832 +112833 +112834 +112835 +112836 +112837 +112838 +112839 +112864 +112865 +112866 +112867 +112868 +112869 +112870 +112871 +112896 +112897 +112898 +112899 +112900 +112901 +112902 +112903 +112928 +112929 +112930 +112931 +112932 +112933 +112934 +112935 +112960 +112961 +112962 +112963 +112964 +112965 +112966 +112967 +112992 +112993 +112994 +112995 +112996 +112997 +112998 +112999 +113024 +113025 +113026 +113027 +113028 +113029 +113030 +113031 +113056 +113057 +113058 +113059 +113060 +113061 +113062 +113063 +113088 +113089 +113090 +113091 +113092 +113093 +113094 +113095 +113120 +113121 +113122 +113123 +113124 +113125 +113126 +113127 +113152 +113153 +113154 +113155 +113156 +113157 +113158 +113159 +113184 +113185 +113186 +113187 +113188 +113189 +113190 +113191 +113216 +113217 +113218 +113219 +113220 +113221 +113222 +113223 +113248 +113249 +113250 +113251 +113252 +113253 +113254 +113255 +113280 +113281 +113282 +113283 +113284 +113285 +113286 +113287 +113312 +113313 +113314 +113315 +113316 +113317 +113318 +113319 +113344 +113345 +113346 +113347 +113348 +113349 +113350 +113351 +113376 +113377 +113378 +113379 +113380 +113381 +113382 +113383 +113408 +113409 +113410 +113411 +113412 +113413 +113414 +113415 +113440 +113441 +113442 +113443 +113444 +113445 +113446 +113447 +113472 +113473 +113474 +113475 +113476 +113477 +113478 +113479 +113504 +113505 +113506 +113507 +113508 +113509 +113510 +113511 +113536 +113537 +113538 +113539 +113540 +113541 +113542 +113543 +113568 +113569 +113570 +113571 +113572 +113573 +113574 +113575 +113600 +113601 +113602 +113603 +113604 +113605 +113606 +113607 +113632 +113633 +113634 +113635 +113636 +113637 +113638 +113639 +113664 +113665 +113666 +113667 +113668 +113669 +113670 +113671 +113696 +113697 +113698 +113699 +113700 +113701 +113702 +113703 +113728 +113729 +113730 +113731 +113732 +113733 +113734 +113735 +113760 +113761 +113762 +113763 +113764 +113765 +113766 +113767 +113792 +113793 +113794 +113795 +113796 +113797 +113798 +113799 +113824 +113825 +113826 +113827 +113828 +113829 +113830 +113831 +113856 +113857 +113858 +113859 +113860 +113861 +113862 +113863 +113888 +113889 +113890 +113891 +113892 +113893 +113894 +113895 +113920 +113921 +113922 +113923 +113924 +113925 +113926 +113927 +113952 +113953 +113954 +113955 +113956 +113957 +113958 +113959 +113984 +113985 +113986 +113987 +113988 +113989 +113990 +113991 +114016 +114017 +114018 +114019 +114020 +114021 +114022 +114023 +114048 +114049 +114050 +114051 +114052 +114053 +114054 +114055 +114080 +114081 +114082 +114083 +114084 +114085 +114086 +114087 +114112 +114113 +114114 +114115 +114116 +114117 +114118 +114119 +114144 +114145 +114146 +114147 +114148 +114149 +114150 +114151 +114176 +114177 +114178 +114179 +114180 +114181 +114182 +114183 +114208 +114209 +114210 +114211 +114212 +114213 +114214 +114215 +114240 +114241 +114242 +114243 +114244 +114245 +114246 +114247 +114272 +114273 +114274 +114275 +114276 +114277 +114278 +114279 +114304 +114305 +114306 +114307 +114308 +114309 +114310 +114311 +114336 +114337 +114338 +114339 +114340 +114341 +114342 +114343 +114368 +114369 +114370 +114371 +114372 +114373 +114374 +114375 +114400 +114401 +114402 +114403 +114404 +114405 +114406 +114407 +114432 +114433 +114434 +114435 +114436 +114437 +114438 +114439 +114464 +114465 +114466 +114467 +114468 +114469 +114470 +114471 +114496 +114497 +114498 +114499 +114500 +114501 +114502 +114503 +114528 +114529 +114530 +114531 +114532 +114533 +114534 +114535 +114560 +114561 +114562 +114563 +114564 +114565 +114566 +114567 +114592 +114593 +114594 +114595 +114596 +114597 +114598 +114599 +114624 +114625 +114626 +114627 +114628 +114629 +114630 +114631 +114656 +114657 +114658 +114659 +114660 +114661 +114662 +114663 +114688 +114689 +114690 +114691 +114692 +114693 +114694 +114695 +114720 +114721 +114722 +114723 +114724 +114725 +114726 +114727 +114752 +114753 +114754 +114755 +114756 +114757 +114758 +114759 +114784 +114785 +114786 +114787 +114788 +114789 +114790 +114791 +114816 +114817 +114818 +114819 +114820 +114821 +114822 +114823 +114848 +114849 +114850 +114851 +114852 +114853 +114854 +114855 +114880 +114881 +114882 +114883 +114884 +114885 +114886 +114887 +114912 +114913 +114914 +114915 +114916 +114917 +114918 +114919 +114944 +114945 +114946 +114947 +114948 +114949 +114950 +114951 +114976 +114977 +114978 +114979 +114980 +114981 +114982 +114983 +115008 +115009 +115010 +115011 +115012 +115013 +115014 +115015 +115040 +115041 +115042 +115043 +115044 +115045 +115046 +115047 +115072 +115073 +115074 +115075 +115076 +115077 +115078 +115079 +115104 +115105 +115106 +115107 +115108 +115109 +115110 +115111 +115136 +115137 +115138 +115139 +115140 +115141 +115142 +115143 +115168 +115169 +115170 +115171 +115172 +115173 +115174 +115175 +115200 +115201 +115202 +115203 +115204 +115205 +115206 +115207 +115232 +115233 +115234 +115235 +115236 +115237 +115238 +115239 +115264 +115265 +115266 +115267 +115268 +115269 +115270 +115271 +115296 +115297 +115298 +115299 +115300 +115301 +115302 +115303 +115328 +115329 +115330 +115331 +115332 +115333 +115334 +115335 +115360 +115361 +115362 +115363 +115364 +115365 +115366 +115367 +115392 +115393 +115394 +115395 +115396 +115397 +115398 +115399 +115424 +115425 +115426 +115427 +115428 +115429 +115430 +115431 +115456 +115457 +115458 +115459 +115460 +115461 +115462 +115463 +115488 +115489 +115490 +115491 +115492 +115493 +115494 +115495 +115520 +115521 +115522 +115523 +115524 +115525 +115526 +115527 +115552 +115553 +115554 +115555 +115556 +115557 +115558 +115559 +115584 +115585 +115586 +115587 +115588 +115589 +115590 +115591 +115616 +115617 +115618 +115619 +115620 +115621 +115622 +115623 +115648 +115649 +115650 +115651 +115652 +115653 +115654 +115655 +115680 +115681 +115682 +115683 +115684 +115685 +115686 +115687 +115712 +115713 +115714 +115715 +115716 +115717 +115718 +115719 +115744 +115745 +115746 +115747 +115748 +115749 +115750 +115751 +115776 +115777 +115778 +115779 +115780 +115781 +115782 +115783 +115808 +115809 +115810 +115811 +115812 +115813 +115814 +115815 +115840 +115841 +115842 +115843 +115844 +115845 +115846 +115847 +115872 +115873 +115874 +115875 +115876 +115877 +115878 +115879 +115904 +115905 +115906 +115907 +115908 +115909 +115910 +115911 +115936 +115937 +115938 +115939 +115940 +115941 +115942 +115943 +115968 +115969 +115970 +115971 +115972 +115973 +115974 +115975 +116000 +116001 +116002 +116003 +116004 +116005 +116006 +116007 +116032 +116033 +116034 +116035 +116036 +116037 +116038 +116039 +116064 +116065 +116066 +116067 +116068 +116069 +116070 +116071 +116096 +116097 +116098 +116099 +116100 +116101 +116102 +116103 +116128 +116129 +116130 +116131 +116132 +116133 +116134 +116135 +116160 +116161 +116162 +116163 +116164 +116165 +116166 +116167 +116192 +116193 +116194 +116195 +116196 +116197 +116198 +116199 +116224 +116225 +116226 +116227 +116228 +116229 +116230 +116231 +116256 +116257 +116258 +116259 +116260 +116261 +116262 +116263 +116288 +116289 +116290 +116291 +116292 +116293 +116294 +116295 +116320 +116321 +116322 +116323 +116324 +116325 +116326 +116327 +116352 +116353 +116354 +116355 +116356 +116357 +116358 +116359 +116384 +116385 +116386 +116387 +116388 +116389 +116390 +116391 +116416 +116417 +116418 +116419 +116420 +116421 +116422 +116423 +116448 +116449 +116450 +116451 +116452 +116453 +116454 +116455 +116480 +116481 +116482 +116483 +116484 +116485 +116486 +116487 +116512 +116513 +116514 +116515 +116516 +116517 +116518 +116519 +116544 +116545 +116546 +116547 +116548 +116549 +116550 +116551 +116576 +116577 +116578 +116579 +116580 +116581 +116582 +116583 +116608 +116609 +116610 +116611 +116612 +116613 +116614 +116615 +116640 +116641 +116642 +116643 +116644 +116645 +116646 +116647 +116672 +116673 +116674 +116675 +116676 +116677 +116678 +116679 +116704 +116705 +116706 +116707 +116708 +116709 +116710 +116711 +116736 +116737 +116738 +116739 +116740 +116741 +116742 +116743 +116768 +116769 +116770 +116771 +116772 +116773 +116774 +116775 +116800 +116801 +116802 +116803 +116804 +116805 +116806 +116807 +116832 +116833 +116834 +116835 +116836 +116837 +116838 +116839 +116864 +116865 +116866 +116867 +116868 +116869 +116870 +116871 +116896 +116897 +116898 +116899 +116900 +116901 +116902 +116903 +116928 +116929 +116930 +116931 +116932 +116933 +116934 +116935 +116960 +116961 +116962 +116963 +116964 +116965 +116966 +116967 +116992 +116993 +116994 +116995 +116996 +116997 +116998 +116999 +117024 +117025 +117026 +117027 +117028 +117029 +117030 +117031 +117056 +117057 +117058 +117059 +117060 +117061 +117062 +117063 +117088 +117089 +117090 +117091 +117092 +117093 +117094 +117095 +117120 +117121 +117122 +117123 +117124 +117125 +117126 +117127 +117152 +117153 +117154 +117155 +117156 +117157 +117158 +117159 +117184 +117185 +117186 +117187 +117188 +117189 +117190 +117191 +117216 +117217 +117218 +117219 +117220 +117221 +117222 +117223 +117248 +117249 +117250 +117251 +117252 +117253 +117254 +117255 +117280 +117281 +117282 +117283 +117284 +117285 +117286 +117287 +117312 +117313 +117314 +117315 +117316 +117317 +117318 +117319 +117344 +117345 +117346 +117347 +117348 +117349 +117350 +117351 +117376 +117377 +117378 +117379 +117380 +117381 +117382 +117383 +117408 +117409 +117410 +117411 +117412 +117413 +117414 +117415 +117440 +117441 +117442 +117443 +117444 +117445 +117446 +117447 +117472 +117473 +117474 +117475 +117476 +117477 +117478 +117479 +117504 +117505 +117506 +117507 +117508 +117509 +117510 +117511 +117536 +117537 +117538 +117539 +117540 +117541 +117542 +117543 +117568 +117569 +117570 +117571 +117572 +117573 +117574 +117575 +117600 +117601 +117602 +117603 +117604 +117605 +117606 +117607 +117632 +117633 +117634 +117635 +117636 +117637 +117638 +117639 +117664 +117665 +117666 +117667 +117668 +117669 +117670 +117671 +117696 +117697 +117698 +117699 +117700 +117701 +117702 +117703 +117728 +117729 +117730 +117731 +117732 +117733 +117734 +117735 +117760 +117761 +117762 +117763 +117764 +117765 +117766 +117767 +117792 +117793 +117794 +117795 +117796 +117797 +117798 +117799 +117824 +117825 +117826 +117827 +117828 +117829 +117830 +117831 +117856 +117857 +117858 +117859 +117860 +117861 +117862 +117863 +117888 +117889 +117890 +117891 +117892 +117893 +117894 +117895 +117920 +117921 +117922 +117923 +117924 +117925 +117926 +117927 +117952 +117953 +117954 +117955 +117956 +117957 +117958 +117959 +117984 +117985 +117986 +117987 +117988 +117989 +117990 +117991 +118016 +118017 +118018 +118019 +118020 +118021 +118022 +118023 +118048 +118049 +118050 +118051 +118052 +118053 +118054 +118055 +118080 +118081 +118082 +118083 +118084 +118085 +118086 +118087 +118112 +118113 +118114 +118115 +118116 +118117 +118118 +118119 +118144 +118145 +118146 +118147 +118148 +118149 +118150 +118151 +118176 +118177 +118178 +118179 +118180 +118181 +118182 +118183 +118208 +118209 +118210 +118211 +118212 +118213 +118214 +118215 +118240 +118241 +118242 +118243 +118244 +118245 +118246 +118247 +118272 +118273 +118274 +118275 +118276 +118277 +118278 +118279 +118304 +118305 +118306 +118307 +118308 +118309 +118310 +118311 +118336 +118337 +118338 +118339 +118340 +118341 +118342 +118343 +118368 +118369 +118370 +118371 +118372 +118373 +118374 +118375 +118400 +118401 +118402 +118403 +118404 +118405 +118406 +118407 +118432 +118433 +118434 +118435 +118436 +118437 +118438 +118439 +118464 +118465 +118466 +118467 +118468 +118469 +118470 +118471 +118496 +118497 +118498 +118499 +118500 +118501 +118502 +118503 +118528 +118529 +118530 +118531 +118532 +118533 +118534 +118535 +118560 +118561 +118562 +118563 +118564 +118565 +118566 +118567 +118592 +118593 +118594 +118595 +118596 +118597 +118598 +118599 +118624 +118625 +118626 +118627 +118628 +118629 +118630 +118631 +118656 +118657 +118658 +118659 +118660 +118661 +118662 +118663 +118688 +118689 +118690 +118691 +118692 +118693 +118694 +118695 +118720 +118721 +118722 +118723 +118724 +118725 +118726 +118727 +118752 +118753 +118754 +118755 +118756 +118757 +118758 +118759 +118784 +118785 +118786 +118787 +118788 +118789 +118790 +118791 +118816 +118817 +118818 +118819 +118820 +118821 +118822 +118823 +118848 +118849 +118850 +118851 +118852 +118853 +118854 +118855 +118880 +118881 +118882 +118883 +118884 +118885 +118886 +118887 +118912 +118913 +118914 +118915 +118916 +118917 +118918 +118919 +118944 +118945 +118946 +118947 +118948 +118949 +118950 +118951 +118976 +118977 +118978 +118979 +118980 +118981 +118982 +118983 +119008 +119009 +119010 +119011 +119012 +119013 +119014 +119015 +119040 +119041 +119042 +119043 +119044 +119045 +119046 +119047 +119072 +119073 +119074 +119075 +119076 +119077 +119078 +119079 +119104 +119105 +119106 +119107 +119108 +119109 +119110 +119111 +119136 +119137 +119138 +119139 +119140 +119141 +119142 +119143 +119168 +119169 +119170 +119171 +119172 +119173 +119174 +119175 +119200 +119201 +119202 +119203 +119204 +119205 +119206 +119207 +119232 +119233 +119234 +119235 +119236 +119237 +119238 +119239 +119264 +119265 +119266 +119267 +119268 +119269 +119270 +119271 +119296 +119297 +119298 +119299 +119300 +119301 +119302 +119303 +119328 +119329 +119330 +119331 +119332 +119333 +119334 +119335 +119360 +119361 +119362 +119363 +119364 +119365 +119366 +119367 +119392 +119393 +119394 +119395 +119396 +119397 +119398 +119399 +119424 +119425 +119426 +119427 +119428 +119429 +119430 +119431 +119456 +119457 +119458 +119459 +119460 +119461 +119462 +119463 +119488 +119489 +119490 +119491 +119492 +119493 +119494 +119495 +119520 +119521 +119522 +119523 +119524 +119525 +119526 +119527 +119552 +119553 +119554 +119555 +119556 +119557 +119558 +119559 +119584 +119585 +119586 +119587 +119588 +119589 +119590 +119591 +119616 +119617 +119618 +119619 +119620 +119621 +119622 +119623 +119648 +119649 +119650 +119651 +119652 +119653 +119654 +119655 +119680 +119681 +119682 +119683 +119684 +119685 +119686 +119687 +119712 +119713 +119714 +119715 +119716 +119717 +119718 +119719 +119744 +119745 +119746 +119747 +119748 +119749 +119750 +119751 +119776 +119777 +119778 +119779 +119780 +119781 +119782 +119783 +119808 +119809 +119810 +119811 +119812 +119813 +119814 +119815 +119840 +119841 +119842 +119843 +119844 +119845 +119846 +119847 +119872 +119873 +119874 +119875 +119876 +119877 +119878 +119879 +119904 +119905 +119906 +119907 +119908 +119909 +119910 +119911 +119936 +119937 +119938 +119939 +119940 +119941 +119942 +119943 +119968 +119969 +119970 +119971 +119972 +119973 +119974 +119975 +120000 +120001 +120002 +120003 +120004 +120005 +120006 +120007 +120032 +120033 +120034 +120035 +120036 +120037 +120038 +120039 +120064 +120065 +120066 +120067 +120068 +120069 +120070 +120071 +120096 +120097 +120098 +120099 +120100 +120101 +120102 +120103 +120128 +120129 +120130 +120131 +120132 +120133 +120134 +120135 +120160 +120161 +120162 +120163 +120164 +120165 +120166 +120167 +120192 +120193 +120194 +120195 +120196 +120197 +120198 +120199 +120224 +120225 +120226 +120227 +120228 +120229 +120230 +120231 +120256 +120257 +120258 +120259 +120260 +120261 +120262 +120263 +120288 +120289 +120290 +120291 +120292 +120293 +120294 +120295 +120320 +120321 +120322 +120323 +120324 +120325 +120326 +120327 +120352 +120353 +120354 +120355 +120356 +120357 +120358 +120359 +120384 +120385 +120386 +120387 +120388 +120389 +120390 +120391 +120416 +120417 +120418 +120419 +120420 +120421 +120422 +120423 +120448 +120449 +120450 +120451 +120452 +120453 +120454 +120455 +120480 +120481 +120482 +120483 +120484 +120485 +120486 +120487 +120512 +120513 +120514 +120515 +120516 +120517 +120518 +120519 +120544 +120545 +120546 +120547 +120548 +120549 +120550 +120551 +120576 +120577 +120578 +120579 +120580 +120581 +120582 +120583 +120608 +120609 +120610 +120611 +120612 +120613 +120614 +120615 +120640 +120641 +120642 +120643 +120644 +120645 +120646 +120647 +120672 +120673 +120674 +120675 +120676 +120677 +120678 +120679 +120704 +120705 +120706 +120707 +120708 +120709 +120710 +120711 +120736 +120737 +120738 +120739 +120740 +120741 +120742 +120743 +120768 +120769 +120770 +120771 +120772 +120773 +120774 +120775 +120800 +120801 +120802 +120803 +120804 +120805 +120806 +120807 +120832 +120833 +120834 +120835 +120836 +120837 +120838 +120839 +120864 +120865 +120866 +120867 +120868 +120869 +120870 +120871 +120896 +120897 +120898 +120899 +120900 +120901 +120902 +120903 +120928 +120929 +120930 +120931 +120932 +120933 +120934 +120935 +120960 +120961 +120962 +120963 +120964 +120965 +120966 +120967 +120992 +120993 +120994 +120995 +120996 +120997 +120998 +120999 +121024 +121025 +121026 +121027 +121028 +121029 +121030 +121031 +121056 +121057 +121058 +121059 +121060 +121061 +121062 +121063 +121088 +121089 +121090 +121091 +121092 +121093 +121094 +121095 +121120 +121121 +121122 +121123 +121124 +121125 +121126 +121127 +121152 +121153 +121154 +121155 +121156 +121157 +121158 +121159 +121184 +121185 +121186 +121187 +121188 +121189 +121190 +121191 +121216 +121217 +121218 +121219 +121220 +121221 +121222 +121223 +121248 +121249 +121250 +121251 +121252 +121253 +121254 +121255 +121280 +121281 +121282 +121283 +121284 +121285 +121286 +121287 +121312 +121313 +121314 +121315 +121316 +121317 +121318 +121319 +121344 +121345 +121346 +121347 +121348 +121349 +121350 +121351 +121376 +121377 +121378 +121379 +121380 +121381 +121382 +121383 +121408 +121409 +121410 +121411 +121412 +121413 +121414 +121415 +121440 +121441 +121442 +121443 +121444 +121445 +121446 +121447 +121472 +121473 +121474 +121475 +121476 +121477 +121478 +121479 +121504 +121505 +121506 +121507 +121508 +121509 +121510 +121511 +121536 +121537 +121538 +121539 +121540 +121541 +121542 +121543 +121568 +121569 +121570 +121571 +121572 +121573 +121574 +121575 +121600 +121601 +121602 +121603 +121604 +121605 +121606 +121607 +121632 +121633 +121634 +121635 +121636 +121637 +121638 +121639 +121664 +121665 +121666 +121667 +121668 +121669 +121670 +121671 +121696 +121697 +121698 +121699 +121700 +121701 +121702 +121703 +121728 +121729 +121730 +121731 +121732 +121733 +121734 +121735 +121760 +121761 +121762 +121763 +121764 +121765 +121766 +121767 +121792 +121793 +121794 +121795 +121796 +121797 +121798 +121799 +121824 +121825 +121826 +121827 +121828 +121829 +121830 +121831 +121856 +121857 +121858 +121859 +121860 +121861 +121862 +121863 +121888 +121889 +121890 +121891 +121892 +121893 +121894 +121895 +121920 +121921 +121922 +121923 +121924 +121925 +121926 +121927 +121952 +121953 +121954 +121955 +121956 +121957 +121958 +121959 +121984 +121985 +121986 +121987 +121988 +121989 +121990 +121991 +122016 +122017 +122018 +122019 +122020 +122021 +122022 +122023 +122048 +122049 +122050 +122051 +122052 +122053 +122054 +122055 +122080 +122081 +122082 +122083 +122084 +122085 +122086 +122087 +122112 +122113 +122114 +122115 +122116 +122117 +122118 +122119 +122144 +122145 +122146 +122147 +122148 +122149 +122150 +122151 +122176 +122177 +122178 +122179 +122180 +122181 +122182 +122183 +122208 +122209 +122210 +122211 +122212 +122213 +122214 +122215 +122240 +122241 +122242 +122243 +122244 +122245 +122246 +122247 +122272 +122273 +122274 +122275 +122276 +122277 +122278 +122279 +122304 +122305 +122306 +122307 +122308 +122309 +122310 +122311 +122336 +122337 +122338 +122339 +122340 +122341 +122342 +122343 +122368 +122369 +122370 +122371 +122372 +122373 +122374 +122375 +122400 +122401 +122402 +122403 +122404 +122405 +122406 +122407 +122432 +122433 +122434 +122435 +122436 +122437 +122438 +122439 +122464 +122465 +122466 +122467 +122468 +122469 +122470 +122471 +122496 +122497 +122498 +122499 +122500 +122501 +122502 +122503 +122528 +122529 +122530 +122531 +122532 +122533 +122534 +122535 +122560 +122561 +122562 +122563 +122564 +122565 +122566 +122567 +122592 +122593 +122594 +122595 +122596 +122597 +122598 +122599 +122624 +122625 +122626 +122627 +122628 +122629 +122630 +122631 +122656 +122657 +122658 +122659 +122660 +122661 +122662 +122663 +122688 +122689 +122690 +122691 +122692 +122693 +122694 +122695 +122720 +122721 +122722 +122723 +122724 +122725 +122726 +122727 +122752 +122753 +122754 +122755 +122756 +122757 +122758 +122759 +122784 +122785 +122786 +122787 +122788 +122789 +122790 +122791 +122816 +122817 +122818 +122819 +122820 +122821 +122822 +122823 +122848 +122849 +122850 +122851 +122852 +122853 +122854 +122855 +122880 +122881 +122882 +122883 +122884 +122885 +122886 +122887 +122912 +122913 +122914 +122915 +122916 +122917 +122918 +122919 +122944 +122945 +122946 +122947 +122948 +122949 +122950 +122951 +122976 +122977 +122978 +122979 +122980 +122981 +122982 +122983 +123008 +123009 +123010 +123011 +123012 +123013 +123014 +123015 +123040 +123041 +123042 +123043 +123044 +123045 +123046 +123047 +123072 +123073 +123074 +123075 +123076 +123077 +123078 +123079 +123104 +123105 +123106 +123107 +123108 +123109 +123110 +123111 +123136 +123137 +123138 +123139 +123140 +123141 +123142 +123143 +123168 +123169 +123170 +123171 +123172 +123173 +123174 +123175 +123200 +123201 +123202 +123203 +123204 +123205 +123206 +123207 +123232 +123233 +123234 +123235 +123236 +123237 +123238 +123239 +123264 +123265 +123266 +123267 +123268 +123269 +123270 +123271 +123296 +123297 +123298 +123299 +123300 +123301 +123302 +123303 +123328 +123329 +123330 +123331 +123332 +123333 +123334 +123335 +123360 +123361 +123362 +123363 +123364 +123365 +123366 +123367 +123392 +123393 +123394 +123395 +123396 +123397 +123398 +123399 +123424 +123425 +123426 +123427 +123428 +123429 +123430 +123431 +123456 +123457 +123458 +123459 +123460 +123461 +123462 +123463 +123488 +123489 +123490 +123491 +123492 +123493 +123494 +123495 +123520 +123521 +123522 +123523 +123524 +123525 +123526 +123527 +123552 +123553 +123554 +123555 +123556 +123557 +123558 +123559 +123584 +123585 +123586 +123587 +123588 +123589 +123590 +123591 +123616 +123617 +123618 +123619 +123620 +123621 +123622 +123623 +123648 +123649 +123650 +123651 +123652 +123653 +123654 +123655 +123680 +123681 +123682 +123683 +123684 +123685 +123686 +123687 +123712 +123713 +123714 +123715 +123716 +123717 +123718 +123719 +123744 +123745 +123746 +123747 +123748 +123749 +123750 +123751 +123776 +123777 +123778 +123779 +123780 +123781 +123782 +123783 +123808 +123809 +123810 +123811 +123812 +123813 +123814 +123815 +123840 +123841 +123842 +123843 +123844 +123845 +123846 +123847 +123872 +123873 +123874 +123875 +123876 +123877 +123878 +123879 +123904 +123905 +123906 +123907 +123908 +123909 +123910 +123911 +123936 +123937 +123938 +123939 +123940 +123941 +123942 +123943 +123968 +123969 +123970 +123971 +123972 +123973 +123974 +123975 +124000 +124001 +124002 +124003 +124004 +124005 +124006 +124007 +124032 +124033 +124034 +124035 +124036 +124037 +124038 +124039 +124064 +124065 +124066 +124067 +124068 +124069 +124070 +124071 +124096 +124097 +124098 +124099 +124100 +124101 +124102 +124103 +124128 +124129 +124130 +124131 +124132 +124133 +124134 +124135 +124160 +124161 +124162 +124163 +124164 +124165 +124166 +124167 +124192 +124193 +124194 +124195 +124196 +124197 +124198 +124199 +124224 +124225 +124226 +124227 +124228 +124229 +124230 +124231 +124256 +124257 +124258 +124259 +124260 +124261 +124262 +124263 +124288 +124289 +124290 +124291 +124292 +124293 +124294 +124295 +124320 +124321 +124322 +124323 +124324 +124325 +124326 +124327 +124352 +124353 +124354 +124355 +124356 +124357 +124358 +124359 +124384 +124385 +124386 +124387 +124388 +124389 +124390 +124391 +124416 +124417 +124418 +124419 +124420 +124421 +124422 +124423 +124448 +124449 +124450 +124451 +124452 +124453 +124454 +124455 +124480 +124481 +124482 +124483 +124484 +124485 +124486 +124487 +124512 +124513 +124514 +124515 +124516 +124517 +124518 +124519 +124544 +124545 +124546 +124547 +124548 +124549 +124550 +124551 +124576 +124577 +124578 +124579 +124580 +124581 +124582 +124583 +124608 +124609 +124610 +124611 +124612 +124613 +124614 +124615 +124640 +124641 +124642 +124643 +124644 +124645 +124646 +124647 +124672 +124673 +124674 +124675 +124676 +124677 +124678 +124679 +124704 +124705 +124706 +124707 +124708 +124709 +124710 +124711 +124736 +124737 +124738 +124739 +124740 +124741 +124742 +124743 +124768 +124769 +124770 +124771 +124772 +124773 +124774 +124775 +124800 +124801 +124802 +124803 +124804 +124805 +124806 +124807 +124832 +124833 +124834 +124835 +124836 +124837 +124838 +124839 +124864 +124865 +124866 +124867 +124868 +124869 +124870 +124871 +124896 +124897 +124898 +124899 +124900 +124901 +124902 +124903 +124928 +124929 +124930 +124931 +124932 +124933 +124934 +124935 +124960 +124961 +124962 +124963 +124964 +124965 +124966 +124967 +124992 +124993 +124994 +124995 +124996 +124997 +124998 +124999 +125024 +125025 +125026 +125027 +125028 +125029 +125030 +125031 +125056 +125057 +125058 +125059 +125060 +125061 +125062 +125063 +125088 +125089 +125090 +125091 +125092 +125093 +125094 +125095 +125120 +125121 +125122 +125123 +125124 +125125 +125126 +125127 +125152 +125153 +125154 +125155 +125156 +125157 +125158 +125159 +125184 +125185 +125186 +125187 +125188 +125189 +125190 +125191 +125216 +125217 +125218 +125219 +125220 +125221 +125222 +125223 +125248 +125249 +125250 +125251 +125252 +125253 +125254 +125255 +125280 +125281 +125282 +125283 +125284 +125285 +125286 +125287 +125312 +125313 +125314 +125315 +125316 +125317 +125318 +125319 +125344 +125345 +125346 +125347 +125348 +125349 +125350 +125351 +125376 +125377 +125378 +125379 +125380 +125381 +125382 +125383 +125408 +125409 +125410 +125411 +125412 +125413 +125414 +125415 +125440 +125441 +125442 +125443 +125444 +125445 +125446 +125447 +125472 +125473 +125474 +125475 +125476 +125477 +125478 +125479 +125504 +125505 +125506 +125507 +125508 +125509 +125510 +125511 +125536 +125537 +125538 +125539 +125540 +125541 +125542 +125543 +125568 +125569 +125570 +125571 +125572 +125573 +125574 +125575 +125600 +125601 +125602 +125603 +125604 +125605 +125606 +125607 +125632 +125633 +125634 +125635 +125636 +125637 +125638 +125639 +125664 +125665 +125666 +125667 +125668 +125669 +125670 +125671 +125696 +125697 +125698 +125699 +125700 +125701 +125702 +125703 +125728 +125729 +125730 +125731 +125732 +125733 +125734 +125735 +125760 +125761 +125762 +125763 +125764 +125765 +125766 +125767 +125792 +125793 +125794 +125795 +125796 +125797 +125798 +125799 +125824 +125825 +125826 +125827 +125828 +125829 +125830 +125831 +125856 +125857 +125858 +125859 +125860 +125861 +125862 +125863 +125888 +125889 +125890 +125891 +125892 +125893 +125894 +125895 +125920 +125921 +125922 +125923 +125924 +125925 +125926 +125927 +125952 +125953 +125954 +125955 +125956 +125957 +125958 +125959 +125984 +125985 +125986 +125987 +125988 +125989 +125990 +125991 +126016 +126017 +126018 +126019 +126020 +126021 +126022 +126023 +126048 +126049 +126050 +126051 +126052 +126053 +126054 +126055 +126080 +126081 +126082 +126083 +126084 +126085 +126086 +126087 +126112 +126113 +126114 +126115 +126116 +126117 +126118 +126119 +126144 +126145 +126146 +126147 +126148 +126149 +126150 +126151 +126176 +126177 +126178 +126179 +126180 +126181 +126182 +126183 +126208 +126209 +126210 +126211 +126212 +126213 +126214 +126215 +126240 +126241 +126242 +126243 +126244 +126245 +126246 +126247 +126272 +126273 +126274 +126275 +126276 +126277 +126278 +126279 +126304 +126305 +126306 +126307 +126308 +126309 +126310 +126311 +126336 +126337 +126338 +126339 +126340 +126341 +126342 +126343 +126368 +126369 +126370 +126371 +126372 +126373 +126374 +126375 +126400 +126401 +126402 +126403 +126404 +126405 +126406 +126407 +126432 +126433 +126434 +126435 +126436 +126437 +126438 +126439 +126464 +126465 +126466 +126467 +126468 +126469 +126470 +126471 +126496 +126497 +126498 +126499 +126500 +126501 +126502 +126503 +126528 +126529 +126530 +126531 +126532 +126533 +126534 +126535 +126560 +126561 +126562 +126563 +126564 +126565 +126566 +126567 +126592 +126593 +126594 +126595 +126596 +126597 +126598 +126599 +126624 +126625 +126626 +126627 +126628 +126629 +126630 +126631 +126656 +126657 +126658 +126659 +126660 +126661 +126662 +126663 +126688 +126689 +126690 +126691 +126692 +126693 +126694 +126695 +126720 +126721 +126722 +126723 +126724 +126725 +126726 +126727 +126752 +126753 +126754 +126755 +126756 +126757 +126758 +126759 +126784 +126785 +126786 +126787 +126788 +126789 +126790 +126791 +126816 +126817 +126818 +126819 +126820 +126821 +126822 +126823 +126848 +126849 +126850 +126851 +126852 +126853 +126854 +126855 +126880 +126881 +126882 +126883 +126884 +126885 +126886 +126887 +126912 +126913 +126914 +126915 +126916 +126917 +126918 +126919 +126944 +126945 +126946 +126947 +126948 +126949 +126950 +126951 +126976 +126977 +126978 +126979 +126980 +126981 +126982 +126983 +127008 +127009 +127010 +127011 +127012 +127013 +127014 +127015 +127040 +127041 +127042 +127043 +127044 +127045 +127046 +127047 +127072 +127073 +127074 +127075 +127076 +127077 +127078 +127079 +127104 +127105 +127106 +127107 +127108 +127109 +127110 +127111 +127136 +127137 +127138 +127139 +127140 +127141 +127142 +127143 +127168 +127169 +127170 +127171 +127172 +127173 +127174 +127175 +127200 +127201 +127202 +127203 +127204 +127205 +127206 +127207 +127232 +127233 +127234 +127235 +127236 +127237 +127238 +127239 +127264 +127265 +127266 +127267 +127268 +127269 +127270 +127271 +127296 +127297 +127298 +127299 +127300 +127301 +127302 +127303 +127328 +127329 +127330 +127331 +127332 +127333 +127334 +127335 +127360 +127361 +127362 +127363 +127364 +127365 +127366 +127367 +127392 +127393 +127394 +127395 +127396 +127397 +127398 +127399 +127424 +127425 +127426 +127427 +127428 +127429 +127430 +127431 +127456 +127457 +127458 +127459 +127460 +127461 +127462 +127463 +127488 +127489 +127490 +127491 +127492 +127493 +127494 +127495 +127520 +127521 +127522 +127523 +127524 +127525 +127526 +127527 +127552 +127553 +127554 +127555 +127556 +127557 +127558 +127559 +127584 +127585 +127586 +127587 +127588 +127589 +127590 +127591 +127616 +127617 +127618 +127619 +127620 +127621 +127622 +127623 +127648 +127649 +127650 +127651 +127652 +127653 +127654 +127655 +127680 +127681 +127682 +127683 +127684 +127685 +127686 +127687 +127712 +127713 +127714 +127715 +127716 +127717 +127718 +127719 +127744 +127745 +127746 +127747 +127748 +127749 +127750 +127751 +127776 +127777 +127778 +127779 +127780 +127781 +127782 +127783 +127808 +127809 +127810 +127811 +127812 +127813 +127814 +127815 +127840 +127841 +127842 +127843 +127844 +127845 +127846 +127847 +127872 +127873 +127874 +127875 +127876 +127877 +127878 +127879 +127904 +127905 +127906 +127907 +127908 +127909 +127910 +127911 +127936 +127937 +127938 +127939 +127940 +127941 +127942 +127943 +127968 +127969 +127970 +127971 +127972 +127973 +127974 +127975 +128000 +128001 +128002 +128003 +128004 +128005 +128006 +128007 +128032 +128033 +128034 +128035 +128036 +128037 +128038 +128039 +128064 +128065 +128066 +128067 +128068 +128069 +128070 +128071 +128096 +128097 +128098 +128099 +128100 +128101 +128102 +128103 +128128 +128129 +128130 +128131 +128132 +128133 +128134 +128135 +128160 +128161 +128162 +128163 +128164 +128165 +128166 +128167 +128192 +128193 +128194 +128195 +128196 +128197 +128198 +128199 +128224 +128225 +128226 +128227 +128228 +128229 +128230 +128231 +128256 +128257 +128258 +128259 +128260 +128261 +128262 +128263 +128288 +128289 +128290 +128291 +128292 +128293 +128294 +128295 +128320 +128321 +128322 +128323 +128324 +128325 +128326 +128327 +128352 +128353 +128354 +128355 +128356 +128357 +128358 +128359 +128384 +128385 +128386 +128387 +128388 +128389 +128390 +128391 +128416 +128417 +128418 +128419 +128420 +128421 +128422 +128423 +128448 +128449 +128450 +128451 +128452 +128453 +128454 +128455 +128480 +128481 +128482 +128483 +128484 +128485 +128486 +128487 +128512 +128513 +128514 +128515 +128516 +128517 +128518 +128519 +128544 +128545 +128546 +128547 +128548 +128549 +128550 +128551 +128576 +128577 +128578 +128579 +128580 +128581 +128582 +128583 +128608 +128609 +128610 +128611 +128612 +128613 +128614 +128615 +128640 +128641 +128642 +128643 +128644 +128645 +128646 +128647 +128672 +128673 +128674 +128675 +128676 +128677 +128678 +128679 +128704 +128705 +128706 +128707 +128708 +128709 +128710 +128711 +128736 +128737 +128738 +128739 +128740 +128741 +128742 +128743 +128768 +128769 +128770 +128771 +128772 +128773 +128774 +128775 +128800 +128801 +128802 +128803 +128804 +128805 +128806 +128807 +128832 +128833 +128834 +128835 +128836 +128837 +128838 +128839 +128864 +128865 +128866 +128867 +128868 +128869 +128870 +128871 +128896 +128897 +128898 +128899 +128900 +128901 +128902 +128903 +128928 +128929 +128930 +128931 +128932 +128933 +128934 +128935 +128960 +128961 +128962 +128963 +128964 +128965 +128966 +128967 +128992 +128993 +128994 +128995 +128996 +128997 +128998 +128999 +129024 +129025 +129026 +129027 +129028 +129029 +129030 +129031 +129056 +129057 +129058 +129059 +129060 +129061 +129062 +129063 +129088 +129089 +129090 +129091 +129092 +129093 +129094 +129095 +129120 +129121 +129122 +129123 +129124 +129125 +129126 +129127 +129152 +129153 +129154 +129155 +129156 +129157 +129158 +129159 +129184 +129185 +129186 +129187 +129188 +129189 +129190 +129191 +129216 +129217 +129218 +129219 +129220 +129221 +129222 +129223 +129248 +129249 +129250 +129251 +129252 +129253 +129254 +129255 +129280 +129281 +129282 +129283 +129284 +129285 +129286 +129287 +129312 +129313 +129314 +129315 +129316 +129317 +129318 +129319 +129344 +129345 +129346 +129347 +129348 +129349 +129350 +129351 +129376 +129377 +129378 +129379 +129380 +129381 +129382 +129383 +129408 +129409 +129410 +129411 +129412 +129413 +129414 +129415 +129440 +129441 +129442 +129443 +129444 +129445 +129446 +129447 +129472 +129473 +129474 +129475 +129476 +129477 +129478 +129479 +129504 +129505 +129506 +129507 +129508 +129509 +129510 +129511 +129536 +129537 +129538 +129539 +129540 +129541 +129542 +129543 +129568 +129569 +129570 +129571 +129572 +129573 +129574 +129575 +129600 +129601 +129602 +129603 +129604 +129605 +129606 +129607 +129632 +129633 +129634 +129635 +129636 +129637 +129638 +129639 +129664 +129665 +129666 +129667 +129668 +129669 +129670 +129671 +129696 +129697 +129698 +129699 +129700 +129701 +129702 +129703 +129728 +129729 +129730 +129731 +129732 +129733 +129734 +129735 +129760 +129761 +129762 +129763 +129764 +129765 +129766 +129767 +129792 +129793 +129794 +129795 +129796 +129797 +129798 +129799 +129824 +129825 +129826 +129827 +129828 +129829 +129830 +129831 +129856 +129857 +129858 +129859 +129860 +129861 +129862 +129863 +129888 +129889 +129890 +129891 +129892 +129893 +129894 +129895 +129920 +129921 +129922 +129923 +129924 +129925 +129926 +129927 +129952 +129953 +129954 +129955 +129956 +129957 +129958 +129959 +129984 +129985 +129986 +129987 +129988 +129989 +129990 +129991 +130016 +130017 +130018 +130019 +130020 +130021 +130022 +130023 +130048 +130049 +130050 +130051 +130052 +130053 +130054 +130055 +130080 +130081 +130082 +130083 +130084 +130085 +130086 +130087 +130112 +130113 +130114 +130115 +130116 +130117 +130118 +130119 +130144 +130145 +130146 +130147 +130148 +130149 +130150 +130151 +130176 +130177 +130178 +130179 +130180 +130181 +130182 +130183 +130208 +130209 +130210 +130211 +130212 +130213 +130214 +130215 +130240 +130241 +130242 +130243 +130244 +130245 +130246 +130247 +130272 +130273 +130274 +130275 +130276 +130277 +130278 +130279 +130304 +130305 +130306 +130307 +130308 +130309 +130310 +130311 +130336 +130337 +130338 +130339 +130340 +130341 +130342 +130343 +130368 +130369 +130370 +130371 +130372 +130373 +130374 +130375 +130400 +130401 +130402 +130403 +130404 +130405 +130406 +130407 +130432 +130433 +130434 +130435 +130436 +130437 +130438 +130439 +130464 +130465 +130466 +130467 +130468 +130469 +130470 +130471 +130496 +130497 +130498 +130499 +130500 +130501 +130502 +130503 +130528 +130529 +130530 +130531 +130532 +130533 +130534 +130535 +130560 +130561 +130562 +130563 +130564 +130565 +130566 +130567 +130592 +130593 +130594 +130595 +130596 +130597 +130598 +130599 +130624 +130625 +130626 +130627 +130628 +130629 +130630 +130631 +130656 +130657 +130658 +130659 +130660 +130661 +130662 +130663 +130688 +130689 +130690 +130691 +130692 +130693 +130694 +130695 +130720 +130721 +130722 +130723 +130724 +130725 +130726 +130727 +130752 +130753 +130754 +130755 +130756 +130757 +130758 +130759 +130784 +130785 +130786 +130787 +130788 +130789 +130790 +130791 +130816 +130817 +130818 +130819 +130820 +130821 +130822 +130823 +130848 +130849 +130850 +130851 +130852 +130853 +130854 +130855 +130880 +130881 +130882 +130883 +130884 +130885 +130886 +130887 +130912 +130913 +130914 +130915 +130916 +130917 +130918 +130919 +130944 +130945 +130946 +130947 +130948 +130949 +130950 +130951 +130976 +130977 +130978 +130979 +130980 +130981 +130982 +130983 +131008 +131009 +131010 +131011 +131012 +131013 +131014 +131015 +131040 +131041 +131042 +131043 +131044 +131045 +131046 +131047 +131072 +131073 +131074 +131075 +131076 +131077 +131078 +131079 +131104 +131105 +131106 +131107 +131108 +131109 +131110 +131111 +131136 +131137 +131138 +131139 +131140 +131141 +131142 +131143 +131168 +131169 +131170 +131171 +131172 +131173 +131174 +131175 +131200 +131201 +131202 +131203 +131204 +131205 +131206 +131207 +131232 +131233 +131234 +131235 +131236 +131237 +131238 +131239 +131264 +131265 +131266 +131267 +131268 +131269 +131270 +131271 +131296 +131297 +131298 +131299 +131300 +131301 +131302 +131303 +131328 +131329 +131330 +131331 +131332 +131333 +131334 +131335 +131360 +131361 +131362 +131363 +131364 +131365 +131366 +131367 +131392 +131393 +131394 +131395 +131396 +131397 +131398 +131399 +131424 +131425 +131426 +131427 +131428 +131429 +131430 +131431 +131456 +131457 +131458 +131459 +131460 +131461 +131462 +131463 +131488 +131489 +131490 +131491 +131492 +131493 +131494 +131495 +131520 +131521 +131522 +131523 +131524 +131525 +131526 +131527 +131552 +131553 +131554 +131555 +131556 +131557 +131558 +131559 +131584 +131585 +131586 +131587 +131588 +131589 +131590 +131591 +131616 +131617 +131618 +131619 +131620 +131621 +131622 +131623 +131648 +131649 +131650 +131651 +131652 +131653 +131654 +131655 +131680 +131681 +131682 +131683 +131684 +131685 +131686 +131687 +131712 +131713 +131714 +131715 +131716 +131717 +131718 +131719 +131744 +131745 +131746 +131747 +131748 +131749 +131750 +131751 +131776 +131777 +131778 +131779 +131780 +131781 +131782 +131783 +131808 +131809 +131810 +131811 +131812 +131813 +131814 +131815 +131840 +131841 +131842 +131843 +131844 +131845 +131846 +131847 +131872 +131873 +131874 +131875 +131876 +131877 +131878 +131879 +131904 +131905 +131906 +131907 +131908 +131909 +131910 +131911 +131936 +131937 +131938 +131939 +131940 +131941 +131942 +131943 +131968 +131969 +131970 +131971 +131972 +131973 +131974 +131975 +132000 +132001 +132002 +132003 +132004 +132005 +132006 +132007 +132032 +132033 +132034 +132035 +132036 +132037 +132038 +132039 +132064 +132065 +132066 +132067 +132068 +132069 +132070 +132071 +132096 +132097 +132098 +132099 +132100 +132101 +132102 +132103 +132128 +132129 +132130 +132131 +132132 +132133 +132134 +132135 +132160 +132161 +132162 +132163 +132164 +132165 +132166 +132167 +132192 +132193 +132194 +132195 +132196 +132197 +132198 +132199 +132224 +132225 +132226 +132227 +132228 +132229 +132230 +132231 +132256 +132257 +132258 +132259 +132260 +132261 +132262 +132263 +132288 +132289 +132290 +132291 +132292 +132293 +132294 +132295 +132320 +132321 +132322 +132323 +132324 +132325 +132326 +132327 +132352 +132353 +132354 +132355 +132356 +132357 +132358 +132359 +132384 +132385 +132386 +132387 +132388 +132389 +132390 +132391 +132416 +132417 +132418 +132419 +132420 +132421 +132422 +132423 +132448 +132449 +132450 +132451 +132452 +132453 +132454 +132455 +132480 +132481 +132482 +132483 +132484 +132485 +132486 +132487 +132512 +132513 +132514 +132515 +132516 +132517 +132518 +132519 +132544 +132545 +132546 +132547 +132548 +132549 +132550 +132551 +132576 +132577 +132578 +132579 +132580 +132581 +132582 +132583 +132608 +132609 +132610 +132611 +132612 +132613 +132614 +132615 +132640 +132641 +132642 +132643 +132644 +132645 +132646 +132647 +132672 +132673 +132674 +132675 +132676 +132677 +132678 +132679 +132704 +132705 +132706 +132707 +132708 +132709 +132710 +132711 +132736 +132737 +132738 +132739 +132740 +132741 +132742 +132743 +132768 +132769 +132770 +132771 +132772 +132773 +132774 +132775 +132800 +132801 +132802 +132803 +132804 +132805 +132806 +132807 +132832 +132833 +132834 +132835 +132836 +132837 +132838 +132839 +132864 +132865 +132866 +132867 +132868 +132869 +132870 +132871 +132896 +132897 +132898 +132899 +132900 +132901 +132902 +132903 +132928 +132929 +132930 +132931 +132932 +132933 +132934 +132935 +132960 +132961 +132962 +132963 +132964 +132965 +132966 +132967 +132992 +132993 +132994 +132995 +132996 +132997 +132998 +132999 +133024 +133025 +133026 +133027 +133028 +133029 +133030 +133031 +133056 +133057 +133058 +133059 +133060 +133061 +133062 +133063 +133088 +133089 +133090 +133091 +133092 +133093 +133094 +133095 +133120 +133121 +133122 +133123 +133124 +133125 +133126 +133127 +133152 +133153 +133154 +133155 +133156 +133157 +133158 +133159 +133184 +133185 +133186 +133187 +133188 +133189 +133190 +133191 +133216 +133217 +133218 +133219 +133220 +133221 +133222 +133223 +133248 +133249 +133250 +133251 +133252 +133253 +133254 +133255 +133280 +133281 +133282 +133283 +133284 +133285 +133286 +133287 +133312 +133313 +133314 +133315 +133316 +133317 +133318 +133319 +133344 +133345 +133346 +133347 +133348 +133349 +133350 +133351 +133376 +133377 +133378 +133379 +133380 +133381 +133382 +133383 +133408 +133409 +133410 +133411 +133412 +133413 +133414 +133415 +133440 +133441 +133442 +133443 +133444 +133445 +133446 +133447 +133472 +133473 +133474 +133475 +133476 +133477 +133478 +133479 +133504 +133505 +133506 +133507 +133508 +133509 +133510 +133511 +133536 +133537 +133538 +133539 +133540 +133541 +133542 +133543 +133568 +133569 +133570 +133571 +133572 +133573 +133574 +133575 +133600 +133601 +133602 +133603 +133604 +133605 +133606 +133607 +133632 +133633 +133634 +133635 +133636 +133637 +133638 +133639 +133664 +133665 +133666 +133667 +133668 +133669 +133670 +133671 +133696 +133697 +133698 +133699 +133700 +133701 +133702 +133703 +133728 +133729 +133730 +133731 +133732 +133733 +133734 +133735 +133760 +133761 +133762 +133763 +133764 +133765 +133766 +133767 +133792 +133793 +133794 +133795 +133796 +133797 +133798 +133799 +133824 +133825 +133826 +133827 +133828 +133829 +133830 +133831 +133856 +133857 +133858 +133859 +133860 +133861 +133862 +133863 +133888 +133889 +133890 +133891 +133892 +133893 +133894 +133895 +133920 +133921 +133922 +133923 +133924 +133925 +133926 +133927 +133952 +133953 +133954 +133955 +133956 +133957 +133958 +133959 +133984 +133985 +133986 +133987 +133988 +133989 +133990 +133991 +134016 +134017 +134018 +134019 +134020 +134021 +134022 +134023 +134048 +134049 +134050 +134051 +134052 +134053 +134054 +134055 +134080 +134081 +134082 +134083 +134084 +134085 +134086 +134087 +134112 +134113 +134114 +134115 +134116 +134117 +134118 +134119 +134144 +134145 +134146 +134147 +134148 +134149 +134150 +134151 +134176 +134177 +134178 +134179 +134180 +134181 +134182 +134183 +134208 +134209 +134210 +134211 +134212 +134213 +134214 +134215 +134240 +134241 +134242 +134243 +134244 +134245 +134246 +134247 +134272 +134273 +134274 +134275 +134276 +134277 +134278 +134279 +134304 +134305 +134306 +134307 +134308 +134309 +134310 +134311 +134336 +134337 +134338 +134339 +134340 +134341 +134342 +134343 +134368 +134369 +134370 +134371 +134372 +134373 +134374 +134375 +134400 +134401 +134402 +134403 +134404 +134405 +134406 +134407 +134432 +134433 +134434 +134435 +134436 +134437 +134438 +134439 +134464 +134465 +134466 +134467 +134468 +134469 +134470 +134471 +134496 +134497 +134498 +134499 +134500 +134501 +134502 +134503 +134528 +134529 +134530 +134531 +134532 +134533 +134534 +134535 +134560 +134561 +134562 +134563 +134564 +134565 +134566 +134567 +134592 +134593 +134594 +134595 +134596 +134597 +134598 +134599 +134624 +134625 +134626 +134627 +134628 +134629 +134630 +134631 +134656 +134657 +134658 +134659 +134660 +134661 +134662 +134663 +134688 +134689 +134690 +134691 +134692 +134693 +134694 +134695 +134720 +134721 +134722 +134723 +134724 +134725 +134726 +134727 +134752 +134753 +134754 +134755 +134756 +134757 +134758 +134759 +134784 +134785 +134786 +134787 +134788 +134789 +134790 +134791 +134816 +134817 +134818 +134819 +134820 +134821 +134822 +134823 +134848 +134849 +134850 +134851 +134852 +134853 +134854 +134855 +134880 +134881 +134882 +134883 +134884 +134885 +134886 +134887 +134912 +134913 +134914 +134915 +134916 +134917 +134918 +134919 +134944 +134945 +134946 +134947 +134948 +134949 +134950 +134951 +134976 +134977 +134978 +134979 +134980 +134981 +134982 +134983 +135008 +135009 +135010 +135011 +135012 +135013 +135014 +135015 +135040 +135041 +135042 +135043 +135044 +135045 +135046 +135047 +135072 +135073 +135074 +135075 +135076 +135077 +135078 +135079 +135104 +135105 +135106 +135107 +135108 +135109 +135110 +135111 +135136 +135137 +135138 +135139 +135140 +135141 +135142 +135143 +135168 +135169 +135170 +135171 +135172 +135173 +135174 +135175 +135200 +135201 +135202 +135203 +135204 +135205 +135206 +135207 +135232 +135233 +135234 +135235 +135236 +135237 +135238 +135239 +135264 +135265 +135266 +135267 +135268 +135269 +135270 +135271 +135296 +135297 +135298 +135299 +135300 +135301 +135302 +135303 +135328 +135329 +135330 +135331 +135332 +135333 +135334 +135335 +135360 +135361 +135362 +135363 +135364 +135365 +135366 +135367 +135392 +135393 +135394 +135395 +135396 +135397 +135398 +135399 +135424 +135425 +135426 +135427 +135428 +135429 +135430 +135431 +135456 +135457 +135458 +135459 +135460 +135461 +135462 +135463 +135488 +135489 +135490 +135491 +135492 +135493 +135494 +135495 +135520 +135521 +135522 +135523 +135524 +135525 +135526 +135527 +135552 +135553 +135554 +135555 +135556 +135557 +135558 +135559 +135584 +135585 +135586 +135587 +135588 +135589 +135590 +135591 +135616 +135617 +135618 +135619 +135620 +135621 +135622 +135623 +135648 +135649 +135650 +135651 +135652 +135653 +135654 +135655 +135680 +135681 +135682 +135683 +135684 +135685 +135686 +135687 +135712 +135713 +135714 +135715 +135716 +135717 +135718 +135719 +135744 +135745 +135746 +135747 +135748 +135749 +135750 +135751 +135776 +135777 +135778 +135779 +135780 +135781 +135782 +135783 +135808 +135809 +135810 +135811 +135812 +135813 +135814 +135815 +135840 +135841 +135842 +135843 +135844 +135845 +135846 +135847 +135872 +135873 +135874 +135875 +135876 +135877 +135878 +135879 +135904 +135905 +135906 +135907 +135908 +135909 +135910 +135911 +135936 +135937 +135938 +135939 +135940 +135941 +135942 +135943 +135968 +135969 +135970 +135971 +135972 +135973 +135974 +135975 +136000 +136001 +136002 +136003 +136004 +136005 +136006 +136007 +136032 +136033 +136034 +136035 +136036 +136037 +136038 +136039 +136064 +136065 +136066 +136067 +136068 +136069 +136070 +136071 +136096 +136097 +136098 +136099 +136100 +136101 +136102 +136103 +136128 +136129 +136130 +136131 +136132 +136133 +136134 +136135 +136160 +136161 +136162 +136163 +136164 +136165 +136166 +136167 +136192 +136193 +136194 +136195 +136196 +136197 +136198 +136199 +136224 +136225 +136226 +136227 +136228 +136229 +136230 +136231 +136256 +136257 +136258 +136259 +136260 +136261 +136262 +136263 +136288 +136289 +136290 +136291 +136292 +136293 +136294 +136295 +136320 +136321 +136322 +136323 +136324 +136325 +136326 +136327 +136352 +136353 +136354 +136355 +136356 +136357 +136358 +136359 +136384 +136385 +136386 +136387 +136388 +136389 +136390 +136391 +136416 +136417 +136418 +136419 +136420 +136421 +136422 +136423 +136448 +136449 +136450 +136451 +136452 +136453 +136454 +136455 +136480 +136481 +136482 +136483 +136484 +136485 +136486 +136487 +136512 +136513 +136514 +136515 +136516 +136517 +136518 +136519 +136544 +136545 +136546 +136547 +136548 +136549 +136550 +136551 +136576 +136577 +136578 +136579 +136580 +136581 +136582 +136583 +136608 +136609 +136610 +136611 +136612 +136613 +136614 +136615 +136640 +136641 +136642 +136643 +136644 +136645 +136646 +136647 +136672 +136673 +136674 +136675 +136676 +136677 +136678 +136679 +136704 +136705 +136706 +136707 +136708 +136709 +136710 +136711 +136736 +136737 +136738 +136739 +136740 +136741 +136742 +136743 +136768 +136769 +136770 +136771 +136772 +136773 +136774 +136775 +136800 +136801 +136802 +136803 +136804 +136805 +136806 +136807 +136832 +136833 +136834 +136835 +136836 +136837 +136838 +136839 +136864 +136865 +136866 +136867 +136868 +136869 +136870 +136871 +136896 +136897 +136898 +136899 +136900 +136901 +136902 +136903 +136928 +136929 +136930 +136931 +136932 +136933 +136934 +136935 +136960 +136961 +136962 +136963 +136964 +136965 +136966 +136967 +136992 +136993 +136994 +136995 +136996 +136997 +136998 +136999 +137024 +137025 +137026 +137027 +137028 +137029 +137030 +137031 +137056 +137057 +137058 +137059 +137060 +137061 +137062 +137063 +137088 +137089 +137090 +137091 +137092 +137093 +137094 +137095 +137120 +137121 +137122 +137123 +137124 +137125 +137126 +137127 +137152 +137153 +137154 +137155 +137156 +137157 +137158 +137159 +137184 +137185 +137186 +137187 +137188 +137189 +137190 +137191 +137216 +137217 +137218 +137219 +137220 +137221 +137222 +137223 +137248 +137249 +137250 +137251 +137252 +137253 +137254 +137255 +137280 +137281 +137282 +137283 +137284 +137285 +137286 +137287 +137312 +137313 +137314 +137315 +137316 +137317 +137318 +137319 +137344 +137345 +137346 +137347 +137348 +137349 +137350 +137351 +137376 +137377 +137378 +137379 +137380 +137381 +137382 +137383 +137408 +137409 +137410 +137411 +137412 +137413 +137414 +137415 +137440 +137441 +137442 +137443 +137444 +137445 +137446 +137447 +137472 +137473 +137474 +137475 +137476 +137477 +137478 +137479 +137504 +137505 +137506 +137507 +137508 +137509 +137510 +137511 +137536 +137537 +137538 +137539 +137540 +137541 +137542 +137543 +137568 +137569 +137570 +137571 +137572 +137573 +137574 +137575 +137600 +137601 +137602 +137603 +137604 +137605 +137606 +137607 +137632 +137633 +137634 +137635 +137636 +137637 +137638 +137639 +137664 +137665 +137666 +137667 +137668 +137669 +137670 +137671 +137696 +137697 +137698 +137699 +137700 +137701 +137702 +137703 +137728 +137729 +137730 +137731 +137732 +137733 +137734 +137735 +137760 +137761 +137762 +137763 +137764 +137765 +137766 +137767 +137792 +137793 +137794 +137795 +137796 +137797 +137798 +137799 +137824 +137825 +137826 +137827 +137828 +137829 +137830 +137831 +137856 +137857 +137858 +137859 +137860 +137861 +137862 +137863 +137888 +137889 +137890 +137891 +137892 +137893 +137894 +137895 +137920 +137921 +137922 +137923 +137924 +137925 +137926 +137927 +137952 +137953 +137954 +137955 +137956 +137957 +137958 +137959 +137984 +137985 +137986 +137987 +137988 +137989 +137990 +137991 +138016 +138017 +138018 +138019 +138020 +138021 +138022 +138023 +138048 +138049 +138050 +138051 +138052 +138053 +138054 +138055 +138080 +138081 +138082 +138083 +138084 +138085 +138086 +138087 +138112 +138113 +138114 +138115 +138116 +138117 +138118 +138119 +138144 +138145 +138146 +138147 +138148 +138149 +138150 +138151 +138176 +138177 +138178 +138179 +138180 +138181 +138182 +138183 +138208 +138209 +138210 +138211 +138212 +138213 +138214 +138215 +138240 +138241 +138242 +138243 +138244 +138245 +138246 +138247 +138272 +138273 +138274 +138275 +138276 +138277 +138278 +138279 +138304 +138305 +138306 +138307 +138308 +138309 +138310 +138311 +138336 +138337 +138338 +138339 +138340 +138341 +138342 +138343 +138368 +138369 +138370 +138371 +138372 +138373 +138374 +138375 +138400 +138401 +138402 +138403 +138404 +138405 +138406 +138407 +138432 +138433 +138434 +138435 +138436 +138437 +138438 +138439 +138464 +138465 +138466 +138467 +138468 +138469 +138470 +138471 +138496 +138497 +138498 +138499 +138500 +138501 +138502 +138503 +138528 +138529 +138530 +138531 +138532 +138533 +138534 +138535 +138560 +138561 +138562 +138563 +138564 +138565 +138566 +138567 +138592 +138593 +138594 +138595 +138596 +138597 +138598 +138599 +138624 +138625 +138626 +138627 +138628 +138629 +138630 +138631 +138656 +138657 +138658 +138659 +138660 +138661 +138662 +138663 +138688 +138689 +138690 +138691 +138692 +138693 +138694 +138695 +138720 +138721 +138722 +138723 +138724 +138725 +138726 +138727 +138752 +138753 +138754 +138755 +138756 +138757 +138758 +138759 +138784 +138785 +138786 +138787 +138788 +138789 +138790 +138791 +138816 +138817 +138818 +138819 +138820 +138821 +138822 +138823 +138848 +138849 +138850 +138851 +138852 +138853 +138854 +138855 +138880 +138881 +138882 +138883 +138884 +138885 +138886 +138887 +138912 +138913 +138914 +138915 +138916 +138917 +138918 +138919 +138944 +138945 +138946 +138947 +138948 +138949 +138950 +138951 +138976 +138977 +138978 +138979 +138980 +138981 +138982 +138983 +139008 +139009 +139010 +139011 +139012 +139013 +139014 +139015 +139040 +139041 +139042 +139043 +139044 +139045 +139046 +139047 +139072 +139073 +139074 +139075 +139076 +139077 +139078 +139079 +139104 +139105 +139106 +139107 +139108 +139109 +139110 +139111 +139136 +139137 +139138 +139139 +139140 +139141 +139142 +139143 +139168 +139169 +139170 +139171 +139172 +139173 +139174 +139175 +139200 +139201 +139202 +139203 +139204 +139205 +139206 +139207 +139232 +139233 +139234 +139235 +139236 +139237 +139238 +139239 +139264 +139265 +139266 +139267 +139268 +139269 +139270 +139271 +139296 +139297 +139298 +139299 +139300 +139301 +139302 +139303 +139328 +139329 +139330 +139331 +139332 +139333 +139334 +139335 +139360 +139361 +139362 +139363 +139364 +139365 +139366 +139367 +139392 +139393 +139394 +139395 +139396 +139397 +139398 +139399 +139424 +139425 +139426 +139427 +139428 +139429 +139430 +139431 +139456 +139457 +139458 +139459 +139460 +139461 +139462 +139463 +139488 +139489 +139490 +139491 +139492 +139493 +139494 +139495 +139520 +139521 +139522 +139523 +139524 +139525 +139526 +139527 +139552 +139553 +139554 +139555 +139556 +139557 +139558 +139559 +139584 +139585 +139586 +139587 +139588 +139589 +139590 +139591 +139616 +139617 +139618 +139619 +139620 +139621 +139622 +139623 +139648 +139649 +139650 +139651 +139652 +139653 +139654 +139655 +139680 +139681 +139682 +139683 +139684 +139685 +139686 +139687 +139712 +139713 +139714 +139715 +139716 +139717 +139718 +139719 +139744 +139745 +139746 +139747 +139748 +139749 +139750 +139751 +139776 +139777 +139778 +139779 +139780 +139781 +139782 +139783 +139808 +139809 +139810 +139811 +139812 +139813 +139814 +139815 +139840 +139841 +139842 +139843 +139844 +139845 +139846 +139847 +139872 +139873 +139874 +139875 +139876 +139877 +139878 +139879 +139904 +139905 +139906 +139907 +139908 +139909 +139910 +139911 +139936 +139937 +139938 +139939 +139940 +139941 +139942 +139943 +139968 +139969 +139970 +139971 +139972 +139973 +139974 +139975 +140000 +140001 +140002 +140003 +140004 +140005 +140006 +140007 +140032 +140033 +140034 +140035 +140036 +140037 +140038 +140039 +140064 +140065 +140066 +140067 +140068 +140069 +140070 +140071 +140096 +140097 +140098 +140099 +140100 +140101 +140102 +140103 +140128 +140129 +140130 +140131 +140132 +140133 +140134 +140135 +140160 +140161 +140162 +140163 +140164 +140165 +140166 +140167 +140192 +140193 +140194 +140195 +140196 +140197 +140198 +140199 +140224 +140225 +140226 +140227 +140228 +140229 +140230 +140231 +140256 +140257 +140258 +140259 +140260 +140261 +140262 +140263 +140288 +140289 +140290 +140291 +140292 +140293 +140294 +140295 +140320 +140321 +140322 +140323 +140324 +140325 +140326 +140327 +140352 +140353 +140354 +140355 +140356 +140357 +140358 +140359 +140384 +140385 +140386 +140387 +140388 +140389 +140390 +140391 +140416 +140417 +140418 +140419 +140420 +140421 +140422 +140423 +140448 +140449 +140450 +140451 +140452 +140453 +140454 +140455 +140480 +140481 +140482 +140483 +140484 +140485 +140486 +140487 +140512 +140513 +140514 +140515 +140516 +140517 +140518 +140519 +140544 +140545 +140546 +140547 +140548 +140549 +140550 +140551 +140576 +140577 +140578 +140579 +140580 +140581 +140582 +140583 +140608 +140609 +140610 +140611 +140612 +140613 +140614 +140615 +140640 +140641 +140642 +140643 +140644 +140645 +140646 +140647 +140672 +140673 +140674 +140675 +140676 +140677 +140678 +140679 +140704 +140705 +140706 +140707 +140708 +140709 +140710 +140711 +140736 +140737 +140738 +140739 +140740 +140741 +140742 +140743 +140768 +140769 +140770 +140771 +140772 +140773 +140774 +140775 +140800 +140801 +140802 +140803 +140804 +140805 +140806 +140807 +140832 +140833 +140834 +140835 +140836 +140837 +140838 +140839 +140864 +140865 +140866 +140867 +140868 +140869 +140870 +140871 +140896 +140897 +140898 +140899 +140900 +140901 +140902 +140903 +140928 +140929 +140930 +140931 +140932 +140933 +140934 +140935 +140960 +140961 +140962 +140963 +140964 +140965 +140966 +140967 +140992 +140993 +140994 +140995 +140996 +140997 +140998 +140999 +141024 +141025 +141026 +141027 +141028 +141029 +141030 +141031 +141056 +141057 +141058 +141059 +141060 +141061 +141062 +141063 +141088 +141089 +141090 +141091 +141092 +141093 +141094 +141095 +141120 +141121 +141122 +141123 +141124 +141125 +141126 +141127 +141152 +141153 +141154 +141155 +141156 +141157 +141158 +141159 +141184 +141185 +141186 +141187 +141188 +141189 +141190 +141191 +141216 +141217 +141218 +141219 +141220 +141221 +141222 +141223 +141248 +141249 +141250 +141251 +141252 +141253 +141254 +141255 +141280 +141281 +141282 +141283 +141284 +141285 +141286 +141287 +141312 +141313 +141314 +141315 +141316 +141317 +141318 +141319 +141344 +141345 +141346 +141347 +141348 +141349 +141350 +141351 +141376 +141377 +141378 +141379 +141380 +141381 +141382 +141383 +141408 +141409 +141410 +141411 +141412 +141413 +141414 +141415 +141440 +141441 +141442 +141443 +141444 +141445 +141446 +141447 +141472 +141473 +141474 +141475 +141476 +141477 +141478 +141479 +141504 +141505 +141506 +141507 +141508 +141509 +141510 +141511 +141536 +141537 +141538 +141539 +141540 +141541 +141542 +141543 +141568 +141569 +141570 +141571 +141572 +141573 +141574 +141575 +141600 +141601 +141602 +141603 +141604 +141605 +141606 +141607 +141632 +141633 +141634 +141635 +141636 +141637 +141638 +141639 +141664 +141665 +141666 +141667 +141668 +141669 +141670 +141671 +141696 +141697 +141698 +141699 +141700 +141701 +141702 +141703 +141728 +141729 +141730 +141731 +141732 +141733 +141734 +141735 +141760 +141761 +141762 +141763 +141764 +141765 +141766 +141767 +141792 +141793 +141794 +141795 +141796 +141797 +141798 +141799 +141824 +141825 +141826 +141827 +141828 +141829 +141830 +141831 +141856 +141857 +141858 +141859 +141860 +141861 +141862 +141863 +141888 +141889 +141890 +141891 +141892 +141893 +141894 +141895 +141920 +141921 +141922 +141923 +141924 +141925 +141926 +141927 +141952 +141953 +141954 +141955 +141956 +141957 +141958 +141959 +141984 +141985 +141986 +141987 +141988 +141989 +141990 +141991 +142016 +142017 +142018 +142019 +142020 +142021 +142022 +142023 +142048 +142049 +142050 +142051 +142052 +142053 +142054 +142055 +142080 +142081 +142082 +142083 +142084 +142085 +142086 +142087 +142112 +142113 +142114 +142115 +142116 +142117 +142118 +142119 +142144 +142145 +142146 +142147 +142148 +142149 +142150 +142151 +142176 +142177 +142178 +142179 +142180 +142181 +142182 +142183 +142208 +142209 +142210 +142211 +142212 +142213 +142214 +142215 +142240 +142241 +142242 +142243 +142244 +142245 +142246 +142247 +142272 +142273 +142274 +142275 +142276 +142277 +142278 +142279 +142304 +142305 +142306 +142307 +142308 +142309 +142310 +142311 +142336 +142337 +142338 +142339 +142340 +142341 +142342 +142343 +142368 +142369 +142370 +142371 +142372 +142373 +142374 +142375 +142400 +142401 +142402 +142403 +142404 +142405 +142406 +142407 +142432 +142433 +142434 +142435 +142436 +142437 +142438 +142439 +142464 +142465 +142466 +142467 +142468 +142469 +142470 +142471 +142496 +142497 +142498 +142499 +142500 +142501 +142502 +142503 +142528 +142529 +142530 +142531 +142532 +142533 +142534 +142535 +142560 +142561 +142562 +142563 +142564 +142565 +142566 +142567 +142592 +142593 +142594 +142595 +142596 +142597 +142598 +142599 +142624 +142625 +142626 +142627 +142628 +142629 +142630 +142631 +142656 +142657 +142658 +142659 +142660 +142661 +142662 +142663 +142688 +142689 +142690 +142691 +142692 +142693 +142694 +142695 +142720 +142721 +142722 +142723 +142724 +142725 +142726 +142727 +142752 +142753 +142754 +142755 +142756 +142757 +142758 +142759 +142784 +142785 +142786 +142787 +142788 +142789 +142790 +142791 +142816 +142817 +142818 +142819 +142820 +142821 +142822 +142823 +142848 +142849 +142850 +142851 +142852 +142853 +142854 +142855 +142880 +142881 +142882 +142883 +142884 +142885 +142886 +142887 +142912 +142913 +142914 +142915 +142916 +142917 +142918 +142919 +142944 +142945 +142946 +142947 +142948 +142949 +142950 +142951 +142976 +142977 +142978 +142979 +142980 +142981 +142982 +142983 +143008 +143009 +143010 +143011 +143012 +143013 +143014 +143015 +143040 +143041 +143042 +143043 +143044 +143045 +143046 +143047 +143072 +143073 +143074 +143075 +143076 +143077 +143078 +143079 +143104 +143105 +143106 +143107 +143108 +143109 +143110 +143111 +143136 +143137 +143138 +143139 +143140 +143141 +143142 +143143 +143168 +143169 +143170 +143171 +143172 +143173 +143174 +143175 +143200 +143201 +143202 +143203 +143204 +143205 +143206 +143207 +143232 +143233 +143234 +143235 +143236 +143237 +143238 +143239 +143264 +143265 +143266 +143267 +143268 +143269 +143270 +143271 +143296 +143297 +143298 +143299 +143300 +143301 +143302 +143303 +143328 +143329 +143330 +143331 +143332 +143333 +143334 +143335 +143360 +143361 +143362 +143363 +143364 +143365 +143366 +143367 +143392 +143393 +143394 +143395 +143396 +143397 +143398 +143399 +143424 +143425 +143426 +143427 +143428 +143429 +143430 +143431 +143456 +143457 +143458 +143459 +143460 +143461 +143462 +143463 +143488 +143489 +143490 +143491 +143492 +143493 +143494 +143495 +143520 +143521 +143522 +143523 +143524 +143525 +143526 +143527 +143552 +143553 +143554 +143555 +143556 +143557 +143558 +143559 +143584 +143585 +143586 +143587 +143588 +143589 +143590 +143591 +143616 +143617 +143618 +143619 +143620 +143621 +143622 +143623 +143648 +143649 +143650 +143651 +143652 +143653 +143654 +143655 +143680 +143681 +143682 +143683 +143684 +143685 +143686 +143687 +143712 +143713 +143714 +143715 +143716 +143717 +143718 +143719 +143744 +143745 +143746 +143747 +143748 +143749 +143750 +143751 +143776 +143777 +143778 +143779 +143780 +143781 +143782 +143783 +143808 +143809 +143810 +143811 +143812 +143813 +143814 +143815 +143840 +143841 +143842 +143843 +143844 +143845 +143846 +143847 +143872 +143873 +143874 +143875 +143876 +143877 +143878 +143879 +143904 +143905 +143906 +143907 +143908 +143909 +143910 +143911 +143936 +143937 +143938 +143939 +143940 +143941 +143942 +143943 +143968 +143969 +143970 +143971 +143972 +143973 +143974 +143975 +144000 +144001 +144002 +144003 +144004 +144005 +144006 +144007 +144032 +144033 +144034 +144035 +144036 +144037 +144038 +144039 +144064 +144065 +144066 +144067 +144068 +144069 +144070 +144071 +144096 +144097 +144098 +144099 +144100 +144101 +144102 +144103 +144128 +144129 +144130 +144131 +144132 +144133 +144134 +144135 +144160 +144161 +144162 +144163 +144164 +144165 +144166 +144167 +144192 +144193 +144194 +144195 +144196 +144197 +144198 +144199 +144224 +144225 +144226 +144227 +144228 +144229 +144230 +144231 +144256 +144257 +144258 +144259 +144260 +144261 +144262 +144263 +144288 +144289 +144290 +144291 +144292 +144293 +144294 +144295 +144320 +144321 +144322 +144323 +144324 +144325 +144326 +144327 +144352 +144353 +144354 +144355 +144356 +144357 +144358 +144359 +144384 +144385 +144386 +144387 +144388 +144389 +144390 +144391 +144416 +144417 +144418 +144419 +144420 +144421 +144422 +144423 +144448 +144449 +144450 +144451 +144452 +144453 +144454 +144455 +144480 +144481 +144482 +144483 +144484 +144485 +144486 +144487 +144512 +144513 +144514 +144515 +144516 +144517 +144518 +144519 +144544 +144545 +144546 +144547 +144548 +144549 +144550 +144551 +144576 +144577 +144578 +144579 +144580 +144581 +144582 +144583 +144608 +144609 +144610 +144611 +144612 +144613 +144614 +144615 +144640 +144641 +144642 +144643 +144644 +144645 +144646 +144647 +144672 +144673 +144674 +144675 +144676 +144677 +144678 +144679 +144704 +144705 +144706 +144707 +144708 +144709 +144710 +144711 +144736 +144737 +144738 +144739 +144740 +144741 +144742 +144743 +144768 +144769 +144770 +144771 +144772 +144773 +144774 +144775 +144800 +144801 +144802 +144803 +144804 +144805 +144806 +144807 +144832 +144833 +144834 +144835 +144836 +144837 +144838 +144839 +144864 +144865 +144866 +144867 +144868 +144869 +144870 +144871 +144896 +144897 +144898 +144899 +144900 +144901 +144902 +144903 +144928 +144929 +144930 +144931 +144932 +144933 +144934 +144935 +144960 +144961 +144962 +144963 +144964 +144965 +144966 +144967 +144992 +144993 +144994 +144995 +144996 +144997 +144998 +144999 +145024 +145025 +145026 +145027 +145028 +145029 +145030 +145031 +145056 +145057 +145058 +145059 +145060 +145061 +145062 +145063 +145088 +145089 +145090 +145091 +145092 +145093 +145094 +145095 +145120 +145121 +145122 +145123 +145124 +145125 +145126 +145127 +145152 +145153 +145154 +145155 +145156 +145157 +145158 +145159 +145184 +145185 +145186 +145187 +145188 +145189 +145190 +145191 +145216 +145217 +145218 +145219 +145220 +145221 +145222 +145223 +145248 +145249 +145250 +145251 +145252 +145253 +145254 +145255 +145280 +145281 +145282 +145283 +145284 +145285 +145286 +145287 +145312 +145313 +145314 +145315 +145316 +145317 +145318 +145319 +145344 +145345 +145346 +145347 +145348 +145349 +145350 +145351 +145376 +145377 +145378 +145379 +145380 +145381 +145382 +145383 +145408 +145409 +145410 +145411 +145412 +145413 +145414 +145415 +145440 +145441 +145442 +145443 +145444 +145445 +145446 +145447 +145472 +145473 +145474 +145475 +145476 +145477 +145478 +145479 +145504 +145505 +145506 +145507 +145508 +145509 +145510 +145511 +145536 +145537 +145538 +145539 +145540 +145541 +145542 +145543 +145568 +145569 +145570 +145571 +145572 +145573 +145574 +145575 +145600 +145601 +145602 +145603 +145604 +145605 +145606 +145607 +145632 +145633 +145634 +145635 +145636 +145637 +145638 +145639 +145664 +145665 +145666 +145667 +145668 +145669 +145670 +145671 +145696 +145697 +145698 +145699 +145700 +145701 +145702 +145703 +145728 +145729 +145730 +145731 +145732 +145733 +145734 +145735 +145760 +145761 +145762 +145763 +145764 +145765 +145766 +145767 +145792 +145793 +145794 +145795 +145796 +145797 +145798 +145799 +145824 +145825 +145826 +145827 +145828 +145829 +145830 +145831 +145856 +145857 +145858 +145859 +145860 +145861 +145862 +145863 +145888 +145889 +145890 +145891 +145892 +145893 +145894 +145895 +145920 +145921 +145922 +145923 +145924 +145925 +145926 +145927 +145952 +145953 +145954 +145955 +145956 +145957 +145958 +145959 +145984 +145985 +145986 +145987 +145988 +145989 +145990 +145991 +146016 +146017 +146018 +146019 +146020 +146021 +146022 +146023 +146048 +146049 +146050 +146051 +146052 +146053 +146054 +146055 +146080 +146081 +146082 +146083 +146084 +146085 +146086 +146087 +146112 +146113 +146114 +146115 +146116 +146117 +146118 +146119 +146144 +146145 +146146 +146147 +146148 +146149 +146150 +146151 +146176 +146177 +146178 +146179 +146180 +146181 +146182 +146183 +146208 +146209 +146210 +146211 +146212 +146213 +146214 +146215 +146240 +146241 +146242 +146243 +146244 +146245 +146246 +146247 +146272 +146273 +146274 +146275 +146276 +146277 +146278 +146279 +146304 +146305 +146306 +146307 +146308 +146309 +146310 +146311 +146336 +146337 +146338 +146339 +146340 +146341 +146342 +146343 +146368 +146369 +146370 +146371 +146372 +146373 +146374 +146375 +146400 +146401 +146402 +146403 +146404 +146405 +146406 +146407 +146432 +146433 +146434 +146435 +146436 +146437 +146438 +146439 +146464 +146465 +146466 +146467 +146468 +146469 +146470 +146471 +146496 +146497 +146498 +146499 +146500 +146501 +146502 +146503 +146528 +146529 +146530 +146531 +146532 +146533 +146534 +146535 +146560 +146561 +146562 +146563 +146564 +146565 +146566 +146567 +146592 +146593 +146594 +146595 +146596 +146597 +146598 +146599 +146624 +146625 +146626 +146627 +146628 +146629 +146630 +146631 +146656 +146657 +146658 +146659 +146660 +146661 +146662 +146663 +146688 +146689 +146690 +146691 +146692 +146693 +146694 +146695 +146720 +146721 +146722 +146723 +146724 +146725 +146726 +146727 +146752 +146753 +146754 +146755 +146756 +146757 +146758 +146759 +146784 +146785 +146786 +146787 +146788 +146789 +146790 +146791 +146816 +146817 +146818 +146819 +146820 +146821 +146822 +146823 +146848 +146849 +146850 +146851 +146852 +146853 +146854 +146855 +146880 +146881 +146882 +146883 +146884 +146885 +146886 +146887 +146912 +146913 +146914 +146915 +146916 +146917 +146918 +146919 +146944 +146945 +146946 +146947 +146948 +146949 +146950 +146951 +146976 +146977 +146978 +146979 +146980 +146981 +146982 +146983 +147008 +147009 +147010 +147011 +147012 +147013 +147014 +147015 +147040 +147041 +147042 +147043 +147044 +147045 +147046 +147047 +147072 +147073 +147074 +147075 +147076 +147077 +147078 +147079 +147104 +147105 +147106 +147107 +147108 +147109 +147110 +147111 +147136 +147137 +147138 +147139 +147140 +147141 +147142 +147143 +147168 +147169 +147170 +147171 +147172 +147173 +147174 +147175 +147200 +147201 +147202 +147203 +147204 +147205 +147206 +147207 +147232 +147233 +147234 +147235 +147236 +147237 +147238 +147239 +147264 +147265 +147266 +147267 +147268 +147269 +147270 +147271 +147296 +147297 +147298 +147299 +147300 +147301 +147302 +147303 +147328 +147329 +147330 +147331 +147332 +147333 +147334 +147335 +147360 +147361 +147362 +147363 +147364 +147365 +147366 +147367 +147392 +147393 +147394 +147395 +147396 +147397 +147398 +147399 +147424 +147425 +147426 +147427 +147428 +147429 +147430 +147431 +147456 +147457 +147458 +147459 +147460 +147461 +147462 +147463 +147488 +147489 +147490 +147491 +147492 +147493 +147494 +147495 +147520 +147521 +147522 +147523 +147524 +147525 +147526 +147527 +147552 +147553 +147554 +147555 +147556 +147557 +147558 +147559 +147584 +147585 +147586 +147587 +147588 +147589 +147590 +147591 +147616 +147617 +147618 +147619 +147620 +147621 +147622 +147623 +147648 +147649 +147650 +147651 +147652 +147653 +147654 +147655 +147680 +147681 +147682 +147683 +147684 +147685 +147686 +147687 +147712 +147713 +147714 +147715 +147716 +147717 +147718 +147719 +147744 +147745 +147746 +147747 +147748 +147749 +147750 +147751 +147776 +147777 +147778 +147779 +147780 +147781 +147782 +147783 +147808 +147809 +147810 +147811 +147812 +147813 +147814 +147815 +147840 +147841 +147842 +147843 +147844 +147845 +147846 +147847 +147872 +147873 +147874 +147875 +147876 +147877 +147878 +147879 +147904 +147905 +147906 +147907 +147908 +147909 +147910 +147911 +147936 +147937 +147938 +147939 +147940 +147941 +147942 +147943 +147968 +147969 +147970 +147971 +147972 +147973 +147974 +147975 +148000 +148001 +148002 +148003 +148004 +148005 +148006 +148007 +148032 +148033 +148034 +148035 +148036 +148037 +148038 +148039 +148064 +148065 +148066 +148067 +148068 +148069 +148070 +148071 +148096 +148097 +148098 +148099 +148100 +148101 +148102 +148103 +148128 +148129 +148130 +148131 +148132 +148133 +148134 +148135 +148160 +148161 +148162 +148163 +148164 +148165 +148166 +148167 +148192 +148193 +148194 +148195 +148196 +148197 +148198 +148199 +148224 +148225 +148226 +148227 +148228 +148229 +148230 +148231 +148256 +148257 +148258 +148259 +148260 +148261 +148262 +148263 +148288 +148289 +148290 +148291 +148292 +148293 +148294 +148295 +148320 +148321 +148322 +148323 +148324 +148325 +148326 +148327 +148352 +148353 +148354 +148355 +148356 +148357 +148358 +148359 +148384 +148385 +148386 +148387 +148388 +148389 +148390 +148391 +148416 +148417 +148418 +148419 +148420 +148421 +148422 +148423 +148448 +148449 +148450 +148451 +148452 +148453 +148454 +148455 +148480 +148481 +148482 +148483 +148484 +148485 +148486 +148487 +148512 +148513 +148514 +148515 +148516 +148517 +148518 +148519 +148544 +148545 +148546 +148547 +148548 +148549 +148550 +148551 +148576 +148577 +148578 +148579 +148580 +148581 +148582 +148583 +148608 +148609 +148610 +148611 +148612 +148613 +148614 +148615 +148640 +148641 +148642 +148643 +148644 +148645 +148646 +148647 +148672 +148673 +148674 +148675 +148676 +148677 +148678 +148679 +148704 +148705 +148706 +148707 +148708 +148709 +148710 +148711 +148736 +148737 +148738 +148739 +148740 +148741 +148742 +148743 +148768 +148769 +148770 +148771 +148772 +148773 +148774 +148775 +148800 +148801 +148802 +148803 +148804 +148805 +148806 +148807 +148832 +148833 +148834 +148835 +148836 +148837 +148838 +148839 +148864 +148865 +148866 +148867 +148868 +148869 +148870 +148871 +148896 +148897 +148898 +148899 +148900 +148901 +148902 +148903 +148928 +148929 +148930 +148931 +148932 +148933 +148934 +148935 +148960 +148961 +148962 +148963 +148964 +148965 +148966 +148967 +148992 +148993 +148994 +148995 +148996 +148997 +148998 +148999 +149024 +149025 +149026 +149027 +149028 +149029 +149030 +149031 +149056 +149057 +149058 +149059 +149060 +149061 +149062 +149063 +149088 +149089 +149090 +149091 +149092 +149093 +149094 +149095 +149120 +149121 +149122 +149123 +149124 +149125 +149126 +149127 +149152 +149153 +149154 +149155 +149156 +149157 +149158 +149159 +149184 +149185 +149186 +149187 +149188 +149189 +149190 +149191 +149216 +149217 +149218 +149219 +149220 +149221 +149222 +149223 +149248 +149249 +149250 +149251 +149252 +149253 +149254 +149255 +149280 +149281 +149282 +149283 +149284 +149285 +149286 +149287 +149312 +149313 +149314 +149315 +149316 +149317 +149318 +149319 +149344 +149345 +149346 +149347 +149348 +149349 +149350 +149351 +149376 +149377 +149378 +149379 +149380 +149381 +149382 +149383 +149408 +149409 +149410 +149411 +149412 +149413 +149414 +149415 +149440 +149441 +149442 +149443 +149444 +149445 +149446 +149447 +149472 +149473 +149474 +149475 +149476 +149477 +149478 +149479 +149504 +149505 +149506 +149507 +149508 +149509 +149510 +149511 +149536 +149537 +149538 +149539 +149540 +149541 +149542 +149543 +149568 +149569 +149570 +149571 +149572 +149573 +149574 +149575 +149600 +149601 +149602 +149603 +149604 +149605 +149606 +149607 +149632 +149633 +149634 +149635 +149636 +149637 +149638 +149639 +149664 +149665 +149666 +149667 +149668 +149669 +149670 +149671 +149696 +149697 +149698 +149699 +149700 +149701 +149702 +149703 +149728 +149729 +149730 +149731 +149732 +149733 +149734 +149735 +149760 +149761 +149762 +149763 +149764 +149765 +149766 +149767 +149792 +149793 +149794 +149795 +149796 +149797 +149798 +149799 +149824 +149825 +149826 +149827 +149828 +149829 +149830 +149831 +149856 +149857 +149858 +149859 +149860 +149861 +149862 +149863 +149888 +149889 +149890 +149891 +149892 +149893 +149894 +149895 +149920 +149921 +149922 +149923 +149924 +149925 +149926 +149927 +149952 +149953 +149954 +149955 +149956 +149957 +149958 +149959 +149984 +149985 +149986 +149987 +149988 +149989 +149990 +149991 +150016 +150017 +150018 +150019 +150020 +150021 +150022 +150023 +150048 +150049 +150050 +150051 +150052 +150053 +150054 +150055 +150080 +150081 +150082 +150083 +150084 +150085 +150086 +150087 +150112 +150113 +150114 +150115 +150116 +150117 +150118 +150119 +150144 +150145 +150146 +150147 +150148 +150149 +150150 +150151 +150176 +150177 +150178 +150179 +150180 +150181 +150182 +150183 +150208 +150209 +150210 +150211 +150212 +150213 +150214 +150215 +150240 +150241 +150242 +150243 +150244 +150245 +150246 +150247 +150272 +150273 +150274 +150275 +150276 +150277 +150278 +150279 +150304 +150305 +150306 +150307 +150308 +150309 +150310 +150311 +150336 +150337 +150338 +150339 +150340 +150341 +150342 +150343 +150368 +150369 +150370 +150371 +150372 +150373 +150374 +150375 +150400 +150401 +150402 +150403 +150404 +150405 +150406 +150407 +150432 +150433 +150434 +150435 +150436 +150437 +150438 +150439 +150464 +150465 +150466 +150467 +150468 +150469 +150470 +150471 +150496 +150497 +150498 +150499 +150500 +150501 +150502 +150503 +150528 +150529 +150530 +150531 +150532 +150533 +150534 +150535 +150560 +150561 +150562 +150563 +150564 +150565 +150566 +150567 +150592 +150593 +150594 +150595 +150596 +150597 +150598 +150599 +150624 +150625 +150626 +150627 +150628 +150629 +150630 +150631 +150656 +150657 +150658 +150659 +150660 +150661 +150662 +150663 +150688 +150689 +150690 +150691 +150692 +150693 +150694 +150695 +150720 +150721 +150722 +150723 +150724 +150725 +150726 +150727 +150752 +150753 +150754 +150755 +150756 +150757 +150758 +150759 +150784 +150785 +150786 +150787 +150788 +150789 +150790 +150791 +150816 +150817 +150818 +150819 +150820 +150821 +150822 +150823 +150848 +150849 +150850 +150851 +150852 +150853 +150854 +150855 +150880 +150881 +150882 +150883 +150884 +150885 +150886 +150887 +150912 +150913 +150914 +150915 +150916 +150917 +150918 +150919 +150944 +150945 +150946 +150947 +150948 +150949 +150950 +150951 +150976 +150977 +150978 +150979 +150980 +150981 +150982 +150983 +151008 +151009 +151010 +151011 +151012 +151013 +151014 +151015 +151040 +151041 +151042 +151043 +151044 +151045 +151046 +151047 +151072 +151073 +151074 +151075 +151076 +151077 +151078 +151079 +151104 +151105 +151106 +151107 +151108 +151109 +151110 +151111 +151136 +151137 +151138 +151139 +151140 +151141 +151142 +151143 +151168 +151169 +151170 +151171 +151172 +151173 +151174 +151175 +151200 +151201 +151202 +151203 +151204 +151205 +151206 +151207 +151232 +151233 +151234 +151235 +151236 +151237 +151238 +151239 +151264 +151265 +151266 +151267 +151268 +151269 +151270 +151271 +151296 +151297 +151298 +151299 +151300 +151301 +151302 +151303 +151328 +151329 +151330 +151331 +151332 +151333 +151334 +151335 +151360 +151361 +151362 +151363 +151364 +151365 +151366 +151367 +151392 +151393 +151394 +151395 +151396 +151397 +151398 +151399 +151424 +151425 +151426 +151427 +151428 +151429 +151430 +151431 +151456 +151457 +151458 +151459 +151460 +151461 +151462 +151463 +151488 +151489 +151490 +151491 +151492 +151493 +151494 +151495 +151520 +151521 +151522 +151523 +151524 +151525 +151526 +151527 +151552 +151553 +151554 +151555 +151556 +151557 +151558 +151559 +151584 +151585 +151586 +151587 +151588 +151589 +151590 +151591 +151616 +151617 +151618 +151619 +151620 +151621 +151622 +151623 +151648 +151649 +151650 +151651 +151652 +151653 +151654 +151655 +151680 +151681 +151682 +151683 +151684 +151685 +151686 +151687 +151712 +151713 +151714 +151715 +151716 +151717 +151718 +151719 +151744 +151745 +151746 +151747 +151748 +151749 +151750 +151751 +151776 +151777 +151778 +151779 +151780 +151781 +151782 +151783 +151808 +151809 +151810 +151811 +151812 +151813 +151814 +151815 +151840 +151841 +151842 +151843 +151844 +151845 +151846 +151847 +151872 +151873 +151874 +151875 +151876 +151877 +151878 +151879 +151904 +151905 +151906 +151907 +151908 +151909 +151910 +151911 +151936 +151937 +151938 +151939 +151940 +151941 +151942 +151943 +151968 +151969 +151970 +151971 +151972 +151973 +151974 +151975 +152000 +152001 +152002 +152003 +152004 +152005 +152006 +152007 +152032 +152033 +152034 +152035 +152036 +152037 +152038 +152039 +152064 +152065 +152066 +152067 +152068 +152069 +152070 +152071 +152096 +152097 +152098 +152099 +152100 +152101 +152102 +152103 +152128 +152129 +152130 +152131 +152132 +152133 +152134 +152135 +152160 +152161 +152162 +152163 +152164 +152165 +152166 +152167 +152192 +152193 +152194 +152195 +152196 +152197 +152198 +152199 +152224 +152225 +152226 +152227 +152228 +152229 +152230 +152231 +152256 +152257 +152258 +152259 +152260 +152261 +152262 +152263 +152288 +152289 +152290 +152291 +152292 +152293 +152294 +152295 +152320 +152321 +152322 +152323 +152324 +152325 +152326 +152327 +152352 +152353 +152354 +152355 +152356 +152357 +152358 +152359 +152384 +152385 +152386 +152387 +152388 +152389 +152390 +152391 +152416 +152417 +152418 +152419 +152420 +152421 +152422 +152423 +152448 +152449 +152450 +152451 +152452 +152453 +152454 +152455 +152480 +152481 +152482 +152483 +152484 +152485 +152486 +152487 +152512 +152513 +152514 +152515 +152516 +152517 +152518 +152519 +152544 +152545 +152546 +152547 +152548 +152549 +152550 +152551 +152576 +152577 +152578 +152579 +152580 +152581 +152582 +152583 +152608 +152609 +152610 +152611 +152612 +152613 +152614 +152615 +152640 +152641 +152642 +152643 +152644 +152645 +152646 +152647 +152672 +152673 +152674 +152675 +152676 +152677 +152678 +152679 +152704 +152705 +152706 +152707 +152708 +152709 +152710 +152711 +152736 +152737 +152738 +152739 +152740 +152741 +152742 +152743 +152768 +152769 +152770 +152771 +152772 +152773 +152774 +152775 +152800 +152801 +152802 +152803 +152804 +152805 +152806 +152807 +152832 +152833 +152834 +152835 +152836 +152837 +152838 +152839 +152864 +152865 +152866 +152867 +152868 +152869 +152870 +152871 +152896 +152897 +152898 +152899 +152900 +152901 +152902 +152903 +152928 +152929 +152930 +152931 +152932 +152933 +152934 +152935 +152960 +152961 +152962 +152963 +152964 +152965 +152966 +152967 +152992 +152993 +152994 +152995 +152996 +152997 +152998 +152999 +153024 +153025 +153026 +153027 +153028 +153029 +153030 +153031 +153056 +153057 +153058 +153059 +153060 +153061 +153062 +153063 +153088 +153089 +153090 +153091 +153092 +153093 +153094 +153095 +153120 +153121 +153122 +153123 +153124 +153125 +153126 +153127 +153152 +153153 +153154 +153155 +153156 +153157 +153158 +153159 +153184 +153185 +153186 +153187 +153188 +153189 +153190 +153191 +153216 +153217 +153218 +153219 +153220 +153221 +153222 +153223 +153248 +153249 +153250 +153251 +153252 +153253 +153254 +153255 +153280 +153281 +153282 +153283 +153284 +153285 +153286 +153287 +153312 +153313 +153314 +153315 +153316 +153317 +153318 +153319 +153344 +153345 +153346 +153347 +153348 +153349 +153350 +153351 +153376 +153377 +153378 +153379 +153380 +153381 +153382 +153383 +153408 +153409 +153410 +153411 +153412 +153413 +153414 +153415 +153440 +153441 +153442 +153443 +153444 +153445 +153446 +153447 +153472 +153473 +153474 +153475 +153476 +153477 +153478 +153479 +153504 +153505 +153506 +153507 +153508 +153509 +153510 +153511 +153536 +153537 +153538 +153539 +153540 +153541 +153542 +153543 +153568 +153569 +153570 +153571 +153572 +153573 +153574 +153575 +153600 +153601 +153602 +153603 +153604 +153605 +153606 +153607 +153632 +153633 +153634 +153635 +153636 +153637 +153638 +153639 +153664 +153665 +153666 +153667 +153668 +153669 +153670 +153671 +153696 +153697 +153698 +153699 +153700 +153701 +153702 +153703 +153728 +153729 +153730 +153731 +153732 +153733 +153734 +153735 +153760 +153761 +153762 +153763 +153764 +153765 +153766 +153767 +153792 +153793 +153794 +153795 +153796 +153797 +153798 +153799 +153824 +153825 +153826 +153827 +153828 +153829 +153830 +153831 +153856 +153857 +153858 +153859 +153860 +153861 +153862 +153863 +153888 +153889 +153890 +153891 +153892 +153893 +153894 +153895 +153920 +153921 +153922 +153923 +153924 +153925 +153926 +153927 +153952 +153953 +153954 +153955 +153956 +153957 +153958 +153959 +153984 +153985 +153986 +153987 +153988 +153989 +153990 +153991 +154016 +154017 +154018 +154019 +154020 +154021 +154022 +154023 +154048 +154049 +154050 +154051 +154052 +154053 +154054 +154055 +154080 +154081 +154082 +154083 +154084 +154085 +154086 +154087 +154112 +154113 +154114 +154115 +154116 +154117 +154118 +154119 +154144 +154145 +154146 +154147 +154148 +154149 +154150 +154151 +154176 +154177 +154178 +154179 +154180 +154181 +154182 +154183 +154208 +154209 +154210 +154211 +154212 +154213 +154214 +154215 +154240 +154241 +154242 +154243 +154244 +154245 +154246 +154247 +154272 +154273 +154274 +154275 +154276 +154277 +154278 +154279 +154304 +154305 +154306 +154307 +154308 +154309 +154310 +154311 +154336 +154337 +154338 +154339 +154340 +154341 +154342 +154343 +154368 +154369 +154370 +154371 +154372 +154373 +154374 +154375 +154400 +154401 +154402 +154403 +154404 +154405 +154406 +154407 +154432 +154433 +154434 +154435 +154436 +154437 +154438 +154439 +154464 +154465 +154466 +154467 +154468 +154469 +154470 +154471 +154496 +154497 +154498 +154499 +154500 +154501 +154502 +154503 +154528 +154529 +154530 +154531 +154532 +154533 +154534 +154535 +154560 +154561 +154562 +154563 +154564 +154565 +154566 +154567 +154592 +154593 +154594 +154595 +154596 +154597 +154598 +154599 +154624 +154625 +154626 +154627 +154628 +154629 +154630 +154631 +154656 +154657 +154658 +154659 +154660 +154661 +154662 +154663 +154688 +154689 +154690 +154691 +154692 +154693 +154694 +154695 +154720 +154721 +154722 +154723 +154724 +154725 +154726 +154727 +154752 +154753 +154754 +154755 +154756 +154757 +154758 +154759 +154784 +154785 +154786 +154787 +154788 +154789 +154790 +154791 +154816 +154817 +154818 +154819 +154820 +154821 +154822 +154823 +154848 +154849 +154850 +154851 +154852 +154853 +154854 +154855 +154880 +154881 +154882 +154883 +154884 +154885 +154886 +154887 +154912 +154913 +154914 +154915 +154916 +154917 +154918 +154919 +154944 +154945 +154946 +154947 +154948 +154949 +154950 +154951 +154976 +154977 +154978 +154979 +154980 +154981 +154982 +154983 +155008 +155009 +155010 +155011 +155012 +155013 +155014 +155015 +155040 +155041 +155042 +155043 +155044 +155045 +155046 +155047 +155072 +155073 +155074 +155075 +155076 +155077 +155078 +155079 +155104 +155105 +155106 +155107 +155108 +155109 +155110 +155111 +155136 +155137 +155138 +155139 +155140 +155141 +155142 +155143 +155168 +155169 +155170 +155171 +155172 +155173 +155174 +155175 +155200 +155201 +155202 +155203 +155204 +155205 +155206 +155207 +155232 +155233 +155234 +155235 +155236 +155237 +155238 +155239 +155264 +155265 +155266 +155267 +155268 +155269 +155270 +155271 +155296 +155297 +155298 +155299 +155300 +155301 +155302 +155303 +155328 +155329 +155330 +155331 +155332 +155333 +155334 +155335 +155360 +155361 +155362 +155363 +155364 +155365 +155366 +155367 +155392 +155393 +155394 +155395 +155396 +155397 +155398 +155399 +155424 +155425 +155426 +155427 +155428 +155429 +155430 +155431 +155456 +155457 +155458 +155459 +155460 +155461 +155462 +155463 +155488 +155489 +155490 +155491 +155492 +155493 +155494 +155495 +155520 +155521 +155522 +155523 +155524 +155525 +155526 +155527 +155552 +155553 +155554 +155555 +155556 +155557 +155558 +155559 +155584 +155585 +155586 +155587 +155588 +155589 +155590 +155591 +155616 +155617 +155618 +155619 +155620 +155621 +155622 +155623 +155648 +155649 +155650 +155651 +155652 +155653 +155654 +155655 +155680 +155681 +155682 +155683 +155684 +155685 +155686 +155687 +155712 +155713 +155714 +155715 +155716 +155717 +155718 +155719 +155744 +155745 +155746 +155747 +155748 +155749 +155750 +155751 +155776 +155777 +155778 +155779 +155780 +155781 +155782 +155783 +155808 +155809 +155810 +155811 +155812 +155813 +155814 +155815 +155840 +155841 +155842 +155843 +155844 +155845 +155846 +155847 +155872 +155873 +155874 +155875 +155876 +155877 +155878 +155879 +155904 +155905 +155906 +155907 +155908 +155909 +155910 +155911 +155936 +155937 +155938 +155939 +155940 +155941 +155942 +155943 +155968 +155969 +155970 +155971 +155972 +155973 +155974 +155975 +156000 +156001 +156002 +156003 +156004 +156005 +156006 +156007 +156032 +156033 +156034 +156035 +156036 +156037 +156038 +156039 +156064 +156065 +156066 +156067 +156068 +156069 +156070 +156071 +156096 +156097 +156098 +156099 +156100 +156101 +156102 +156103 +156128 +156129 +156130 +156131 +156132 +156133 +156134 +156135 +156160 +156161 +156162 +156163 +156164 +156165 +156166 +156167 +156192 +156193 +156194 +156195 +156196 +156197 +156198 +156199 +156224 +156225 +156226 +156227 +156228 +156229 +156230 +156231 +156256 +156257 +156258 +156259 +156260 +156261 +156262 +156263 +156288 +156289 +156290 +156291 +156292 +156293 +156294 +156295 +156320 +156321 +156322 +156323 +156324 +156325 +156326 +156327 +156352 +156353 +156354 +156355 +156356 +156357 +156358 +156359 +156384 +156385 +156386 +156387 +156388 +156389 +156390 +156391 +156416 +156417 +156418 +156419 +156420 +156421 +156422 +156423 +156448 +156449 +156450 +156451 +156452 +156453 +156454 +156455 +156480 +156481 +156482 +156483 +156484 +156485 +156486 +156487 +156512 +156513 +156514 +156515 +156516 +156517 +156518 +156519 +156544 +156545 +156546 +156547 +156548 +156549 +156550 +156551 +156576 +156577 +156578 +156579 +156580 +156581 +156582 +156583 +156608 +156609 +156610 +156611 +156612 +156613 +156614 +156615 +156640 +156641 +156642 +156643 +156644 +156645 +156646 +156647 +156672 +156673 +156674 +156675 +156676 +156677 +156678 +156679 +156704 +156705 +156706 +156707 +156708 +156709 +156710 +156711 +156736 +156737 +156738 +156739 +156740 +156741 +156742 +156743 +156768 +156769 +156770 +156771 +156772 +156773 +156774 +156775 +156800 +156801 +156802 +156803 +156804 +156805 +156806 +156807 +156832 +156833 +156834 +156835 +156836 +156837 +156838 +156839 +156864 +156865 +156866 +156867 +156868 +156869 +156870 +156871 +156896 +156897 +156898 +156899 +156900 +156901 +156902 +156903 +156928 +156929 +156930 +156931 +156932 +156933 +156934 +156935 +156960 +156961 +156962 +156963 +156964 +156965 +156966 +156967 +156992 +156993 +156994 +156995 +156996 +156997 +156998 +156999 +157024 +157025 +157026 +157027 +157028 +157029 +157030 +157031 +157056 +157057 +157058 +157059 +157060 +157061 +157062 +157063 +157088 +157089 +157090 +157091 +157092 +157093 +157094 +157095 +157120 +157121 +157122 +157123 +157124 +157125 +157126 +157127 +157152 +157153 +157154 +157155 +157156 +157157 +157158 +157159 +157184 +157185 +157186 +157187 +157188 +157189 +157190 +157191 +157216 +157217 +157218 +157219 +157220 +157221 +157222 +157223 +157248 +157249 +157250 +157251 +157252 +157253 +157254 +157255 +157280 +157281 +157282 +157283 +157284 +157285 +157286 +157287 +157312 +157313 +157314 +157315 +157316 +157317 +157318 +157319 +157344 +157345 +157346 +157347 +157348 +157349 +157350 +157351 +157376 +157377 +157378 +157379 +157380 +157381 +157382 +157383 +157408 +157409 +157410 +157411 +157412 +157413 +157414 +157415 +157440 +157441 +157442 +157443 +157444 +157445 +157446 +157447 +157472 +157473 +157474 +157475 +157476 +157477 +157478 +157479 +157504 +157505 +157506 +157507 +157508 +157509 +157510 +157511 +157536 +157537 +157538 +157539 +157540 +157541 +157542 +157543 +157568 +157569 +157570 +157571 +157572 +157573 +157574 +157575 +157600 +157601 +157602 +157603 +157604 +157605 +157606 +157607 +157632 +157633 +157634 +157635 +157636 +157637 +157638 +157639 +157664 +157665 +157666 +157667 +157668 +157669 +157670 +157671 +157696 +157697 +157698 +157699 +157700 +157701 +157702 +157703 +157728 +157729 +157730 +157731 +157732 +157733 +157734 +157735 +157760 +157761 +157762 +157763 +157764 +157765 +157766 +157767 +157792 +157793 +157794 +157795 +157796 +157797 +157798 +157799 +157824 +157825 +157826 +157827 +157828 +157829 +157830 +157831 +157856 +157857 +157858 +157859 +157860 +157861 +157862 +157863 +157888 +157889 +157890 +157891 +157892 +157893 +157894 +157895 +157920 +157921 +157922 +157923 +157924 +157925 +157926 +157927 +157952 +157953 +157954 +157955 +157956 +157957 +157958 +157959 +157984 +157985 +157986 +157987 +157988 +157989 +157990 +157991 +158016 +158017 +158018 +158019 +158020 +158021 +158022 +158023 +158048 +158049 +158050 +158051 +158052 +158053 +158054 +158055 +158080 +158081 +158082 +158083 +158084 +158085 +158086 +158087 +158112 +158113 +158114 +158115 +158116 +158117 +158118 +158119 +158144 +158145 +158146 +158147 +158148 +158149 +158150 +158151 +158176 +158177 +158178 +158179 +158180 +158181 +158182 +158183 +158208 +158209 +158210 +158211 +158212 +158213 +158214 +158215 +158240 +158241 +158242 +158243 +158244 +158245 +158246 +158247 +158272 +158273 +158274 +158275 +158276 +158277 +158278 +158279 +158304 +158305 +158306 +158307 +158308 +158309 +158310 +158311 +158336 +158337 +158338 +158339 +158340 +158341 +158342 +158343 +158368 +158369 +158370 +158371 +158372 +158373 +158374 +158375 +158400 +158401 +158402 +158403 +158404 +158405 +158406 +158407 +158432 +158433 +158434 +158435 +158436 +158437 +158438 +158439 +158464 +158465 +158466 +158467 +158468 +158469 +158470 +158471 +158496 +158497 +158498 +158499 +158500 +158501 +158502 +158503 +158528 +158529 +158530 +158531 +158532 +158533 +158534 +158535 +158560 +158561 +158562 +158563 +158564 +158565 +158566 +158567 +158592 +158593 +158594 +158595 +158596 +158597 +158598 +158599 +158624 +158625 +158626 +158627 +158628 +158629 +158630 +158631 +158656 +158657 +158658 +158659 +158660 +158661 +158662 +158663 +158688 +158689 +158690 +158691 +158692 +158693 +158694 +158695 +158720 +158721 +158722 +158723 +158724 +158725 +158726 +158727 +158752 +158753 +158754 +158755 +158756 +158757 +158758 +158759 +158784 +158785 +158786 +158787 +158788 +158789 +158790 +158791 +158816 +158817 +158818 +158819 +158820 +158821 +158822 +158823 +158848 +158849 +158850 +158851 +158852 +158853 +158854 +158855 +158880 +158881 +158882 +158883 +158884 +158885 +158886 +158887 +158912 +158913 +158914 +158915 +158916 +158917 +158918 +158919 +158944 +158945 +158946 +158947 +158948 +158949 +158950 +158951 +158976 +158977 +158978 +158979 +158980 +158981 +158982 +158983 +159008 +159009 +159010 +159011 +159012 +159013 +159014 +159015 +159040 +159041 +159042 +159043 +159044 +159045 +159046 +159047 +159072 +159073 +159074 +159075 +159076 +159077 +159078 +159079 +159104 +159105 +159106 +159107 +159108 +159109 +159110 +159111 +159136 +159137 +159138 +159139 +159140 +159141 +159142 +159143 +159168 +159169 +159170 +159171 +159172 +159173 +159174 +159175 +159200 +159201 +159202 +159203 +159204 +159205 +159206 +159207 +159232 +159233 +159234 +159235 +159236 +159237 +159238 +159239 +159264 +159265 +159266 +159267 +159268 +159269 +159270 +159271 +159296 +159297 +159298 +159299 +159300 +159301 +159302 +159303 +159328 +159329 +159330 +159331 +159332 +159333 +159334 +159335 +159360 +159361 +159362 +159363 +159364 +159365 +159366 +159367 +159392 +159393 +159394 +159395 +159396 +159397 +159398 +159399 +159424 +159425 +159426 +159427 +159428 +159429 +159430 +159431 +159456 +159457 +159458 +159459 +159460 +159461 +159462 +159463 +159488 +159489 +159490 +159491 +159492 +159493 +159494 +159495 +159520 +159521 +159522 +159523 +159524 +159525 +159526 +159527 +159552 +159553 +159554 +159555 +159556 +159557 +159558 +159559 +159584 +159585 +159586 +159587 +159588 +159589 +159590 +159591 +159616 +159617 +159618 +159619 +159620 +159621 +159622 +159623 +159648 +159649 +159650 +159651 +159652 +159653 +159654 +159655 +159680 +159681 +159682 +159683 +159684 +159685 +159686 +159687 +159712 +159713 +159714 +159715 +159716 +159717 +159718 +159719 +159744 +159745 +159746 +159747 +159748 +159749 +159750 +159751 +159776 +159777 +159778 +159779 +159780 +159781 +159782 +159783 +159808 +159809 +159810 +159811 +159812 +159813 +159814 +159815 +159840 +159841 +159842 +159843 +159844 +159845 +159846 +159847 +159872 +159873 +159874 +159875 +159876 +159877 +159878 +159879 +159904 +159905 +159906 +159907 +159908 +159909 +159910 +159911 +159936 +159937 +159938 +159939 +159940 +159941 +159942 +159943 +159968 +159969 +159970 +159971 +159972 +159973 +159974 +159975 +160000 +160001 +160002 +160003 +160004 +160005 +160006 +160007 +160032 +160033 +160034 +160035 +160036 +160037 +160038 +160039 +160064 +160065 +160066 +160067 +160068 +160069 +160070 +160071 +160096 +160097 +160098 +160099 +160100 +160101 +160102 +160103 +160128 +160129 +160130 +160131 +160132 +160133 +160134 +160135 +160160 +160161 +160162 +160163 +160164 +160165 +160166 +160167 +160192 +160193 +160194 +160195 +160196 +160197 +160198 +160199 +160224 +160225 +160226 +160227 +160228 +160229 +160230 +160231 +160256 +160257 +160258 +160259 +160260 +160261 +160262 +160263 +160288 +160289 +160290 +160291 +160292 +160293 +160294 +160295 +160320 +160321 +160322 +160323 +160324 +160325 +160326 +160327 +160352 +160353 +160354 +160355 +160356 +160357 +160358 +160359 +160384 +160385 +160386 +160387 +160388 +160389 +160390 +160391 +160416 +160417 +160418 +160419 +160420 +160421 +160422 +160423 +160448 +160449 +160450 +160451 +160452 +160453 +160454 +160455 +160480 +160481 +160482 +160483 +160484 +160485 +160486 +160487 +160512 +160513 +160514 +160515 +160516 +160517 +160518 +160519 +160544 +160545 +160546 +160547 +160548 +160549 +160550 +160551 +160576 +160577 +160578 +160579 +160580 +160581 +160582 +160583 +160608 +160609 +160610 +160611 +160612 +160613 +160614 +160615 +160640 +160641 +160642 +160643 +160644 +160645 +160646 +160647 +160672 +160673 +160674 +160675 +160676 +160677 +160678 +160679 +160704 +160705 +160706 +160707 +160708 +160709 +160710 +160711 +160736 +160737 +160738 +160739 +160740 +160741 +160742 +160743 +160768 +160769 +160770 +160771 +160772 +160773 +160774 +160775 +160800 +160801 +160802 +160803 +160804 +160805 +160806 +160807 +160832 +160833 +160834 +160835 +160836 +160837 +160838 +160839 +160864 +160865 +160866 +160867 +160868 +160869 +160870 +160871 +160896 +160897 +160898 +160899 +160900 +160901 +160902 +160903 +160928 +160929 +160930 +160931 +160932 +160933 +160934 +160935 +160960 +160961 +160962 +160963 +160964 +160965 +160966 +160967 +160992 +160993 +160994 +160995 +160996 +160997 +160998 +160999 +161024 +161025 +161026 +161027 +161028 +161029 +161030 +161031 +161056 +161057 +161058 +161059 +161060 +161061 +161062 +161063 +161088 +161089 +161090 +161091 +161092 +161093 +161094 +161095 +161120 +161121 +161122 +161123 +161124 +161125 +161126 +161127 +161152 +161153 +161154 +161155 +161156 +161157 +161158 +161159 +161184 +161185 +161186 +161187 +161188 +161189 +161190 +161191 +161216 +161217 +161218 +161219 +161220 +161221 +161222 +161223 +161248 +161249 +161250 +161251 +161252 +161253 +161254 +161255 +161280 +161281 +161282 +161283 +161284 +161285 +161286 +161287 +161312 +161313 +161314 +161315 +161316 +161317 +161318 +161319 +161344 +161345 +161346 +161347 +161348 +161349 +161350 +161351 +161376 +161377 +161378 +161379 +161380 +161381 +161382 +161383 +161408 +161409 +161410 +161411 +161412 +161413 +161414 +161415 +161440 +161441 +161442 +161443 +161444 +161445 +161446 +161447 +161472 +161473 +161474 +161475 +161476 +161477 +161478 +161479 +161504 +161505 +161506 +161507 +161508 +161509 +161510 +161511 +161536 +161537 +161538 +161539 +161540 +161541 +161542 +161543 +161568 +161569 +161570 +161571 +161572 +161573 +161574 +161575 +161600 +161601 +161602 +161603 +161604 +161605 +161606 +161607 +161632 +161633 +161634 +161635 +161636 +161637 +161638 +161639 +161664 +161665 +161666 +161667 +161668 +161669 +161670 +161671 +161696 +161697 +161698 +161699 +161700 +161701 +161702 +161703 +161728 +161729 +161730 +161731 +161732 +161733 +161734 +161735 +161760 +161761 +161762 +161763 +161764 +161765 +161766 +161767 +161792 +161793 +161794 +161795 +161796 +161797 +161798 +161799 +161824 +161825 +161826 +161827 +161828 +161829 +161830 +161831 +161856 +161857 +161858 +161859 +161860 +161861 +161862 +161863 +161888 +161889 +161890 +161891 +161892 +161893 +161894 +161895 +161920 +161921 +161922 +161923 +161924 +161925 +161926 +161927 +161952 +161953 +161954 +161955 +161956 +161957 +161958 +161959 +161984 +161985 +161986 +161987 +161988 +161989 +161990 +161991 +162016 +162017 +162018 +162019 +162020 +162021 +162022 +162023 +162048 +162049 +162050 +162051 +162052 +162053 +162054 +162055 +162080 +162081 +162082 +162083 +162084 +162085 +162086 +162087 +162112 +162113 +162114 +162115 +162116 +162117 +162118 +162119 +162144 +162145 +162146 +162147 +162148 +162149 +162150 +162151 +162176 +162177 +162178 +162179 +162180 +162181 +162182 +162183 +162208 +162209 +162210 +162211 +162212 +162213 +162214 +162215 +162240 +162241 +162242 +162243 +162244 +162245 +162246 +162247 +162272 +162273 +162274 +162275 +162276 +162277 +162278 +162279 +162304 +162305 +162306 +162307 +162308 +162309 +162310 +162311 +162336 +162337 +162338 +162339 +162340 +162341 +162342 +162343 +162368 +162369 +162370 +162371 +162372 +162373 +162374 +162375 +162400 +162401 +162402 +162403 +162404 +162405 +162406 +162407 +162432 +162433 +162434 +162435 +162436 +162437 +162438 +162439 +162464 +162465 +162466 +162467 +162468 +162469 +162470 +162471 +162496 +162497 +162498 +162499 +162500 +162501 +162502 +162503 +162528 +162529 +162530 +162531 +162532 +162533 +162534 +162535 +162560 +162561 +162562 +162563 +162564 +162565 +162566 +162567 +162592 +162593 +162594 +162595 +162596 +162597 +162598 +162599 +162624 +162625 +162626 +162627 +162628 +162629 +162630 +162631 +162656 +162657 +162658 +162659 +162660 +162661 +162662 +162663 +162688 +162689 +162690 +162691 +162692 +162693 +162694 +162695 +162720 +162721 +162722 +162723 +162724 +162725 +162726 +162727 +162752 +162753 +162754 +162755 +162756 +162757 +162758 +162759 +162784 +162785 +162786 +162787 +162788 +162789 +162790 +162791 +162816 +162817 +162818 +162819 +162820 +162821 +162822 +162823 +162848 +162849 +162850 +162851 +162852 +162853 +162854 +162855 +162880 +162881 +162882 +162883 +162884 +162885 +162886 +162887 +162912 +162913 +162914 +162915 +162916 +162917 +162918 +162919 +162944 +162945 +162946 +162947 +162948 +162949 +162950 +162951 +162976 +162977 +162978 +162979 +162980 +162981 +162982 +162983 +163008 +163009 +163010 +163011 +163012 +163013 +163014 +163015 +163040 +163041 +163042 +163043 +163044 +163045 +163046 +163047 +163072 +163073 +163074 +163075 +163076 +163077 +163078 +163079 +163104 +163105 +163106 +163107 +163108 +163109 +163110 +163111 +163136 +163137 +163138 +163139 +163140 +163141 +163142 +163143 +163168 +163169 +163170 +163171 +163172 +163173 +163174 +163175 +163200 +163201 +163202 +163203 +163204 +163205 +163206 +163207 +163232 +163233 +163234 +163235 +163236 +163237 +163238 +163239 +163264 +163265 +163266 +163267 +163268 +163269 +163270 +163271 +163296 +163297 +163298 +163299 +163300 +163301 +163302 +163303 +163328 +163329 +163330 +163331 +163332 +163333 +163334 +163335 +163360 +163361 +163362 +163363 +163364 +163365 +163366 +163367 +163392 +163393 +163394 +163395 +163396 +163397 +163398 +163399 +163424 +163425 +163426 +163427 +163428 +163429 +163430 +163431 +163456 +163457 +163458 +163459 +163460 +163461 +163462 +163463 +163488 +163489 +163490 +163491 +163492 +163493 +163494 +163495 +163520 +163521 +163522 +163523 +163524 +163525 +163526 +163527 +163552 +163553 +163554 +163555 +163556 +163557 +163558 +163559 +163584 +163585 +163586 +163587 +163588 +163589 +163590 +163591 +163616 +163617 +163618 +163619 +163620 +163621 +163622 +163623 +163648 +163649 +163650 +163651 +163652 +163653 +163654 +163655 +163680 +163681 +163682 +163683 +163684 +163685 +163686 +163687 +163712 +163713 +163714 +163715 +163716 +163717 +163718 +163719 +163744 +163745 +163746 +163747 +163748 +163749 +163750 +163751 +163776 +163777 +163778 +163779 +163780 +163781 +163782 +163783 +163808 +163809 +163810 +163811 +163812 +163813 +163814 +163815 +163840 +163841 +163842 +163843 +163844 +163845 +163846 +163847 +163872 +163873 +163874 +163875 +163876 +163877 +163878 +163879 +163904 +163905 +163906 +163907 +163908 +163909 +163910 +163911 +163936 +163937 +163938 +163939 +163940 +163941 +163942 +163943 +163968 +163969 +163970 +163971 +163972 +163973 +163974 +163975 +164000 +164001 +164002 +164003 +164004 +164005 +164006 +164007 +164032 +164033 +164034 +164035 +164036 +164037 +164038 +164039 +164064 +164065 +164066 +164067 +164068 +164069 +164070 +164071 +164096 +164097 +164098 +164099 +164100 +164101 +164102 +164103 +164128 +164129 +164130 +164131 +164132 +164133 +164134 +164135 +164160 +164161 +164162 +164163 +164164 +164165 +164166 +164167 +164192 +164193 +164194 +164195 +164196 +164197 +164198 +164199 +164224 +164225 +164226 +164227 +164228 +164229 +164230 +164231 +164256 +164257 +164258 +164259 +164260 +164261 +164262 +164263 +164288 +164289 +164290 +164291 +164292 +164293 +164294 +164295 +164320 +164321 +164322 +164323 +164324 +164325 +164326 +164327 +164352 +164353 +164354 +164355 +164356 +164357 +164358 +164359 +164384 +164385 +164386 +164387 +164388 +164389 +164390 +164391 +164416 +164417 +164418 +164419 +164420 +164421 +164422 +164423 +164448 +164449 +164450 +164451 +164452 +164453 +164454 +164455 +164480 +164481 +164482 +164483 +164484 +164485 +164486 +164487 +164512 +164513 +164514 +164515 +164516 +164517 +164518 +164519 +164544 +164545 +164546 +164547 +164548 +164549 +164550 +164551 +164576 +164577 +164578 +164579 +164580 +164581 +164582 +164583 +164608 +164609 +164610 +164611 +164612 +164613 +164614 +164615 +164640 +164641 +164642 +164643 +164644 +164645 +164646 +164647 +164672 +164673 +164674 +164675 +164676 +164677 +164678 +164679 +164704 +164705 +164706 +164707 +164708 +164709 +164710 +164711 +164736 +164737 +164738 +164739 +164740 +164741 +164742 +164743 +164768 +164769 +164770 +164771 +164772 +164773 +164774 +164775 +164800 +164801 +164802 +164803 +164804 +164805 +164806 +164807 +164832 +164833 +164834 +164835 +164836 +164837 +164838 +164839 +164864 +164865 +164866 +164867 +164868 +164869 +164870 +164871 +164896 +164897 +164898 +164899 +164900 +164901 +164902 +164903 +164928 +164929 +164930 +164931 +164932 +164933 +164934 +164935 +164960 +164961 +164962 +164963 +164964 +164965 +164966 +164967 +164992 +164993 +164994 +164995 +164996 +164997 +164998 +164999 +165024 +165025 +165026 +165027 +165028 +165029 +165030 +165031 +165056 +165057 +165058 +165059 +165060 +165061 +165062 +165063 +165088 +165089 +165090 +165091 +165092 +165093 +165094 +165095 +165120 +165121 +165122 +165123 +165124 +165125 +165126 +165127 +165152 +165153 +165154 +165155 +165156 +165157 +165158 +165159 +165184 +165185 +165186 +165187 +165188 +165189 +165190 +165191 +165216 +165217 +165218 +165219 +165220 +165221 +165222 +165223 +165248 +165249 +165250 +165251 +165252 +165253 +165254 +165255 +165280 +165281 +165282 +165283 +165284 +165285 +165286 +165287 +165312 +165313 +165314 +165315 +165316 +165317 +165318 +165319 +165344 +165345 +165346 +165347 +165348 +165349 +165350 +165351 +165376 +165377 +165378 +165379 +165380 +165381 +165382 +165383 +165408 +165409 +165410 +165411 +165412 +165413 +165414 +165415 +165440 +165441 +165442 +165443 +165444 +165445 +165446 +165447 +165472 +165473 +165474 +165475 +165476 +165477 +165478 +165479 +165504 +165505 +165506 +165507 +165508 +165509 +165510 +165511 +165536 +165537 +165538 +165539 +165540 +165541 +165542 +165543 +165568 +165569 +165570 +165571 +165572 +165573 +165574 +165575 +165600 +165601 +165602 +165603 +165604 +165605 +165606 +165607 +165632 +165633 +165634 +165635 +165636 +165637 +165638 +165639 +165664 +165665 +165666 +165667 +165668 +165669 +165670 +165671 +165696 +165697 +165698 +165699 +165700 +165701 +165702 +165703 +165728 +165729 +165730 +165731 +165732 +165733 +165734 +165735 +165760 +165761 +165762 +165763 +165764 +165765 +165766 +165767 +165792 +165793 +165794 +165795 +165796 +165797 +165798 +165799 +165824 +165825 +165826 +165827 +165828 +165829 +165830 +165831 +165856 +165857 +165858 +165859 +165860 +165861 +165862 +165863 +165888 +165889 +165890 +165891 +165892 +165893 +165894 +165895 +165920 +165921 +165922 +165923 +165924 +165925 +165926 +165927 +165952 +165953 +165954 +165955 +165956 +165957 +165958 +165959 +165984 +165985 +165986 +165987 +165988 +165989 +165990 +165991 +166016 +166017 +166018 +166019 +166020 +166021 +166022 +166023 +166048 +166049 +166050 +166051 +166052 +166053 +166054 +166055 +166080 +166081 +166082 +166083 +166084 +166085 +166086 +166087 +166112 +166113 +166114 +166115 +166116 +166117 +166118 +166119 +166144 +166145 +166146 +166147 +166148 +166149 +166150 +166151 +166176 +166177 +166178 +166179 +166180 +166181 +166182 +166183 +166208 +166209 +166210 +166211 +166212 +166213 +166214 +166215 +166240 +166241 +166242 +166243 +166244 +166245 +166246 +166247 +166272 +166273 +166274 +166275 +166276 +166277 +166278 +166279 +166304 +166305 +166306 +166307 +166308 +166309 +166310 +166311 +166336 +166337 +166338 +166339 +166340 +166341 +166342 +166343 +166368 +166369 +166370 +166371 +166372 +166373 +166374 +166375 +166400 +166401 +166402 +166403 +166404 +166405 +166406 +166407 +166432 +166433 +166434 +166435 +166436 +166437 +166438 +166439 +166464 +166465 +166466 +166467 +166468 +166469 +166470 +166471 +166496 +166497 +166498 +166499 +166500 +166501 +166502 +166503 +166528 +166529 +166530 +166531 +166532 +166533 +166534 +166535 +166560 +166561 +166562 +166563 +166564 +166565 +166566 +166567 +166592 +166593 +166594 +166595 +166596 +166597 +166598 +166599 +166624 +166625 +166626 +166627 +166628 +166629 +166630 +166631 +166656 +166657 +166658 +166659 +166660 +166661 +166662 +166663 +166688 +166689 +166690 +166691 +166692 +166693 +166694 +166695 +166720 +166721 +166722 +166723 +166724 +166725 +166726 +166727 +166752 +166753 +166754 +166755 +166756 +166757 +166758 +166759 +166784 +166785 +166786 +166787 +166788 +166789 +166790 +166791 +166816 +166817 +166818 +166819 +166820 +166821 +166822 +166823 +166848 +166849 +166850 +166851 +166852 +166853 +166854 +166855 +166880 +166881 +166882 +166883 +166884 +166885 +166886 +166887 +166912 +166913 +166914 +166915 +166916 +166917 +166918 +166919 +166944 +166945 +166946 +166947 +166948 +166949 +166950 +166951 +166976 +166977 +166978 +166979 +166980 +166981 +166982 +166983 +167008 +167009 +167010 +167011 +167012 +167013 +167014 +167015 +167040 +167041 +167042 +167043 +167044 +167045 +167046 +167047 +167072 +167073 +167074 +167075 +167076 +167077 +167078 +167079 +167104 +167105 +167106 +167107 +167108 +167109 +167110 +167111 +167136 +167137 +167138 +167139 +167140 +167141 +167142 +167143 +167168 +167169 +167170 +167171 +167172 +167173 +167174 +167175 +167200 +167201 +167202 +167203 +167204 +167205 +167206 +167207 +167232 +167233 +167234 +167235 +167236 +167237 +167238 +167239 +167264 +167265 +167266 +167267 +167268 +167269 +167270 +167271 +167296 +167297 +167298 +167299 +167300 +167301 +167302 +167303 +167328 +167329 +167330 +167331 +167332 +167333 +167334 +167335 +167360 +167361 +167362 +167363 +167364 +167365 +167366 +167367 +167392 +167393 +167394 +167395 +167396 +167397 +167398 +167399 +167424 +167425 +167426 +167427 +167428 +167429 +167430 +167431 +167456 +167457 +167458 +167459 +167460 +167461 +167462 +167463 +167488 +167489 +167490 +167491 +167492 +167493 +167494 +167495 +167520 +167521 +167522 +167523 +167524 +167525 +167526 +167527 +167552 +167553 +167554 +167555 +167556 +167557 +167558 +167559 +167584 +167585 +167586 +167587 +167588 +167589 +167590 +167591 +167616 +167617 +167618 +167619 +167620 +167621 +167622 +167623 +167648 +167649 +167650 +167651 +167652 +167653 +167654 +167655 +167680 +167681 +167682 +167683 +167684 +167685 +167686 +167687 +167712 +167713 +167714 +167715 +167716 +167717 +167718 +167719 +167744 +167745 +167746 +167747 +167748 +167749 +167750 +167751 +167776 +167777 +167778 +167779 +167780 +167781 +167782 +167783 +167808 +167809 +167810 +167811 +167812 +167813 +167814 +167815 +167840 +167841 +167842 +167843 +167844 +167845 +167846 +167847 +167872 +167873 +167874 +167875 +167876 +167877 +167878 +167879 +167904 +167905 +167906 +167907 +167908 +167909 +167910 +167911 +167936 +167937 +167938 +167939 +167940 +167941 +167942 +167943 +167968 +167969 +167970 +167971 +167972 +167973 +167974 +167975 +168000 +168001 +168002 +168003 +168004 +168005 +168006 +168007 +168032 +168033 +168034 +168035 +168036 +168037 +168038 +168039 +168064 +168065 +168066 +168067 +168068 +168069 +168070 +168071 +168096 +168097 +168098 +168099 +168100 +168101 +168102 +168103 +168128 +168129 +168130 +168131 +168132 +168133 +168134 +168135 +168160 +168161 +168162 +168163 +168164 +168165 +168166 +168167 +168192 +168193 +168194 +168195 +168196 +168197 +168198 +168199 +168224 +168225 +168226 +168227 +168228 +168229 +168230 +168231 +168256 +168257 +168258 +168259 +168260 +168261 +168262 +168263 +168288 +168289 +168290 +168291 +168292 +168293 +168294 +168295 +168320 +168321 +168322 +168323 +168324 +168325 +168326 +168327 +168352 +168353 +168354 +168355 +168356 +168357 +168358 +168359 +168384 +168385 +168386 +168387 +168388 +168389 +168390 +168391 +168416 +168417 +168418 +168419 +168420 +168421 +168422 +168423 +168448 +168449 +168450 +168451 +168452 +168453 +168454 +168455 +168480 +168481 +168482 +168483 +168484 +168485 +168486 +168487 +168512 +168513 +168514 +168515 +168516 +168517 +168518 +168519 +168544 +168545 +168546 +168547 +168548 +168549 +168550 +168551 +168576 +168577 +168578 +168579 +168580 +168581 +168582 +168583 +168608 +168609 +168610 +168611 +168612 +168613 +168614 +168615 +168640 +168641 +168642 +168643 +168644 +168645 +168646 +168647 +168672 +168673 +168674 +168675 +168676 +168677 +168678 +168679 +168704 +168705 +168706 +168707 +168708 +168709 +168710 +168711 +168736 +168737 +168738 +168739 +168740 +168741 +168742 +168743 +168768 +168769 +168770 +168771 +168772 +168773 +168774 +168775 +168800 +168801 +168802 +168803 +168804 +168805 +168806 +168807 +168832 +168833 +168834 +168835 +168836 +168837 +168838 +168839 +168864 +168865 +168866 +168867 +168868 +168869 +168870 +168871 +168896 +168897 +168898 +168899 +168900 +168901 +168902 +168903 +168928 +168929 +168930 +168931 +168932 +168933 +168934 +168935 +168960 +168961 +168962 +168963 +168964 +168965 +168966 +168967 +168992 +168993 +168994 +168995 +168996 +168997 +168998 +168999 +169024 +169025 +169026 +169027 +169028 +169029 +169030 +169031 +169056 +169057 +169058 +169059 +169060 +169061 +169062 +169063 +169088 +169089 +169090 +169091 +169092 +169093 +169094 +169095 +169120 +169121 +169122 +169123 +169124 +169125 +169126 +169127 +169152 +169153 +169154 +169155 +169156 +169157 +169158 +169159 +169184 +169185 +169186 +169187 +169188 +169189 +169190 +169191 +169216 +169217 +169218 +169219 +169220 +169221 +169222 +169223 +169248 +169249 +169250 +169251 +169252 +169253 +169254 +169255 +169280 +169281 +169282 +169283 +169284 +169285 +169286 +169287 +169312 +169313 +169314 +169315 +169316 +169317 +169318 +169319 +169344 +169345 +169346 +169347 +169348 +169349 +169350 +169351 +169376 +169377 +169378 +169379 +169380 +169381 +169382 +169383 +169408 +169409 +169410 +169411 +169412 +169413 +169414 +169415 +169440 +169441 +169442 +169443 +169444 +169445 +169446 +169447 +169472 +169473 +169474 +169475 +169476 +169477 +169478 +169479 +169504 +169505 +169506 +169507 +169508 +169509 +169510 +169511 +169536 +169537 +169538 +169539 +169540 +169541 +169542 +169543 +169568 +169569 +169570 +169571 +169572 +169573 +169574 +169575 +169600 +169601 +169602 +169603 +169604 +169605 +169606 +169607 +169632 +169633 +169634 +169635 +169636 +169637 +169638 +169639 +169664 +169665 +169666 +169667 +169668 +169669 +169670 +169671 +169696 +169697 +169698 +169699 +169700 +169701 +169702 +169703 +169728 +169729 +169730 +169731 +169732 +169733 +169734 +169735 +169760 +169761 +169762 +169763 +169764 +169765 +169766 +169767 +169792 +169793 +169794 +169795 +169796 +169797 +169798 +169799 +169824 +169825 +169826 +169827 +169828 +169829 +169830 +169831 +169856 +169857 +169858 +169859 +169860 +169861 +169862 +169863 +169888 +169889 +169890 +169891 +169892 +169893 +169894 +169895 +169920 +169921 +169922 +169923 +169924 +169925 +169926 +169927 +169952 +169953 +169954 +169955 +169956 +169957 +169958 +169959 +169984 +169985 +169986 +169987 +169988 +169989 +169990 +169991 +170016 +170017 +170018 +170019 +170020 +170021 +170022 +170023 +170048 +170049 +170050 +170051 +170052 +170053 +170054 +170055 +170080 +170081 +170082 +170083 +170084 +170085 +170086 +170087 +170112 +170113 +170114 +170115 +170116 +170117 +170118 +170119 +170144 +170145 +170146 +170147 +170148 +170149 +170150 +170151 +170176 +170177 +170178 +170179 +170180 +170181 +170182 +170183 +170208 +170209 +170210 +170211 +170212 +170213 +170214 +170215 +170240 +170241 +170242 +170243 +170244 +170245 +170246 +170247 +170272 +170273 +170274 +170275 +170276 +170277 +170278 +170279 +170304 +170305 +170306 +170307 +170308 +170309 +170310 +170311 +170336 +170337 +170338 +170339 +170340 +170341 +170342 +170343 +170368 +170369 +170370 +170371 +170372 +170373 +170374 +170375 +170400 +170401 +170402 +170403 +170404 +170405 +170406 +170407 +170432 +170433 +170434 +170435 +170436 +170437 +170438 +170439 +170464 +170465 +170466 +170467 +170468 +170469 +170470 +170471 +170496 +170497 +170498 +170499 +170500 +170501 +170502 +170503 +170528 +170529 +170530 +170531 +170532 +170533 +170534 +170535 +170560 +170561 +170562 +170563 +170564 +170565 +170566 +170567 +170592 +170593 +170594 +170595 +170596 +170597 +170598 +170599 +170624 +170625 +170626 +170627 +170628 +170629 +170630 +170631 +170656 +170657 +170658 +170659 +170660 +170661 +170662 +170663 +170688 +170689 +170690 +170691 +170692 +170693 +170694 +170695 +170720 +170721 +170722 +170723 +170724 +170725 +170726 +170727 +170752 +170753 +170754 +170755 +170756 +170757 +170758 +170759 +170784 +170785 +170786 +170787 +170788 +170789 +170790 +170791 +170816 +170817 +170818 +170819 +170820 +170821 +170822 +170823 +170848 +170849 +170850 +170851 +170852 +170853 +170854 +170855 +170880 +170881 +170882 +170883 +170884 +170885 +170886 +170887 +170912 +170913 +170914 +170915 +170916 +170917 +170918 +170919 +170944 +170945 +170946 +170947 +170948 +170949 +170950 +170951 +170976 +170977 +170978 +170979 +170980 +170981 +170982 +170983 +171008 +171009 +171010 +171011 +171012 +171013 +171014 +171015 +171040 +171041 +171042 +171043 +171044 +171045 +171046 +171047 +171072 +171073 +171074 +171075 +171076 +171077 +171078 +171079 +171104 +171105 +171106 +171107 +171108 +171109 +171110 +171111 +171136 +171137 +171138 +171139 +171140 +171141 +171142 +171143 +171168 +171169 +171170 +171171 +171172 +171173 +171174 +171175 +171200 +171201 +171202 +171203 +171204 +171205 +171206 +171207 +171232 +171233 +171234 +171235 +171236 +171237 +171238 +171239 +171264 +171265 +171266 +171267 +171268 +171269 +171270 +171271 +171296 +171297 +171298 +171299 +171300 +171301 +171302 +171303 +171328 +171329 +171330 +171331 +171332 +171333 +171334 +171335 +171360 +171361 +171362 +171363 +171364 +171365 +171366 +171367 +171392 +171393 +171394 +171395 +171396 +171397 +171398 +171399 +171424 +171425 +171426 +171427 +171428 +171429 +171430 +171431 +171456 +171457 +171458 +171459 +171460 +171461 +171462 +171463 +171488 +171489 +171490 +171491 +171492 +171493 +171494 +171495 +171520 +171521 +171522 +171523 +171524 +171525 +171526 +171527 +171552 +171553 +171554 +171555 +171556 +171557 +171558 +171559 +171584 +171585 +171586 +171587 +171588 +171589 +171590 +171591 +171616 +171617 +171618 +171619 +171620 +171621 +171622 +171623 +171648 +171649 +171650 +171651 +171652 +171653 +171654 +171655 +171680 +171681 +171682 +171683 +171684 +171685 +171686 +171687 +171712 +171713 +171714 +171715 +171716 +171717 +171718 +171719 +171744 +171745 +171746 +171747 +171748 +171749 +171750 +171751 +171776 +171777 +171778 +171779 +171780 +171781 +171782 +171783 +171808 +171809 +171810 +171811 +171812 +171813 +171814 +171815 +171840 +171841 +171842 +171843 +171844 +171845 +171846 +171847 +171872 +171873 +171874 +171875 +171876 +171877 +171878 +171879 +171904 +171905 +171906 +171907 +171908 +171909 +171910 +171911 +171936 +171937 +171938 +171939 +171940 +171941 +171942 +171943 +171968 +171969 +171970 +171971 +171972 +171973 +171974 +171975 +172000 +172001 +172002 +172003 +172004 +172005 +172006 +172007 +172032 +172033 +172034 +172035 +172036 +172037 +172038 +172039 +172064 +172065 +172066 +172067 +172068 +172069 +172070 +172071 +172096 +172097 +172098 +172099 +172100 +172101 +172102 +172103 +172128 +172129 +172130 +172131 +172132 +172133 +172134 +172135 +172160 +172161 +172162 +172163 +172164 +172165 +172166 +172167 +172192 +172193 +172194 +172195 +172196 +172197 +172198 +172199 +172224 +172225 +172226 +172227 +172228 +172229 +172230 +172231 +172256 +172257 +172258 +172259 +172260 +172261 +172262 +172263 +172288 +172289 +172290 +172291 +172292 +172293 +172294 +172295 +172320 +172321 +172322 +172323 +172324 +172325 +172326 +172327 +172352 +172353 +172354 +172355 +172356 +172357 +172358 +172359 +172384 +172385 +172386 +172387 +172388 +172389 +172390 +172391 +172416 +172417 +172418 +172419 +172420 +172421 +172422 +172423 +172448 +172449 +172450 +172451 +172452 +172453 +172454 +172455 +172480 +172481 +172482 +172483 +172484 +172485 +172486 +172487 +172512 +172513 +172514 +172515 +172516 +172517 +172518 +172519 +172544 +172545 +172546 +172547 +172548 +172549 +172550 +172551 +172576 +172577 +172578 +172579 +172580 +172581 +172582 +172583 +172608 +172609 +172610 +172611 +172612 +172613 +172614 +172615 +172640 +172641 +172642 +172643 +172644 +172645 +172646 +172647 +172672 +172673 +172674 +172675 +172676 +172677 +172678 +172679 +172704 +172705 +172706 +172707 +172708 +172709 +172710 +172711 +172736 +172737 +172738 +172739 +172740 +172741 +172742 +172743 +172768 +172769 +172770 +172771 +172772 +172773 +172774 +172775 +172800 +172801 +172802 +172803 +172804 +172805 +172806 +172807 +172832 +172833 +172834 +172835 +172836 +172837 +172838 +172839 +172864 +172865 +172866 +172867 +172868 +172869 +172870 +172871 +172896 +172897 +172898 +172899 +172900 +172901 +172902 +172903 +172928 +172929 +172930 +172931 +172932 +172933 +172934 +172935 +172960 +172961 +172962 +172963 +172964 +172965 +172966 +172967 +172992 +172993 +172994 +172995 +172996 +172997 +172998 +172999 +173024 +173025 +173026 +173027 +173028 +173029 +173030 +173031 +173056 +173057 +173058 +173059 +173060 +173061 +173062 +173063 +173088 +173089 +173090 +173091 +173092 +173093 +173094 +173095 +173120 +173121 +173122 +173123 +173124 +173125 +173126 +173127 +173152 +173153 +173154 +173155 +173156 +173157 +173158 +173159 +173184 +173185 +173186 +173187 +173188 +173189 +173190 +173191 +173216 +173217 +173218 +173219 +173220 +173221 +173222 +173223 +173248 +173249 +173250 +173251 +173252 +173253 +173254 +173255 +173280 +173281 +173282 +173283 +173284 +173285 +173286 +173287 +173312 +173313 +173314 +173315 +173316 +173317 +173318 +173319 +173344 +173345 +173346 +173347 +173348 +173349 +173350 +173351 +173376 +173377 +173378 +173379 +173380 +173381 +173382 +173383 +173408 +173409 +173410 +173411 +173412 +173413 +173414 +173415 +173440 +173441 +173442 +173443 +173444 +173445 +173446 +173447 +173472 +173473 +173474 +173475 +173476 +173477 +173478 +173479 +173504 +173505 +173506 +173507 +173508 +173509 +173510 +173511 +173536 +173537 +173538 +173539 +173540 +173541 +173542 +173543 +173568 +173569 +173570 +173571 +173572 +173573 +173574 +173575 +173600 +173601 +173602 +173603 +173604 +173605 +173606 +173607 +173632 +173633 +173634 +173635 +173636 +173637 +173638 +173639 +173664 +173665 +173666 +173667 +173668 +173669 +173670 +173671 +173696 +173697 +173698 +173699 +173700 +173701 +173702 +173703 +173728 +173729 +173730 +173731 +173732 +173733 +173734 +173735 +173760 +173761 +173762 +173763 +173764 +173765 +173766 +173767 +173792 +173793 +173794 +173795 +173796 +173797 +173798 +173799 +173824 +173825 +173826 +173827 +173828 +173829 +173830 +173831 +173856 +173857 +173858 +173859 +173860 +173861 +173862 +173863 +173888 +173889 +173890 +173891 +173892 +173893 +173894 +173895 +173920 +173921 +173922 +173923 +173924 +173925 +173926 +173927 +173952 +173953 +173954 +173955 +173956 +173957 +173958 +173959 +173984 +173985 +173986 +173987 +173988 +173989 +173990 +173991 +174016 +174017 +174018 +174019 +174020 +174021 +174022 +174023 +174048 +174049 +174050 +174051 +174052 +174053 +174054 +174055 +174080 +174081 +174082 +174083 +174084 +174085 +174086 +174087 +174112 +174113 +174114 +174115 +174116 +174117 +174118 +174119 +174144 +174145 +174146 +174147 +174148 +174149 +174150 +174151 +174176 +174177 +174178 +174179 +174180 +174181 +174182 +174183 +174208 +174209 +174210 +174211 +174212 +174213 +174214 +174215 +174240 +174241 +174242 +174243 +174244 +174245 +174246 +174247 +174272 +174273 +174274 +174275 +174276 +174277 +174278 +174279 +174304 +174305 +174306 +174307 +174308 +174309 +174310 +174311 +174336 +174337 +174338 +174339 +174340 +174341 +174342 +174343 +174368 +174369 +174370 +174371 +174372 +174373 +174374 +174375 +174400 +174401 +174402 +174403 +174404 +174405 +174406 +174407 +174432 +174433 +174434 +174435 +174436 +174437 +174438 +174439 +174464 +174465 +174466 +174467 +174468 +174469 +174470 +174471 +174496 +174497 +174498 +174499 +174500 +174501 +174502 +174503 +174528 +174529 +174530 +174531 +174532 +174533 +174534 +174535 +174560 +174561 +174562 +174563 +174564 +174565 +174566 +174567 +174592 +174593 +174594 +174595 +174596 +174597 +174598 +174599 +174624 +174625 +174626 +174627 +174628 +174629 +174630 +174631 +174656 +174657 +174658 +174659 +174660 +174661 +174662 +174663 +174688 +174689 +174690 +174691 +174692 +174693 +174694 +174695 +174720 +174721 +174722 +174723 +174724 +174725 +174726 +174727 +174752 +174753 +174754 +174755 +174756 +174757 +174758 +174759 +174784 +174785 +174786 +174787 +174788 +174789 +174790 +174791 +174816 +174817 +174818 +174819 +174820 +174821 +174822 +174823 +174848 +174849 +174850 +174851 +174852 +174853 +174854 +174855 +174880 +174881 +174882 +174883 +174884 +174885 +174886 +174887 +174912 +174913 +174914 +174915 +174916 +174917 +174918 +174919 +174944 +174945 +174946 +174947 +174948 +174949 +174950 +174951 +174976 +174977 +174978 +174979 +174980 +174981 +174982 +174983 +175008 +175009 +175010 +175011 +175012 +175013 +175014 +175015 +175040 +175041 +175042 +175043 +175044 +175045 +175046 +175047 +175072 +175073 +175074 +175075 +175076 +175077 +175078 +175079 +175104 +175105 +175106 +175107 +175108 +175109 +175110 +175111 +175136 +175137 +175138 +175139 +175140 +175141 +175142 +175143 +175168 +175169 +175170 +175171 +175172 +175173 +175174 +175175 +175200 +175201 +175202 +175203 +175204 +175205 +175206 +175207 +175232 +175233 +175234 +175235 +175236 +175237 +175238 +175239 +175264 +175265 +175266 +175267 +175268 +175269 +175270 +175271 +175296 +175297 +175298 +175299 +175300 +175301 +175302 +175303 +175328 +175329 +175330 +175331 +175332 +175333 +175334 +175335 +175360 +175361 +175362 +175363 +175364 +175365 +175366 +175367 +175392 +175393 +175394 +175395 +175396 +175397 +175398 +175399 +175424 +175425 +175426 +175427 +175428 +175429 +175430 +175431 +175456 +175457 +175458 +175459 +175460 +175461 +175462 +175463 +175488 +175489 +175490 +175491 +175492 +175493 +175494 +175495 +175520 +175521 +175522 +175523 +175524 +175525 +175526 +175527 +175552 +175553 +175554 +175555 +175556 +175557 +175558 +175559 +175584 +175585 +175586 +175587 +175588 +175589 +175590 +175591 +175616 +175617 +175618 +175619 +175620 +175621 +175622 +175623 +175648 +175649 +175650 +175651 +175652 +175653 +175654 +175655 +175680 +175681 +175682 +175683 +175684 +175685 +175686 +175687 +175712 +175713 +175714 +175715 +175716 +175717 +175718 +175719 +175744 +175745 +175746 +175747 +175748 +175749 +175750 +175751 +175776 +175777 +175778 +175779 +175780 +175781 +175782 +175783 +175808 +175809 +175810 +175811 +175812 +175813 +175814 +175815 +175840 +175841 +175842 +175843 +175844 +175845 +175846 +175847 +175872 +175873 +175874 +175875 +175876 +175877 +175878 +175879 +175904 +175905 +175906 +175907 +175908 +175909 +175910 +175911 +175936 +175937 +175938 +175939 +175940 +175941 +175942 +175943 +175968 +175969 +175970 +175971 +175972 +175973 +175974 +175975 +176000 +176001 +176002 +176003 +176004 +176005 +176006 +176007 +176032 +176033 +176034 +176035 +176036 +176037 +176038 +176039 +176064 +176065 +176066 +176067 +176068 +176069 +176070 +176071 +176096 +176097 +176098 +176099 +176100 +176101 +176102 +176103 +176128 +176129 +176130 +176131 +176132 +176133 +176134 +176135 +176160 +176161 +176162 +176163 +176164 +176165 +176166 +176167 +176192 +176193 +176194 +176195 +176196 +176197 +176198 +176199 +176224 +176225 +176226 +176227 +176228 +176229 +176230 +176231 +176256 +176257 +176258 +176259 +176260 +176261 +176262 +176263 +176288 +176289 +176290 +176291 +176292 +176293 +176294 +176295 +176320 +176321 +176322 +176323 +176324 +176325 +176326 +176327 +176352 +176353 +176354 +176355 +176356 +176357 +176358 +176359 +176384 +176385 +176386 +176387 +176388 +176389 +176390 +176391 +176416 +176417 +176418 +176419 +176420 +176421 +176422 +176423 +176448 +176449 +176450 +176451 +176452 +176453 +176454 +176455 +176480 +176481 +176482 +176483 +176484 +176485 +176486 +176487 +176512 +176513 +176514 +176515 +176516 +176517 +176518 +176519 +176544 +176545 +176546 +176547 +176548 +176549 +176550 +176551 +176576 +176577 +176578 +176579 +176580 +176581 +176582 +176583 +176608 +176609 +176610 +176611 +176612 +176613 +176614 +176615 +176640 +176641 +176642 +176643 +176644 +176645 +176646 +176647 +176672 +176673 +176674 +176675 +176676 +176677 +176678 +176679 +176704 +176705 +176706 +176707 +176708 +176709 +176710 +176711 +176736 +176737 +176738 +176739 +176740 +176741 +176742 +176743 +176768 +176769 +176770 +176771 +176772 +176773 +176774 +176775 +176800 +176801 +176802 +176803 +176804 +176805 +176806 +176807 +176832 +176833 +176834 +176835 +176836 +176837 +176838 +176839 +176864 +176865 +176866 +176867 +176868 +176869 +176870 +176871 +176896 +176897 +176898 +176899 +176900 +176901 +176902 +176903 +176928 +176929 +176930 +176931 +176932 +176933 +176934 +176935 +176960 +176961 +176962 +176963 +176964 +176965 +176966 +176967 +176992 +176993 +176994 +176995 +176996 +176997 +176998 +176999 +177024 +177025 +177026 +177027 +177028 +177029 +177030 +177031 +177056 +177057 +177058 +177059 +177060 +177061 +177062 +177063 +177088 +177089 +177090 +177091 +177092 +177093 +177094 +177095 +177120 +177121 +177122 +177123 +177124 +177125 +177126 +177127 +177152 +177153 +177154 +177155 +177156 +177157 +177158 +177159 +177184 +177185 +177186 +177187 +177188 +177189 +177190 +177191 +177216 +177217 +177218 +177219 +177220 +177221 +177222 +177223 +177248 +177249 +177250 +177251 +177252 +177253 +177254 +177255 +177280 +177281 +177282 +177283 +177284 +177285 +177286 +177287 +177312 +177313 +177314 +177315 +177316 +177317 +177318 +177319 +177344 +177345 +177346 +177347 +177348 +177349 +177350 +177351 +177376 +177377 +177378 +177379 +177380 +177381 +177382 +177383 +177408 +177409 +177410 +177411 +177412 +177413 +177414 +177415 +177440 +177441 +177442 +177443 +177444 +177445 +177446 +177447 +177472 +177473 +177474 +177475 +177476 +177477 +177478 +177479 +177504 +177505 +177506 +177507 +177508 +177509 +177510 +177511 +177536 +177537 +177538 +177539 +177540 +177541 +177542 +177543 +177568 +177569 +177570 +177571 +177572 +177573 +177574 +177575 +177600 +177601 +177602 +177603 +177604 +177605 +177606 +177607 +177632 +177633 +177634 +177635 +177636 +177637 +177638 +177639 +177664 +177665 +177666 +177667 +177668 +177669 +177670 +177671 +177696 +177697 +177698 +177699 +177700 +177701 +177702 +177703 +177728 +177729 +177730 +177731 +177732 +177733 +177734 +177735 +177760 +177761 +177762 +177763 +177764 +177765 +177766 +177767 +177792 +177793 +177794 +177795 +177796 +177797 +177798 +177799 +177824 +177825 +177826 +177827 +177828 +177829 +177830 +177831 +177856 +177857 +177858 +177859 +177860 +177861 +177862 +177863 +177888 +177889 +177890 +177891 +177892 +177893 +177894 +177895 +177920 +177921 +177922 +177923 +177924 +177925 +177926 +177927 +177952 +177953 +177954 +177955 +177956 +177957 +177958 +177959 +177984 +177985 +177986 +177987 +177988 +177989 +177990 +177991 +178016 +178017 +178018 +178019 +178020 +178021 +178022 +178023 +178048 +178049 +178050 +178051 +178052 +178053 +178054 +178055 +178080 +178081 +178082 +178083 +178084 +178085 +178086 +178087 +178112 +178113 +178114 +178115 +178116 +178117 +178118 +178119 +178144 +178145 +178146 +178147 +178148 +178149 +178150 +178151 +178176 +178177 +178178 +178179 +178180 +178181 +178182 +178183 +178208 +178209 +178210 +178211 +178212 +178213 +178214 +178215 +178240 +178241 +178242 +178243 +178244 +178245 +178246 +178247 +178272 +178273 +178274 +178275 +178276 +178277 +178278 +178279 +178304 +178305 +178306 +178307 +178308 +178309 +178310 +178311 +178336 +178337 +178338 +178339 +178340 +178341 +178342 +178343 +178368 +178369 +178370 +178371 +178372 +178373 +178374 +178375 +178400 +178401 +178402 +178403 +178404 +178405 +178406 +178407 +178432 +178433 +178434 +178435 +178436 +178437 +178438 +178439 +178464 +178465 +178466 +178467 +178468 +178469 +178470 +178471 +178496 +178497 +178498 +178499 +178500 +178501 +178502 +178503 +178528 +178529 +178530 +178531 +178532 +178533 +178534 +178535 +178560 +178561 +178562 +178563 +178564 +178565 +178566 +178567 +178592 +178593 +178594 +178595 +178596 +178597 +178598 +178599 +178624 +178625 +178626 +178627 +178628 +178629 +178630 +178631 +178656 +178657 +178658 +178659 +178660 +178661 +178662 +178663 +178688 +178689 +178690 +178691 +178692 +178693 +178694 +178695 +178720 +178721 +178722 +178723 +178724 +178725 +178726 +178727 +178752 +178753 +178754 +178755 +178756 +178757 +178758 +178759 +178784 +178785 +178786 +178787 +178788 +178789 +178790 +178791 +178816 +178817 +178818 +178819 +178820 +178821 +178822 +178823 +178848 +178849 +178850 +178851 +178852 +178853 +178854 +178855 +178880 +178881 +178882 +178883 +178884 +178885 +178886 +178887 +178912 +178913 +178914 +178915 +178916 +178917 +178918 +178919 +178944 +178945 +178946 +178947 +178948 +178949 +178950 +178951 +178976 +178977 +178978 +178979 +178980 +178981 +178982 +178983 +179008 +179009 +179010 +179011 +179012 +179013 +179014 +179015 +179040 +179041 +179042 +179043 +179044 +179045 +179046 +179047 +179072 +179073 +179074 +179075 +179076 +179077 +179078 +179079 +179104 +179105 +179106 +179107 +179108 +179109 +179110 +179111 +179136 +179137 +179138 +179139 +179140 +179141 +179142 +179143 +179168 +179169 +179170 +179171 +179172 +179173 +179174 +179175 +179200 +179201 +179202 +179203 +179204 +179205 +179206 +179207 +179232 +179233 +179234 +179235 +179236 +179237 +179238 +179239 +179264 +179265 +179266 +179267 +179268 +179269 +179270 +179271 +179296 +179297 +179298 +179299 +179300 +179301 +179302 +179303 +179328 +179329 +179330 +179331 +179332 +179333 +179334 +179335 +179360 +179361 +179362 +179363 +179364 +179365 +179366 +179367 +179392 +179393 +179394 +179395 +179396 +179397 +179398 +179399 +179424 +179425 +179426 +179427 +179428 +179429 +179430 +179431 +179456 +179457 +179458 +179459 +179460 +179461 +179462 +179463 +179488 +179489 +179490 +179491 +179492 +179493 +179494 +179495 +179520 +179521 +179522 +179523 +179524 +179525 +179526 +179527 +179552 +179553 +179554 +179555 +179556 +179557 +179558 +179559 +179584 +179585 +179586 +179587 +179588 +179589 +179590 +179591 +179616 +179617 +179618 +179619 +179620 +179621 +179622 +179623 +179648 +179649 +179650 +179651 +179652 +179653 +179654 +179655 +179680 +179681 +179682 +179683 +179684 +179685 +179686 +179687 +179712 +179713 +179714 +179715 +179716 +179717 +179718 +179719 +179744 +179745 +179746 +179747 +179748 +179749 +179750 +179751 +179776 +179777 +179778 +179779 +179780 +179781 +179782 +179783 +179808 +179809 +179810 +179811 +179812 +179813 +179814 +179815 +179840 +179841 +179842 +179843 +179844 +179845 +179846 +179847 +179872 +179873 +179874 +179875 +179876 +179877 +179878 +179879 +179904 +179905 +179906 +179907 +179908 +179909 +179910 +179911 +179936 +179937 +179938 +179939 +179940 +179941 +179942 +179943 +179968 +179969 +179970 +179971 +179972 +179973 +179974 +179975 +180000 +180001 +180002 +180003 +180004 +180005 +180006 +180007 +180032 +180033 +180034 +180035 +180036 +180037 +180038 +180039 +180064 +180065 +180066 +180067 +180068 +180069 +180070 +180071 +180096 +180097 +180098 +180099 +180100 +180101 +180102 +180103 +180128 +180129 +180130 +180131 +180132 +180133 +180134 +180135 +180160 +180161 +180162 +180163 +180164 +180165 +180166 +180167 +180192 +180193 +180194 +180195 +180196 +180197 +180198 +180199 +180224 +180225 +180226 +180227 +180228 +180229 +180230 +180231 +180256 +180257 +180258 +180259 +180260 +180261 +180262 +180263 +180288 +180289 +180290 +180291 +180292 +180293 +180294 +180295 +180320 +180321 +180322 +180323 +180324 +180325 +180326 +180327 +180352 +180353 +180354 +180355 +180356 +180357 +180358 +180359 +180384 +180385 +180386 +180387 +180388 +180389 +180390 +180391 +180416 +180417 +180418 +180419 +180420 +180421 +180422 +180423 +180448 +180449 +180450 +180451 +180452 +180453 +180454 +180455 +180480 +180481 +180482 +180483 +180484 +180485 +180486 +180487 +180512 +180513 +180514 +180515 +180516 +180517 +180518 +180519 +180544 +180545 +180546 +180547 +180548 +180549 +180550 +180551 +180576 +180577 +180578 +180579 +180580 +180581 +180582 +180583 +180608 +180609 +180610 +180611 +180612 +180613 +180614 +180615 +180640 +180641 +180642 +180643 +180644 +180645 +180646 +180647 +180672 +180673 +180674 +180675 +180676 +180677 +180678 +180679 +180704 +180705 +180706 +180707 +180708 +180709 +180710 +180711 +180736 +180737 +180738 +180739 +180740 +180741 +180742 +180743 +180768 +180769 +180770 +180771 +180772 +180773 +180774 +180775 +180800 +180801 +180802 +180803 +180804 +180805 +180806 +180807 +180832 +180833 +180834 +180835 +180836 +180837 +180838 +180839 +180864 +180865 +180866 +180867 +180868 +180869 +180870 +180871 +180896 +180897 +180898 +180899 +180900 +180901 +180902 +180903 +180928 +180929 +180930 +180931 +180932 +180933 +180934 +180935 +180960 +180961 +180962 +180963 +180964 +180965 +180966 +180967 +180992 +180993 +180994 +180995 +180996 +180997 +180998 +180999 +181024 +181025 +181026 +181027 +181028 +181029 +181030 +181031 +181056 +181057 +181058 +181059 +181060 +181061 +181062 +181063 +181088 +181089 +181090 +181091 +181092 +181093 +181094 +181095 +181120 +181121 +181122 +181123 +181124 +181125 +181126 +181127 +181152 +181153 +181154 +181155 +181156 +181157 +181158 +181159 +181184 +181185 +181186 +181187 +181188 +181189 +181190 +181191 +181216 +181217 +181218 +181219 +181220 +181221 +181222 +181223 +181248 +181249 +181250 +181251 +181252 +181253 +181254 +181255 +181280 +181281 +181282 +181283 +181284 +181285 +181286 +181287 +181312 +181313 +181314 +181315 +181316 +181317 +181318 +181319 +181344 +181345 +181346 +181347 +181348 +181349 +181350 +181351 +181376 +181377 +181378 +181379 +181380 +181381 +181382 +181383 +181408 +181409 +181410 +181411 +181412 +181413 +181414 +181415 +181440 +181441 +181442 +181443 +181444 +181445 +181446 +181447 +181472 +181473 +181474 +181475 +181476 +181477 +181478 +181479 +181504 +181505 +181506 +181507 +181508 +181509 +181510 +181511 +181536 +181537 +181538 +181539 +181540 +181541 +181542 +181543 +181568 +181569 +181570 +181571 +181572 +181573 +181574 +181575 +181600 +181601 +181602 +181603 +181604 +181605 +181606 +181607 +181632 +181633 +181634 +181635 +181636 +181637 +181638 +181639 +181664 +181665 +181666 +181667 +181668 +181669 +181670 +181671 +181696 +181697 +181698 +181699 +181700 +181701 +181702 +181703 +181728 +181729 +181730 +181731 +181732 +181733 +181734 +181735 +181760 +181761 +181762 +181763 +181764 +181765 +181766 +181767 +181792 +181793 +181794 +181795 +181796 +181797 +181798 +181799 +181824 +181825 +181826 +181827 +181828 +181829 +181830 +181831 +181856 +181857 +181858 +181859 +181860 +181861 +181862 +181863 +181888 +181889 +181890 +181891 +181892 +181893 +181894 +181895 +181920 +181921 +181922 +181923 +181924 +181925 +181926 +181927 +181952 +181953 +181954 +181955 +181956 +181957 +181958 +181959 +181984 +181985 +181986 +181987 +181988 +181989 +181990 +181991 +182016 +182017 +182018 +182019 +182020 +182021 +182022 +182023 +182048 +182049 +182050 +182051 +182052 +182053 +182054 +182055 +182080 +182081 +182082 +182083 +182084 +182085 +182086 +182087 +182112 +182113 +182114 +182115 +182116 +182117 +182118 +182119 +182144 +182145 +182146 +182147 +182148 +182149 +182150 +182151 +182176 +182177 +182178 +182179 +182180 +182181 +182182 +182183 +182208 +182209 +182210 +182211 +182212 +182213 +182214 +182215 +182240 +182241 +182242 +182243 +182244 +182245 +182246 +182247 +182272 +182273 +182274 +182275 +182276 +182277 +182278 +182279 +182304 +182305 +182306 +182307 +182308 +182309 +182310 +182311 +182336 +182337 +182338 +182339 +182340 +182341 +182342 +182343 +182368 +182369 +182370 +182371 +182372 +182373 +182374 +182375 +182400 +182401 +182402 +182403 +182404 +182405 +182406 +182407 +182432 +182433 +182434 +182435 +182436 +182437 +182438 +182439 +182464 +182465 +182466 +182467 +182468 +182469 +182470 +182471 +182496 +182497 +182498 +182499 +182500 +182501 +182502 +182503 +182528 +182529 +182530 +182531 +182532 +182533 +182534 +182535 +182560 +182561 +182562 +182563 +182564 +182565 +182566 +182567 +182592 +182593 +182594 +182595 +182596 +182597 +182598 +182599 +182624 +182625 +182626 +182627 +182628 +182629 +182630 +182631 +182656 +182657 +182658 +182659 +182660 +182661 +182662 +182663 +182688 +182689 +182690 +182691 +182692 +182693 +182694 +182695 +182720 +182721 +182722 +182723 +182724 +182725 +182726 +182727 +182752 +182753 +182754 +182755 +182756 +182757 +182758 +182759 +182784 +182785 +182786 +182787 +182788 +182789 +182790 +182791 +182816 +182817 +182818 +182819 +182820 +182821 +182822 +182823 +182848 +182849 +182850 +182851 +182852 +182853 +182854 +182855 +182880 +182881 +182882 +182883 +182884 +182885 +182886 +182887 +182912 +182913 +182914 +182915 +182916 +182917 +182918 +182919 +182944 +182945 +182946 +182947 +182948 +182949 +182950 +182951 +182976 +182977 +182978 +182979 +182980 +182981 +182982 +182983 +183008 +183009 +183010 +183011 +183012 +183013 +183014 +183015 +183040 +183041 +183042 +183043 +183044 +183045 +183046 +183047 +183072 +183073 +183074 +183075 +183076 +183077 +183078 +183079 +183104 +183105 +183106 +183107 +183108 +183109 +183110 +183111 +183136 +183137 +183138 +183139 +183140 +183141 +183142 +183143 +183168 +183169 +183170 +183171 +183172 +183173 +183174 +183175 +183200 +183201 +183202 +183203 +183204 +183205 +183206 +183207 +183232 +183233 +183234 +183235 +183236 +183237 +183238 +183239 +183264 +183265 +183266 +183267 +183268 +183269 +183270 +183271 +183296 +183297 +183298 +183299 +183300 +183301 +183302 +183303 +183328 +183329 +183330 +183331 +183332 +183333 +183334 +183335 +183360 +183361 +183362 +183363 +183364 +183365 +183366 +183367 +183392 +183393 +183394 +183395 +183396 +183397 +183398 +183399 +183424 +183425 +183426 +183427 +183428 +183429 +183430 +183431 +183456 +183457 +183458 +183459 +183460 +183461 +183462 +183463 +183488 +183489 +183490 +183491 +183492 +183493 +183494 +183495 +183520 +183521 +183522 +183523 +183524 +183525 +183526 +183527 +183552 +183553 +183554 +183555 +183556 +183557 +183558 +183559 +183584 +183585 +183586 +183587 +183588 +183589 +183590 +183591 +183616 +183617 +183618 +183619 +183620 +183621 +183622 +183623 +183648 +183649 +183650 +183651 +183652 +183653 +183654 +183655 +183680 +183681 +183682 +183683 +183684 +183685 +183686 +183687 +183712 +183713 +183714 +183715 +183716 +183717 +183718 +183719 +183744 +183745 +183746 +183747 +183748 +183749 +183750 +183751 +183776 +183777 +183778 +183779 +183780 +183781 +183782 +183783 +183808 +183809 +183810 +183811 +183812 +183813 +183814 +183815 +183840 +183841 +183842 +183843 +183844 +183845 +183846 +183847 +183872 +183873 +183874 +183875 +183876 +183877 +183878 +183879 +183904 +183905 +183906 +183907 +183908 +183909 +183910 +183911 +183936 +183937 +183938 +183939 +183940 +183941 +183942 +183943 +183968 +183969 +183970 +183971 +183972 +183973 +183974 +183975 +184000 +184001 +184002 +184003 +184004 +184005 +184006 +184007 +184032 +184033 +184034 +184035 +184036 +184037 +184038 +184039 +184064 +184065 +184066 +184067 +184068 +184069 +184070 +184071 +184096 +184097 +184098 +184099 +184100 +184101 +184102 +184103 +184128 +184129 +184130 +184131 +184132 +184133 +184134 +184135 +184160 +184161 +184162 +184163 +184164 +184165 +184166 +184167 +184192 +184193 +184194 +184195 +184196 +184197 +184198 +184199 +184224 +184225 +184226 +184227 +184228 +184229 +184230 +184231 +184256 +184257 +184258 +184259 +184260 +184261 +184262 +184263 +184288 +184289 +184290 +184291 +184292 +184293 +184294 +184295 +184320 +184321 +184322 +184323 +184324 +184325 +184326 +184327 +184352 +184353 +184354 +184355 +184356 +184357 +184358 +184359 +184384 +184385 +184386 +184387 +184388 +184389 +184390 +184391 +184416 +184417 +184418 +184419 +184420 +184421 +184422 +184423 +184448 +184449 +184450 +184451 +184452 +184453 +184454 +184455 +184480 +184481 +184482 +184483 +184484 +184485 +184486 +184487 +184512 +184513 +184514 +184515 +184516 +184517 +184518 +184519 +184544 +184545 +184546 +184547 +184548 +184549 +184550 +184551 +184576 +184577 +184578 +184579 +184580 +184581 +184582 +184583 +184608 +184609 +184610 +184611 +184612 +184613 +184614 +184615 +184640 +184641 +184642 +184643 +184644 +184645 +184646 +184647 +184672 +184673 +184674 +184675 +184676 +184677 +184678 +184679 +184704 +184705 +184706 +184707 +184708 +184709 +184710 +184711 +184736 +184737 +184738 +184739 +184740 +184741 +184742 +184743 +184768 +184769 +184770 +184771 +184772 +184773 +184774 +184775 +184800 +184801 +184802 +184803 +184804 +184805 +184806 +184807 +184832 +184833 +184834 +184835 +184836 +184837 +184838 +184839 +184864 +184865 +184866 +184867 +184868 +184869 +184870 +184871 +184896 +184897 +184898 +184899 +184900 +184901 +184902 +184903 +184928 +184929 +184930 +184931 +184932 +184933 +184934 +184935 +184960 +184961 +184962 +184963 +184964 +184965 +184966 +184967 +184992 +184993 +184994 +184995 +184996 +184997 +184998 +184999 +185024 +185025 +185026 +185027 +185028 +185029 +185030 +185031 +185056 +185057 +185058 +185059 +185060 +185061 +185062 +185063 +185088 +185089 +185090 +185091 +185092 +185093 +185094 +185095 +185120 +185121 +185122 +185123 +185124 +185125 +185126 +185127 +185152 +185153 +185154 +185155 +185156 +185157 +185158 +185159 +185184 +185185 +185186 +185187 +185188 +185189 +185190 +185191 +185216 +185217 +185218 +185219 +185220 +185221 +185222 +185223 +185248 +185249 +185250 +185251 +185252 +185253 +185254 +185255 +185280 +185281 +185282 +185283 +185284 +185285 +185286 +185287 +185312 +185313 +185314 +185315 +185316 +185317 +185318 +185319 +185344 +185345 +185346 +185347 +185348 +185349 +185350 +185351 +185376 +185377 +185378 +185379 +185380 +185381 +185382 +185383 +185408 +185409 +185410 +185411 +185412 +185413 +185414 +185415 +185440 +185441 +185442 +185443 +185444 +185445 +185446 +185447 +185472 +185473 +185474 +185475 +185476 +185477 +185478 +185479 +185504 +185505 +185506 +185507 +185508 +185509 +185510 +185511 +185536 +185537 +185538 +185539 +185540 +185541 +185542 +185543 +185568 +185569 +185570 +185571 +185572 +185573 +185574 +185575 +185600 +185601 +185602 +185603 +185604 +185605 +185606 +185607 +185632 +185633 +185634 +185635 +185636 +185637 +185638 +185639 +185664 +185665 +185666 +185667 +185668 +185669 +185670 +185671 +185696 +185697 +185698 +185699 +185700 +185701 +185702 +185703 +185728 +185729 +185730 +185731 +185732 +185733 +185734 +185735 +185760 +185761 +185762 +185763 +185764 +185765 +185766 +185767 +185792 +185793 +185794 +185795 +185796 +185797 +185798 +185799 +185824 +185825 +185826 +185827 +185828 +185829 +185830 +185831 +185856 +185857 +185858 +185859 +185860 +185861 +185862 +185863 +185888 +185889 +185890 +185891 +185892 +185893 +185894 +185895 +185920 +185921 +185922 +185923 +185924 +185925 +185926 +185927 +185952 +185953 +185954 +185955 +185956 +185957 +185958 +185959 +185984 +185985 +185986 +185987 +185988 +185989 +185990 +185991 +186016 +186017 +186018 +186019 +186020 +186021 +186022 +186023 +186048 +186049 +186050 +186051 +186052 +186053 +186054 +186055 +186080 +186081 +186082 +186083 +186084 +186085 +186086 +186087 +186112 +186113 +186114 +186115 +186116 +186117 +186118 +186119 +186144 +186145 +186146 +186147 +186148 +186149 +186150 +186151 +186176 +186177 +186178 +186179 +186180 +186181 +186182 +186183 +186208 +186209 +186210 +186211 +186212 +186213 +186214 +186215 +186240 +186241 +186242 +186243 +186244 +186245 +186246 +186247 +186272 +186273 +186274 +186275 +186276 +186277 +186278 +186279 +186304 +186305 +186306 +186307 +186308 +186309 +186310 +186311 +186336 +186337 +186338 +186339 +186340 +186341 +186342 +186343 +186368 +186369 +186370 +186371 +186372 +186373 +186374 +186375 +186400 +186401 +186402 +186403 +186404 +186405 +186406 +186407 +186432 +186433 +186434 +186435 +186436 +186437 +186438 +186439 +186464 +186465 +186466 +186467 +186468 +186469 +186470 +186471 +186496 +186497 +186498 +186499 +186500 +186501 +186502 +186503 +186528 +186529 +186530 +186531 +186532 +186533 +186534 +186535 +186560 +186561 +186562 +186563 +186564 +186565 +186566 +186567 +186592 +186593 +186594 +186595 +186596 +186597 +186598 +186599 +186624 +186625 +186626 +186627 +186628 +186629 +186630 +186631 +186656 +186657 +186658 +186659 +186660 +186661 +186662 +186663 +186688 +186689 +186690 +186691 +186692 +186693 +186694 +186695 +186720 +186721 +186722 +186723 +186724 +186725 +186726 +186727 +186752 +186753 +186754 +186755 +186756 +186757 +186758 +186759 +186784 +186785 +186786 +186787 +186788 +186789 +186790 +186791 +186816 +186817 +186818 +186819 +186820 +186821 +186822 +186823 +186848 +186849 +186850 +186851 +186852 +186853 +186854 +186855 +186880 +186881 +186882 +186883 +186884 +186885 +186886 +186887 +186912 +186913 +186914 +186915 +186916 +186917 +186918 +186919 +186944 +186945 +186946 +186947 +186948 +186949 +186950 +186951 +186976 +186977 +186978 +186979 +186980 +186981 +186982 +186983 +187008 +187009 +187010 +187011 +187012 +187013 +187014 +187015 +187040 +187041 +187042 +187043 +187044 +187045 +187046 +187047 +187072 +187073 +187074 +187075 +187076 +187077 +187078 +187079 +187104 +187105 +187106 +187107 +187108 +187109 +187110 +187111 +187136 +187137 +187138 +187139 +187140 +187141 +187142 +187143 +187168 +187169 +187170 +187171 +187172 +187173 +187174 +187175 +187200 +187201 +187202 +187203 +187204 +187205 +187206 +187207 +187232 +187233 +187234 +187235 +187236 +187237 +187238 +187239 +187264 +187265 +187266 +187267 +187268 +187269 +187270 +187271 +187296 +187297 +187298 +187299 +187300 +187301 +187302 +187303 +187328 +187329 +187330 +187331 +187332 +187333 +187334 +187335 +187360 +187361 +187362 +187363 +187364 +187365 +187366 +187367 +187392 +187393 +187394 +187395 +187396 +187397 +187398 +187399 +187424 +187425 +187426 +187427 +187428 +187429 +187430 +187431 +187456 +187457 +187458 +187459 +187460 +187461 +187462 +187463 +187488 +187489 +187490 +187491 +187492 +187493 +187494 +187495 +187520 +187521 +187522 +187523 +187524 +187525 +187526 +187527 +187552 +187553 +187554 +187555 +187556 +187557 +187558 +187559 +187584 +187585 +187586 +187587 +187588 +187589 +187590 +187591 +187616 +187617 +187618 +187619 +187620 +187621 +187622 +187623 +187648 +187649 +187650 +187651 +187652 +187653 +187654 +187655 +187680 +187681 +187682 +187683 +187684 +187685 +187686 +187687 +187712 +187713 +187714 +187715 +187716 +187717 +187718 +187719 +187744 +187745 +187746 +187747 +187748 +187749 +187750 +187751 +187776 +187777 +187778 +187779 +187780 +187781 +187782 +187783 +187808 +187809 +187810 +187811 +187812 +187813 +187814 +187815 +187840 +187841 +187842 +187843 +187844 +187845 +187846 +187847 +187872 +187873 +187874 +187875 +187876 +187877 +187878 +187879 +187904 +187905 +187906 +187907 +187908 +187909 +187910 +187911 +187936 +187937 +187938 +187939 +187940 +187941 +187942 +187943 +187968 +187969 +187970 +187971 +187972 +187973 +187974 +187975 +188000 +188001 +188002 +188003 +188004 +188005 +188006 +188007 +188032 +188033 +188034 +188035 +188036 +188037 +188038 +188039 +188064 +188065 +188066 +188067 +188068 +188069 +188070 +188071 +188096 +188097 +188098 +188099 +188100 +188101 +188102 +188103 +188128 +188129 +188130 +188131 +188132 +188133 +188134 +188135 +188160 +188161 +188162 +188163 +188164 +188165 +188166 +188167 +188192 +188193 +188194 +188195 +188196 +188197 +188198 +188199 +188224 +188225 +188226 +188227 +188228 +188229 +188230 +188231 +188256 +188257 +188258 +188259 +188260 +188261 +188262 +188263 +188288 +188289 +188290 +188291 +188292 +188293 +188294 +188295 +188320 +188321 +188322 +188323 +188324 +188325 +188326 +188327 +188352 +188353 +188354 +188355 +188356 +188357 +188358 +188359 +188384 +188385 +188386 +188387 +188388 +188389 +188390 +188391 +188416 +188417 +188418 +188419 +188420 +188421 +188422 +188423 +188448 +188449 +188450 +188451 +188452 +188453 +188454 +188455 +188480 +188481 +188482 +188483 +188484 +188485 +188486 +188487 +188512 +188513 +188514 +188515 +188516 +188517 +188518 +188519 +188544 +188545 +188546 +188547 +188548 +188549 +188550 +188551 +188576 +188577 +188578 +188579 +188580 +188581 +188582 +188583 +188608 +188609 +188610 +188611 +188612 +188613 +188614 +188615 +188640 +188641 +188642 +188643 +188644 +188645 +188646 +188647 +188672 +188673 +188674 +188675 +188676 +188677 +188678 +188679 +188704 +188705 +188706 +188707 +188708 +188709 +188710 +188711 +188736 +188737 +188738 +188739 +188740 +188741 +188742 +188743 +188768 +188769 +188770 +188771 +188772 +188773 +188774 +188775 +188800 +188801 +188802 +188803 +188804 +188805 +188806 +188807 +188832 +188833 +188834 +188835 +188836 +188837 +188838 +188839 +188864 +188865 +188866 +188867 +188868 +188869 +188870 +188871 +188896 +188897 +188898 +188899 +188900 +188901 +188902 +188903 +188928 +188929 +188930 +188931 +188932 +188933 +188934 +188935 +188960 +188961 +188962 +188963 +188964 +188965 +188966 +188967 +188992 +188993 +188994 +188995 +188996 +188997 +188998 +188999 +189024 +189025 +189026 +189027 +189028 +189029 +189030 +189031 +189056 +189057 +189058 +189059 +189060 +189061 +189062 +189063 +189088 +189089 +189090 +189091 +189092 +189093 +189094 +189095 +189120 +189121 +189122 +189123 +189124 +189125 +189126 +189127 +189152 +189153 +189154 +189155 +189156 +189157 +189158 +189159 +189184 +189185 +189186 +189187 +189188 +189189 +189190 +189191 +189216 +189217 +189218 +189219 +189220 +189221 +189222 +189223 +189248 +189249 +189250 +189251 +189252 +189253 +189254 +189255 +189280 +189281 +189282 +189283 +189284 +189285 +189286 +189287 +189312 +189313 +189314 +189315 +189316 +189317 +189318 +189319 +189344 +189345 +189346 +189347 +189348 +189349 +189350 +189351 +189376 +189377 +189378 +189379 +189380 +189381 +189382 +189383 +189408 +189409 +189410 +189411 +189412 +189413 +189414 +189415 +189440 +189441 +189442 +189443 +189444 +189445 +189446 +189447 +189472 +189473 +189474 +189475 +189476 +189477 +189478 +189479 +189504 +189505 +189506 +189507 +189508 +189509 +189510 +189511 +189536 +189537 +189538 +189539 +189540 +189541 +189542 +189543 +189568 +189569 +189570 +189571 +189572 +189573 +189574 +189575 +189600 +189601 +189602 +189603 +189604 +189605 +189606 +189607 +189632 +189633 +189634 +189635 +189636 +189637 +189638 +189639 +189664 +189665 +189666 +189667 +189668 +189669 +189670 +189671 +189696 +189697 +189698 +189699 +189700 +189701 +189702 +189703 +189728 +189729 +189730 +189731 +189732 +189733 +189734 +189735 +189760 +189761 +189762 +189763 +189764 +189765 +189766 +189767 +189792 +189793 +189794 +189795 +189796 +189797 +189798 +189799 +189824 +189825 +189826 +189827 +189828 +189829 +189830 +189831 +189856 +189857 +189858 +189859 +189860 +189861 +189862 +189863 +189888 +189889 +189890 +189891 +189892 +189893 +189894 +189895 +189920 +189921 +189922 +189923 +189924 +189925 +189926 +189927 +189952 +189953 +189954 +189955 +189956 +189957 +189958 +189959 +189984 +189985 +189986 +189987 +189988 +189989 +189990 +189991 +190016 +190017 +190018 +190019 +190020 +190021 +190022 +190023 +190048 +190049 +190050 +190051 +190052 +190053 +190054 +190055 +190080 +190081 +190082 +190083 +190084 +190085 +190086 +190087 +190112 +190113 +190114 +190115 +190116 +190117 +190118 +190119 +190144 +190145 +190146 +190147 +190148 +190149 +190150 +190151 +190176 +190177 +190178 +190179 +190180 +190181 +190182 +190183 +190208 +190209 +190210 +190211 +190212 +190213 +190214 +190215 +190240 +190241 +190242 +190243 +190244 +190245 +190246 +190247 +190272 +190273 +190274 +190275 +190276 +190277 +190278 +190279 +190304 +190305 +190306 +190307 +190308 +190309 +190310 +190311 +190336 +190337 +190338 +190339 +190340 +190341 +190342 +190343 +190368 +190369 +190370 +190371 +190372 +190373 +190374 +190375 +190400 +190401 +190402 +190403 +190404 +190405 +190406 +190407 +190432 +190433 +190434 +190435 +190436 +190437 +190438 +190439 +190464 +190465 +190466 +190467 +190468 +190469 +190470 +190471 +190496 +190497 +190498 +190499 +190500 +190501 +190502 +190503 +190528 +190529 +190530 +190531 +190532 +190533 +190534 +190535 +190560 +190561 +190562 +190563 +190564 +190565 +190566 +190567 +190592 +190593 +190594 +190595 +190596 +190597 +190598 +190599 +190624 +190625 +190626 +190627 +190628 +190629 +190630 +190631 +190656 +190657 +190658 +190659 +190660 +190661 +190662 +190663 +190688 +190689 +190690 +190691 +190692 +190693 +190694 +190695 +190720 +190721 +190722 +190723 +190724 +190725 +190726 +190727 +190752 +190753 +190754 +190755 +190756 +190757 +190758 +190759 +190784 +190785 +190786 +190787 +190788 +190789 +190790 +190791 +190816 +190817 +190818 +190819 +190820 +190821 +190822 +190823 +190848 +190849 +190850 +190851 +190852 +190853 +190854 +190855 +190880 +190881 +190882 +190883 +190884 +190885 +190886 +190887 +190912 +190913 +190914 +190915 +190916 +190917 +190918 +190919 +190944 +190945 +190946 +190947 +190948 +190949 +190950 +190951 +190976 +190977 +190978 +190979 +190980 +190981 +190982 +190983 +191008 +191009 +191010 +191011 +191012 +191013 +191014 +191015 +191040 +191041 +191042 +191043 +191044 +191045 +191046 +191047 +191072 +191073 +191074 +191075 +191076 +191077 +191078 +191079 +191104 +191105 +191106 +191107 +191108 +191109 +191110 +191111 +191136 +191137 +191138 +191139 +191140 +191141 +191142 +191143 +191168 +191169 +191170 +191171 +191172 +191173 +191174 +191175 +191200 +191201 +191202 +191203 +191204 +191205 +191206 +191207 +191232 +191233 +191234 +191235 +191236 +191237 +191238 +191239 +191264 +191265 +191266 +191267 +191268 +191269 +191270 +191271 +191296 +191297 +191298 +191299 +191300 +191301 +191302 +191303 +191328 +191329 +191330 +191331 +191332 +191333 +191334 +191335 +191360 +191361 +191362 +191363 +191364 +191365 +191366 +191367 +191392 +191393 +191394 +191395 +191396 +191397 +191398 +191399 +191424 +191425 +191426 +191427 +191428 +191429 +191430 +191431 +191456 +191457 +191458 +191459 +191460 +191461 +191462 +191463 +191488 +191489 +191490 +191491 +191492 +191493 +191494 +191495 +191520 +191521 +191522 +191523 +191524 +191525 +191526 +191527 +191552 +191553 +191554 +191555 +191556 +191557 +191558 +191559 +191584 +191585 +191586 +191587 +191588 +191589 +191590 +191591 +191616 +191617 +191618 +191619 +191620 +191621 +191622 +191623 +191648 +191649 +191650 +191651 +191652 +191653 +191654 +191655 +191680 +191681 +191682 +191683 +191684 +191685 +191686 +191687 +191712 +191713 +191714 +191715 +191716 +191717 +191718 +191719 +191744 +191745 +191746 +191747 +191748 +191749 +191750 +191751 +191776 +191777 +191778 +191779 +191780 +191781 +191782 +191783 +191808 +191809 +191810 +191811 +191812 +191813 +191814 +191815 +191840 +191841 +191842 +191843 +191844 +191845 +191846 +191847 +191872 +191873 +191874 +191875 +191876 +191877 +191878 +191879 +191904 +191905 +191906 +191907 +191908 +191909 +191910 +191911 +191936 +191937 +191938 +191939 +191940 +191941 +191942 +191943 +191968 +191969 +191970 +191971 +191972 +191973 +191974 +191975 +192000 +192001 +192002 +192003 +192004 +192005 +192006 +192007 +192032 +192033 +192034 +192035 +192036 +192037 +192038 +192039 +192064 +192065 +192066 +192067 +192068 +192069 +192070 +192071 +192096 +192097 +192098 +192099 +192100 +192101 +192102 +192103 +192128 +192129 +192130 +192131 +192132 +192133 +192134 +192135 +192160 +192161 +192162 +192163 +192164 +192165 +192166 +192167 +192192 +192193 +192194 +192195 +192196 +192197 +192198 +192199 +192224 +192225 +192226 +192227 +192228 +192229 +192230 +192231 +192256 +192257 +192258 +192259 +192260 +192261 +192262 +192263 +192288 +192289 +192290 +192291 +192292 +192293 +192294 +192295 +192320 +192321 +192322 +192323 +192324 +192325 +192326 +192327 +192352 +192353 +192354 +192355 +192356 +192357 +192358 +192359 +192384 +192385 +192386 +192387 +192388 +192389 +192390 +192391 +192416 +192417 +192418 +192419 +192420 +192421 +192422 +192423 +192448 +192449 +192450 +192451 +192452 +192453 +192454 +192455 +192480 +192481 +192482 +192483 +192484 +192485 +192486 +192487 +192512 +192513 +192514 +192515 +192516 +192517 +192518 +192519 +192544 +192545 +192546 +192547 +192548 +192549 +192550 +192551 +192576 +192577 +192578 +192579 +192580 +192581 +192582 +192583 +192608 +192609 +192610 +192611 +192612 +192613 +192614 +192615 +192640 +192641 +192642 +192643 +192644 +192645 +192646 +192647 +192672 +192673 +192674 +192675 +192676 +192677 +192678 +192679 +192704 +192705 +192706 +192707 +192708 +192709 +192710 +192711 +192736 +192737 +192738 +192739 +192740 +192741 +192742 +192743 +192768 +192769 +192770 +192771 +192772 +192773 +192774 +192775 +192800 +192801 +192802 +192803 +192804 +192805 +192806 +192807 +192832 +192833 +192834 +192835 +192836 +192837 +192838 +192839 +192864 +192865 +192866 +192867 +192868 +192869 +192870 +192871 +192896 +192897 +192898 +192899 +192900 +192901 +192902 +192903 +192928 +192929 +192930 +192931 +192932 +192933 +192934 +192935 +192960 +192961 +192962 +192963 +192964 +192965 +192966 +192967 +192992 +192993 +192994 +192995 +192996 +192997 +192998 +192999 +193024 +193025 +193026 +193027 +193028 +193029 +193030 +193031 +193056 +193057 +193058 +193059 +193060 +193061 +193062 +193063 +193088 +193089 +193090 +193091 +193092 +193093 +193094 +193095 +193120 +193121 +193122 +193123 +193124 +193125 +193126 +193127 +193152 +193153 +193154 +193155 +193156 +193157 +193158 +193159 +193184 +193185 +193186 +193187 +193188 +193189 +193190 +193191 +193216 +193217 +193218 +193219 +193220 +193221 +193222 +193223 +193248 +193249 +193250 +193251 +193252 +193253 +193254 +193255 +193280 +193281 +193282 +193283 +193284 +193285 +193286 +193287 +193312 +193313 +193314 +193315 +193316 +193317 +193318 +193319 +193344 +193345 +193346 +193347 +193348 +193349 +193350 +193351 +193376 +193377 +193378 +193379 +193380 +193381 +193382 +193383 +193408 +193409 +193410 +193411 +193412 +193413 +193414 +193415 +193440 +193441 +193442 +193443 +193444 +193445 +193446 +193447 +193472 +193473 +193474 +193475 +193476 +193477 +193478 +193479 +193504 +193505 +193506 +193507 +193508 +193509 +193510 +193511 +193536 +193537 +193538 +193539 +193540 +193541 +193542 +193543 +193568 +193569 +193570 +193571 +193572 +193573 +193574 +193575 +193600 +193601 +193602 +193603 +193604 +193605 +193606 +193607 +193632 +193633 +193634 +193635 +193636 +193637 +193638 +193639 +193664 +193665 +193666 +193667 +193668 +193669 +193670 +193671 +193696 +193697 +193698 +193699 +193700 +193701 +193702 +193703 +193728 +193729 +193730 +193731 +193732 +193733 +193734 +193735 +193760 +193761 +193762 +193763 +193764 +193765 +193766 +193767 +193792 +193793 +193794 +193795 +193796 +193797 +193798 +193799 +193824 +193825 +193826 +193827 +193828 +193829 +193830 +193831 +193856 +193857 +193858 +193859 +193860 +193861 +193862 +193863 +193888 +193889 +193890 +193891 +193892 +193893 +193894 +193895 +193920 +193921 +193922 +193923 +193924 +193925 +193926 +193927 +193952 +193953 +193954 +193955 +193956 +193957 +193958 +193959 +193984 +193985 +193986 +193987 +193988 +193989 +193990 +193991 +194016 +194017 +194018 +194019 +194020 +194021 +194022 +194023 +194048 +194049 +194050 +194051 +194052 +194053 +194054 +194055 +194080 +194081 +194082 +194083 +194084 +194085 +194086 +194087 +194112 +194113 +194114 +194115 +194116 +194117 +194118 +194119 +194144 +194145 +194146 +194147 +194148 +194149 +194150 +194151 +194176 +194177 +194178 +194179 +194180 +194181 +194182 +194183 +194208 +194209 +194210 +194211 +194212 +194213 +194214 +194215 +194240 +194241 +194242 +194243 +194244 +194245 +194246 +194247 +194272 +194273 +194274 +194275 +194276 +194277 +194278 +194279 +194304 +194305 +194306 +194307 +194308 +194309 +194310 +194311 +194336 +194337 +194338 +194339 +194340 +194341 +194342 +194343 +194368 +194369 +194370 +194371 +194372 +194373 +194374 +194375 +194400 +194401 +194402 +194403 +194404 +194405 +194406 +194407 +194432 +194433 +194434 +194435 +194436 +194437 +194438 +194439 +194464 +194465 +194466 +194467 +194468 +194469 +194470 +194471 +194496 +194497 +194498 +194499 +194500 +194501 +194502 +194503 +194528 +194529 +194530 +194531 +194532 +194533 +194534 +194535 +194560 +194561 +194562 +194563 +194564 +194565 +194566 +194567 +194592 +194593 +194594 +194595 +194596 +194597 +194598 +194599 +194624 +194625 +194626 +194627 +194628 +194629 +194630 +194631 +194656 +194657 +194658 +194659 +194660 +194661 +194662 +194663 +194688 +194689 +194690 +194691 +194692 +194693 +194694 +194695 +194720 +194721 +194722 +194723 +194724 +194725 +194726 +194727 +194752 +194753 +194754 +194755 +194756 +194757 +194758 +194759 +194784 +194785 +194786 +194787 +194788 +194789 +194790 +194791 +194816 +194817 +194818 +194819 +194820 +194821 +194822 +194823 +194848 +194849 +194850 +194851 +194852 +194853 +194854 +194855 +194880 +194881 +194882 +194883 +194884 +194885 +194886 +194887 +194912 +194913 +194914 +194915 +194916 +194917 +194918 +194919 +194944 +194945 +194946 +194947 +194948 +194949 +194950 +194951 +194976 +194977 +194978 +194979 +194980 +194981 +194982 +194983 +195008 +195009 +195010 +195011 +195012 +195013 +195014 +195015 +195040 +195041 +195042 +195043 +195044 +195045 +195046 +195047 +195072 +195073 +195074 +195075 +195076 +195077 +195078 +195079 +195104 +195105 +195106 +195107 +195108 +195109 +195110 +195111 +195136 +195137 +195138 +195139 +195140 +195141 +195142 +195143 +195168 +195169 +195170 +195171 +195172 +195173 +195174 +195175 +195200 +195201 +195202 +195203 +195204 +195205 +195206 +195207 +195232 +195233 +195234 +195235 +195236 +195237 +195238 +195239 +195264 +195265 +195266 +195267 +195268 +195269 +195270 +195271 +195296 +195297 +195298 +195299 +195300 +195301 +195302 +195303 +195328 +195329 +195330 +195331 +195332 +195333 +195334 +195335 +195360 +195361 +195362 +195363 +195364 +195365 +195366 +195367 +195392 +195393 +195394 +195395 +195396 +195397 +195398 +195399 +195424 +195425 +195426 +195427 +195428 +195429 +195430 +195431 +195456 +195457 +195458 +195459 +195460 +195461 +195462 +195463 +195488 +195489 +195490 +195491 +195492 +195493 +195494 +195495 +195520 +195521 +195522 +195523 +195524 +195525 +195526 +195527 +195552 +195553 +195554 +195555 +195556 +195557 +195558 +195559 +195584 +195585 +195586 +195587 +195588 +195589 +195590 +195591 +195616 +195617 +195618 +195619 +195620 +195621 +195622 +195623 +195648 +195649 +195650 +195651 +195652 +195653 +195654 +195655 +195680 +195681 +195682 +195683 +195684 +195685 +195686 +195687 +195712 +195713 +195714 +195715 +195716 +195717 +195718 +195719 +195744 +195745 +195746 +195747 +195748 +195749 +195750 +195751 +195776 +195777 +195778 +195779 +195780 +195781 +195782 +195783 +195808 +195809 +195810 +195811 +195812 +195813 +195814 +195815 +195840 +195841 +195842 +195843 +195844 +195845 +195846 +195847 +195872 +195873 +195874 +195875 +195876 +195877 +195878 +195879 +195904 +195905 +195906 +195907 +195908 +195909 +195910 +195911 +195936 +195937 +195938 +195939 +195940 +195941 +195942 +195943 +195968 +195969 +195970 +195971 +195972 +195973 +195974 +195975 +196000 +196001 +196002 +196003 +196004 +196005 +196006 +196007 +196032 +196033 +196034 +196035 +196036 +196037 +196038 +196039 +196064 +196065 +196066 +196067 +196068 +196069 +196070 +196071 +196096 +196097 +196098 +196099 +196100 +196101 +196102 +196103 +196128 +196129 +196130 +196131 +196132 +196133 +196134 +196135 +196160 +196161 +196162 +196163 +196164 +196165 +196166 +196167 +196192 +196193 +196194 +196195 +196196 +196197 +196198 +196199 +196224 +196225 +196226 +196227 +196228 +196229 +196230 +196231 +196256 +196257 +196258 +196259 +196260 +196261 +196262 +196263 +196288 +196289 +196290 +196291 +196292 +196293 +196294 +196295 +196320 +196321 +196322 +196323 +196324 +196325 +196326 +196327 +196352 +196353 +196354 +196355 +196356 +196357 +196358 +196359 +196384 +196385 +196386 +196387 +196388 +196389 +196390 +196391 +196416 +196417 +196418 +196419 +196420 +196421 +196422 +196423 +196448 +196449 +196450 +196451 +196452 +196453 +196454 +196455 +196480 +196481 +196482 +196483 +196484 +196485 +196486 +196487 +196512 +196513 +196514 +196515 +196516 +196517 +196518 +196519 +196544 +196545 +196546 +196547 +196548 +196549 +196550 +196551 +196576 +196577 +196578 +196579 +196580 +196581 +196582 +196583 +196608 +196609 +196610 +196611 +196612 +196613 +196614 +196615 +196640 +196641 +196642 +196643 +196644 +196645 +196646 +196647 +196672 +196673 +196674 +196675 +196676 +196677 +196678 +196679 +196704 +196705 +196706 +196707 +196708 +196709 +196710 +196711 +196736 +196737 +196738 +196739 +196740 +196741 +196742 +196743 +196768 +196769 +196770 +196771 +196772 +196773 +196774 +196775 +196800 +196801 +196802 +196803 +196804 +196805 +196806 +196807 +196832 +196833 +196834 +196835 +196836 +196837 +196838 +196839 +196864 +196865 +196866 +196867 +196868 +196869 +196870 +196871 +196896 +196897 +196898 +196899 +196900 +196901 +196902 +196903 +196928 +196929 +196930 +196931 +196932 +196933 +196934 +196935 +196960 +196961 +196962 +196963 +196964 +196965 +196966 +196967 +196992 +196993 +196994 +196995 +196996 +196997 +196998 +196999 +197024 +197025 +197026 +197027 +197028 +197029 +197030 +197031 +197056 +197057 +197058 +197059 +197060 +197061 +197062 +197063 +197088 +197089 +197090 +197091 +197092 +197093 +197094 +197095 +197120 +197121 +197122 +197123 +197124 +197125 +197126 +197127 +197152 +197153 +197154 +197155 +197156 +197157 +197158 +197159 +197184 +197185 +197186 +197187 +197188 +197189 +197190 +197191 +197216 +197217 +197218 +197219 +197220 +197221 +197222 +197223 +197248 +197249 +197250 +197251 +197252 +197253 +197254 +197255 +197280 +197281 +197282 +197283 +197284 +197285 +197286 +197287 +197312 +197313 +197314 +197315 +197316 +197317 +197318 +197319 +197344 +197345 +197346 +197347 +197348 +197349 +197350 +197351 +197376 +197377 +197378 +197379 +197380 +197381 +197382 +197383 +197408 +197409 +197410 +197411 +197412 +197413 +197414 +197415 +197440 +197441 +197442 +197443 +197444 +197445 +197446 +197447 +197472 +197473 +197474 +197475 +197476 +197477 +197478 +197479 +197504 +197505 +197506 +197507 +197508 +197509 +197510 +197511 +197536 +197537 +197538 +197539 +197540 +197541 +197542 +197543 +197568 +197569 +197570 +197571 +197572 +197573 +197574 +197575 +197600 +197601 +197602 +197603 +197604 +197605 +197606 +197607 +197632 +197633 +197634 +197635 +197636 +197637 +197638 +197639 +197664 +197665 +197666 +197667 +197668 +197669 +197670 +197671 +197696 +197697 +197698 +197699 +197700 +197701 +197702 +197703 +197728 +197729 +197730 +197731 +197732 +197733 +197734 +197735 +197760 +197761 +197762 +197763 +197764 +197765 +197766 +197767 +197792 +197793 +197794 +197795 +197796 +197797 +197798 +197799 +197824 +197825 +197826 +197827 +197828 +197829 +197830 +197831 +197856 +197857 +197858 +197859 +197860 +197861 +197862 +197863 +197888 +197889 +197890 +197891 +197892 +197893 +197894 +197895 +197920 +197921 +197922 +197923 +197924 +197925 +197926 +197927 +197952 +197953 +197954 +197955 +197956 +197957 +197958 +197959 +197984 +197985 +197986 +197987 +197988 +197989 +197990 +197991 +198016 +198017 +198018 +198019 +198020 +198021 +198022 +198023 +198048 +198049 +198050 +198051 +198052 +198053 +198054 +198055 +198080 +198081 +198082 +198083 +198084 +198085 +198086 +198087 +198112 +198113 +198114 +198115 +198116 +198117 +198118 +198119 +198144 +198145 +198146 +198147 +198148 +198149 +198150 +198151 +198176 +198177 +198178 +198179 +198180 +198181 +198182 +198183 +198208 +198209 +198210 +198211 +198212 +198213 +198214 +198215 +198240 +198241 +198242 +198243 +198244 +198245 +198246 +198247 +198272 +198273 +198274 +198275 +198276 +198277 +198278 +198279 +198304 +198305 +198306 +198307 +198308 +198309 +198310 +198311 +198336 +198337 +198338 +198339 +198340 +198341 +198342 +198343 +198368 +198369 +198370 +198371 +198372 +198373 +198374 +198375 +198400 +198401 +198402 +198403 +198404 +198405 +198406 +198407 +198432 +198433 +198434 +198435 +198436 +198437 +198438 +198439 +198464 +198465 +198466 +198467 +198468 +198469 +198470 +198471 +198496 +198497 +198498 +198499 +198500 +198501 +198502 +198503 +198528 +198529 +198530 +198531 +198532 +198533 +198534 +198535 +198560 +198561 +198562 +198563 +198564 +198565 +198566 +198567 +198592 +198593 +198594 +198595 +198596 +198597 +198598 +198599 +198624 +198625 +198626 +198627 +198628 +198629 +198630 +198631 +198656 +198657 +198658 +198659 +198660 +198661 +198662 +198663 +198688 +198689 +198690 +198691 +198692 +198693 +198694 +198695 +198720 +198721 +198722 +198723 +198724 +198725 +198726 +198727 +198752 +198753 +198754 +198755 +198756 +198757 +198758 +198759 +198784 +198785 +198786 +198787 +198788 +198789 +198790 +198791 +198816 +198817 +198818 +198819 +198820 +198821 +198822 +198823 +198848 +198849 +198850 +198851 +198852 +198853 +198854 +198855 +198880 +198881 +198882 +198883 +198884 +198885 +198886 +198887 +198912 +198913 +198914 +198915 +198916 +198917 +198918 +198919 +198944 +198945 +198946 +198947 +198948 +198949 +198950 +198951 +198976 +198977 +198978 +198979 +198980 +198981 +198982 +198983 +199008 +199009 +199010 +199011 +199012 +199013 +199014 +199015 +199040 +199041 +199042 +199043 +199044 +199045 +199046 +199047 +199072 +199073 +199074 +199075 +199076 +199077 +199078 +199079 +199104 +199105 +199106 +199107 +199108 +199109 +199110 +199111 +199136 +199137 +199138 +199139 +199140 +199141 +199142 +199143 +199168 +199169 +199170 +199171 +199172 +199173 +199174 +199175 +199200 +199201 +199202 +199203 +199204 +199205 +199206 +199207 +199232 +199233 +199234 +199235 +199236 +199237 +199238 +199239 +199264 +199265 +199266 +199267 +199268 +199269 +199270 +199271 +199296 +199297 +199298 +199299 +199300 +199301 +199302 +199303 +199328 +199329 +199330 +199331 +199332 +199333 +199334 +199335 +199360 +199361 +199362 +199363 +199364 +199365 +199366 +199367 +199392 +199393 +199394 +199395 +199396 +199397 +199398 +199399 +199424 +199425 +199426 +199427 +199428 +199429 +199430 +199431 +199456 +199457 +199458 +199459 +199460 +199461 +199462 +199463 +199488 +199489 +199490 +199491 +199492 +199493 +199494 +199495 +199520 +199521 +199522 +199523 +199524 +199525 +199526 +199527 +199552 +199553 +199554 +199555 +199556 +199557 +199558 +199559 +199584 +199585 +199586 +199587 +199588 +199589 +199590 +199591 +199616 +199617 +199618 +199619 +199620 +199621 +199622 +199623 +199648 +199649 +199650 +199651 +199652 +199653 +199654 +199655 +199680 +199681 +199682 +199683 +199684 +199685 +199686 +199687 +199712 +199713 +199714 +199715 +199716 +199717 +199718 +199719 +199744 +199745 +199746 +199747 +199748 +199749 +199750 +199751 +199776 +199777 +199778 +199779 +199780 +199781 +199782 +199783 +199808 +199809 +199810 +199811 +199812 +199813 +199814 +199815 +199840 +199841 +199842 +199843 +199844 +199845 +199846 +199847 +199872 +199873 +199874 +199875 +199876 +199877 +199878 +199879 +199904 +199905 +199906 +199907 +199908 +199909 +199910 +199911 +199936 +199937 +199938 +199939 +199940 +199941 +199942 +199943 +199968 +199969 +199970 +199971 +199972 +199973 +199974 +199975 +200000 +200001 +200002 +200003 +200004 +200005 +200006 +200007 +200032 +200033 +200034 +200035 +200036 +200037 +200038 +200039 +200064 +200065 +200066 +200067 +200068 +200069 +200070 +200071 +200096 +200097 +200098 +200099 +200100 +200101 +200102 +200103 +200128 +200129 +200130 +200131 +200132 +200133 +200134 +200135 +200160 +200161 +200162 +200163 +200164 +200165 +200166 +200167 +200192 +200193 +200194 +200195 +200196 +200197 +200198 +200199 +200224 +200225 +200226 +200227 +200228 +200229 +200230 +200231 +200256 +200257 +200258 +200259 +200260 +200261 +200262 +200263 +200288 +200289 +200290 +200291 +200292 +200293 +200294 +200295 +200320 +200321 +200322 +200323 +200324 +200325 +200326 +200327 +200352 +200353 +200354 +200355 +200356 +200357 +200358 +200359 +200384 +200385 +200386 +200387 +200388 +200389 +200390 +200391 +200416 +200417 +200418 +200419 +200420 +200421 +200422 +200423 +200448 +200449 +200450 +200451 +200452 +200453 +200454 +200455 +200480 +200481 +200482 +200483 +200484 +200485 +200486 +200487 +200512 +200513 +200514 +200515 +200516 +200517 +200518 +200519 +200544 +200545 +200546 +200547 +200548 +200549 +200550 +200551 +200576 +200577 +200578 +200579 +200580 +200581 +200582 +200583 +200608 +200609 +200610 +200611 +200612 +200613 +200614 +200615 +200640 +200641 +200642 +200643 +200644 +200645 +200646 +200647 +200672 +200673 +200674 +200675 +200676 +200677 +200678 +200679 +200704 +200705 +200706 +200707 +200708 +200709 +200710 +200711 +200736 +200737 +200738 +200739 +200740 +200741 +200742 +200743 +200768 +200769 +200770 +200771 +200772 +200773 +200774 +200775 +200800 +200801 +200802 +200803 +200804 +200805 +200806 +200807 +200832 +200833 +200834 +200835 +200836 +200837 +200838 +200839 +200864 +200865 +200866 +200867 +200868 +200869 +200870 +200871 +200896 +200897 +200898 +200899 +200900 +200901 +200902 +200903 +200928 +200929 +200930 +200931 +200932 +200933 +200934 +200935 +200960 +200961 +200962 +200963 +200964 +200965 +200966 +200967 +200992 +200993 +200994 +200995 +200996 +200997 +200998 +200999 +201024 +201025 +201026 +201027 +201028 +201029 +201030 +201031 +201056 +201057 +201058 +201059 +201060 +201061 +201062 +201063 +201088 +201089 +201090 +201091 +201092 +201093 +201094 +201095 +201120 +201121 +201122 +201123 +201124 +201125 +201126 +201127 +201152 +201153 +201154 +201155 +201156 +201157 +201158 +201159 +201184 +201185 +201186 +201187 +201188 +201189 +201190 +201191 +201216 +201217 +201218 +201219 +201220 +201221 +201222 +201223 +201248 +201249 +201250 +201251 +201252 +201253 +201254 +201255 +201280 +201281 +201282 +201283 +201284 +201285 +201286 +201287 +201312 +201313 +201314 +201315 +201316 +201317 +201318 +201319 +201344 +201345 +201346 +201347 +201348 +201349 +201350 +201351 +201376 +201377 +201378 +201379 +201380 +201381 +201382 +201383 +201408 +201409 +201410 +201411 +201412 +201413 +201414 +201415 +201440 +201441 +201442 +201443 +201444 +201445 +201446 +201447 +201472 +201473 +201474 +201475 +201476 +201477 +201478 +201479 +201504 +201505 +201506 +201507 +201508 +201509 +201510 +201511 +201536 +201537 +201538 +201539 +201540 +201541 +201542 +201543 +201568 +201569 +201570 +201571 +201572 +201573 +201574 +201575 +201600 +201601 +201602 +201603 +201604 +201605 +201606 +201607 +201632 +201633 +201634 +201635 +201636 +201637 +201638 +201639 +201664 +201665 +201666 +201667 +201668 +201669 +201670 +201671 +201696 +201697 +201698 +201699 +201700 +201701 +201702 +201703 +201728 +201729 +201730 +201731 +201732 +201733 +201734 +201735 +201760 +201761 +201762 +201763 +201764 +201765 +201766 +201767 +201792 +201793 +201794 +201795 +201796 +201797 +201798 +201799 +201824 +201825 +201826 +201827 +201828 +201829 +201830 +201831 +201856 +201857 +201858 +201859 +201860 +201861 +201862 +201863 +201888 +201889 +201890 +201891 +201892 +201893 +201894 +201895 +201920 +201921 +201922 +201923 +201924 +201925 +201926 +201927 +201952 +201953 +201954 +201955 +201956 +201957 +201958 +201959 +201984 +201985 +201986 +201987 +201988 +201989 +201990 +201991 +202016 +202017 +202018 +202019 +202020 +202021 +202022 +202023 +202048 +202049 +202050 +202051 +202052 +202053 +202054 +202055 +202080 +202081 +202082 +202083 +202084 +202085 +202086 +202087 +202112 +202113 +202114 +202115 +202116 +202117 +202118 +202119 +202144 +202145 +202146 +202147 +202148 +202149 +202150 +202151 +202176 +202177 +202178 +202179 +202180 +202181 +202182 +202183 +202208 +202209 +202210 +202211 +202212 +202213 +202214 +202215 +202240 +202241 +202242 +202243 +202244 +202245 +202246 +202247 +202272 +202273 +202274 +202275 +202276 +202277 +202278 +202279 +202304 +202305 +202306 +202307 +202308 +202309 +202310 +202311 +202336 +202337 +202338 +202339 +202340 +202341 +202342 +202343 +202368 +202369 +202370 +202371 +202372 +202373 +202374 +202375 +202400 +202401 +202402 +202403 +202404 +202405 +202406 +202407 +202432 +202433 +202434 +202435 +202436 +202437 +202438 +202439 +202464 +202465 +202466 +202467 +202468 +202469 +202470 +202471 +202496 +202497 +202498 +202499 +202500 +202501 +202502 +202503 +202528 +202529 +202530 +202531 +202532 +202533 +202534 +202535 +202560 +202561 +202562 +202563 +202564 +202565 +202566 +202567 +202592 +202593 +202594 +202595 +202596 +202597 +202598 +202599 +202624 +202625 +202626 +202627 +202628 +202629 +202630 +202631 +202656 +202657 +202658 +202659 +202660 +202661 +202662 +202663 +202688 +202689 +202690 +202691 +202692 +202693 +202694 +202695 +202720 +202721 +202722 +202723 +202724 +202725 +202726 +202727 +202752 +202753 +202754 +202755 +202756 +202757 +202758 +202759 +202784 +202785 +202786 +202787 +202788 +202789 +202790 +202791 +202816 +202817 +202818 +202819 +202820 +202821 +202822 +202823 +202848 +202849 +202850 +202851 +202852 +202853 +202854 +202855 +202880 +202881 +202882 +202883 +202884 +202885 +202886 +202887 +202912 +202913 +202914 +202915 +202916 +202917 +202918 +202919 +202944 +202945 +202946 +202947 +202948 +202949 +202950 +202951 +202976 +202977 +202978 +202979 +202980 +202981 +202982 +202983 +203008 +203009 +203010 +203011 +203012 +203013 +203014 +203015 +203040 +203041 +203042 +203043 +203044 +203045 +203046 +203047 +203072 +203073 +203074 +203075 +203076 +203077 +203078 +203079 +203104 +203105 +203106 +203107 +203108 +203109 +203110 +203111 +203136 +203137 +203138 +203139 +203140 +203141 +203142 +203143 +203168 +203169 +203170 +203171 +203172 +203173 +203174 +203175 +203200 +203201 +203202 +203203 +203204 +203205 +203206 +203207 +203232 +203233 +203234 +203235 +203236 +203237 +203238 +203239 +203264 +203265 +203266 +203267 +203268 +203269 +203270 +203271 +203296 +203297 +203298 +203299 +203300 +203301 +203302 +203303 +203328 +203329 +203330 +203331 +203332 +203333 +203334 +203335 +203360 +203361 +203362 +203363 +203364 +203365 +203366 +203367 +203392 +203393 +203394 +203395 +203396 +203397 +203398 +203399 +203424 +203425 +203426 +203427 +203428 +203429 +203430 +203431 +203456 +203457 +203458 +203459 +203460 +203461 +203462 +203463 +203488 +203489 +203490 +203491 +203492 +203493 +203494 +203495 +203520 +203521 +203522 +203523 +203524 +203525 +203526 +203527 +203552 +203553 +203554 +203555 +203556 +203557 +203558 +203559 +203584 +203585 +203586 +203587 +203588 +203589 +203590 +203591 +203616 +203617 +203618 +203619 +203620 +203621 +203622 +203623 +203648 +203649 +203650 +203651 +203652 +203653 +203654 +203655 +203680 +203681 +203682 +203683 +203684 +203685 +203686 +203687 +203712 +203713 +203714 +203715 +203716 +203717 +203718 +203719 +203744 +203745 +203746 +203747 +203748 +203749 +203750 +203751 +203776 +203777 +203778 +203779 +203780 +203781 +203782 +203783 +203808 +203809 +203810 +203811 +203812 +203813 +203814 +203815 +203840 +203841 +203842 +203843 +203844 +203845 +203846 +203847 +203872 +203873 +203874 +203875 +203876 +203877 +203878 +203879 +203904 +203905 +203906 +203907 +203908 +203909 +203910 +203911 +203936 +203937 +203938 +203939 +203940 +203941 +203942 +203943 +203968 +203969 +203970 +203971 +203972 +203973 +203974 +203975 +204000 +204001 +204002 +204003 +204004 +204005 +204006 +204007 +204032 +204033 +204034 +204035 +204036 +204037 +204038 +204039 +204064 +204065 +204066 +204067 +204068 +204069 +204070 +204071 +204096 +204097 +204098 +204099 +204100 +204101 +204102 +204103 +204128 +204129 +204130 +204131 +204132 +204133 +204134 +204135 +204160 +204161 +204162 +204163 +204164 +204165 +204166 +204167 +204192 +204193 +204194 +204195 +204196 +204197 +204198 +204199 +204224 +204225 +204226 +204227 +204228 +204229 +204230 +204231 +204256 +204257 +204258 +204259 +204260 +204261 +204262 +204263 +204288 +204289 +204290 +204291 +204292 +204293 +204294 +204295 +204320 +204321 +204322 +204323 +204324 +204325 +204326 +204327 +204352 +204353 +204354 +204355 +204356 +204357 +204358 +204359 +204384 +204385 +204386 +204387 +204388 +204389 +204390 +204391 +204416 +204417 +204418 +204419 +204420 +204421 +204422 +204423 +204448 +204449 +204450 +204451 +204452 +204453 +204454 +204455 +204480 +204481 +204482 +204483 +204484 +204485 +204486 +204487 +204512 +204513 +204514 +204515 +204516 +204517 +204518 +204519 +204544 +204545 +204546 +204547 +204548 +204549 +204550 +204551 +204576 +204577 +204578 +204579 +204580 +204581 +204582 +204583 +204608 +204609 +204610 +204611 +204612 +204613 +204614 +204615 +204640 +204641 +204642 +204643 +204644 +204645 +204646 +204647 +204672 +204673 +204674 +204675 +204676 +204677 +204678 +204679 +204704 +204705 +204706 +204707 +204708 +204709 +204710 +204711 +204736 +204737 +204738 +204739 +204740 +204741 +204742 +204743 +204768 +204769 +204770 +204771 +204772 +204773 +204774 +204775 +204800 +204801 +204802 +204803 +204804 +204805 +204806 +204807 +204832 +204833 +204834 +204835 +204836 +204837 +204838 +204839 +204864 +204865 +204866 +204867 +204868 +204869 +204870 +204871 +204896 +204897 +204898 +204899 +204900 +204901 +204902 +204903 +204928 +204929 +204930 +204931 +204932 +204933 +204934 +204935 +204960 +204961 +204962 +204963 +204964 +204965 +204966 +204967 +204992 +204993 +204994 +204995 +204996 +204997 +204998 +204999 +205024 +205025 +205026 +205027 +205028 +205029 +205030 +205031 +205056 +205057 +205058 +205059 +205060 +205061 +205062 +205063 +205088 +205089 +205090 +205091 +205092 +205093 +205094 +205095 +205120 +205121 +205122 +205123 +205124 +205125 +205126 +205127 +205152 +205153 +205154 +205155 +205156 +205157 +205158 +205159 +205184 +205185 +205186 +205187 +205188 +205189 +205190 +205191 +205216 +205217 +205218 +205219 +205220 +205221 +205222 +205223 +205248 +205249 +205250 +205251 +205252 +205253 +205254 +205255 +205280 +205281 +205282 +205283 +205284 +205285 +205286 +205287 +205312 +205313 +205314 +205315 +205316 +205317 +205318 +205319 +205344 +205345 +205346 +205347 +205348 +205349 +205350 +205351 +205376 +205377 +205378 +205379 +205380 +205381 +205382 +205383 +205408 +205409 +205410 +205411 +205412 +205413 +205414 +205415 +205440 +205441 +205442 +205443 +205444 +205445 +205446 +205447 +205472 +205473 +205474 +205475 +205476 +205477 +205478 +205479 +205504 +205505 +205506 +205507 +205508 +205509 +205510 +205511 +205536 +205537 +205538 +205539 +205540 +205541 +205542 +205543 +205568 +205569 +205570 +205571 +205572 +205573 +205574 +205575 +205600 +205601 +205602 +205603 +205604 +205605 +205606 +205607 +205632 +205633 +205634 +205635 +205636 +205637 +205638 +205639 +205664 +205665 +205666 +205667 +205668 +205669 +205670 +205671 +205696 +205697 +205698 +205699 +205700 +205701 +205702 +205703 +205728 +205729 +205730 +205731 +205732 +205733 +205734 +205735 +205760 +205761 +205762 +205763 +205764 +205765 +205766 +205767 +205792 +205793 +205794 +205795 +205796 +205797 +205798 +205799 +205824 +205825 +205826 +205827 +205828 +205829 +205830 +205831 +205856 +205857 +205858 +205859 +205860 +205861 +205862 +205863 +205888 +205889 +205890 +205891 +205892 +205893 +205894 +205895 +205920 +205921 +205922 +205923 +205924 +205925 +205926 +205927 +205952 +205953 +205954 +205955 +205956 +205957 +205958 +205959 +205984 +205985 +205986 +205987 +205988 +205989 +205990 +205991 +206016 +206017 +206018 +206019 +206020 +206021 +206022 +206023 +206048 +206049 +206050 +206051 +206052 +206053 +206054 +206055 +206080 +206081 +206082 +206083 +206084 +206085 +206086 +206087 +206112 +206113 +206114 +206115 +206116 +206117 +206118 +206119 +206144 +206145 +206146 +206147 +206148 +206149 +206150 +206151 +206176 +206177 +206178 +206179 +206180 +206181 +206182 +206183 +206208 +206209 +206210 +206211 +206212 +206213 +206214 +206215 +206240 +206241 +206242 +206243 +206244 +206245 +206246 +206247 +206272 +206273 +206274 +206275 +206276 +206277 +206278 +206279 +206304 +206305 +206306 +206307 +206308 +206309 +206310 +206311 +206336 +206337 +206338 +206339 +206340 +206341 +206342 +206343 +206368 +206369 +206370 +206371 +206372 +206373 +206374 +206375 +206400 +206401 +206402 +206403 +206404 +206405 +206406 +206407 +206432 +206433 +206434 +206435 +206436 +206437 +206438 +206439 +206464 +206465 +206466 +206467 +206468 +206469 +206470 +206471 +206496 +206497 +206498 +206499 +206500 +206501 +206502 +206503 +206528 +206529 +206530 +206531 +206532 +206533 +206534 +206535 +206560 +206561 +206562 +206563 +206564 +206565 +206566 +206567 +206592 +206593 +206594 +206595 +206596 +206597 +206598 +206599 +206624 +206625 +206626 +206627 +206628 +206629 +206630 +206631 +206656 +206657 +206658 +206659 +206660 +206661 +206662 +206663 +206688 +206689 +206690 +206691 +206692 +206693 +206694 +206695 +206720 +206721 +206722 +206723 +206724 +206725 +206726 +206727 +206752 +206753 +206754 +206755 +206756 +206757 +206758 +206759 +206784 +206785 +206786 +206787 +206788 +206789 +206790 +206791 +206816 +206817 +206818 +206819 +206820 +206821 +206822 +206823 +206848 +206849 +206850 +206851 +206852 +206853 +206854 +206855 +206880 +206881 +206882 +206883 +206884 +206885 +206886 +206887 +206912 +206913 +206914 +206915 +206916 +206917 +206918 +206919 +206944 +206945 +206946 +206947 +206948 +206949 +206950 +206951 +206976 +206977 +206978 +206979 +206980 +206981 +206982 +206983 +207008 +207009 +207010 +207011 +207012 +207013 +207014 +207015 +207040 +207041 +207042 +207043 +207044 +207045 +207046 +207047 +207072 +207073 +207074 +207075 +207076 +207077 +207078 +207079 +207104 +207105 +207106 +207107 +207108 +207109 +207110 +207111 +207136 +207137 +207138 +207139 +207140 +207141 +207142 +207143 +207168 +207169 +207170 +207171 +207172 +207173 +207174 +207175 +207200 +207201 +207202 +207203 +207204 +207205 +207206 +207207 +207232 +207233 +207234 +207235 +207236 +207237 +207238 +207239 +207264 +207265 +207266 +207267 +207268 +207269 +207270 +207271 +207296 +207297 +207298 +207299 +207300 +207301 +207302 +207303 +207328 +207329 +207330 +207331 +207332 +207333 +207334 +207335 +207360 +207361 +207362 +207363 +207364 +207365 +207366 +207367 +207392 +207393 +207394 +207395 +207396 +207397 +207398 +207399 +207424 +207425 +207426 +207427 +207428 +207429 +207430 +207431 +207456 +207457 +207458 +207459 +207460 +207461 +207462 +207463 +207488 +207489 +207490 +207491 +207492 +207493 +207494 +207495 +207520 +207521 +207522 +207523 +207524 +207525 +207526 +207527 +207552 +207553 +207554 +207555 +207556 +207557 +207558 +207559 +207584 +207585 +207586 +207587 +207588 +207589 +207590 +207591 +207616 +207617 +207618 +207619 +207620 +207621 +207622 +207623 +207648 +207649 +207650 +207651 +207652 +207653 +207654 +207655 +207680 +207681 +207682 +207683 +207684 +207685 +207686 +207687 +207712 +207713 +207714 +207715 +207716 +207717 +207718 +207719 +207744 +207745 +207746 +207747 +207748 +207749 +207750 +207751 +207776 +207777 +207778 +207779 +207780 +207781 +207782 +207783 +207808 +207809 +207810 +207811 +207812 +207813 +207814 +207815 +207840 +207841 +207842 +207843 +207844 +207845 +207846 +207847 +207872 +207873 +207874 +207875 +207876 +207877 +207878 +207879 +207904 +207905 +207906 +207907 +207908 +207909 +207910 +207911 +207936 +207937 +207938 +207939 +207940 +207941 +207942 +207943 +207968 +207969 +207970 +207971 +207972 +207973 +207974 +207975 +208000 +208001 +208002 +208003 +208004 +208005 +208006 +208007 +208032 +208033 +208034 +208035 +208036 +208037 +208038 +208039 +208064 +208065 +208066 +208067 +208068 +208069 +208070 +208071 +208096 +208097 +208098 +208099 +208100 +208101 +208102 +208103 +208128 +208129 +208130 +208131 +208132 +208133 +208134 +208135 +208160 +208161 +208162 +208163 +208164 +208165 +208166 +208167 +208192 +208193 +208194 +208195 +208196 +208197 +208198 +208199 +208224 +208225 +208226 +208227 +208228 +208229 +208230 +208231 +208256 +208257 +208258 +208259 +208260 +208261 +208262 +208263 +208288 +208289 +208290 +208291 +208292 +208293 +208294 +208295 +208320 +208321 +208322 +208323 +208324 +208325 +208326 +208327 +208352 +208353 +208354 +208355 +208356 +208357 +208358 +208359 +208384 +208385 +208386 +208387 +208388 +208389 +208390 +208391 +208416 +208417 +208418 +208419 +208420 +208421 +208422 +208423 +208448 +208449 +208450 +208451 +208452 +208453 +208454 +208455 +208480 +208481 +208482 +208483 +208484 +208485 +208486 +208487 +208512 +208513 +208514 +208515 +208516 +208517 +208518 +208519 +208544 +208545 +208546 +208547 +208548 +208549 +208550 +208551 +208576 +208577 +208578 +208579 +208580 +208581 +208582 +208583 +208608 +208609 +208610 +208611 +208612 +208613 +208614 +208615 +208640 +208641 +208642 +208643 +208644 +208645 +208646 +208647 +208672 +208673 +208674 +208675 +208676 +208677 +208678 +208679 +208704 +208705 +208706 +208707 +208708 +208709 +208710 +208711 +208736 +208737 +208738 +208739 +208740 +208741 +208742 +208743 +208768 +208769 +208770 +208771 +208772 +208773 +208774 +208775 +208800 +208801 +208802 +208803 +208804 +208805 +208806 +208807 +208832 +208833 +208834 +208835 +208836 +208837 +208838 +208839 +208864 +208865 +208866 +208867 +208868 +208869 +208870 +208871 +208896 +208897 +208898 +208899 +208900 +208901 +208902 +208903 +208928 +208929 +208930 +208931 +208932 +208933 +208934 +208935 +208960 +208961 +208962 +208963 +208964 +208965 +208966 +208967 +208992 +208993 +208994 +208995 +208996 +208997 +208998 +208999 +209024 +209025 +209026 +209027 +209028 +209029 +209030 +209031 +209056 +209057 +209058 +209059 +209060 +209061 +209062 +209063 +209088 +209089 +209090 +209091 +209092 +209093 +209094 +209095 +209120 +209121 +209122 +209123 +209124 +209125 +209126 +209127 +209152 +209153 +209154 +209155 +209156 +209157 +209158 +209159 +209184 +209185 +209186 +209187 +209188 +209189 +209190 +209191 +209216 +209217 +209218 +209219 +209220 +209221 +209222 +209223 +209248 +209249 +209250 +209251 +209252 +209253 +209254 +209255 +209280 +209281 +209282 +209283 +209284 +209285 +209286 +209287 +209312 +209313 +209314 +209315 +209316 +209317 +209318 +209319 +209344 +209345 +209346 +209347 +209348 +209349 +209350 +209351 +209376 +209377 +209378 +209379 +209380 +209381 +209382 +209383 +209408 +209409 +209410 +209411 +209412 +209413 +209414 +209415 +209440 +209441 +209442 +209443 +209444 +209445 +209446 +209447 +209472 +209473 +209474 +209475 +209476 +209477 +209478 +209479 +209504 +209505 +209506 +209507 +209508 +209509 +209510 +209511 +209536 +209537 +209538 +209539 +209540 +209541 +209542 +209543 +209568 +209569 +209570 +209571 +209572 +209573 +209574 +209575 +209600 +209601 +209602 +209603 +209604 +209605 +209606 +209607 +209632 +209633 +209634 +209635 +209636 +209637 +209638 +209639 +209664 +209665 +209666 +209667 +209668 +209669 +209670 +209671 +209696 +209697 +209698 +209699 +209700 +209701 +209702 +209703 +209728 +209729 +209730 +209731 +209732 +209733 +209734 +209735 +209760 +209761 +209762 +209763 +209764 +209765 +209766 +209767 +209792 +209793 +209794 +209795 +209796 +209797 +209798 +209799 +209824 +209825 +209826 +209827 +209828 +209829 +209830 +209831 +209856 +209857 +209858 +209859 +209860 +209861 +209862 +209863 +209888 +209889 +209890 +209891 +209892 +209893 +209894 +209895 +209920 +209921 +209922 +209923 +209924 +209925 +209926 +209927 +209952 +209953 +209954 +209955 +209956 +209957 +209958 +209959 +209984 +209985 +209986 +209987 +209988 +209989 +209990 +209991 +210016 +210017 +210018 +210019 +210020 +210021 +210022 +210023 +210048 +210049 +210050 +210051 +210052 +210053 +210054 +210055 +210080 +210081 +210082 +210083 +210084 +210085 +210086 +210087 +210112 +210113 +210114 +210115 +210116 +210117 +210118 +210119 +210144 +210145 +210146 +210147 +210148 +210149 +210150 +210151 +210176 +210177 +210178 +210179 +210180 +210181 +210182 +210183 +210208 +210209 +210210 +210211 +210212 +210213 +210214 +210215 +210240 +210241 +210242 +210243 +210244 +210245 +210246 +210247 +210272 +210273 +210274 +210275 +210276 +210277 +210278 +210279 +210304 +210305 +210306 +210307 +210308 +210309 +210310 +210311 +210336 +210337 +210338 +210339 +210340 +210341 +210342 +210343 +210368 +210369 +210370 +210371 +210372 +210373 +210374 +210375 +210400 +210401 +210402 +210403 +210404 +210405 +210406 +210407 +210432 +210433 +210434 +210435 +210436 +210437 +210438 +210439 +210464 +210465 +210466 +210467 +210468 +210469 +210470 +210471 +210496 +210497 +210498 +210499 +210500 +210501 +210502 +210503 +210528 +210529 +210530 +210531 +210532 +210533 +210534 +210535 +210560 +210561 +210562 +210563 +210564 +210565 +210566 +210567 +210592 +210593 +210594 +210595 +210596 +210597 +210598 +210599 +210624 +210625 +210626 +210627 +210628 +210629 +210630 +210631 +210656 +210657 +210658 +210659 +210660 +210661 +210662 +210663 +210688 +210689 +210690 +210691 +210692 +210693 +210694 +210695 +210720 +210721 +210722 +210723 +210724 +210725 +210726 +210727 +210752 +210753 +210754 +210755 +210756 +210757 +210758 +210759 +210784 +210785 +210786 +210787 +210788 +210789 +210790 +210791 +210816 +210817 +210818 +210819 +210820 +210821 +210822 +210823 +210848 +210849 +210850 +210851 +210852 +210853 +210854 +210855 +210880 +210881 +210882 +210883 +210884 +210885 +210886 +210887 +210912 +210913 +210914 +210915 +210916 +210917 +210918 +210919 +210944 +210945 +210946 +210947 +210948 +210949 +210950 +210951 +210976 +210977 +210978 +210979 +210980 +210981 +210982 +210983 +211008 +211009 +211010 +211011 +211012 +211013 +211014 +211015 +211040 +211041 +211042 +211043 +211044 +211045 +211046 +211047 +211072 +211073 +211074 +211075 +211076 +211077 +211078 +211079 +211104 +211105 +211106 +211107 +211108 +211109 +211110 +211111 +211136 +211137 +211138 +211139 +211140 +211141 +211142 +211143 +211168 +211169 +211170 +211171 +211172 +211173 +211174 +211175 +211200 +211201 +211202 +211203 +211204 +211205 +211206 +211207 +211232 +211233 +211234 +211235 +211236 +211237 +211238 +211239 +211264 +211265 +211266 +211267 +211268 +211269 +211270 +211271 +211296 +211297 +211298 +211299 +211300 +211301 +211302 +211303 +211328 +211329 +211330 +211331 +211332 +211333 +211334 +211335 +211360 +211361 +211362 +211363 +211364 +211365 +211366 +211367 +211392 +211393 +211394 +211395 +211396 +211397 +211398 +211399 +211424 +211425 +211426 +211427 +211428 +211429 +211430 +211431 +211456 +211457 +211458 +211459 +211460 +211461 +211462 +211463 +211488 +211489 +211490 +211491 +211492 +211493 +211494 +211495 +211520 +211521 +211522 +211523 +211524 +211525 +211526 +211527 +211552 +211553 +211554 +211555 +211556 +211557 +211558 +211559 +211584 +211585 +211586 +211587 +211588 +211589 +211590 +211591 +211616 +211617 +211618 +211619 +211620 +211621 +211622 +211623 +211648 +211649 +211650 +211651 +211652 +211653 +211654 +211655 +211680 +211681 +211682 +211683 +211684 +211685 +211686 +211687 +211712 +211713 +211714 +211715 +211716 +211717 +211718 +211719 +211744 +211745 +211746 +211747 +211748 +211749 +211750 +211751 +211776 +211777 +211778 +211779 +211780 +211781 +211782 +211783 +211808 +211809 +211810 +211811 +211812 +211813 +211814 +211815 +211840 +211841 +211842 +211843 +211844 +211845 +211846 +211847 +211872 +211873 +211874 +211875 +211876 +211877 +211878 +211879 +211904 +211905 +211906 +211907 +211908 +211909 +211910 +211911 +211936 +211937 +211938 +211939 +211940 +211941 +211942 +211943 +211968 +211969 +211970 +211971 +211972 +211973 +211974 +211975 +212000 +212001 +212002 +212003 +212004 +212005 +212006 +212007 +212032 +212033 +212034 +212035 +212036 +212037 +212038 +212039 +212064 +212065 +212066 +212067 +212068 +212069 +212070 +212071 +212096 +212097 +212098 +212099 +212100 +212101 +212102 +212103 +212128 +212129 +212130 +212131 +212132 +212133 +212134 +212135 +212160 +212161 +212162 +212163 +212164 +212165 +212166 +212167 +212192 +212193 +212194 +212195 +212196 +212197 +212198 +212199 +212224 +212225 +212226 +212227 +212228 +212229 +212230 +212231 +212256 +212257 +212258 +212259 +212260 +212261 +212262 +212263 +212288 +212289 +212290 +212291 +212292 +212293 +212294 +212295 +212320 +212321 +212322 +212323 +212324 +212325 +212326 +212327 +212352 +212353 +212354 +212355 +212356 +212357 +212358 +212359 +212384 +212385 +212386 +212387 +212388 +212389 +212390 +212391 +212416 +212417 +212418 +212419 +212420 +212421 +212422 +212423 +212448 +212449 +212450 +212451 +212452 +212453 +212454 +212455 +212480 +212481 +212482 +212483 +212484 +212485 +212486 +212487 +212512 +212513 +212514 +212515 +212516 +212517 +212518 +212519 +212544 +212545 +212546 +212547 +212548 +212549 +212550 +212551 +212576 +212577 +212578 +212579 +212580 +212581 +212582 +212583 +212608 +212609 +212610 +212611 +212612 +212613 +212614 +212615 +212640 +212641 +212642 +212643 +212644 +212645 +212646 +212647 +212672 +212673 +212674 +212675 +212676 +212677 +212678 +212679 +212704 +212705 +212706 +212707 +212708 +212709 +212710 +212711 +212736 +212737 +212738 +212739 +212740 +212741 +212742 +212743 +212768 +212769 +212770 +212771 +212772 +212773 +212774 +212775 +212800 +212801 +212802 +212803 +212804 +212805 +212806 +212807 +212832 +212833 +212834 +212835 +212836 +212837 +212838 +212839 +212864 +212865 +212866 +212867 +212868 +212869 +212870 +212871 +212896 +212897 +212898 +212899 +212900 +212901 +212902 +212903 +212928 +212929 +212930 +212931 +212932 +212933 +212934 +212935 +212960 +212961 +212962 +212963 +212964 +212965 +212966 +212967 +212992 +212993 +212994 +212995 +212996 +212997 +212998 +212999 +213024 +213025 +213026 +213027 +213028 +213029 +213030 +213031 +213056 +213057 +213058 +213059 +213060 +213061 +213062 +213063 +213088 +213089 +213090 +213091 +213092 +213093 +213094 +213095 +213120 +213121 +213122 +213123 +213124 +213125 +213126 +213127 +213152 +213153 +213154 +213155 +213156 +213157 +213158 +213159 +213184 +213185 +213186 +213187 +213188 +213189 +213190 +213191 +213216 +213217 +213218 +213219 +213220 +213221 +213222 +213223 +213248 +213249 +213250 +213251 +213252 +213253 +213254 +213255 +213280 +213281 +213282 +213283 +213284 +213285 +213286 +213287 +213312 +213313 +213314 +213315 +213316 +213317 +213318 +213319 +213344 +213345 +213346 +213347 +213348 +213349 +213350 +213351 +213376 +213377 +213378 +213379 +213380 +213381 +213382 +213383 +213408 +213409 +213410 +213411 +213412 +213413 +213414 +213415 +213440 +213441 +213442 +213443 +213444 +213445 +213446 +213447 +213472 +213473 +213474 +213475 +213476 +213477 +213478 +213479 +213504 +213505 +213506 +213507 +213508 +213509 +213510 +213511 +213536 +213537 +213538 +213539 +213540 +213541 +213542 +213543 +213568 +213569 +213570 +213571 +213572 +213573 +213574 +213575 +213600 +213601 +213602 +213603 +213604 +213605 +213606 +213607 +213632 +213633 +213634 +213635 +213636 +213637 +213638 +213639 +213664 +213665 +213666 +213667 +213668 +213669 +213670 +213671 +213696 +213697 +213698 +213699 +213700 +213701 +213702 +213703 +213728 +213729 +213730 +213731 +213732 +213733 +213734 +213735 +213760 +213761 +213762 +213763 +213764 +213765 +213766 +213767 +213792 +213793 +213794 +213795 +213796 +213797 +213798 +213799 +213824 +213825 +213826 +213827 +213828 +213829 +213830 +213831 +213856 +213857 +213858 +213859 +213860 +213861 +213862 +213863 +213888 +213889 +213890 +213891 +213892 +213893 +213894 +213895 +213920 +213921 +213922 +213923 +213924 +213925 +213926 +213927 +213952 +213953 +213954 +213955 +213956 +213957 +213958 +213959 +213984 +213985 +213986 +213987 +213988 +213989 +213990 +213991 +214016 +214017 +214018 +214019 +214020 +214021 +214022 +214023 +214048 +214049 +214050 +214051 +214052 +214053 +214054 +214055 +214080 +214081 +214082 +214083 +214084 +214085 +214086 +214087 +214112 +214113 +214114 +214115 +214116 +214117 +214118 +214119 +214144 +214145 +214146 +214147 +214148 +214149 +214150 +214151 +214176 +214177 +214178 +214179 +214180 +214181 +214182 +214183 +214208 +214209 +214210 +214211 +214212 +214213 +214214 +214215 +214240 +214241 +214242 +214243 +214244 +214245 +214246 +214247 +214272 +214273 +214274 +214275 +214276 +214277 +214278 +214279 +214304 +214305 +214306 +214307 +214308 +214309 +214310 +214311 +214336 +214337 +214338 +214339 +214340 +214341 +214342 +214343 +214368 +214369 +214370 +214371 +214372 +214373 +214374 +214375 +214400 +214401 +214402 +214403 +214404 +214405 +214406 +214407 +214432 +214433 +214434 +214435 +214436 +214437 +214438 +214439 +214464 +214465 +214466 +214467 +214468 +214469 +214470 +214471 +214496 +214497 +214498 +214499 +214500 +214501 +214502 +214503 +214528 +214529 +214530 +214531 +214532 +214533 +214534 +214535 +214560 +214561 +214562 +214563 +214564 +214565 +214566 +214567 +214592 +214593 +214594 +214595 +214596 +214597 +214598 +214599 +214624 +214625 +214626 +214627 +214628 +214629 +214630 +214631 +214656 +214657 +214658 +214659 +214660 +214661 +214662 +214663 +214688 +214689 +214690 +214691 +214692 +214693 +214694 +214695 +214720 +214721 +214722 +214723 +214724 +214725 +214726 +214727 +214752 +214753 +214754 +214755 +214756 +214757 +214758 +214759 +214784 +214785 +214786 +214787 +214788 +214789 +214790 +214791 +214816 +214817 +214818 +214819 +214820 +214821 +214822 +214823 +214848 +214849 +214850 +214851 +214852 +214853 +214854 +214855 +214880 +214881 +214882 +214883 +214884 +214885 +214886 +214887 +214912 +214913 +214914 +214915 +214916 +214917 +214918 +214919 +214944 +214945 +214946 +214947 +214948 +214949 +214950 +214951 +214976 +214977 +214978 +214979 +214980 +214981 +214982 +214983 +215008 +215009 +215010 +215011 +215012 +215013 +215014 +215015 +215040 +215041 +215042 +215043 +215044 +215045 +215046 +215047 +215072 +215073 +215074 +215075 +215076 +215077 +215078 +215079 +215104 +215105 +215106 +215107 +215108 +215109 +215110 +215111 +215136 +215137 +215138 +215139 +215140 +215141 +215142 +215143 +215168 +215169 +215170 +215171 +215172 +215173 +215174 +215175 +215200 +215201 +215202 +215203 +215204 +215205 +215206 +215207 +215232 +215233 +215234 +215235 +215236 +215237 +215238 +215239 +215264 +215265 +215266 +215267 +215268 +215269 +215270 +215271 +215296 +215297 +215298 +215299 +215300 +215301 +215302 +215303 +215328 +215329 +215330 +215331 +215332 +215333 +215334 +215335 +215360 +215361 +215362 +215363 +215364 +215365 +215366 +215367 +215392 +215393 +215394 +215395 +215396 +215397 +215398 +215399 +215424 +215425 +215426 +215427 +215428 +215429 +215430 +215431 +215456 +215457 +215458 +215459 +215460 +215461 +215462 +215463 +215488 +215489 +215490 +215491 +215492 +215493 +215494 +215495 +215520 +215521 +215522 +215523 +215524 +215525 +215526 +215527 +215552 +215553 +215554 +215555 +215556 +215557 +215558 +215559 +215584 +215585 +215586 +215587 +215588 +215589 +215590 +215591 +215616 +215617 +215618 +215619 +215620 +215621 +215622 +215623 +215648 +215649 +215650 +215651 +215652 +215653 +215654 +215655 +215680 +215681 +215682 +215683 +215684 +215685 +215686 +215687 +215712 +215713 +215714 +215715 +215716 +215717 +215718 +215719 +215744 +215745 +215746 +215747 +215748 +215749 +215750 +215751 +215776 +215777 +215778 +215779 +215780 +215781 +215782 +215783 +215808 +215809 +215810 +215811 +215812 +215813 +215814 +215815 +215840 +215841 +215842 +215843 +215844 +215845 +215846 +215847 +215872 +215873 +215874 +215875 +215876 +215877 +215878 +215879 +215904 +215905 +215906 +215907 +215908 +215909 +215910 +215911 +215936 +215937 +215938 +215939 +215940 +215941 +215942 +215943 +215968 +215969 +215970 +215971 +215972 +215973 +215974 +215975 +216000 +216001 +216002 +216003 +216004 +216005 +216006 +216007 +216032 +216033 +216034 +216035 +216036 +216037 +216038 +216039 +216064 +216065 +216066 +216067 +216068 +216069 +216070 +216071 +216096 +216097 +216098 +216099 +216100 +216101 +216102 +216103 +216128 +216129 +216130 +216131 +216132 +216133 +216134 +216135 +216160 +216161 +216162 +216163 +216164 +216165 +216166 +216167 +216192 +216193 +216194 +216195 +216196 +216197 +216198 +216199 +216224 +216225 +216226 +216227 +216228 +216229 +216230 +216231 +216256 +216257 +216258 +216259 +216260 +216261 +216262 +216263 +216288 +216289 +216290 +216291 +216292 +216293 +216294 +216295 +216320 +216321 +216322 +216323 +216324 +216325 +216326 +216327 +216352 +216353 +216354 +216355 +216356 +216357 +216358 +216359 +216384 +216385 +216386 +216387 +216388 +216389 +216390 +216391 +216416 +216417 +216418 +216419 +216420 +216421 +216422 +216423 +216448 +216449 +216450 +216451 +216452 +216453 +216454 +216455 +216480 +216481 +216482 +216483 +216484 +216485 +216486 +216487 +216512 +216513 +216514 +216515 +216516 +216517 +216518 +216519 +216544 +216545 +216546 +216547 +216548 +216549 +216550 +216551 +216576 +216577 +216578 +216579 +216580 +216581 +216582 +216583 +216608 +216609 +216610 +216611 +216612 +216613 +216614 +216615 +216640 +216641 +216642 +216643 +216644 +216645 +216646 +216647 +216672 +216673 +216674 +216675 +216676 +216677 +216678 +216679 +216704 +216705 +216706 +216707 +216708 +216709 +216710 +216711 +216736 +216737 +216738 +216739 +216740 +216741 +216742 +216743 +216768 +216769 +216770 +216771 +216772 +216773 +216774 +216775 +216800 +216801 +216802 +216803 +216804 +216805 +216806 +216807 +216832 +216833 +216834 +216835 +216836 +216837 +216838 +216839 +216864 +216865 +216866 +216867 +216868 +216869 +216870 +216871 +216896 +216897 +216898 +216899 +216900 +216901 +216902 +216903 +216928 +216929 +216930 +216931 +216932 +216933 +216934 +216935 +216960 +216961 +216962 +216963 +216964 +216965 +216966 +216967 +216992 +216993 +216994 +216995 +216996 +216997 +216998 +216999 +217024 +217025 +217026 +217027 +217028 +217029 +217030 +217031 +217056 +217057 +217058 +217059 +217060 +217061 +217062 +217063 +217088 +217089 +217090 +217091 +217092 +217093 +217094 +217095 +217120 +217121 +217122 +217123 +217124 +217125 +217126 +217127 +217152 +217153 +217154 +217155 +217156 +217157 +217158 +217159 +217184 +217185 +217186 +217187 +217188 +217189 +217190 +217191 +217216 +217217 +217218 +217219 +217220 +217221 +217222 +217223 +217248 +217249 +217250 +217251 +217252 +217253 +217254 +217255 +217280 +217281 +217282 +217283 +217284 +217285 +217286 +217287 +217312 +217313 +217314 +217315 +217316 +217317 +217318 +217319 +217344 +217345 +217346 +217347 +217348 +217349 +217350 +217351 +217376 +217377 +217378 +217379 +217380 +217381 +217382 +217383 +217408 +217409 +217410 +217411 +217412 +217413 +217414 +217415 +217440 +217441 +217442 +217443 +217444 +217445 +217446 +217447 +217472 +217473 +217474 +217475 +217476 +217477 +217478 +217479 +217504 +217505 +217506 +217507 +217508 +217509 +217510 +217511 +217536 +217537 +217538 +217539 +217540 +217541 +217542 +217543 +217568 +217569 +217570 +217571 +217572 +217573 +217574 +217575 +217600 +217601 +217602 +217603 +217604 +217605 +217606 +217607 +217632 +217633 +217634 +217635 +217636 +217637 +217638 +217639 +217664 +217665 +217666 +217667 +217668 +217669 +217670 +217671 +217696 +217697 +217698 +217699 +217700 +217701 +217702 +217703 +217728 +217729 +217730 +217731 +217732 +217733 +217734 +217735 +217760 +217761 +217762 +217763 +217764 +217765 +217766 +217767 +217792 +217793 +217794 +217795 +217796 +217797 +217798 +217799 +217824 +217825 +217826 +217827 +217828 +217829 +217830 +217831 +217856 +217857 +217858 +217859 +217860 +217861 +217862 +217863 +217888 +217889 +217890 +217891 +217892 +217893 +217894 +217895 +217920 +217921 +217922 +217923 +217924 +217925 +217926 +217927 +217952 +217953 +217954 +217955 +217956 +217957 +217958 +217959 +217984 +217985 +217986 +217987 +217988 +217989 +217990 +217991 +218016 +218017 +218018 +218019 +218020 +218021 +218022 +218023 +218048 +218049 +218050 +218051 +218052 +218053 +218054 +218055 +218080 +218081 +218082 +218083 +218084 +218085 +218086 +218087 +218112 +218113 +218114 +218115 +218116 +218117 +218118 +218119 +218144 +218145 +218146 +218147 +218148 +218149 +218150 +218151 +218176 +218177 +218178 +218179 +218180 +218181 +218182 +218183 +218208 +218209 +218210 +218211 +218212 +218213 +218214 +218215 +218240 +218241 +218242 +218243 +218244 +218245 +218246 +218247 +218272 +218273 +218274 +218275 +218276 +218277 +218278 +218279 +218304 +218305 +218306 +218307 +218308 +218309 +218310 +218311 +218336 +218337 +218338 +218339 +218340 +218341 +218342 +218343 +218368 +218369 +218370 +218371 +218372 +218373 +218374 +218375 +218400 +218401 +218402 +218403 +218404 +218405 +218406 +218407 +218432 +218433 +218434 +218435 +218436 +218437 +218438 +218439 +218464 +218465 +218466 +218467 +218468 +218469 +218470 +218471 +218496 +218497 +218498 +218499 +218500 +218501 +218502 +218503 +218528 +218529 +218530 +218531 +218532 +218533 +218534 +218535 +218560 +218561 +218562 +218563 +218564 +218565 +218566 +218567 +218592 +218593 +218594 +218595 +218596 +218597 +218598 +218599 +218624 +218625 +218626 +218627 +218628 +218629 +218630 +218631 +218656 +218657 +218658 +218659 +218660 +218661 +218662 +218663 +218688 +218689 +218690 +218691 +218692 +218693 +218694 +218695 +218720 +218721 +218722 +218723 +218724 +218725 +218726 +218727 +218752 +218753 +218754 +218755 +218756 +218757 +218758 +218759 +218784 +218785 +218786 +218787 +218788 +218789 +218790 +218791 +218816 +218817 +218818 +218819 +218820 +218821 +218822 +218823 +218848 +218849 +218850 +218851 +218852 +218853 +218854 +218855 +218880 +218881 +218882 +218883 +218884 +218885 +218886 +218887 +218912 +218913 +218914 +218915 +218916 +218917 +218918 +218919 +218944 +218945 +218946 +218947 +218948 +218949 +218950 +218951 +218976 +218977 +218978 +218979 +218980 +218981 +218982 +218983 +219008 +219009 +219010 +219011 +219012 +219013 +219014 +219015 +219040 +219041 +219042 +219043 +219044 +219045 +219046 +219047 +219072 +219073 +219074 +219075 +219076 +219077 +219078 +219079 +219104 +219105 +219106 +219107 +219108 +219109 +219110 +219111 +219136 +219137 +219138 +219139 +219140 +219141 +219142 +219143 +219168 +219169 +219170 +219171 +219172 +219173 +219174 +219175 +219200 +219201 +219202 +219203 +219204 +219205 +219206 +219207 +219232 +219233 +219234 +219235 +219236 +219237 +219238 +219239 +219264 +219265 +219266 +219267 +219268 +219269 +219270 +219271 +219296 +219297 +219298 +219299 +219300 +219301 +219302 +219303 +219328 +219329 +219330 +219331 +219332 +219333 +219334 +219335 +219360 +219361 +219362 +219363 +219364 +219365 +219366 +219367 +219392 +219393 +219394 +219395 +219396 +219397 +219398 +219399 +219424 +219425 +219426 +219427 +219428 +219429 +219430 +219431 +219456 +219457 +219458 +219459 +219460 +219461 +219462 +219463 +219488 +219489 +219490 +219491 +219492 +219493 +219494 +219495 +219520 +219521 +219522 +219523 +219524 +219525 +219526 +219527 +219552 +219553 +219554 +219555 +219556 +219557 +219558 +219559 +219584 +219585 +219586 +219587 +219588 +219589 +219590 +219591 +219616 +219617 +219618 +219619 +219620 +219621 +219622 +219623 +219648 +219649 +219650 +219651 +219652 +219653 +219654 +219655 +219680 +219681 +219682 +219683 +219684 +219685 +219686 +219687 +219712 +219713 +219714 +219715 +219716 +219717 +219718 +219719 +219744 +219745 +219746 +219747 +219748 +219749 +219750 +219751 +219776 +219777 +219778 +219779 +219780 +219781 +219782 +219783 +219808 +219809 +219810 +219811 +219812 +219813 +219814 +219815 +219840 +219841 +219842 +219843 +219844 +219845 +219846 +219847 +219872 +219873 +219874 +219875 +219876 +219877 +219878 +219879 +219904 +219905 +219906 +219907 +219908 +219909 +219910 +219911 +219936 +219937 +219938 +219939 +219940 +219941 +219942 +219943 +219968 +219969 +219970 +219971 +219972 +219973 +219974 +219975 +220000 +220001 +220002 +220003 +220004 +220005 +220006 +220007 +220032 +220033 +220034 +220035 +220036 +220037 +220038 +220039 +220064 +220065 +220066 +220067 +220068 +220069 +220070 +220071 +220096 +220097 +220098 +220099 +220100 +220101 +220102 +220103 +220128 +220129 +220130 +220131 +220132 +220133 +220134 +220135 +220160 +220161 +220162 +220163 +220164 +220165 +220166 +220167 +220192 +220193 +220194 +220195 +220196 +220197 +220198 +220199 +220224 +220225 +220226 +220227 +220228 +220229 +220230 +220231 +220256 +220257 +220258 +220259 +220260 +220261 +220262 +220263 +220288 +220289 +220290 +220291 +220292 +220293 +220294 +220295 +220320 +220321 +220322 +220323 +220324 +220325 +220326 +220327 +220352 +220353 +220354 +220355 +220356 +220357 +220358 +220359 +220384 +220385 +220386 +220387 +220388 +220389 +220390 +220391 +220416 +220417 +220418 +220419 +220420 +220421 +220422 +220423 +220448 +220449 +220450 +220451 +220452 +220453 +220454 +220455 +220480 +220481 +220482 +220483 +220484 +220485 +220486 +220487 +220512 +220513 +220514 +220515 +220516 +220517 +220518 +220519 +220544 +220545 +220546 +220547 +220548 +220549 +220550 +220551 +220576 +220577 +220578 +220579 +220580 +220581 +220582 +220583 +220608 +220609 +220610 +220611 +220612 +220613 +220614 +220615 +220640 +220641 +220642 +220643 +220644 +220645 +220646 +220647 +220672 +220673 +220674 +220675 +220676 +220677 +220678 +220679 +220704 +220705 +220706 +220707 +220708 +220709 +220710 +220711 +220736 +220737 +220738 +220739 +220740 +220741 +220742 +220743 +220768 +220769 +220770 +220771 +220772 +220773 +220774 +220775 +220800 +220801 +220802 +220803 +220804 +220805 +220806 +220807 +220832 +220833 +220834 +220835 +220836 +220837 +220838 +220839 +220864 +220865 +220866 +220867 +220868 +220869 +220870 +220871 +220896 +220897 +220898 +220899 +220900 +220901 +220902 +220903 +220928 +220929 +220930 +220931 +220932 +220933 +220934 +220935 +220960 +220961 +220962 +220963 +220964 +220965 +220966 +220967 +220992 +220993 +220994 +220995 +220996 +220997 +220998 +220999 +221024 +221025 +221026 +221027 +221028 +221029 +221030 +221031 +221056 +221057 +221058 +221059 +221060 +221061 +221062 +221063 +221088 +221089 +221090 +221091 +221092 +221093 +221094 +221095 +221120 +221121 +221122 +221123 +221124 +221125 +221126 +221127 +221152 +221153 +221154 +221155 +221156 +221157 +221158 +221159 +221184 +221185 +221186 +221187 +221188 +221189 +221190 +221191 +221216 +221217 +221218 +221219 +221220 +221221 +221222 +221223 +221248 +221249 +221250 +221251 +221252 +221253 +221254 +221255 +221280 +221281 +221282 +221283 +221284 +221285 +221286 +221287 +221312 +221313 +221314 +221315 +221316 +221317 +221318 +221319 +221344 +221345 +221346 +221347 +221348 +221349 +221350 +221351 +221376 +221377 +221378 +221379 +221380 +221381 +221382 +221383 +221408 +221409 +221410 +221411 +221412 +221413 +221414 +221415 +221440 +221441 +221442 +221443 +221444 +221445 +221446 +221447 +221472 +221473 +221474 +221475 +221476 +221477 +221478 +221479 +221504 +221505 +221506 +221507 +221508 +221509 +221510 +221511 +221536 +221537 +221538 +221539 +221540 +221541 +221542 +221543 +221568 +221569 +221570 +221571 +221572 +221573 +221574 +221575 +221600 +221601 +221602 +221603 +221604 +221605 +221606 +221607 +221632 +221633 +221634 +221635 +221636 +221637 +221638 +221639 +221664 +221665 +221666 +221667 +221668 +221669 +221670 +221671 +221696 +221697 +221698 +221699 +221700 +221701 +221702 +221703 +221728 +221729 +221730 +221731 +221732 +221733 +221734 +221735 +221760 +221761 +221762 +221763 +221764 +221765 +221766 +221767 +221792 +221793 +221794 +221795 +221796 +221797 +221798 +221799 +221824 +221825 +221826 +221827 +221828 +221829 +221830 +221831 +221856 +221857 +221858 +221859 +221860 +221861 +221862 +221863 +221888 +221889 +221890 +221891 +221892 +221893 +221894 +221895 +221920 +221921 +221922 +221923 +221924 +221925 +221926 +221927 +221952 +221953 +221954 +221955 +221956 +221957 +221958 +221959 +221984 +221985 +221986 +221987 +221988 +221989 +221990 +221991 +222016 +222017 +222018 +222019 +222020 +222021 +222022 +222023 +222048 +222049 +222050 +222051 +222052 +222053 +222054 +222055 +222080 +222081 +222082 +222083 +222084 +222085 +222086 +222087 +222112 +222113 +222114 +222115 +222116 +222117 +222118 +222119 +222144 +222145 +222146 +222147 +222148 +222149 +222150 +222151 +222176 +222177 +222178 +222179 +222180 +222181 +222182 +222183 +222208 +222209 +222210 +222211 +222212 +222213 +222214 +222215 +222240 +222241 +222242 +222243 +222244 +222245 +222246 +222247 +222272 +222273 +222274 +222275 +222276 +222277 +222278 +222279 +222304 +222305 +222306 +222307 +222308 +222309 +222310 +222311 +222336 +222337 +222338 +222339 +222340 +222341 +222342 +222343 +222368 +222369 +222370 +222371 +222372 +222373 +222374 +222375 +222400 +222401 +222402 +222403 +222404 +222405 +222406 +222407 +222432 +222433 +222434 +222435 +222436 +222437 +222438 +222439 +222464 +222465 +222466 +222467 +222468 +222469 +222470 +222471 +222496 +222497 +222498 +222499 +222500 +222501 +222502 +222503 +222528 +222529 +222530 +222531 +222532 +222533 +222534 +222535 +222560 +222561 +222562 +222563 +222564 +222565 +222566 +222567 +222592 +222593 +222594 +222595 +222596 +222597 +222598 +222599 +222624 +222625 +222626 +222627 +222628 +222629 +222630 +222631 +222656 +222657 +222658 +222659 +222660 +222661 +222662 +222663 +222688 +222689 +222690 +222691 +222692 +222693 +222694 +222695 +222720 +222721 +222722 +222723 +222724 +222725 +222726 +222727 +222752 +222753 +222754 +222755 +222756 +222757 +222758 +222759 +222784 +222785 +222786 +222787 +222788 +222789 +222790 +222791 +222816 +222817 +222818 +222819 +222820 +222821 +222822 +222823 +222848 +222849 +222850 +222851 +222852 +222853 +222854 +222855 +222880 +222881 +222882 +222883 +222884 +222885 +222886 +222887 +222912 +222913 +222914 +222915 +222916 +222917 +222918 +222919 +222944 +222945 +222946 +222947 +222948 +222949 +222950 +222951 +222976 +222977 +222978 +222979 +222980 +222981 +222982 +222983 +223008 +223009 +223010 +223011 +223012 +223013 +223014 +223015 +223040 +223041 +223042 +223043 +223044 +223045 +223046 +223047 +223072 +223073 +223074 +223075 +223076 +223077 +223078 +223079 +223104 +223105 +223106 +223107 +223108 +223109 +223110 +223111 +223136 +223137 +223138 +223139 +223140 +223141 +223142 +223143 +223168 +223169 +223170 +223171 +223172 +223173 +223174 +223175 +223200 +223201 +223202 +223203 +223204 +223205 +223206 +223207 +223232 +223233 +223234 +223235 +223236 +223237 +223238 +223239 +223264 +223265 +223266 +223267 +223268 +223269 +223270 +223271 +223296 +223297 +223298 +223299 +223300 +223301 +223302 +223303 +223328 +223329 +223330 +223331 +223332 +223333 +223334 +223335 +223360 +223361 +223362 +223363 +223364 +223365 +223366 +223367 +223392 +223393 +223394 +223395 +223396 +223397 +223398 +223399 +223424 +223425 +223426 +223427 +223428 +223429 +223430 +223431 +223456 +223457 +223458 +223459 +223460 +223461 +223462 +223463 +223488 +223489 +223490 +223491 +223492 +223493 +223494 +223495 +223520 +223521 +223522 +223523 +223524 +223525 +223526 +223527 +223552 +223553 +223554 +223555 +223556 +223557 +223558 +223559 +223584 +223585 +223586 +223587 +223588 +223589 +223590 +223591 +223616 +223617 +223618 +223619 +223620 +223621 +223622 +223623 +223648 +223649 +223650 +223651 +223652 +223653 +223654 +223655 +223680 +223681 +223682 +223683 +223684 +223685 +223686 +223687 +223712 +223713 +223714 +223715 +223716 +223717 +223718 +223719 +223744 +223745 +223746 +223747 +223748 +223749 +223750 +223751 +223776 +223777 +223778 +223779 +223780 +223781 +223782 +223783 +223808 +223809 +223810 +223811 +223812 +223813 +223814 +223815 +223840 +223841 +223842 +223843 +223844 +223845 +223846 +223847 +223872 +223873 +223874 +223875 +223876 +223877 +223878 +223879 +223904 +223905 +223906 +223907 +223908 +223909 +223910 +223911 +223936 +223937 +223938 +223939 +223940 +223941 +223942 +223943 +223968 +223969 +223970 +223971 +223972 +223973 +223974 +223975 +224000 +224001 +224002 +224003 +224004 +224005 +224006 +224007 +224032 +224033 +224034 +224035 +224036 +224037 +224038 +224039 +224064 +224065 +224066 +224067 +224068 +224069 +224070 +224071 +224096 +224097 +224098 +224099 +224100 +224101 +224102 +224103 +224128 +224129 +224130 +224131 +224132 +224133 +224134 +224135 +224160 +224161 +224162 +224163 +224164 +224165 +224166 +224167 +224192 +224193 +224194 +224195 +224196 +224197 +224198 +224199 +224224 +224225 +224226 +224227 +224228 +224229 +224230 +224231 +224256 +224257 +224258 +224259 +224260 +224261 +224262 +224263 +224288 +224289 +224290 +224291 +224292 +224293 +224294 +224295 +224320 +224321 +224322 +224323 +224324 +224325 +224326 +224327 +224352 +224353 +224354 +224355 +224356 +224357 +224358 +224359 +224384 +224385 +224386 +224387 +224388 +224389 +224390 +224391 +224416 +224417 +224418 +224419 +224420 +224421 +224422 +224423 +224448 +224449 +224450 +224451 +224452 +224453 +224454 +224455 +224480 +224481 +224482 +224483 +224484 +224485 +224486 +224487 +224512 +224513 +224514 +224515 +224516 +224517 +224518 +224519 +224544 +224545 +224546 +224547 +224548 +224549 +224550 +224551 +224576 +224577 +224578 +224579 +224580 +224581 +224582 +224583 +224608 +224609 +224610 +224611 +224612 +224613 +224614 +224615 +224640 +224641 +224642 +224643 +224644 +224645 +224646 +224647 +224672 +224673 +224674 +224675 +224676 +224677 +224678 +224679 +224704 +224705 +224706 +224707 +224708 +224709 +224710 +224711 +224736 +224737 +224738 +224739 +224740 +224741 +224742 +224743 +224768 +224769 +224770 +224771 +224772 +224773 +224774 +224775 +224800 +224801 +224802 +224803 +224804 +224805 +224806 +224807 +224832 +224833 +224834 +224835 +224836 +224837 +224838 +224839 +224864 +224865 +224866 +224867 +224868 +224869 +224870 +224871 +224896 +224897 +224898 +224899 +224900 +224901 +224902 +224903 +224928 +224929 +224930 +224931 +224932 +224933 +224934 +224935 +224960 +224961 +224962 +224963 +224964 +224965 +224966 +224967 +224992 +224993 +224994 +224995 +224996 +224997 +224998 +224999 +225024 +225025 +225026 +225027 +225028 +225029 +225030 +225031 +225056 +225057 +225058 +225059 +225060 +225061 +225062 +225063 +225088 +225089 +225090 +225091 +225092 +225093 +225094 +225095 +225120 +225121 +225122 +225123 +225124 +225125 +225126 +225127 +225152 +225153 +225154 +225155 +225156 +225157 +225158 +225159 +225184 +225185 +225186 +225187 +225188 +225189 +225190 +225191 +225216 +225217 +225218 +225219 +225220 +225221 +225222 +225223 +225248 +225249 +225250 +225251 +225252 +225253 +225254 +225255 +225280 +225281 +225282 +225283 +225284 +225285 +225286 +225287 +225312 +225313 +225314 +225315 +225316 +225317 +225318 +225319 +225344 +225345 +225346 +225347 +225348 +225349 +225350 +225351 +225376 +225377 +225378 +225379 +225380 +225381 +225382 +225383 +225408 +225409 +225410 +225411 +225412 +225413 +225414 +225415 +225440 +225441 +225442 +225443 +225444 +225445 +225446 +225447 +225472 +225473 +225474 +225475 +225476 +225477 +225478 +225479 +225504 +225505 +225506 +225507 +225508 +225509 +225510 +225511 +225536 +225537 +225538 +225539 +225540 +225541 +225542 +225543 +225568 +225569 +225570 +225571 +225572 +225573 +225574 +225575 +225600 +225601 +225602 +225603 +225604 +225605 +225606 +225607 +225632 +225633 +225634 +225635 +225636 +225637 +225638 +225639 +225664 +225665 +225666 +225667 +225668 +225669 +225670 +225671 +225696 +225697 +225698 +225699 +225700 +225701 +225702 +225703 +225728 +225729 +225730 +225731 +225732 +225733 +225734 +225735 +225760 +225761 +225762 +225763 +225764 +225765 +225766 +225767 +225792 +225793 +225794 +225795 +225796 +225797 +225798 +225799 +225824 +225825 +225826 +225827 +225828 +225829 +225830 +225831 +225856 +225857 +225858 +225859 +225860 +225861 +225862 +225863 +225888 +225889 +225890 +225891 +225892 +225893 +225894 +225895 +225920 +225921 +225922 +225923 +225924 +225925 +225926 +225927 +225952 +225953 +225954 +225955 +225956 +225957 +225958 +225959 +225984 +225985 +225986 +225987 +225988 +225989 +225990 +225991 +226016 +226017 +226018 +226019 +226020 +226021 +226022 +226023 +226048 +226049 +226050 +226051 +226052 +226053 +226054 +226055 +226080 +226081 +226082 +226083 +226084 +226085 +226086 +226087 +226112 +226113 +226114 +226115 +226116 +226117 +226118 +226119 +226144 +226145 +226146 +226147 +226148 +226149 +226150 +226151 +226176 +226177 +226178 +226179 +226180 +226181 +226182 +226183 +226208 +226209 +226210 +226211 +226212 +226213 +226214 +226215 +226240 +226241 +226242 +226243 +226244 +226245 +226246 +226247 +226272 +226273 +226274 +226275 +226276 +226277 +226278 +226279 +226304 +226305 +226306 +226307 +226308 +226309 +226310 +226311 +226336 +226337 +226338 +226339 +226340 +226341 +226342 +226343 +226368 +226369 +226370 +226371 +226372 +226373 +226374 +226375 +226400 +226401 +226402 +226403 +226404 +226405 +226406 +226407 +226432 +226433 +226434 +226435 +226436 +226437 +226438 +226439 +226464 +226465 +226466 +226467 +226468 +226469 +226470 +226471 +226496 +226497 +226498 +226499 +226500 +226501 +226502 +226503 +226528 +226529 +226530 +226531 +226532 +226533 +226534 +226535 +226560 +226561 +226562 +226563 +226564 +226565 +226566 +226567 +226592 +226593 +226594 +226595 +226596 +226597 +226598 +226599 +226624 +226625 +226626 +226627 +226628 +226629 +226630 +226631 +226656 +226657 +226658 +226659 +226660 +226661 +226662 +226663 +226688 +226689 +226690 +226691 +226692 +226693 +226694 +226695 +226720 +226721 +226722 +226723 +226724 +226725 +226726 +226727 +226752 +226753 +226754 +226755 +226756 +226757 +226758 +226759 +226784 +226785 +226786 +226787 +226788 +226789 +226790 +226791 +226816 +226817 +226818 +226819 +226820 +226821 +226822 +226823 +226848 +226849 +226850 +226851 +226852 +226853 +226854 +226855 +226880 +226881 +226882 +226883 +226884 +226885 +226886 +226887 +226912 +226913 +226914 +226915 +226916 +226917 +226918 +226919 +226944 +226945 +226946 +226947 +226948 +226949 +226950 +226951 +226976 +226977 +226978 +226979 +226980 +226981 +226982 +226983 +227008 +227009 +227010 +227011 +227012 +227013 +227014 +227015 +227040 +227041 +227042 +227043 +227044 +227045 +227046 +227047 +227072 +227073 +227074 +227075 +227076 +227077 +227078 +227079 +227104 +227105 +227106 +227107 +227108 +227109 +227110 +227111 +227136 +227137 +227138 +227139 +227140 +227141 +227142 +227143 +227168 +227169 +227170 +227171 +227172 +227173 +227174 +227175 +227200 +227201 +227202 +227203 +227204 +227205 +227206 +227207 +227232 +227233 +227234 +227235 +227236 +227237 +227238 +227239 +227264 +227265 +227266 +227267 +227268 +227269 +227270 +227271 +227296 +227297 +227298 +227299 +227300 +227301 +227302 +227303 +227328 +227329 +227330 +227331 +227332 +227333 +227334 +227335 +227360 +227361 +227362 +227363 +227364 +227365 +227366 +227367 +227392 +227393 +227394 +227395 +227396 +227397 +227398 +227399 +227424 +227425 +227426 +227427 +227428 +227429 +227430 +227431 +227456 +227457 +227458 +227459 +227460 +227461 +227462 +227463 +227488 +227489 +227490 +227491 +227492 +227493 +227494 +227495 +227520 +227521 +227522 +227523 +227524 +227525 +227526 +227527 +227552 +227553 +227554 +227555 +227556 +227557 +227558 +227559 +227584 +227585 +227586 +227587 +227588 +227589 +227590 +227591 +227616 +227617 +227618 +227619 +227620 +227621 +227622 +227623 +227648 +227649 +227650 +227651 +227652 +227653 +227654 +227655 +227680 +227681 +227682 +227683 +227684 +227685 +227686 +227687 +227712 +227713 +227714 +227715 +227716 +227717 +227718 +227719 +227744 +227745 +227746 +227747 +227748 +227749 +227750 +227751 +227776 +227777 +227778 +227779 +227780 +227781 +227782 +227783 +227808 +227809 +227810 +227811 +227812 +227813 +227814 +227815 +227840 +227841 +227842 +227843 +227844 +227845 +227846 +227847 +227872 +227873 +227874 +227875 +227876 +227877 +227878 +227879 +227904 +227905 +227906 +227907 +227908 +227909 +227910 +227911 +227936 +227937 +227938 +227939 +227940 +227941 +227942 +227943 +227968 +227969 +227970 +227971 +227972 +227973 +227974 +227975 +228000 +228001 +228002 +228003 +228004 +228005 +228006 +228007 +228032 +228033 +228034 +228035 +228036 +228037 +228038 +228039 +228064 +228065 +228066 +228067 +228068 +228069 +228070 +228071 +228096 +228097 +228098 +228099 +228100 +228101 +228102 +228103 +228128 +228129 +228130 +228131 +228132 +228133 +228134 +228135 +228160 +228161 +228162 +228163 +228164 +228165 +228166 +228167 +228192 +228193 +228194 +228195 +228196 +228197 +228198 +228199 +228224 +228225 +228226 +228227 +228228 +228229 +228230 +228231 +228256 +228257 +228258 +228259 +228260 +228261 +228262 +228263 +228288 +228289 +228290 +228291 +228292 +228293 +228294 +228295 +228320 +228321 +228322 +228323 +228324 +228325 +228326 +228327 +228352 +228353 +228354 +228355 +228356 +228357 +228358 +228359 +228384 +228385 +228386 +228387 +228388 +228389 +228390 +228391 +228416 +228417 +228418 +228419 +228420 +228421 +228422 +228423 +228448 +228449 +228450 +228451 +228452 +228453 +228454 +228455 +228480 +228481 +228482 +228483 +228484 +228485 +228486 +228487 +228512 +228513 +228514 +228515 +228516 +228517 +228518 +228519 +228544 +228545 +228546 +228547 +228548 +228549 +228550 +228551 +228576 +228577 +228578 +228579 +228580 +228581 +228582 +228583 +228608 +228609 +228610 +228611 +228612 +228613 +228614 +228615 +228640 +228641 +228642 +228643 +228644 +228645 +228646 +228647 +228672 +228673 +228674 +228675 +228676 +228677 +228678 +228679 +228704 +228705 +228706 +228707 +228708 +228709 +228710 +228711 +228736 +228737 +228738 +228739 +228740 +228741 +228742 +228743 +228768 +228769 +228770 +228771 +228772 +228773 +228774 +228775 +228800 +228801 +228802 +228803 +228804 +228805 +228806 +228807 +228832 +228833 +228834 +228835 +228836 +228837 +228838 +228839 +228864 +228865 +228866 +228867 +228868 +228869 +228870 +228871 +228896 +228897 +228898 +228899 +228900 +228901 +228902 +228903 +228928 +228929 +228930 +228931 +228932 +228933 +228934 +228935 +228960 +228961 +228962 +228963 +228964 +228965 +228966 +228967 +228992 +228993 +228994 +228995 +228996 +228997 +228998 +228999 +229024 +229025 +229026 +229027 +229028 +229029 +229030 +229031 +229056 +229057 +229058 +229059 +229060 +229061 +229062 +229063 +229088 +229089 +229090 +229091 +229092 +229093 +229094 +229095 +229120 +229121 +229122 +229123 +229124 +229125 +229126 +229127 +229152 +229153 +229154 +229155 +229156 +229157 +229158 +229159 +229184 +229185 +229186 +229187 +229188 +229189 +229190 +229191 +229216 +229217 +229218 +229219 +229220 +229221 +229222 +229223 +229248 +229249 +229250 +229251 +229252 +229253 +229254 +229255 +229280 +229281 +229282 +229283 +229284 +229285 +229286 +229287 +229312 +229313 +229314 +229315 +229316 +229317 +229318 +229319 +229344 +229345 +229346 +229347 +229348 +229349 +229350 +229351 +229376 +229377 +229378 +229379 +229380 +229381 +229382 +229383 +229408 +229409 +229410 +229411 +229412 +229413 +229414 +229415 +229440 +229441 +229442 +229443 +229444 +229445 +229446 +229447 +229472 +229473 +229474 +229475 +229476 +229477 +229478 +229479 +229504 +229505 +229506 +229507 +229508 +229509 +229510 +229511 +229536 +229537 +229538 +229539 +229540 +229541 +229542 +229543 +229568 +229569 +229570 +229571 +229572 +229573 +229574 +229575 +229600 +229601 +229602 +229603 +229604 +229605 +229606 +229607 +229632 +229633 +229634 +229635 +229636 +229637 +229638 +229639 +229664 +229665 +229666 +229667 +229668 +229669 +229670 +229671 +229696 +229697 +229698 +229699 +229700 +229701 +229702 +229703 +229728 +229729 +229730 +229731 +229732 +229733 +229734 +229735 +229760 +229761 +229762 +229763 +229764 +229765 +229766 +229767 +229792 +229793 +229794 +229795 +229796 +229797 +229798 +229799 +229824 +229825 +229826 +229827 +229828 +229829 +229830 +229831 +229856 +229857 +229858 +229859 +229860 +229861 +229862 +229863 +229888 +229889 +229890 +229891 +229892 +229893 +229894 +229895 +229920 +229921 +229922 +229923 +229924 +229925 +229926 +229927 +229952 +229953 +229954 +229955 +229956 +229957 +229958 +229959 +229984 +229985 +229986 +229987 +229988 +229989 +229990 +229991 +230016 +230017 +230018 +230019 +230020 +230021 +230022 +230023 +230048 +230049 +230050 +230051 +230052 +230053 +230054 +230055 +230080 +230081 +230082 +230083 +230084 +230085 +230086 +230087 +230112 +230113 +230114 +230115 +230116 +230117 +230118 +230119 +230144 +230145 +230146 +230147 +230148 +230149 +230150 +230151 +230176 +230177 +230178 +230179 +230180 +230181 +230182 +230183 +230208 +230209 +230210 +230211 +230212 +230213 +230214 +230215 +230240 +230241 +230242 +230243 +230244 +230245 +230246 +230247 +230272 +230273 +230274 +230275 +230276 +230277 +230278 +230279 +230304 +230305 +230306 +230307 +230308 +230309 +230310 +230311 +230336 +230337 +230338 +230339 +230340 +230341 +230342 +230343 +230368 +230369 +230370 +230371 +230372 +230373 +230374 +230375 +230400 +230401 +230402 +230403 +230404 +230405 +230406 +230407 +230432 +230433 +230434 +230435 +230436 +230437 +230438 +230439 +230464 +230465 +230466 +230467 +230468 +230469 +230470 +230471 +230496 +230497 +230498 +230499 +230500 +230501 +230502 +230503 +230528 +230529 +230530 +230531 +230532 +230533 +230534 +230535 +230560 +230561 +230562 +230563 +230564 +230565 +230566 +230567 +230592 +230593 +230594 +230595 +230596 +230597 +230598 +230599 +230624 +230625 +230626 +230627 +230628 +230629 +230630 +230631 +230656 +230657 +230658 +230659 +230660 +230661 +230662 +230663 +230688 +230689 +230690 +230691 +230692 +230693 +230694 +230695 +230720 +230721 +230722 +230723 +230724 +230725 +230726 +230727 +230752 +230753 +230754 +230755 +230756 +230757 +230758 +230759 +230784 +230785 +230786 +230787 +230788 +230789 +230790 +230791 +230816 +230817 +230818 +230819 +230820 +230821 +230822 +230823 +230848 +230849 +230850 +230851 +230852 +230853 +230854 +230855 +230880 +230881 +230882 +230883 +230884 +230885 +230886 +230887 +230912 +230913 +230914 +230915 +230916 +230917 +230918 +230919 +230944 +230945 +230946 +230947 +230948 +230949 +230950 +230951 +230976 +230977 +230978 +230979 +230980 +230981 +230982 +230983 +231008 +231009 +231010 +231011 +231012 +231013 +231014 +231015 +231040 +231041 +231042 +231043 +231044 +231045 +231046 +231047 +231072 +231073 +231074 +231075 +231076 +231077 +231078 +231079 +231104 +231105 +231106 +231107 +231108 +231109 +231110 +231111 +231136 +231137 +231138 +231139 +231140 +231141 +231142 +231143 +231168 +231169 +231170 +231171 +231172 +231173 +231174 +231175 +231200 +231201 +231202 +231203 +231204 +231205 +231206 +231207 +231232 +231233 +231234 +231235 +231236 +231237 +231238 +231239 +231264 +231265 +231266 +231267 +231268 +231269 +231270 +231271 +231296 +231297 +231298 +231299 +231300 +231301 +231302 +231303 +231328 +231329 +231330 +231331 +231332 +231333 +231334 +231335 +231360 +231361 +231362 +231363 +231364 +231365 +231366 +231367 +231392 +231393 +231394 +231395 +231396 +231397 +231398 +231399 +231424 +231425 +231426 +231427 +231428 +231429 +231430 +231431 +231456 +231457 +231458 +231459 +231460 +231461 +231462 +231463 +231488 +231489 +231490 +231491 +231492 +231493 +231494 +231495 +231520 +231521 +231522 +231523 +231524 +231525 +231526 +231527 +231552 +231553 +231554 +231555 +231556 +231557 +231558 +231559 +231584 +231585 +231586 +231587 +231588 +231589 +231590 +231591 +231616 +231617 +231618 +231619 +231620 +231621 +231622 +231623 +231648 +231649 +231650 +231651 +231652 +231653 +231654 +231655 +231680 +231681 +231682 +231683 +231684 +231685 +231686 +231687 +231712 +231713 +231714 +231715 +231716 +231717 +231718 +231719 +231744 +231745 +231746 +231747 +231748 +231749 +231750 +231751 +231776 +231777 +231778 +231779 +231780 +231781 +231782 +231783 +231808 +231809 +231810 +231811 +231812 +231813 +231814 +231815 +231840 +231841 +231842 +231843 +231844 +231845 +231846 +231847 +231872 +231873 +231874 +231875 +231876 +231877 +231878 +231879 +231904 +231905 +231906 +231907 +231908 +231909 +231910 +231911 +231936 +231937 +231938 +231939 +231940 +231941 +231942 +231943 +231968 +231969 +231970 +231971 +231972 +231973 +231974 +231975 +232000 +232001 +232002 +232003 +232004 +232005 +232006 +232007 +232032 +232033 +232034 +232035 +232036 +232037 +232038 +232039 +232064 +232065 +232066 +232067 +232068 +232069 +232070 +232071 +232096 +232097 +232098 +232099 +232100 +232101 +232102 +232103 +232128 +232129 +232130 +232131 +232132 +232133 +232134 +232135 +232160 +232161 +232162 +232163 +232164 +232165 +232166 +232167 +232192 +232193 +232194 +232195 +232196 +232197 +232198 +232199 +232224 +232225 +232226 +232227 +232228 +232229 +232230 +232231 +232256 +232257 +232258 +232259 +232260 +232261 +232262 +232263 +232288 +232289 +232290 +232291 +232292 +232293 +232294 +232295 +232320 +232321 +232322 +232323 +232324 +232325 +232326 +232327 +232352 +232353 +232354 +232355 +232356 +232357 +232358 +232359 +232384 +232385 +232386 +232387 +232388 +232389 +232390 +232391 +232416 +232417 +232418 +232419 +232420 +232421 +232422 +232423 +232448 +232449 +232450 +232451 +232452 +232453 +232454 +232455 +232480 +232481 +232482 +232483 +232484 +232485 +232486 +232487 +232512 +232513 +232514 +232515 +232516 +232517 +232518 +232519 +232544 +232545 +232546 +232547 +232548 +232549 +232550 +232551 +232576 +232577 +232578 +232579 +232580 +232581 +232582 +232583 +232608 +232609 +232610 +232611 +232612 +232613 +232614 +232615 +232640 +232641 +232642 +232643 +232644 +232645 +232646 +232647 +232672 +232673 +232674 +232675 +232676 +232677 +232678 +232679 +232704 +232705 +232706 +232707 +232708 +232709 +232710 +232711 +232736 +232737 +232738 +232739 +232740 +232741 +232742 +232743 +232768 +232769 +232770 +232771 +232772 +232773 +232774 +232775 +232800 +232801 +232802 +232803 +232804 +232805 +232806 +232807 +232832 +232833 +232834 +232835 +232836 +232837 +232838 +232839 +232864 +232865 +232866 +232867 +232868 +232869 +232870 +232871 +232896 +232897 +232898 +232899 +232900 +232901 +232902 +232903 +232928 +232929 +232930 +232931 +232932 +232933 +232934 +232935 +232960 +232961 +232962 +232963 +232964 +232965 +232966 +232967 +232992 +232993 +232994 +232995 +232996 +232997 +232998 +232999 +233024 +233025 +233026 +233027 +233028 +233029 +233030 +233031 +233056 +233057 +233058 +233059 +233060 +233061 +233062 +233063 +233088 +233089 +233090 +233091 +233092 +233093 +233094 +233095 +233120 +233121 +233122 +233123 +233124 +233125 +233126 +233127 +233152 +233153 +233154 +233155 +233156 +233157 +233158 +233159 +233184 +233185 +233186 +233187 +233188 +233189 +233190 +233191 +233216 +233217 +233218 +233219 +233220 +233221 +233222 +233223 +233248 +233249 +233250 +233251 +233252 +233253 +233254 +233255 +233280 +233281 +233282 +233283 +233284 +233285 +233286 +233287 +233312 +233313 +233314 +233315 +233316 +233317 +233318 +233319 +233344 +233345 +233346 +233347 +233348 +233349 +233350 +233351 +233376 +233377 +233378 +233379 +233380 +233381 +233382 +233383 +233408 +233409 +233410 +233411 +233412 +233413 +233414 +233415 +233440 +233441 +233442 +233443 +233444 +233445 +233446 +233447 +233472 +233473 +233474 +233475 +233476 +233477 +233478 +233479 +233504 +233505 +233506 +233507 +233508 +233509 +233510 +233511 +233536 +233537 +233538 +233539 +233540 +233541 +233542 +233543 +233568 +233569 +233570 +233571 +233572 +233573 +233574 +233575 +233600 +233601 +233602 +233603 +233604 +233605 +233606 +233607 +233632 +233633 +233634 +233635 +233636 +233637 +233638 +233639 +233664 +233665 +233666 +233667 +233668 +233669 +233670 +233671 +233696 +233697 +233698 +233699 +233700 +233701 +233702 +233703 +233728 +233729 +233730 +233731 +233732 +233733 +233734 +233735 +233760 +233761 +233762 +233763 +233764 +233765 +233766 +233767 +233792 +233793 +233794 +233795 +233796 +233797 +233798 +233799 +233824 +233825 +233826 +233827 +233828 +233829 +233830 +233831 +233856 +233857 +233858 +233859 +233860 +233861 +233862 +233863 +233888 +233889 +233890 +233891 +233892 +233893 +233894 +233895 +233920 +233921 +233922 +233923 +233924 +233925 +233926 +233927 +233952 +233953 +233954 +233955 +233956 +233957 +233958 +233959 +233984 +233985 +233986 +233987 +233988 +233989 +233990 +233991 +234016 +234017 +234018 +234019 +234020 +234021 +234022 +234023 +234048 +234049 +234050 +234051 +234052 +234053 +234054 +234055 +234080 +234081 +234082 +234083 +234084 +234085 +234086 +234087 +234112 +234113 +234114 +234115 +234116 +234117 +234118 +234119 +234144 +234145 +234146 +234147 +234148 +234149 +234150 +234151 +234176 +234177 +234178 +234179 +234180 +234181 +234182 +234183 +234208 +234209 +234210 +234211 +234212 +234213 +234214 +234215 +234240 +234241 +234242 +234243 +234244 +234245 +234246 +234247 +234272 +234273 +234274 +234275 +234276 +234277 +234278 +234279 +234304 +234305 +234306 +234307 +234308 +234309 +234310 +234311 +234336 +234337 +234338 +234339 +234340 +234341 +234342 +234343 +234368 +234369 +234370 +234371 +234372 +234373 +234374 +234375 +234400 +234401 +234402 +234403 +234404 +234405 +234406 +234407 +234432 +234433 +234434 +234435 +234436 +234437 +234438 +234439 +234464 +234465 +234466 +234467 +234468 +234469 +234470 +234471 +234496 +234497 +234498 +234499 +234500 +234501 +234502 +234503 +234528 +234529 +234530 +234531 +234532 +234533 +234534 +234535 +234560 +234561 +234562 +234563 +234564 +234565 +234566 +234567 +234592 +234593 +234594 +234595 +234596 +234597 +234598 +234599 +234624 +234625 +234626 +234627 +234628 +234629 +234630 +234631 +234656 +234657 +234658 +234659 +234660 +234661 +234662 +234663 +234688 +234689 +234690 +234691 +234692 +234693 +234694 +234695 +234720 +234721 +234722 +234723 +234724 +234725 +234726 +234727 +234752 +234753 +234754 +234755 +234756 +234757 +234758 +234759 +234784 +234785 +234786 +234787 +234788 +234789 +234790 +234791 +234816 +234817 +234818 +234819 +234820 +234821 +234822 +234823 +234848 +234849 +234850 +234851 +234852 +234853 +234854 +234855 +234880 +234881 +234882 +234883 +234884 +234885 +234886 +234887 +234912 +234913 +234914 +234915 +234916 +234917 +234918 +234919 +234944 +234945 +234946 +234947 +234948 +234949 +234950 +234951 +234976 +234977 +234978 +234979 +234980 +234981 +234982 +234983 +235008 +235009 +235010 +235011 +235012 +235013 +235014 +235015 +235040 +235041 +235042 +235043 +235044 +235045 +235046 +235047 +235072 +235073 +235074 +235075 +235076 +235077 +235078 +235079 +235104 +235105 +235106 +235107 +235108 +235109 +235110 +235111 +235136 +235137 +235138 +235139 +235140 +235141 +235142 +235143 +235168 +235169 +235170 +235171 +235172 +235173 +235174 +235175 +235200 +235201 +235202 +235203 +235204 +235205 +235206 +235207 +235232 +235233 +235234 +235235 +235236 +235237 +235238 +235239 +235264 +235265 +235266 +235267 +235268 +235269 +235270 +235271 +235296 +235297 +235298 +235299 +235300 +235301 +235302 +235303 +235328 +235329 +235330 +235331 +235332 +235333 +235334 +235335 +235360 +235361 +235362 +235363 +235364 +235365 +235366 +235367 +235392 +235393 +235394 +235395 +235396 +235397 +235398 +235399 +235424 +235425 +235426 +235427 +235428 +235429 +235430 +235431 +235456 +235457 +235458 +235459 +235460 +235461 +235462 +235463 +235488 +235489 +235490 +235491 +235492 +235493 +235494 +235495 +235520 +235521 +235522 +235523 +235524 +235525 +235526 +235527 +235552 +235553 +235554 +235555 +235556 +235557 +235558 +235559 +235584 +235585 +235586 +235587 +235588 +235589 +235590 +235591 +235616 +235617 +235618 +235619 +235620 +235621 +235622 +235623 +235648 +235649 +235650 +235651 +235652 +235653 +235654 +235655 +235680 +235681 +235682 +235683 +235684 +235685 +235686 +235687 +235712 +235713 +235714 +235715 +235716 +235717 +235718 +235719 +235744 +235745 +235746 +235747 +235748 +235749 +235750 +235751 +235776 +235777 +235778 +235779 +235780 +235781 +235782 +235783 +235808 +235809 +235810 +235811 +235812 +235813 +235814 +235815 +235840 +235841 +235842 +235843 +235844 +235845 +235846 +235847 +235872 +235873 +235874 +235875 +235876 +235877 +235878 +235879 +235904 +235905 +235906 +235907 +235908 +235909 +235910 +235911 +235936 +235937 +235938 +235939 +235940 +235941 +235942 +235943 +235968 +235969 +235970 +235971 +235972 +235973 +235974 +235975 +236000 +236001 +236002 +236003 +236004 +236005 +236006 +236007 +236032 +236033 +236034 +236035 +236036 +236037 +236038 +236039 +236064 +236065 +236066 +236067 +236068 +236069 +236070 +236071 +236096 +236097 +236098 +236099 +236100 +236101 +236102 +236103 +236128 +236129 +236130 +236131 +236132 +236133 +236134 +236135 +236160 +236161 +236162 +236163 +236164 +236165 +236166 +236167 +236192 +236193 +236194 +236195 +236196 +236197 +236198 +236199 +236224 +236225 +236226 +236227 +236228 +236229 +236230 +236231 +236256 +236257 +236258 +236259 +236260 +236261 +236262 +236263 +236288 +236289 +236290 +236291 +236292 +236293 +236294 +236295 +236320 +236321 +236322 +236323 +236324 +236325 +236326 +236327 +236352 +236353 +236354 +236355 +236356 +236357 +236358 +236359 +236384 +236385 +236386 +236387 +236388 +236389 +236390 +236391 +236416 +236417 +236418 +236419 +236420 +236421 +236422 +236423 +236448 +236449 +236450 +236451 +236452 +236453 +236454 +236455 +236480 +236481 +236482 +236483 +236484 +236485 +236486 +236487 +236512 +236513 +236514 +236515 +236516 +236517 +236518 +236519 +236544 +236545 +236546 +236547 +236548 +236549 +236550 +236551 +236576 +236577 +236578 +236579 +236580 +236581 +236582 +236583 +236608 +236609 +236610 +236611 +236612 +236613 +236614 +236615 +236640 +236641 +236642 +236643 +236644 +236645 +236646 +236647 +236672 +236673 +236674 +236675 +236676 +236677 +236678 +236679 +236704 +236705 +236706 +236707 +236708 +236709 +236710 +236711 +236736 +236737 +236738 +236739 +236740 +236741 +236742 +236743 +236768 +236769 +236770 +236771 +236772 +236773 +236774 +236775 +236800 +236801 +236802 +236803 +236804 +236805 +236806 +236807 +236832 +236833 +236834 +236835 +236836 +236837 +236838 +236839 +236864 +236865 +236866 +236867 +236868 +236869 +236870 +236871 +236896 +236897 +236898 +236899 +236900 +236901 +236902 +236903 +236928 +236929 +236930 +236931 +236932 +236933 +236934 +236935 +236960 +236961 +236962 +236963 +236964 +236965 +236966 +236967 +236992 +236993 +236994 +236995 +236996 +236997 +236998 +236999 +237024 +237025 +237026 +237027 +237028 +237029 +237030 +237031 +237056 +237057 +237058 +237059 +237060 +237061 +237062 +237063 +237088 +237089 +237090 +237091 +237092 +237093 +237094 +237095 +237120 +237121 +237122 +237123 +237124 +237125 +237126 +237127 +237152 +237153 +237154 +237155 +237156 +237157 +237158 +237159 +237184 +237185 +237186 +237187 +237188 +237189 +237190 +237191 +237216 +237217 +237218 +237219 +237220 +237221 +237222 +237223 +237248 +237249 +237250 +237251 +237252 +237253 +237254 +237255 +237280 +237281 +237282 +237283 +237284 +237285 +237286 +237287 +237312 +237313 +237314 +237315 +237316 +237317 +237318 +237319 +237344 +237345 +237346 +237347 +237348 +237349 +237350 +237351 +237376 +237377 +237378 +237379 +237380 +237381 +237382 +237383 +237408 +237409 +237410 +237411 +237412 +237413 +237414 +237415 +237440 +237441 +237442 +237443 +237444 +237445 +237446 +237447 +237472 +237473 +237474 +237475 +237476 +237477 +237478 +237479 +237504 +237505 +237506 +237507 +237508 +237509 +237510 +237511 +237536 +237537 +237538 +237539 +237540 +237541 +237542 +237543 +237568 +237569 +237570 +237571 +237572 +237573 +237574 +237575 +237600 +237601 +237602 +237603 +237604 +237605 +237606 +237607 +237632 +237633 +237634 +237635 +237636 +237637 +237638 +237639 +237664 +237665 +237666 +237667 +237668 +237669 +237670 +237671 +237696 +237697 +237698 +237699 +237700 +237701 +237702 +237703 +237728 +237729 +237730 +237731 +237732 +237733 +237734 +237735 +237760 +237761 +237762 +237763 +237764 +237765 +237766 +237767 +237792 +237793 +237794 +237795 +237796 +237797 +237798 +237799 +237824 +237825 +237826 +237827 +237828 +237829 +237830 +237831 +237856 +237857 +237858 +237859 +237860 +237861 +237862 +237863 +237888 +237889 +237890 +237891 +237892 +237893 +237894 +237895 +237920 +237921 +237922 +237923 +237924 +237925 +237926 +237927 +237952 +237953 +237954 +237955 +237956 +237957 +237958 +237959 +237984 +237985 +237986 +237987 +237988 +237989 +237990 +237991 +238016 +238017 +238018 +238019 +238020 +238021 +238022 +238023 +238048 +238049 +238050 +238051 +238052 +238053 +238054 +238055 +238080 +238081 +238082 +238083 +238084 +238085 +238086 +238087 +238112 +238113 +238114 +238115 +238116 +238117 +238118 +238119 +238144 +238145 +238146 +238147 +238148 +238149 +238150 +238151 +238176 +238177 +238178 +238179 +238180 +238181 +238182 +238183 +238208 +238209 +238210 +238211 +238212 +238213 +238214 +238215 +238240 +238241 +238242 +238243 +238244 +238245 +238246 +238247 +238272 +238273 +238274 +238275 +238276 +238277 +238278 +238279 +238304 +238305 +238306 +238307 +238308 +238309 +238310 +238311 +238336 +238337 +238338 +238339 +238340 +238341 +238342 +238343 +238368 +238369 +238370 +238371 +238372 +238373 +238374 +238375 +238400 +238401 +238402 +238403 +238404 +238405 +238406 +238407 +238432 +238433 +238434 +238435 +238436 +238437 +238438 +238439 +238464 +238465 +238466 +238467 +238468 +238469 +238470 +238471 +238496 +238497 +238498 +238499 +238500 +238501 +238502 +238503 +238528 +238529 +238530 +238531 +238532 +238533 +238534 +238535 +238560 +238561 +238562 +238563 +238564 +238565 +238566 +238567 +238592 +238593 +238594 +238595 +238596 +238597 +238598 +238599 +238624 +238625 +238626 +238627 +238628 +238629 +238630 +238631 +238656 +238657 +238658 +238659 +238660 +238661 +238662 +238663 +238688 +238689 +238690 +238691 +238692 +238693 +238694 +238695 +238720 +238721 +238722 +238723 +238724 +238725 +238726 +238727 +238752 +238753 +238754 +238755 +238756 +238757 +238758 +238759 +238784 +238785 +238786 +238787 +238788 +238789 +238790 +238791 +238816 +238817 +238818 +238819 +238820 +238821 +238822 +238823 +238848 +238849 +238850 +238851 +238852 +238853 +238854 +238855 +238880 +238881 +238882 +238883 +238884 +238885 +238886 +238887 +238912 +238913 +238914 +238915 +238916 +238917 +238918 +238919 +238944 +238945 +238946 +238947 +238948 +238949 +238950 +238951 +238976 +238977 +238978 +238979 +238980 +238981 +238982 +238983 +239008 +239009 +239010 +239011 +239012 +239013 +239014 +239015 +239040 +239041 +239042 +239043 +239044 +239045 +239046 +239047 +239072 +239073 +239074 +239075 +239076 +239077 +239078 +239079 +239104 +239105 +239106 +239107 +239108 +239109 +239110 +239111 +239136 +239137 +239138 +239139 +239140 +239141 +239142 +239143 +239168 +239169 +239170 +239171 +239172 +239173 +239174 +239175 +239200 +239201 +239202 +239203 +239204 +239205 +239206 +239207 +239232 +239233 +239234 +239235 +239236 +239237 +239238 +239239 +239264 +239265 +239266 +239267 +239268 +239269 +239270 +239271 +239296 +239297 +239298 +239299 +239300 +239301 +239302 +239303 +239328 +239329 +239330 +239331 +239332 +239333 +239334 +239335 +239360 +239361 +239362 +239363 +239364 +239365 +239366 +239367 +239392 +239393 +239394 +239395 +239396 +239397 +239398 +239399 +239424 +239425 +239426 +239427 +239428 +239429 +239430 +239431 +239456 +239457 +239458 +239459 +239460 +239461 +239462 +239463 +239488 +239489 +239490 +239491 +239492 +239493 +239494 +239495 +239520 +239521 +239522 +239523 +239524 +239525 +239526 +239527 +239552 +239553 +239554 +239555 +239556 +239557 +239558 +239559 +239584 +239585 +239586 +239587 +239588 +239589 +239590 +239591 +239616 +239617 +239618 +239619 +239620 +239621 +239622 +239623 +239648 +239649 +239650 +239651 +239652 +239653 +239654 +239655 +239680 +239681 +239682 +239683 +239684 +239685 +239686 +239687 +239712 +239713 +239714 +239715 +239716 +239717 +239718 +239719 +239744 +239745 +239746 +239747 +239748 +239749 +239750 +239751 +239776 +239777 +239778 +239779 +239780 +239781 +239782 +239783 +239808 +239809 +239810 +239811 +239812 +239813 +239814 +239815 +239840 +239841 +239842 +239843 +239844 +239845 +239846 +239847 +239872 +239873 +239874 +239875 +239876 +239877 +239878 +239879 +239904 +239905 +239906 +239907 +239908 +239909 +239910 +239911 +239936 +239937 +239938 +239939 +239940 +239941 +239942 +239943 +239968 +239969 +239970 +239971 +239972 +239973 +239974 +239975 +240000 +240001 +240002 +240003 +240004 +240005 +240006 +240007 +240032 +240033 +240034 +240035 +240036 +240037 +240038 +240039 +240064 +240065 +240066 +240067 +240068 +240069 +240070 +240071 +240096 +240097 +240098 +240099 +240100 +240101 +240102 +240103 +240128 +240129 +240130 +240131 +240132 +240133 +240134 +240135 +240160 +240161 +240162 +240163 +240164 +240165 +240166 +240167 +240192 +240193 +240194 +240195 +240196 +240197 +240198 +240199 +240224 +240225 +240226 +240227 +240228 +240229 +240230 +240231 +240256 +240257 +240258 +240259 +240260 +240261 +240262 +240263 +240288 +240289 +240290 +240291 +240292 +240293 +240294 +240295 +240320 +240321 +240322 +240323 +240324 +240325 +240326 +240327 +240352 +240353 +240354 +240355 +240356 +240357 +240358 +240359 +240384 +240385 +240386 +240387 +240388 +240389 +240390 +240391 +240416 +240417 +240418 +240419 +240420 +240421 +240422 +240423 +240448 +240449 +240450 +240451 +240452 +240453 +240454 +240455 +240480 +240481 +240482 +240483 +240484 +240485 +240486 +240487 +240512 +240513 +240514 +240515 +240516 +240517 +240518 +240519 +240544 +240545 +240546 +240547 +240548 +240549 +240550 +240551 +240576 +240577 +240578 +240579 +240580 +240581 +240582 +240583 +240608 +240609 +240610 +240611 +240612 +240613 +240614 +240615 +240640 +240641 +240642 +240643 +240644 +240645 +240646 +240647 +240672 +240673 +240674 +240675 +240676 +240677 +240678 +240679 +240704 +240705 +240706 +240707 +240708 +240709 +240710 +240711 +240736 +240737 +240738 +240739 +240740 +240741 +240742 +240743 +240768 +240769 +240770 +240771 +240772 +240773 +240774 +240775 +240800 +240801 +240802 +240803 +240804 +240805 +240806 +240807 +240832 +240833 +240834 +240835 +240836 +240837 +240838 +240839 +240864 +240865 +240866 +240867 +240868 +240869 +240870 +240871 +240896 +240897 +240898 +240899 +240900 +240901 +240902 +240903 +240928 +240929 +240930 +240931 +240932 +240933 +240934 +240935 +240960 +240961 +240962 +240963 +240964 +240965 +240966 +240967 +240992 +240993 +240994 +240995 +240996 +240997 +240998 +240999 +241024 +241025 +241026 +241027 +241028 +241029 +241030 +241031 +241056 +241057 +241058 +241059 +241060 +241061 +241062 +241063 +241088 +241089 +241090 +241091 +241092 +241093 +241094 +241095 +241120 +241121 +241122 +241123 +241124 +241125 +241126 +241127 +241152 +241153 +241154 +241155 +241156 +241157 +241158 +241159 +241184 +241185 +241186 +241187 +241188 +241189 +241190 +241191 +241216 +241217 +241218 +241219 +241220 +241221 +241222 +241223 +241248 +241249 +241250 +241251 +241252 +241253 +241254 +241255 +241280 +241281 +241282 +241283 +241284 +241285 +241286 +241287 +241312 +241313 +241314 +241315 +241316 +241317 +241318 +241319 +241344 +241345 +241346 +241347 +241348 +241349 +241350 +241351 +241376 +241377 +241378 +241379 +241380 +241381 +241382 +241383 +241408 +241409 +241410 +241411 +241412 +241413 +241414 +241415 +241440 +241441 +241442 +241443 +241444 +241445 +241446 +241447 +241472 +241473 +241474 +241475 +241476 +241477 +241478 +241479 +241504 +241505 +241506 +241507 +241508 +241509 +241510 +241511 +241536 +241537 +241538 +241539 +241540 +241541 +241542 +241543 +241568 +241569 +241570 +241571 +241572 +241573 +241574 +241575 +241600 +241601 +241602 +241603 +241604 +241605 +241606 +241607 +241632 +241633 +241634 +241635 +241636 +241637 +241638 +241639 +241664 +241665 +241666 +241667 +241668 +241669 +241670 +241671 +241696 +241697 +241698 +241699 +241700 +241701 +241702 +241703 +241728 +241729 +241730 +241731 +241732 +241733 +241734 +241735 +241760 +241761 +241762 +241763 +241764 +241765 +241766 +241767 +241792 +241793 +241794 +241795 +241796 +241797 +241798 +241799 +241824 +241825 +241826 +241827 +241828 +241829 +241830 +241831 +241856 +241857 +241858 +241859 +241860 +241861 +241862 +241863 +241888 +241889 +241890 +241891 +241892 +241893 +241894 +241895 +241920 +241921 +241922 +241923 +241924 +241925 +241926 +241927 +241952 +241953 +241954 +241955 +241956 +241957 +241958 +241959 +241984 +241985 +241986 +241987 +241988 +241989 +241990 +241991 +242016 +242017 +242018 +242019 +242020 +242021 +242022 +242023 +242048 +242049 +242050 +242051 +242052 +242053 +242054 +242055 +242080 +242081 +242082 +242083 +242084 +242085 +242086 +242087 +242112 +242113 +242114 +242115 +242116 +242117 +242118 +242119 +242144 +242145 +242146 +242147 +242148 +242149 +242150 +242151 +242176 +242177 +242178 +242179 +242180 +242181 +242182 +242183 +242208 +242209 +242210 +242211 +242212 +242213 +242214 +242215 +242240 +242241 +242242 +242243 +242244 +242245 +242246 +242247 +242272 +242273 +242274 +242275 +242276 +242277 +242278 +242279 +242304 +242305 +242306 +242307 +242308 +242309 +242310 +242311 +242336 +242337 +242338 +242339 +242340 +242341 +242342 +242343 +242368 +242369 +242370 +242371 +242372 +242373 +242374 +242375 +242400 +242401 +242402 +242403 +242404 +242405 +242406 +242407 +242432 +242433 +242434 +242435 +242436 +242437 +242438 +242439 +242464 +242465 +242466 +242467 +242468 +242469 +242470 +242471 +242496 +242497 +242498 +242499 +242500 +242501 +242502 +242503 +242528 +242529 +242530 +242531 +242532 +242533 +242534 +242535 +242560 +242561 +242562 +242563 +242564 +242565 +242566 +242567 +242592 +242593 +242594 +242595 +242596 +242597 +242598 +242599 +242624 +242625 +242626 +242627 +242628 +242629 +242630 +242631 +242656 +242657 +242658 +242659 +242660 +242661 +242662 +242663 +242688 +242689 +242690 +242691 +242692 +242693 +242694 +242695 +242720 +242721 +242722 +242723 +242724 +242725 +242726 +242727 +242752 +242753 +242754 +242755 +242756 +242757 +242758 +242759 +242784 +242785 +242786 +242787 +242788 +242789 +242790 +242791 +242816 +242817 +242818 +242819 +242820 +242821 +242822 +242823 +242848 +242849 +242850 +242851 +242852 +242853 +242854 +242855 +242880 +242881 +242882 +242883 +242884 +242885 +242886 +242887 +242912 +242913 +242914 +242915 +242916 +242917 +242918 +242919 +242944 +242945 +242946 +242947 +242948 +242949 +242950 +242951 +242976 +242977 +242978 +242979 +242980 +242981 +242982 +242983 +243008 +243009 +243010 +243011 +243012 +243013 +243014 +243015 +243040 +243041 +243042 +243043 +243044 +243045 +243046 +243047 +243072 +243073 +243074 +243075 +243076 +243077 +243078 +243079 +243104 +243105 +243106 +243107 +243108 +243109 +243110 +243111 +243136 +243137 +243138 +243139 +243140 +243141 +243142 +243143 +243168 +243169 +243170 +243171 +243172 +243173 +243174 +243175 +243200 +243201 +243202 +243203 +243204 +243205 +243206 +243207 +243232 +243233 +243234 +243235 +243236 +243237 +243238 +243239 +243264 +243265 +243266 +243267 +243268 +243269 +243270 +243271 +243296 +243297 +243298 +243299 +243300 +243301 +243302 +243303 +243328 +243329 +243330 +243331 +243332 +243333 +243334 +243335 +243360 +243361 +243362 +243363 +243364 +243365 +243366 +243367 +243392 +243393 +243394 +243395 +243396 +243397 +243398 +243399 +243424 +243425 +243426 +243427 +243428 +243429 +243430 +243431 +243456 +243457 +243458 +243459 +243460 +243461 +243462 +243463 +243488 +243489 +243490 +243491 +243492 +243493 +243494 +243495 +243520 +243521 +243522 +243523 +243524 +243525 +243526 +243527 +243552 +243553 +243554 +243555 +243556 +243557 +243558 +243559 +243584 +243585 +243586 +243587 +243588 +243589 +243590 +243591 +243616 +243617 +243618 +243619 +243620 +243621 +243622 +243623 +243648 +243649 +243650 +243651 +243652 +243653 +243654 +243655 +243680 +243681 +243682 +243683 +243684 +243685 +243686 +243687 +243712 +243713 +243714 +243715 +243716 +243717 +243718 +243719 +243744 +243745 +243746 +243747 +243748 +243749 +243750 +243751 +243776 +243777 +243778 +243779 +243780 +243781 +243782 +243783 +243808 +243809 +243810 +243811 +243812 +243813 +243814 +243815 +243840 +243841 +243842 +243843 +243844 +243845 +243846 +243847 +243872 +243873 +243874 +243875 +243876 +243877 +243878 +243879 +243904 +243905 +243906 +243907 +243908 +243909 +243910 +243911 +243936 +243937 +243938 +243939 +243940 +243941 +243942 +243943 +243968 +243969 +243970 +243971 +243972 +243973 +243974 +243975 +244000 +244001 +244002 +244003 +244004 +244005 +244006 +244007 +244032 +244033 +244034 +244035 +244036 +244037 +244038 +244039 +244064 +244065 +244066 +244067 +244068 +244069 +244070 +244071 +244096 +244097 +244098 +244099 +244100 +244101 +244102 +244103 +244128 +244129 +244130 +244131 +244132 +244133 +244134 +244135 +244160 +244161 +244162 +244163 +244164 +244165 +244166 +244167 +244192 +244193 +244194 +244195 +244196 +244197 +244198 +244199 +244224 +244225 +244226 +244227 +244228 +244229 +244230 +244231 +244256 +244257 +244258 +244259 +244260 +244261 +244262 +244263 +244288 +244289 +244290 +244291 +244292 +244293 +244294 +244295 +244320 +244321 +244322 +244323 +244324 +244325 +244326 +244327 +244352 +244353 +244354 +244355 +244356 +244357 +244358 +244359 +244384 +244385 +244386 +244387 +244388 +244389 +244390 +244391 +244416 +244417 +244418 +244419 +244420 +244421 +244422 +244423 +244448 +244449 +244450 +244451 +244452 +244453 +244454 +244455 +244480 +244481 +244482 +244483 +244484 +244485 +244486 +244487 +244512 +244513 +244514 +244515 +244516 +244517 +244518 +244519 +244544 +244545 +244546 +244547 +244548 +244549 +244550 +244551 +244576 +244577 +244578 +244579 +244580 +244581 +244582 +244583 +244608 +244609 +244610 +244611 +244612 +244613 +244614 +244615 +244640 +244641 +244642 +244643 +244644 +244645 +244646 +244647 +244672 +244673 +244674 +244675 +244676 +244677 +244678 +244679 +244704 +244705 +244706 +244707 +244708 +244709 +244710 +244711 +244736 +244737 +244738 +244739 +244740 +244741 +244742 +244743 +244768 +244769 +244770 +244771 +244772 +244773 +244774 +244775 +244800 +244801 +244802 +244803 +244804 +244805 +244806 +244807 +244832 +244833 +244834 +244835 +244836 +244837 +244838 +244839 +244864 +244865 +244866 +244867 +244868 +244869 +244870 +244871 +244896 +244897 +244898 +244899 +244900 +244901 +244902 +244903 +244928 +244929 +244930 +244931 +244932 +244933 +244934 +244935 +244960 +244961 +244962 +244963 +244964 +244965 +244966 +244967 +244992 +244993 +244994 +244995 +244996 +244997 +244998 +244999 +245024 +245025 +245026 +245027 +245028 +245029 +245030 +245031 +245056 +245057 +245058 +245059 +245060 +245061 +245062 +245063 +245088 +245089 +245090 +245091 +245092 +245093 +245094 +245095 +245120 +245121 +245122 +245123 +245124 +245125 +245126 +245127 +245152 +245153 +245154 +245155 +245156 +245157 +245158 +245159 +245184 +245185 +245186 +245187 +245188 +245189 +245190 +245191 +245216 +245217 +245218 +245219 +245220 +245221 +245222 +245223 +245248 +245249 +245250 +245251 +245252 +245253 +245254 +245255 +245280 +245281 +245282 +245283 +245284 +245285 +245286 +245287 +245312 +245313 +245314 +245315 +245316 +245317 +245318 +245319 +245344 +245345 +245346 +245347 +245348 +245349 +245350 +245351 +245376 +245377 +245378 +245379 +245380 +245381 +245382 +245383 +245408 +245409 +245410 +245411 +245412 +245413 +245414 +245415 +245440 +245441 +245442 +245443 +245444 +245445 +245446 +245447 +245472 +245473 +245474 +245475 +245476 +245477 +245478 +245479 +245504 +245505 +245506 +245507 +245508 +245509 +245510 +245511 +245536 +245537 +245538 +245539 +245540 +245541 +245542 +245543 +245568 +245569 +245570 +245571 +245572 +245573 +245574 +245575 +245600 +245601 +245602 +245603 +245604 +245605 +245606 +245607 +245632 +245633 +245634 +245635 +245636 +245637 +245638 +245639 +245664 +245665 +245666 +245667 +245668 +245669 +245670 +245671 +245696 +245697 +245698 +245699 +245700 +245701 +245702 +245703 +245728 +245729 +245730 +245731 +245732 +245733 +245734 +245735 +245760 +245761 +245762 +245763 +245764 +245765 +245766 +245767 +245792 +245793 +245794 +245795 +245796 +245797 +245798 +245799 +245824 +245825 +245826 +245827 +245828 +245829 +245830 +245831 +245856 +245857 +245858 +245859 +245860 +245861 +245862 +245863 +245888 +245889 +245890 +245891 +245892 +245893 +245894 +245895 +245920 +245921 +245922 +245923 +245924 +245925 +245926 +245927 +245952 +245953 +245954 +245955 +245956 +245957 +245958 +245959 +245984 +245985 +245986 +245987 +245988 +245989 +245990 +245991 +246016 +246017 +246018 +246019 +246020 +246021 +246022 +246023 +246048 +246049 +246050 +246051 +246052 +246053 +246054 +246055 +246080 +246081 +246082 +246083 +246084 +246085 +246086 +246087 +246112 +246113 +246114 +246115 +246116 +246117 +246118 +246119 +246144 +246145 +246146 +246147 +246148 +246149 +246150 +246151 +246176 +246177 +246178 +246179 +246180 +246181 +246182 +246183 +246208 +246209 +246210 +246211 +246212 +246213 +246214 +246215 +246240 +246241 +246242 +246243 +246244 +246245 +246246 +246247 +246272 +246273 +246274 +246275 +246276 +246277 +246278 +246279 +246304 +246305 +246306 +246307 +246308 +246309 +246310 +246311 +246336 +246337 +246338 +246339 +246340 +246341 +246342 +246343 +246368 +246369 +246370 +246371 +246372 +246373 +246374 +246375 +246400 +246401 +246402 +246403 +246404 +246405 +246406 +246407 +246432 +246433 +246434 +246435 +246436 +246437 +246438 +246439 +246464 +246465 +246466 +246467 +246468 +246469 +246470 +246471 +246496 +246497 +246498 +246499 +246500 +246501 +246502 +246503 +246528 +246529 +246530 +246531 +246532 +246533 +246534 +246535 +246560 +246561 +246562 +246563 +246564 +246565 +246566 +246567 +246592 +246593 +246594 +246595 +246596 +246597 +246598 +246599 +246624 +246625 +246626 +246627 +246628 +246629 +246630 +246631 +246656 +246657 +246658 +246659 +246660 +246661 +246662 +246663 +246688 +246689 +246690 +246691 +246692 +246693 +246694 +246695 +246720 +246721 +246722 +246723 +246724 +246725 +246726 +246727 +246752 +246753 +246754 +246755 +246756 +246757 +246758 +246759 +246784 +246785 +246786 +246787 +246788 +246789 +246790 +246791 +246816 +246817 +246818 +246819 +246820 +246821 +246822 +246823 +246848 +246849 +246850 +246851 +246852 +246853 +246854 +246855 +246880 +246881 +246882 +246883 +246884 +246885 +246886 +246887 +246912 +246913 +246914 +246915 +246916 +246917 +246918 +246919 +246944 +246945 +246946 +246947 +246948 +246949 +246950 +246951 +246976 +246977 +246978 +246979 +246980 +246981 +246982 +246983 +247008 +247009 +247010 +247011 +247012 +247013 +247014 +247015 +247040 +247041 +247042 +247043 +247044 +247045 +247046 +247047 +247072 +247073 +247074 +247075 +247076 +247077 +247078 +247079 +247104 +247105 +247106 +247107 +247108 +247109 +247110 +247111 +247136 +247137 +247138 +247139 +247140 +247141 +247142 +247143 +247168 +247169 +247170 +247171 +247172 +247173 +247174 +247175 +247200 +247201 +247202 +247203 +247204 +247205 +247206 +247207 +247232 +247233 +247234 +247235 +247236 +247237 +247238 +247239 +247264 +247265 +247266 +247267 +247268 +247269 +247270 +247271 +247296 +247297 +247298 +247299 +247300 +247301 +247302 +247303 +247328 +247329 +247330 +247331 +247332 +247333 +247334 +247335 +247360 +247361 +247362 +247363 +247364 +247365 +247366 +247367 +247392 +247393 +247394 +247395 +247396 +247397 +247398 +247399 +247424 +247425 +247426 +247427 +247428 +247429 +247430 +247431 +247456 +247457 +247458 +247459 +247460 +247461 +247462 +247463 +247488 +247489 +247490 +247491 +247492 +247493 +247494 +247495 +247520 +247521 +247522 +247523 +247524 +247525 +247526 +247527 +247552 +247553 +247554 +247555 +247556 +247557 +247558 +247559 +247584 +247585 +247586 +247587 +247588 +247589 +247590 +247591 +247616 +247617 +247618 +247619 +247620 +247621 +247622 +247623 +247648 +247649 +247650 +247651 +247652 +247653 +247654 +247655 +247680 +247681 +247682 +247683 +247684 +247685 +247686 +247687 +247712 +247713 +247714 +247715 +247716 +247717 +247718 +247719 +247744 +247745 +247746 +247747 +247748 +247749 +247750 +247751 +247776 +247777 +247778 +247779 +247780 +247781 +247782 +247783 +247808 +247809 +247810 +247811 +247812 +247813 +247814 +247815 +247840 +247841 +247842 +247843 +247844 +247845 +247846 +247847 +247872 +247873 +247874 +247875 +247876 +247877 +247878 +247879 +247904 +247905 +247906 +247907 +247908 +247909 +247910 +247911 +247936 +247937 +247938 +247939 +247940 +247941 +247942 +247943 +247968 +247969 +247970 +247971 +247972 +247973 +247974 +247975 +248000 +248001 +248002 +248003 +248004 +248005 +248006 +248007 +248032 +248033 +248034 +248035 +248036 +248037 +248038 +248039 +248064 +248065 +248066 +248067 +248068 +248069 +248070 +248071 +248096 +248097 +248098 +248099 +248100 +248101 +248102 +248103 +248128 +248129 +248130 +248131 +248132 +248133 +248134 +248135 +248160 +248161 +248162 +248163 +248164 +248165 +248166 +248167 +248192 +248193 +248194 +248195 +248196 +248197 +248198 +248199 +248224 +248225 +248226 +248227 +248228 +248229 +248230 +248231 +248256 +248257 +248258 +248259 +248260 +248261 +248262 +248263 +248288 +248289 +248290 +248291 +248292 +248293 +248294 +248295 +248320 +248321 +248322 +248323 +248324 +248325 +248326 +248327 +248352 +248353 +248354 +248355 +248356 +248357 +248358 +248359 +248384 +248385 +248386 +248387 +248388 +248389 +248390 +248391 +248416 +248417 +248418 +248419 +248420 +248421 +248422 +248423 +248448 +248449 +248450 +248451 +248452 +248453 +248454 +248455 +248480 +248481 +248482 +248483 +248484 +248485 +248486 +248487 +248512 +248513 +248514 +248515 +248516 +248517 +248518 +248519 +248544 +248545 +248546 +248547 +248548 +248549 +248550 +248551 +248576 +248577 +248578 +248579 +248580 +248581 +248582 +248583 +248608 +248609 +248610 +248611 +248612 +248613 +248614 +248615 +248640 +248641 +248642 +248643 +248644 +248645 +248646 +248647 +248672 +248673 +248674 +248675 +248676 +248677 +248678 +248679 +248704 +248705 +248706 +248707 +248708 +248709 +248710 +248711 +248736 +248737 +248738 +248739 +248740 +248741 +248742 +248743 +248768 +248769 +248770 +248771 +248772 +248773 +248774 +248775 +248800 +248801 +248802 +248803 +248804 +248805 +248806 +248807 +248832 +248833 +248834 +248835 +248836 +248837 +248838 +248839 +248864 +248865 +248866 +248867 +248868 +248869 +248870 +248871 +248896 +248897 +248898 +248899 +248900 +248901 +248902 +248903 +248928 +248929 +248930 +248931 +248932 +248933 +248934 +248935 +248960 +248961 +248962 +248963 +248964 +248965 +248966 +248967 +248992 +248993 +248994 +248995 +248996 +248997 +248998 +248999 +249024 +249025 +249026 +249027 +249028 +249029 +249030 +249031 +249056 +249057 +249058 +249059 +249060 +249061 +249062 +249063 +249088 +249089 +249090 +249091 +249092 +249093 +249094 +249095 +249120 +249121 +249122 +249123 +249124 +249125 +249126 +249127 +249152 +249153 +249154 +249155 +249156 +249157 +249158 +249159 +249184 +249185 +249186 +249187 +249188 +249189 +249190 +249191 +249216 +249217 +249218 +249219 +249220 +249221 +249222 +249223 +249248 +249249 +249250 +249251 +249252 +249253 +249254 +249255 +249280 +249281 +249282 +249283 +249284 +249285 +249286 +249287 +249312 +249313 +249314 +249315 +249316 +249317 +249318 +249319 +249344 +249345 +249346 +249347 +249348 +249349 +249350 +249351 +249376 +249377 +249378 +249379 +249380 +249381 +249382 +249383 +249408 +249409 +249410 +249411 +249412 +249413 +249414 +249415 +249440 +249441 +249442 +249443 +249444 +249445 +249446 +249447 +249472 +249473 +249474 +249475 +249476 +249477 +249478 +249479 +249504 +249505 +249506 +249507 +249508 +249509 +249510 +249511 +249536 +249537 +249538 +249539 +249540 +249541 +249542 +249543 +249568 +249569 +249570 +249571 +249572 +249573 +249574 +249575 +249600 +249601 +249602 +249603 +249604 +249605 +249606 +249607 +249632 +249633 +249634 +249635 +249636 +249637 +249638 +249639 +249664 +249665 +249666 +249667 +249668 +249669 +249670 +249671 +249696 +249697 +249698 +249699 +249700 +249701 +249702 +249703 +249728 +249729 +249730 +249731 +249732 +249733 +249734 +249735 +249760 +249761 +249762 +249763 +249764 +249765 +249766 +249767 +249792 +249793 +249794 +249795 +249796 +249797 +249798 +249799 +249824 +249825 +249826 +249827 +249828 +249829 +249830 +249831 +249856 +249857 +249858 +249859 +249860 +249861 +249862 +249863 +249888 +249889 +249890 +249891 +249892 +249893 +249894 +249895 +249920 +249921 +249922 +249923 +249924 +249925 +249926 +249927 +249952 +249953 +249954 +249955 +249956 +249957 +249958 +249959 +249984 +249985 +249986 +249987 +249988 +249989 +249990 +249991 +250016 +250017 +250018 +250019 +250020 +250021 +250022 +250023 +250048 +250049 +250050 +250051 +250052 +250053 +250054 +250055 +250080 +250081 +250082 +250083 +250084 +250085 +250086 +250087 +250112 +250113 +250114 +250115 +250116 +250117 +250118 +250119 +250144 +250145 +250146 +250147 +250148 +250149 +250150 +250151 +250176 +250177 +250178 +250179 +250180 +250181 +250182 +250183 +250208 +250209 +250210 +250211 +250212 +250213 +250214 +250215 +250240 +250241 +250242 +250243 +250244 +250245 +250246 +250247 +250272 +250273 +250274 +250275 +250276 +250277 +250278 +250279 +250304 +250305 +250306 +250307 +250308 +250309 +250310 +250311 +250336 +250337 +250338 +250339 +250340 +250341 +250342 +250343 +250368 +250369 +250370 +250371 +250372 +250373 +250374 +250375 +250400 +250401 +250402 +250403 +250404 +250405 +250406 +250407 +250432 +250433 +250434 +250435 +250436 +250437 +250438 +250439 +250464 +250465 +250466 +250467 +250468 +250469 +250470 +250471 +250496 +250497 +250498 +250499 +250500 +250501 +250502 +250503 +250528 +250529 +250530 +250531 +250532 +250533 +250534 +250535 +250560 +250561 +250562 +250563 +250564 +250565 +250566 +250567 +250592 +250593 +250594 +250595 +250596 +250597 +250598 +250599 +250624 +250625 +250626 +250627 +250628 +250629 +250630 +250631 +250656 +250657 +250658 +250659 +250660 +250661 +250662 +250663 +250688 +250689 +250690 +250691 +250692 +250693 +250694 +250695 +250720 +250721 +250722 +250723 +250724 +250725 +250726 +250727 +250752 +250753 +250754 +250755 +250756 +250757 +250758 +250759 +250784 +250785 +250786 +250787 +250788 +250789 +250790 +250791 +250816 +250817 +250818 +250819 +250820 +250821 +250822 +250823 +250848 +250849 +250850 +250851 +250852 +250853 +250854 +250855 +250880 +250881 +250882 +250883 +250884 +250885 +250886 +250887 +250912 +250913 +250914 +250915 +250916 +250917 +250918 +250919 +250944 +250945 +250946 +250947 +250948 +250949 +250950 +250951 +250976 +250977 +250978 +250979 +250980 +250981 +250982 +250983 +251008 +251009 +251010 +251011 +251012 +251013 +251014 +251015 +251040 +251041 +251042 +251043 +251044 +251045 +251046 +251047 +251072 +251073 +251074 +251075 +251076 +251077 +251078 +251079 +251104 +251105 +251106 +251107 +251108 +251109 +251110 +251111 +251136 +251137 +251138 +251139 +251140 +251141 +251142 +251143 +251168 +251169 +251170 +251171 +251172 +251173 +251174 +251175 +251200 +251201 +251202 +251203 +251204 +251205 +251206 +251207 +251232 +251233 +251234 +251235 +251236 +251237 +251238 +251239 +251264 +251265 +251266 +251267 +251268 +251269 +251270 +251271 +251296 +251297 +251298 +251299 +251300 +251301 +251302 +251303 +251328 +251329 +251330 +251331 +251332 +251333 +251334 +251335 +251360 +251361 +251362 +251363 +251364 +251365 +251366 +251367 +251392 +251393 +251394 +251395 +251396 +251397 +251398 +251399 +251424 +251425 +251426 +251427 +251428 +251429 +251430 +251431 +251456 +251457 +251458 +251459 +251460 +251461 +251462 +251463 +251488 +251489 +251490 +251491 +251492 +251493 +251494 +251495 +251520 +251521 +251522 +251523 +251524 +251525 +251526 +251527 +251552 +251553 +251554 +251555 +251556 +251557 +251558 +251559 +251584 +251585 +251586 +251587 +251588 +251589 +251590 +251591 +251616 +251617 +251618 +251619 +251620 +251621 +251622 +251623 +251648 +251649 +251650 +251651 +251652 +251653 +251654 +251655 +251680 +251681 +251682 +251683 +251684 +251685 +251686 +251687 +251712 +251713 +251714 +251715 +251716 +251717 +251718 +251719 +251744 +251745 +251746 +251747 +251748 +251749 +251750 +251751 +251776 +251777 +251778 +251779 +251780 +251781 +251782 +251783 +251808 +251809 +251810 +251811 +251812 +251813 +251814 +251815 +251840 +251841 +251842 +251843 +251844 +251845 +251846 +251847 +251872 +251873 +251874 +251875 +251876 +251877 +251878 +251879 +251904 +251905 +251906 +251907 +251908 +251909 +251910 +251911 +251936 +251937 +251938 +251939 +251940 +251941 +251942 +251943 +251968 +251969 +251970 +251971 +251972 +251973 +251974 +251975 +252000 +252001 +252002 +252003 +252004 +252005 +252006 +252007 +252032 +252033 +252034 +252035 +252036 +252037 +252038 +252039 +252064 +252065 +252066 +252067 +252068 +252069 +252070 +252071 +252096 +252097 +252098 +252099 +252100 +252101 +252102 +252103 +252128 +252129 +252130 +252131 +252132 +252133 +252134 +252135 +252160 +252161 +252162 +252163 +252164 +252165 +252166 +252167 +252192 +252193 +252194 +252195 +252196 +252197 +252198 +252199 +252224 +252225 +252226 +252227 +252228 +252229 +252230 +252231 +252256 +252257 +252258 +252259 +252260 +252261 +252262 +252263 +252288 +252289 +252290 +252291 +252292 +252293 +252294 +252295 +252320 +252321 +252322 +252323 +252324 +252325 +252326 +252327 +252352 +252353 +252354 +252355 +252356 +252357 +252358 +252359 +252384 +252385 +252386 +252387 +252388 +252389 +252390 +252391 +252416 +252417 +252418 +252419 +252420 +252421 +252422 +252423 +252448 +252449 +252450 +252451 +252452 +252453 +252454 +252455 +252480 +252481 +252482 +252483 +252484 +252485 +252486 +252487 +252512 +252513 +252514 +252515 +252516 +252517 +252518 +252519 +252544 +252545 +252546 +252547 +252548 +252549 +252550 +252551 +252576 +252577 +252578 +252579 +252580 +252581 +252582 +252583 +252608 +252609 +252610 +252611 +252612 +252613 +252614 +252615 +252640 +252641 +252642 +252643 +252644 +252645 +252646 +252647 +252672 +252673 +252674 +252675 +252676 +252677 +252678 +252679 +252704 +252705 +252706 +252707 +252708 +252709 +252710 +252711 +252736 +252737 +252738 +252739 +252740 +252741 +252742 +252743 +252768 +252769 +252770 +252771 +252772 +252773 +252774 +252775 +252800 +252801 +252802 +252803 +252804 +252805 +252806 +252807 +252832 +252833 +252834 +252835 +252836 +252837 +252838 +252839 +252864 +252865 +252866 +252867 +252868 +252869 +252870 +252871 +252896 +252897 +252898 +252899 +252900 +252901 +252902 +252903 +252928 +252929 +252930 +252931 +252932 +252933 +252934 +252935 +252960 +252961 +252962 +252963 +252964 +252965 +252966 +252967 +252992 +252993 +252994 +252995 +252996 +252997 +252998 +252999 +253024 +253025 +253026 +253027 +253028 +253029 +253030 +253031 +253056 +253057 +253058 +253059 +253060 +253061 +253062 +253063 +253088 +253089 +253090 +253091 +253092 +253093 +253094 +253095 +253120 +253121 +253122 +253123 +253124 +253125 +253126 +253127 +253152 +253153 +253154 +253155 +253156 +253157 +253158 +253159 +253184 +253185 +253186 +253187 +253188 +253189 +253190 +253191 +253216 +253217 +253218 +253219 +253220 +253221 +253222 +253223 +253248 +253249 +253250 +253251 +253252 +253253 +253254 +253255 +253280 +253281 +253282 +253283 +253284 +253285 +253286 +253287 +253312 +253313 +253314 +253315 +253316 +253317 +253318 +253319 +253344 +253345 +253346 +253347 +253348 +253349 +253350 +253351 +253376 +253377 +253378 +253379 +253380 +253381 +253382 +253383 +253408 +253409 +253410 +253411 +253412 +253413 +253414 +253415 +253440 +253441 +253442 +253443 +253444 +253445 +253446 +253447 +253472 +253473 +253474 +253475 +253476 +253477 +253478 +253479 +253504 +253505 +253506 +253507 +253508 +253509 +253510 +253511 +253536 +253537 +253538 +253539 +253540 +253541 +253542 +253543 +253568 +253569 +253570 +253571 +253572 +253573 +253574 +253575 +253600 +253601 +253602 +253603 +253604 +253605 +253606 +253607 +253632 +253633 +253634 +253635 +253636 +253637 +253638 +253639 +253664 +253665 +253666 +253667 +253668 +253669 +253670 +253671 +253696 +253697 +253698 +253699 +253700 +253701 +253702 +253703 +253728 +253729 +253730 +253731 +253732 +253733 +253734 +253735 +253760 +253761 +253762 +253763 +253764 +253765 +253766 +253767 +253792 +253793 +253794 +253795 +253796 +253797 +253798 +253799 +253824 +253825 +253826 +253827 +253828 +253829 +253830 +253831 +253856 +253857 +253858 +253859 +253860 +253861 +253862 +253863 +253888 +253889 +253890 +253891 +253892 +253893 +253894 +253895 +253920 +253921 +253922 +253923 +253924 +253925 +253926 +253927 +253952 +253953 +253954 +253955 +253956 +253957 +253958 +253959 +253984 +253985 +253986 +253987 +253988 +253989 +253990 +253991 +254016 +254017 +254018 +254019 +254020 +254021 +254022 +254023 +254048 +254049 +254050 +254051 +254052 +254053 +254054 +254055 +254080 +254081 +254082 +254083 +254084 +254085 +254086 +254087 +254112 +254113 +254114 +254115 +254116 +254117 +254118 +254119 +254144 +254145 +254146 +254147 +254148 +254149 +254150 +254151 +254176 +254177 +254178 +254179 +254180 +254181 +254182 +254183 +254208 +254209 +254210 +254211 +254212 +254213 +254214 +254215 +254240 +254241 +254242 +254243 +254244 +254245 +254246 +254247 +254272 +254273 +254274 +254275 +254276 +254277 +254278 +254279 +254304 +254305 +254306 +254307 +254308 +254309 +254310 +254311 +254336 +254337 +254338 +254339 +254340 +254341 +254342 +254343 +254368 +254369 +254370 +254371 +254372 +254373 +254374 +254375 +254400 +254401 +254402 +254403 +254404 +254405 +254406 +254407 +254432 +254433 +254434 +254435 +254436 +254437 +254438 +254439 +254464 +254465 +254466 +254467 +254468 +254469 +254470 +254471 +254496 +254497 +254498 +254499 +254500 +254501 +254502 +254503 +254528 +254529 +254530 +254531 +254532 +254533 +254534 +254535 +254560 +254561 +254562 +254563 +254564 +254565 +254566 +254567 +254592 +254593 +254594 +254595 +254596 +254597 +254598 +254599 +254624 +254625 +254626 +254627 +254628 +254629 +254630 +254631 +254656 +254657 +254658 +254659 +254660 +254661 +254662 +254663 +254688 +254689 +254690 +254691 +254692 +254693 +254694 +254695 +254720 +254721 +254722 +254723 +254724 +254725 +254726 +254727 +254752 +254753 +254754 +254755 +254756 +254757 +254758 +254759 +254784 +254785 +254786 +254787 +254788 +254789 +254790 +254791 +254816 +254817 +254818 +254819 +254820 +254821 +254822 +254823 +254848 +254849 +254850 +254851 +254852 +254853 +254854 +254855 +254880 +254881 +254882 +254883 +254884 +254885 +254886 +254887 +254912 +254913 +254914 +254915 +254916 +254917 +254918 +254919 +254944 +254945 +254946 +254947 +254948 +254949 +254950 +254951 +254976 +254977 +254978 +254979 +254980 +254981 +254982 +254983 +255008 +255009 +255010 +255011 +255012 +255013 +255014 +255015 +255040 +255041 +255042 +255043 +255044 +255045 +255046 +255047 +255072 +255073 +255074 +255075 +255076 +255077 +255078 +255079 +255104 +255105 +255106 +255107 +255108 +255109 +255110 +255111 +255136 +255137 +255138 +255139 +255140 +255141 +255142 +255143 +255168 +255169 +255170 +255171 +255172 +255173 +255174 +255175 +255200 +255201 +255202 +255203 +255204 +255205 +255206 +255207 +255232 +255233 +255234 +255235 +255236 +255237 +255238 +255239 +255264 +255265 +255266 +255267 +255268 +255269 +255270 +255271 +255296 +255297 +255298 +255299 +255300 +255301 +255302 +255303 +255328 +255329 +255330 +255331 +255332 +255333 +255334 +255335 +255360 +255361 +255362 +255363 +255364 +255365 +255366 +255367 +255392 +255393 +255394 +255395 +255396 +255397 +255398 +255399 +255424 +255425 +255426 +255427 +255428 +255429 +255430 +255431 +255456 +255457 +255458 +255459 +255460 +255461 +255462 +255463 +255488 +255489 +255490 +255491 +255492 +255493 +255494 +255495 +255520 +255521 +255522 +255523 +255524 +255525 +255526 +255527 +255552 +255553 +255554 +255555 +255556 +255557 +255558 +255559 +255584 +255585 +255586 +255587 +255588 +255589 +255590 +255591 +255616 +255617 +255618 +255619 +255620 +255621 +255622 +255623 +255648 +255649 +255650 +255651 +255652 +255653 +255654 +255655 +255680 +255681 +255682 +255683 +255684 +255685 +255686 +255687 +255712 +255713 +255714 +255715 +255716 +255717 +255718 +255719 +255744 +255745 +255746 +255747 +255748 +255749 +255750 +255751 +255776 +255777 +255778 +255779 +255780 +255781 +255782 +255783 +255808 +255809 +255810 +255811 +255812 +255813 +255814 +255815 +255840 +255841 +255842 +255843 +255844 +255845 +255846 +255847 +255872 +255873 +255874 +255875 +255876 +255877 +255878 +255879 +255904 +255905 +255906 +255907 +255908 +255909 +255910 +255911 +255936 +255937 +255938 +255939 +255940 +255941 +255942 +255943 +255968 +255969 +255970 +255971 +255972 +255973 +255974 +255975 +256000 +256001 +256002 +256003 +256004 +256005 +256006 +256007 +256032 +256033 +256034 +256035 +256036 +256037 +256038 +256039 +256064 +256065 +256066 +256067 +256068 +256069 +256070 +256071 +256096 +256097 +256098 +256099 +256100 +256101 +256102 +256103 +256128 +256129 +256130 +256131 +256132 +256133 +256134 +256135 +256160 +256161 +256162 +256163 +256164 +256165 +256166 +256167 +256192 +256193 +256194 +256195 +256196 +256197 +256198 +256199 +256224 +256225 +256226 +256227 +256228 +256229 +256230 +256231 +256256 +256257 +256258 +256259 +256260 +256261 +256262 +256263 +256288 +256289 +256290 +256291 +256292 +256293 +256294 +256295 +256320 +256321 +256322 +256323 +256324 +256325 +256326 +256327 +256352 +256353 +256354 +256355 +256356 +256357 +256358 +256359 +256384 +256385 +256386 +256387 +256388 +256389 +256390 +256391 +256416 +256417 +256418 +256419 +256420 +256421 +256422 +256423 +256448 +256449 +256450 +256451 +256452 +256453 +256454 +256455 +256480 +256481 +256482 +256483 +256484 +256485 +256486 +256487 +256512 +256513 +256514 +256515 +256516 +256517 +256518 +256519 +256544 +256545 +256546 +256547 +256548 +256549 +256550 +256551 +256576 +256577 +256578 +256579 +256580 +256581 +256582 +256583 +256608 +256609 +256610 +256611 +256612 +256613 +256614 +256615 +256640 +256641 +256642 +256643 +256644 +256645 +256646 +256647 +256672 +256673 +256674 +256675 +256676 +256677 +256678 +256679 +256704 +256705 +256706 +256707 +256708 +256709 +256710 +256711 +256736 +256737 +256738 +256739 +256740 +256741 +256742 +256743 +256768 +256769 +256770 +256771 +256772 +256773 +256774 +256775 +256800 +256801 +256802 +256803 +256804 +256805 +256806 +256807 +256832 +256833 +256834 +256835 +256836 +256837 +256838 +256839 +256864 +256865 +256866 +256867 +256868 +256869 +256870 +256871 +256896 +256897 +256898 +256899 +256900 +256901 +256902 +256903 +256928 +256929 +256930 +256931 +256932 +256933 +256934 +256935 +256960 +256961 +256962 +256963 +256964 +256965 +256966 +256967 +256992 +256993 +256994 +256995 +256996 +256997 +256998 +256999 +257024 +257025 +257026 +257027 +257028 +257029 +257030 +257031 +257056 +257057 +257058 +257059 +257060 +257061 +257062 +257063 +257088 +257089 +257090 +257091 +257092 +257093 +257094 +257095 +257120 +257121 +257122 +257123 +257124 +257125 +257126 +257127 +257152 +257153 +257154 +257155 +257156 +257157 +257158 +257159 +257184 +257185 +257186 +257187 +257188 +257189 +257190 +257191 +257216 +257217 +257218 +257219 +257220 +257221 +257222 +257223 +257248 +257249 +257250 +257251 +257252 +257253 +257254 +257255 +257280 +257281 +257282 +257283 +257284 +257285 +257286 +257287 +257312 +257313 +257314 +257315 +257316 +257317 +257318 +257319 +257344 +257345 +257346 +257347 +257348 +257349 +257350 +257351 +257376 +257377 +257378 +257379 +257380 +257381 +257382 +257383 +257408 +257409 +257410 +257411 +257412 +257413 +257414 +257415 +257440 +257441 +257442 +257443 +257444 +257445 +257446 +257447 +257472 +257473 +257474 +257475 +257476 +257477 +257478 +257479 +257504 +257505 +257506 +257507 +257508 +257509 +257510 +257511 +257536 +257537 +257538 +257539 +257540 +257541 +257542 +257543 +257568 +257569 +257570 +257571 +257572 +257573 +257574 +257575 +257600 +257601 +257602 +257603 +257604 +257605 +257606 +257607 +257632 +257633 +257634 +257635 +257636 +257637 +257638 +257639 +257664 +257665 +257666 +257667 +257668 +257669 +257670 +257671 +257696 +257697 +257698 +257699 +257700 +257701 +257702 +257703 +257728 +257729 +257730 +257731 +257732 +257733 +257734 +257735 +257760 +257761 +257762 +257763 +257764 +257765 +257766 +257767 +257792 +257793 +257794 +257795 +257796 +257797 +257798 +257799 +257824 +257825 +257826 +257827 +257828 +257829 +257830 +257831 +257856 +257857 +257858 +257859 +257860 +257861 +257862 +257863 +257888 +257889 +257890 +257891 +257892 +257893 +257894 +257895 +257920 +257921 +257922 +257923 +257924 +257925 +257926 +257927 +257952 +257953 +257954 +257955 +257956 +257957 +257958 +257959 +257984 +257985 +257986 +257987 +257988 +257989 +257990 +257991 +258016 +258017 +258018 +258019 +258020 +258021 +258022 +258023 +258048 +258049 +258050 +258051 +258052 +258053 +258054 +258055 +258080 +258081 +258082 +258083 +258084 +258085 +258086 +258087 +258112 +258113 +258114 +258115 +258116 +258117 +258118 +258119 +258144 +258145 +258146 +258147 +258148 +258149 +258150 +258151 +258176 +258177 +258178 +258179 +258180 +258181 +258182 +258183 +258208 +258209 +258210 +258211 +258212 +258213 +258214 +258215 +258240 +258241 +258242 +258243 +258244 +258245 +258246 +258247 +258272 +258273 +258274 +258275 +258276 +258277 +258278 +258279 +258304 +258305 +258306 +258307 +258308 +258309 +258310 +258311 +258336 +258337 +258338 +258339 +258340 +258341 +258342 +258343 +258368 +258369 +258370 +258371 +258372 +258373 +258374 +258375 +258400 +258401 +258402 +258403 +258404 +258405 +258406 +258407 +258432 +258433 +258434 +258435 +258436 +258437 +258438 +258439 +258464 +258465 +258466 +258467 +258468 +258469 +258470 +258471 +258496 +258497 +258498 +258499 +258500 +258501 +258502 +258503 +258528 +258529 +258530 +258531 +258532 +258533 +258534 +258535 +258560 +258561 +258562 +258563 +258564 +258565 +258566 +258567 +258592 +258593 +258594 +258595 +258596 +258597 +258598 +258599 +258624 +258625 +258626 +258627 +258628 +258629 +258630 +258631 +258656 +258657 +258658 +258659 +258660 +258661 +258662 +258663 +258688 +258689 +258690 +258691 +258692 +258693 +258694 +258695 +258720 +258721 +258722 +258723 +258724 +258725 +258726 +258727 +258752 +258753 +258754 +258755 +258756 +258757 +258758 +258759 +258784 +258785 +258786 +258787 +258788 +258789 +258790 +258791 +258816 +258817 +258818 +258819 +258820 +258821 +258822 +258823 +258848 +258849 +258850 +258851 +258852 +258853 +258854 +258855 +258880 +258881 +258882 +258883 +258884 +258885 +258886 +258887 +258912 +258913 +258914 +258915 +258916 +258917 +258918 +258919 +258944 +258945 +258946 +258947 +258948 +258949 +258950 +258951 +258976 +258977 +258978 +258979 +258980 +258981 +258982 +258983 +259008 +259009 +259010 +259011 +259012 +259013 +259014 +259015 +259040 +259041 +259042 +259043 +259044 +259045 +259046 +259047 +259072 +259073 +259074 +259075 +259076 +259077 +259078 +259079 +259104 +259105 +259106 +259107 +259108 +259109 +259110 +259111 +259136 +259137 +259138 +259139 +259140 +259141 +259142 +259143 +259168 +259169 +259170 +259171 +259172 +259173 +259174 +259175 +259200 +259201 +259202 +259203 +259204 +259205 +259206 +259207 +259232 +259233 +259234 +259235 +259236 +259237 +259238 +259239 +259264 +259265 +259266 +259267 +259268 +259269 +259270 +259271 +259296 +259297 +259298 +259299 +259300 +259301 +259302 +259303 +259328 +259329 +259330 +259331 +259332 +259333 +259334 +259335 +259360 +259361 +259362 +259363 +259364 +259365 +259366 +259367 +259392 +259393 +259394 +259395 +259396 +259397 +259398 +259399 +259424 +259425 +259426 +259427 +259428 +259429 +259430 +259431 +259456 +259457 +259458 +259459 +259460 +259461 +259462 +259463 +259488 +259489 +259490 +259491 +259492 +259493 +259494 +259495 +259520 +259521 +259522 +259523 +259524 +259525 +259526 +259527 +259552 +259553 +259554 +259555 +259556 +259557 +259558 +259559 +259584 +259585 +259586 +259587 +259588 +259589 +259590 +259591 +259616 +259617 +259618 +259619 +259620 +259621 +259622 +259623 +259648 +259649 +259650 +259651 +259652 +259653 +259654 +259655 +259680 +259681 +259682 +259683 +259684 +259685 +259686 +259687 +259712 +259713 +259714 +259715 +259716 +259717 +259718 +259719 +259744 +259745 +259746 +259747 +259748 +259749 +259750 +259751 +259776 +259777 +259778 +259779 +259780 +259781 +259782 +259783 +259808 +259809 +259810 +259811 +259812 +259813 +259814 +259815 +259840 +259841 +259842 +259843 +259844 +259845 +259846 +259847 +259872 +259873 +259874 +259875 +259876 +259877 +259878 +259879 +259904 +259905 +259906 +259907 +259908 +259909 +259910 +259911 +259936 +259937 +259938 +259939 +259940 +259941 +259942 +259943 +259968 +259969 +259970 +259971 +259972 +259973 +259974 +259975 +260000 +260001 +260002 +260003 +260004 +260005 +260006 +260007 +260032 +260033 +260034 +260035 +260036 +260037 +260038 +260039 +260064 +260065 +260066 +260067 +260068 +260069 +260070 +260071 +260096 +260097 +260098 +260099 +260100 +260101 +260102 +260103 +260128 +260129 +260130 +260131 +260132 +260133 +260134 +260135 +260160 +260161 +260162 +260163 +260164 +260165 +260166 +260167 +260192 +260193 +260194 +260195 +260196 +260197 +260198 +260199 +260224 +260225 +260226 +260227 +260228 +260229 +260230 +260231 +260256 +260257 +260258 +260259 +260260 +260261 +260262 +260263 +260288 +260289 +260290 +260291 +260292 +260293 +260294 +260295 +260320 +260321 +260322 +260323 +260324 +260325 +260326 +260327 +260352 +260353 +260354 +260355 +260356 +260357 +260358 +260359 +260384 +260385 +260386 +260387 +260388 +260389 +260390 +260391 +260416 +260417 +260418 +260419 +260420 +260421 +260422 +260423 +260448 +260449 +260450 +260451 +260452 +260453 +260454 +260455 +260480 +260481 +260482 +260483 +260484 +260485 +260486 +260487 +260512 +260513 +260514 +260515 +260516 +260517 +260518 +260519 +260544 +260545 +260546 +260547 +260548 +260549 +260550 +260551 +260576 +260577 +260578 +260579 +260580 +260581 +260582 +260583 +260608 +260609 +260610 +260611 +260612 +260613 +260614 +260615 +260640 +260641 +260642 +260643 +260644 +260645 +260646 +260647 +260672 +260673 +260674 +260675 +260676 +260677 +260678 +260679 +260704 +260705 +260706 +260707 +260708 +260709 +260710 +260711 +260736 +260737 +260738 +260739 +260740 +260741 +260742 +260743 +260768 +260769 +260770 +260771 +260772 +260773 +260774 +260775 +260800 +260801 +260802 +260803 +260804 +260805 +260806 +260807 +260832 +260833 +260834 +260835 +260836 +260837 +260838 +260839 +260864 +260865 +260866 +260867 +260868 +260869 +260870 +260871 +260896 +260897 +260898 +260899 +260900 +260901 +260902 +260903 +260928 +260929 +260930 +260931 +260932 +260933 +260934 +260935 +260960 +260961 +260962 +260963 +260964 +260965 +260966 +260967 +260992 +260993 +260994 +260995 +260996 +260997 +260998 +260999 +261024 +261025 +261026 +261027 +261028 +261029 +261030 +261031 +261056 +261057 +261058 +261059 +261060 +261061 +261062 +261063 +261088 +261089 +261090 +261091 +261092 +261093 +261094 +261095 +261120 +261121 +261122 +261123 +261124 +261125 +261126 +261127 +261152 +261153 +261154 +261155 +261156 +261157 +261158 +261159 +261184 +261185 +261186 +261187 +261188 +261189 +261190 +261191 +261216 +261217 +261218 +261219 +261220 +261221 +261222 +261223 +261248 +261249 +261250 +261251 +261252 +261253 +261254 +261255 +261280 +261281 +261282 +261283 +261284 +261285 +261286 +261287 +261312 +261313 +261314 +261315 +261316 +261317 +261318 +261319 +261344 +261345 +261346 +261347 +261348 +261349 +261350 +261351 +261376 +261377 +261378 +261379 +261380 +261381 +261382 +261383 +261408 +261409 +261410 +261411 +261412 +261413 +261414 +261415 +261440 +261441 +261442 +261443 +261444 +261445 +261446 +261447 +261472 +261473 +261474 +261475 +261476 +261477 +261478 +261479 +261504 +261505 +261506 +261507 +261508 +261509 +261510 +261511 +261536 +261537 +261538 +261539 +261540 +261541 +261542 +261543 +261568 +261569 +261570 +261571 +261572 +261573 +261574 +261575 +261600 +261601 +261602 +261603 +261604 +261605 +261606 +261607 +261632 +261633 +261634 +261635 +261636 +261637 +261638 +261639 +261664 +261665 +261666 +261667 +261668 +261669 +261670 +261671 +261696 +261697 +261698 +261699 +261700 +261701 +261702 +261703 +261728 +261729 +261730 +261731 +261732 +261733 +261734 +261735 +261760 +261761 +261762 +261763 +261764 +261765 +261766 +261767 +261792 +261793 +261794 +261795 +261796 +261797 +261798 +261799 +261824 +261825 +261826 +261827 +261828 +261829 +261830 +261831 +261856 +261857 +261858 +261859 +261860 +261861 +261862 +261863 +261888 +261889 +261890 +261891 +261892 +261893 +261894 +261895 +261920 +261921 +261922 +261923 +261924 +261925 +261926 +261927 +261952 +261953 +261954 +261955 +261956 +261957 +261958 +261959 +261984 +261985 +261986 +261987 +261988 +261989 +261990 +261991 +262016 +262017 +262018 +262019 +262020 +262021 +262022 +262023 +262048 +262049 +262050 +262051 +262052 +262053 +262054 +262055 +262080 +262081 +262082 +262083 +262084 +262085 +262086 +262087 +262112 +262113 +262114 +262115 +262116 +262117 +262118 +262119 +262144 +262145 +262146 +262147 +262148 +262149 +262150 +262151 +262176 +262177 +262178 +262179 +262180 +262181 +262182 +262183 +262208 +262209 +262210 +262211 +262212 +262213 +262214 +262215 +262240 +262241 +262242 +262243 +262244 +262245 +262246 +262247 +262272 +262273 +262274 +262275 +262276 +262277 +262278 +262279 +262304 +262305 +262306 +262307 +262308 +262309 +262310 +262311 +262336 +262337 +262338 +262339 +262340 +262341 +262342 +262343 +262368 +262369 +262370 +262371 +262372 +262373 +262374 +262375 +262400 +262401 +262402 +262403 +262404 +262405 +262406 +262407 +262432 +262433 +262434 +262435 +262436 +262437 +262438 +262439 +262464 +262465 +262466 +262467 +262468 +262469 +262470 +262471 +262496 +262497 +262498 +262499 +262500 +262501 +262502 +262503 +262528 +262529 +262530 +262531 +262532 +262533 +262534 +262535 +262560 +262561 +262562 +262563 +262564 +262565 +262566 +262567 +262592 +262593 +262594 +262595 +262596 +262597 +262598 +262599 +262624 +262625 +262626 +262627 +262628 +262629 +262630 +262631 +262656 +262657 +262658 +262659 +262660 +262661 +262662 +262663 +262688 +262689 +262690 +262691 +262692 +262693 +262694 +262695 +262720 +262721 +262722 +262723 +262724 +262725 +262726 +262727 +262752 +262753 +262754 +262755 +262756 +262757 +262758 +262759 +262784 +262785 +262786 +262787 +262788 +262789 +262790 +262791 +262816 +262817 +262818 +262819 +262820 +262821 +262822 +262823 +262848 +262849 +262850 +262851 +262852 +262853 +262854 +262855 +262880 +262881 +262882 +262883 +262884 +262885 +262886 +262887 +262912 +262913 +262914 +262915 +262916 +262917 +262918 +262919 +262944 +262945 +262946 +262947 +262948 +262949 +262950 +262951 +262976 +262977 +262978 +262979 +262980 +262981 +262982 +262983 +263008 +263009 +263010 +263011 +263012 +263013 +263014 +263015 +263040 +263041 +263042 +263043 +263044 +263045 +263046 +263047 +263072 +263073 +263074 +263075 +263076 +263077 +263078 +263079 +263104 +263105 +263106 +263107 +263108 +263109 +263110 +263111 +263136 +263137 +263138 +263139 +263140 +263141 +263142 +263143 +263168 +263169 +263170 +263171 +263172 +263173 +263174 +263175 +263200 +263201 +263202 +263203 +263204 +263205 +263206 +263207 +263232 +263233 +263234 +263235 +263236 +263237 +263238 +263239 +263264 +263265 +263266 +263267 +263268 +263269 +263270 +263271 +263296 +263297 +263298 +263299 +263300 +263301 +263302 +263303 +263328 +263329 +263330 +263331 +263332 +263333 +263334 +263335 +263360 +263361 +263362 +263363 +263364 +263365 +263366 +263367 +263392 +263393 +263394 +263395 +263396 +263397 +263398 +263399 +263424 +263425 +263426 +263427 +263428 +263429 +263430 +263431 +263456 +263457 +263458 +263459 +263460 +263461 +263462 +263463 +263488 +263489 +263490 +263491 +263492 +263493 +263494 +263495 +263520 +263521 +263522 +263523 +263524 +263525 +263526 +263527 +263552 +263553 +263554 +263555 +263556 +263557 +263558 +263559 +263584 +263585 +263586 +263587 +263588 +263589 +263590 +263591 +263616 +263617 +263618 +263619 +263620 +263621 +263622 +263623 +263648 +263649 +263650 +263651 +263652 +263653 +263654 +263655 +263680 +263681 +263682 +263683 +263684 +263685 +263686 +263687 +263712 +263713 +263714 +263715 +263716 +263717 +263718 +263719 +263744 +263745 +263746 +263747 +263748 +263749 +263750 +263751 +263776 +263777 +263778 +263779 +263780 +263781 +263782 +263783 +263808 +263809 +263810 +263811 +263812 +263813 +263814 +263815 +263840 +263841 +263842 +263843 +263844 +263845 +263846 +263847 +263872 +263873 +263874 +263875 +263876 +263877 +263878 +263879 +263904 +263905 +263906 +263907 +263908 +263909 +263910 +263911 +263936 +263937 +263938 +263939 +263940 +263941 +263942 +263943 +263968 +263969 +263970 +263971 +263972 +263973 +263974 +263975 +264000 +264001 +264002 +264003 +264004 +264005 +264006 +264007 +264032 +264033 +264034 +264035 +264036 +264037 +264038 +264039 +264064 +264065 +264066 +264067 +264068 +264069 +264070 +264071 +264096 +264097 +264098 +264099 +264100 +264101 +264102 +264103 +264128 +264129 +264130 +264131 +264132 +264133 +264134 +264135 +264160 +264161 +264162 +264163 +264164 +264165 +264166 +264167 +264192 +264193 +264194 +264195 +264196 +264197 +264198 +264199 +264224 +264225 +264226 +264227 +264228 +264229 +264230 +264231 +264256 +264257 +264258 +264259 +264260 +264261 +264262 +264263 +264288 +264289 +264290 +264291 +264292 +264293 +264294 +264295 +264320 +264321 +264322 +264323 +264324 +264325 +264326 +264327 +264352 +264353 +264354 +264355 +264356 +264357 +264358 +264359 +264384 +264385 +264386 +264387 +264388 +264389 +264390 +264391 +264416 +264417 +264418 +264419 +264420 +264421 +264422 +264423 +264448 +264449 +264450 +264451 +264452 +264453 +264454 +264455 +264480 +264481 +264482 +264483 +264484 +264485 +264486 +264487 +264512 +264513 +264514 +264515 +264516 +264517 +264518 +264519 +264544 +264545 +264546 +264547 +264548 +264549 +264550 +264551 +264576 +264577 +264578 +264579 +264580 +264581 +264582 +264583 +264608 +264609 +264610 +264611 +264612 +264613 +264614 +264615 +264640 +264641 +264642 +264643 +264644 +264645 +264646 +264647 +264672 +264673 +264674 +264675 +264676 +264677 +264678 +264679 +264704 +264705 +264706 +264707 +264708 +264709 +264710 +264711 +264736 +264737 +264738 +264739 +264740 +264741 +264742 +264743 +264768 +264769 +264770 +264771 +264772 +264773 +264774 +264775 +264800 +264801 +264802 +264803 +264804 +264805 +264806 +264807 +264832 +264833 +264834 +264835 +264836 +264837 +264838 +264839 +264864 +264865 +264866 +264867 +264868 +264869 +264870 +264871 +264896 +264897 +264898 +264899 +264900 +264901 +264902 +264903 +264928 +264929 +264930 +264931 +264932 +264933 +264934 +264935 +264960 +264961 +264962 +264963 +264964 +264965 +264966 +264967 +264992 +264993 +264994 +264995 +264996 +264997 +264998 +264999 +265024 +265025 +265026 +265027 +265028 +265029 +265030 +265031 +265056 +265057 +265058 +265059 +265060 +265061 +265062 +265063 +265088 +265089 +265090 +265091 +265092 +265093 +265094 +265095 +265120 +265121 +265122 +265123 +265124 +265125 +265126 +265127 +265152 +265153 +265154 +265155 +265156 +265157 +265158 +265159 +265184 +265185 +265186 +265187 +265188 +265189 +265190 +265191 +265216 +265217 +265218 +265219 +265220 +265221 +265222 +265223 +265248 +265249 +265250 +265251 +265252 +265253 +265254 +265255 +265280 +265281 +265282 +265283 +265284 +265285 +265286 +265287 +265312 +265313 +265314 +265315 +265316 +265317 +265318 +265319 +265344 +265345 +265346 +265347 +265348 +265349 +265350 +265351 +265376 +265377 +265378 +265379 +265380 +265381 +265382 +265383 +265408 +265409 +265410 +265411 +265412 +265413 +265414 +265415 +265440 +265441 +265442 +265443 +265444 +265445 +265446 +265447 +265472 +265473 +265474 +265475 +265476 +265477 +265478 +265479 +265504 +265505 +265506 +265507 +265508 +265509 +265510 +265511 +265536 +265537 +265538 +265539 +265540 +265541 +265542 +265543 +265568 +265569 +265570 +265571 +265572 +265573 +265574 +265575 +265600 +265601 +265602 +265603 +265604 +265605 +265606 +265607 +265632 +265633 +265634 +265635 +265636 +265637 +265638 +265639 +265664 +265665 +265666 +265667 +265668 +265669 +265670 +265671 +265696 +265697 +265698 +265699 +265700 +265701 +265702 +265703 +265728 +265729 +265730 +265731 +265732 +265733 +265734 +265735 +265760 +265761 +265762 +265763 +265764 +265765 +265766 +265767 +265792 +265793 +265794 +265795 +265796 +265797 +265798 +265799 +265824 +265825 +265826 +265827 +265828 +265829 +265830 +265831 +265856 +265857 +265858 +265859 +265860 +265861 +265862 +265863 +265888 +265889 +265890 +265891 +265892 +265893 +265894 +265895 +265920 +265921 +265922 +265923 +265924 +265925 +265926 +265927 +265952 +265953 +265954 +265955 +265956 +265957 +265958 +265959 +265984 +265985 +265986 +265987 +265988 +265989 +265990 +265991 +266016 +266017 +266018 +266019 +266020 +266021 +266022 +266023 +266048 +266049 +266050 +266051 +266052 +266053 +266054 +266055 +266080 +266081 +266082 +266083 +266084 +266085 +266086 +266087 +266112 +266113 +266114 +266115 +266116 +266117 +266118 +266119 +266144 +266145 +266146 +266147 +266148 +266149 +266150 +266151 +266176 +266177 +266178 +266179 +266180 +266181 +266182 +266183 +266208 +266209 +266210 +266211 +266212 +266213 +266214 +266215 +266240 +266241 +266242 +266243 +266244 +266245 +266246 +266247 +266272 +266273 +266274 +266275 +266276 +266277 +266278 +266279 +266304 +266305 +266306 +266307 +266308 +266309 +266310 +266311 +266336 +266337 +266338 +266339 +266340 +266341 +266342 +266343 +266368 +266369 +266370 +266371 +266372 +266373 +266374 +266375 +266400 +266401 +266402 +266403 +266404 +266405 +266406 +266407 +266432 +266433 +266434 +266435 +266436 +266437 +266438 +266439 +266464 +266465 +266466 +266467 +266468 +266469 +266470 +266471 +266496 +266497 +266498 +266499 +266500 +266501 +266502 +266503 +266528 +266529 +266530 +266531 +266532 +266533 +266534 +266535 +266560 +266561 +266562 +266563 +266564 +266565 +266566 +266567 +266592 +266593 +266594 +266595 +266596 +266597 +266598 +266599 +266624 +266625 +266626 +266627 +266628 +266629 +266630 +266631 +266656 +266657 +266658 +266659 +266660 +266661 +266662 +266663 +266688 +266689 +266690 +266691 +266692 +266693 +266694 +266695 +266720 +266721 +266722 +266723 +266724 +266725 +266726 +266727 +266752 +266753 +266754 +266755 +266756 +266757 +266758 +266759 +266784 +266785 +266786 +266787 +266788 +266789 +266790 +266791 +266816 +266817 +266818 +266819 +266820 +266821 +266822 +266823 +266848 +266849 +266850 +266851 +266852 +266853 +266854 +266855 +266880 +266881 +266882 +266883 +266884 +266885 +266886 +266887 +266912 +266913 +266914 +266915 +266916 +266917 +266918 +266919 +266944 +266945 +266946 +266947 +266948 +266949 +266950 +266951 +266976 +266977 +266978 +266979 +266980 +266981 +266982 +266983 +267008 +267009 +267010 +267011 +267012 +267013 +267014 +267015 +267040 +267041 +267042 +267043 +267044 +267045 +267046 +267047 +267072 +267073 +267074 +267075 +267076 +267077 +267078 +267079 +267104 +267105 +267106 +267107 +267108 +267109 +267110 +267111 +267136 +267137 +267138 +267139 +267140 +267141 +267142 +267143 +267168 +267169 +267170 +267171 +267172 +267173 +267174 +267175 +267200 +267201 +267202 +267203 +267204 +267205 +267206 +267207 +267232 +267233 +267234 +267235 +267236 +267237 +267238 +267239 +267264 +267265 +267266 +267267 +267268 +267269 +267270 +267271 +267296 +267297 +267298 +267299 +267300 +267301 +267302 +267303 +267328 +267329 +267330 +267331 +267332 +267333 +267334 +267335 +267360 +267361 +267362 +267363 +267364 +267365 +267366 +267367 +267392 +267393 +267394 +267395 +267396 +267397 +267398 +267399 +267424 +267425 +267426 +267427 +267428 +267429 +267430 +267431 +267456 +267457 +267458 +267459 +267460 +267461 +267462 +267463 +267488 +267489 +267490 +267491 +267492 +267493 +267494 +267495 +267520 +267521 +267522 +267523 +267524 +267525 +267526 +267527 +267552 +267553 +267554 +267555 +267556 +267557 +267558 +267559 +267584 +267585 +267586 +267587 +267588 +267589 +267590 +267591 +267616 +267617 +267618 +267619 +267620 +267621 +267622 +267623 +267648 +267649 +267650 +267651 +267652 +267653 +267654 +267655 +267680 +267681 +267682 +267683 +267684 +267685 +267686 +267687 +267712 +267713 +267714 +267715 +267716 +267717 +267718 +267719 +267744 +267745 +267746 +267747 +267748 +267749 +267750 +267751 +267776 +267777 +267778 +267779 +267780 +267781 +267782 +267783 +267808 +267809 +267810 +267811 +267812 +267813 +267814 +267815 +267840 +267841 +267842 +267843 +267844 +267845 +267846 +267847 +267872 +267873 +267874 +267875 +267876 +267877 +267878 +267879 +267904 +267905 +267906 +267907 +267908 +267909 +267910 +267911 +267936 +267937 +267938 +267939 +267940 +267941 +267942 +267943 +267968 +267969 +267970 +267971 +267972 +267973 +267974 +267975 +268000 +268001 +268002 +268003 +268004 +268005 +268006 +268007 +268032 +268033 +268034 +268035 +268036 +268037 +268038 +268039 +268064 +268065 +268066 +268067 +268068 +268069 +268070 +268071 +268096 +268097 +268098 +268099 +268100 +268101 +268102 +268103 +268128 +268129 +268130 +268131 +268132 +268133 +268134 +268135 +268160 +268161 +268162 +268163 +268164 +268165 +268166 +268167 +268192 +268193 +268194 +268195 +268196 +268197 +268198 +268199 +268224 +268225 +268226 +268227 +268228 +268229 +268230 +268231 +268256 +268257 +268258 +268259 +268260 +268261 +268262 +268263 +268288 +268289 +268290 +268291 +268292 +268293 +268294 +268295 +268320 +268321 +268322 +268323 +268324 +268325 +268326 +268327 +268352 +268353 +268354 +268355 +268356 +268357 +268358 +268359 +268384 +268385 +268386 +268387 +268388 +268389 +268390 +268391 +268416 +268417 +268418 +268419 +268420 +268421 +268422 +268423 +268448 +268449 +268450 +268451 +268452 +268453 +268454 +268455 +268480 +268481 +268482 +268483 +268484 +268485 +268486 +268487 +268512 +268513 +268514 +268515 +268516 +268517 +268518 +268519 +268544 +268545 +268546 +268547 +268548 +268549 +268550 +268551 +268576 +268577 +268578 +268579 +268580 +268581 +268582 +268583 +268608 +268609 +268610 +268611 +268612 +268613 +268614 +268615 +268640 +268641 +268642 +268643 +268644 +268645 +268646 +268647 +268672 +268673 +268674 +268675 +268676 +268677 +268678 +268679 +268704 +268705 +268706 +268707 +268708 +268709 +268710 +268711 +268736 +268737 +268738 +268739 +268740 +268741 +268742 +268743 +268768 +268769 +268770 +268771 +268772 +268773 +268774 +268775 +268800 +268801 +268802 +268803 +268804 +268805 +268806 +268807 +268832 +268833 +268834 +268835 +268836 +268837 +268838 +268839 +268864 +268865 +268866 +268867 +268868 +268869 +268870 +268871 +268896 +268897 +268898 +268899 +268900 +268901 +268902 +268903 +268928 +268929 +268930 +268931 +268932 +268933 +268934 +268935 +268960 +268961 +268962 +268963 +268964 +268965 +268966 +268967 +268992 +268993 +268994 +268995 +268996 +268997 +268998 +268999 +269024 +269025 +269026 +269027 +269028 +269029 +269030 +269031 +269056 +269057 +269058 +269059 +269060 +269061 +269062 +269063 +269088 +269089 +269090 +269091 +269092 +269093 +269094 +269095 +269120 +269121 +269122 +269123 +269124 +269125 +269126 +269127 +269152 +269153 +269154 +269155 +269156 +269157 +269158 +269159 +269184 +269185 +269186 +269187 +269188 +269189 +269190 +269191 +269216 +269217 +269218 +269219 +269220 +269221 +269222 +269223 +269248 +269249 +269250 +269251 +269252 +269253 +269254 +269255 +269280 +269281 +269282 +269283 +269284 +269285 +269286 +269287 +269312 +269313 +269314 +269315 +269316 +269317 +269318 +269319 +269344 +269345 +269346 +269347 +269348 +269349 +269350 +269351 +269376 +269377 +269378 +269379 +269380 +269381 +269382 +269383 +269408 +269409 +269410 +269411 +269412 +269413 +269414 +269415 +269440 +269441 +269442 +269443 +269444 +269445 +269446 +269447 +269472 +269473 +269474 +269475 +269476 +269477 +269478 +269479 +269504 +269505 +269506 +269507 +269508 +269509 +269510 +269511 +269536 +269537 +269538 +269539 +269540 +269541 +269542 +269543 +269568 +269569 +269570 +269571 +269572 +269573 +269574 +269575 +269600 +269601 +269602 +269603 +269604 +269605 +269606 +269607 +269632 +269633 +269634 +269635 +269636 +269637 +269638 +269639 +269664 +269665 +269666 +269667 +269668 +269669 +269670 +269671 +269696 +269697 +269698 +269699 +269700 +269701 +269702 +269703 +269728 +269729 +269730 +269731 +269732 +269733 +269734 +269735 +269760 +269761 +269762 +269763 +269764 +269765 +269766 +269767 +269792 +269793 +269794 +269795 +269796 +269797 +269798 +269799 +269824 +269825 +269826 +269827 +269828 +269829 +269830 +269831 +269856 +269857 +269858 +269859 +269860 +269861 +269862 +269863 +269888 +269889 +269890 +269891 +269892 +269893 +269894 +269895 +269920 +269921 +269922 +269923 +269924 +269925 +269926 +269927 +269952 +269953 +269954 +269955 +269956 +269957 +269958 +269959 +269984 +269985 +269986 +269987 +269988 +269989 +269990 +269991 +270016 +270017 +270018 +270019 +270020 +270021 +270022 +270023 +270048 +270049 +270050 +270051 +270052 +270053 +270054 +270055 +270080 +270081 +270082 +270083 +270084 +270085 +270086 +270087 +270112 +270113 +270114 +270115 +270116 +270117 +270118 +270119 +270144 +270145 +270146 +270147 +270148 +270149 +270150 +270151 +270176 +270177 +270178 +270179 +270180 +270181 +270182 +270183 +270208 +270209 +270210 +270211 +270212 +270213 +270214 +270215 +270240 +270241 +270242 +270243 +270244 +270245 +270246 +270247 +270272 +270273 +270274 +270275 +270276 +270277 +270278 +270279 +270304 +270305 +270306 +270307 +270308 +270309 +270310 +270311 +270336 +270337 +270338 +270339 +270340 +270341 +270342 +270343 +270368 +270369 +270370 +270371 +270372 +270373 +270374 +270375 +270400 +270401 +270402 +270403 +270404 +270405 +270406 +270407 +270432 +270433 +270434 +270435 +270436 +270437 +270438 +270439 +270464 +270465 +270466 +270467 +270468 +270469 +270470 +270471 +270496 +270497 +270498 +270499 +270500 +270501 +270502 +270503 +270528 +270529 +270530 +270531 +270532 +270533 +270534 +270535 +270560 +270561 +270562 +270563 +270564 +270565 +270566 +270567 +270592 +270593 +270594 +270595 +270596 +270597 +270598 +270599 +270624 +270625 +270626 +270627 +270628 +270629 +270630 +270631 +270656 +270657 +270658 +270659 +270660 +270661 +270662 +270663 +270688 +270689 +270690 +270691 +270692 +270693 +270694 +270695 +270720 +270721 +270722 +270723 +270724 +270725 +270726 +270727 +270752 +270753 +270754 +270755 +270756 +270757 +270758 +270759 +270784 +270785 +270786 +270787 +270788 +270789 +270790 +270791 +270816 +270817 +270818 +270819 +270820 +270821 +270822 +270823 +270848 +270849 +270850 +270851 +270852 +270853 +270854 +270855 +270880 +270881 +270882 +270883 +270884 +270885 +270886 +270887 +270912 +270913 +270914 +270915 +270916 +270917 +270918 +270919 +270944 +270945 +270946 +270947 +270948 +270949 +270950 +270951 +270976 +270977 +270978 +270979 +270980 +270981 +270982 +270983 +271008 +271009 +271010 +271011 +271012 +271013 +271014 +271015 +271040 +271041 +271042 +271043 +271044 +271045 +271046 +271047 +271072 +271073 +271074 +271075 +271076 +271077 +271078 +271079 +271104 +271105 +271106 +271107 +271108 +271109 +271110 +271111 +271136 +271137 +271138 +271139 +271140 +271141 +271142 +271143 +271168 +271169 +271170 +271171 +271172 +271173 +271174 +271175 +271200 +271201 +271202 +271203 +271204 +271205 +271206 +271207 +271232 +271233 +271234 +271235 +271236 +271237 +271238 +271239 +271264 +271265 +271266 +271267 +271268 +271269 +271270 +271271 +271296 +271297 +271298 +271299 +271300 +271301 +271302 +271303 +271328 +271329 +271330 +271331 +271332 +271333 +271334 +271335 +271360 +271361 +271362 +271363 +271364 +271365 +271366 +271367 +271392 +271393 +271394 +271395 +271396 +271397 +271398 +271399 +271424 +271425 +271426 +271427 +271428 +271429 +271430 +271431 +271456 +271457 +271458 +271459 +271460 +271461 +271462 +271463 +271488 +271489 +271490 +271491 +271492 +271493 +271494 +271495 +271520 +271521 +271522 +271523 +271524 +271525 +271526 +271527 +271552 +271553 +271554 +271555 +271556 +271557 +271558 +271559 +271584 +271585 +271586 +271587 +271588 +271589 +271590 +271591 +271616 +271617 +271618 +271619 +271620 +271621 +271622 +271623 +271648 +271649 +271650 +271651 +271652 +271653 +271654 +271655 +271680 +271681 +271682 +271683 +271684 +271685 +271686 +271687 +271712 +271713 +271714 +271715 +271716 +271717 +271718 +271719 +271744 +271745 +271746 +271747 +271748 +271749 +271750 +271751 +271776 +271777 +271778 +271779 +271780 +271781 +271782 +271783 +271808 +271809 +271810 +271811 +271812 +271813 +271814 +271815 +271840 +271841 +271842 +271843 +271844 +271845 +271846 +271847 +271872 +271873 +271874 +271875 +271876 +271877 +271878 +271879 +271904 +271905 +271906 +271907 +271908 +271909 +271910 +271911 +271936 +271937 +271938 +271939 +271940 +271941 +271942 +271943 +271968 +271969 +271970 +271971 +271972 +271973 +271974 +271975 +272000 +272001 +272002 +272003 +272004 +272005 +272006 +272007 +272032 +272033 +272034 +272035 +272036 +272037 +272038 +272039 +272064 +272065 +272066 +272067 +272068 +272069 +272070 +272071 +272096 +272097 +272098 +272099 +272100 +272101 +272102 +272103 +272128 +272129 +272130 +272131 +272132 +272133 +272134 +272135 +272160 +272161 +272162 +272163 +272164 +272165 +272166 +272167 +272192 +272193 +272194 +272195 +272196 +272197 +272198 +272199 +272224 +272225 +272226 +272227 +272228 +272229 +272230 +272231 +272256 +272257 +272258 +272259 +272260 +272261 +272262 +272263 +272288 +272289 +272290 +272291 +272292 +272293 +272294 +272295 +272320 +272321 +272322 +272323 +272324 +272325 +272326 +272327 +272352 +272353 +272354 +272355 +272356 +272357 +272358 +272359 +272384 +272385 +272386 +272387 +272388 +272389 +272390 +272391 +272416 +272417 +272418 +272419 +272420 +272421 +272422 +272423 +272448 +272449 +272450 +272451 +272452 +272453 +272454 +272455 +272480 +272481 +272482 +272483 +272484 +272485 +272486 +272487 +272512 +272513 +272514 +272515 +272516 +272517 +272518 +272519 +272544 +272545 +272546 +272547 +272548 +272549 +272550 +272551 +272576 +272577 +272578 +272579 +272580 +272581 +272582 +272583 +272608 +272609 +272610 +272611 +272612 +272613 +272614 +272615 +272640 +272641 +272642 +272643 +272644 +272645 +272646 +272647 +272672 +272673 +272674 +272675 +272676 +272677 +272678 +272679 +272704 +272705 +272706 +272707 +272708 +272709 +272710 +272711 +272736 +272737 +272738 +272739 +272740 +272741 +272742 +272743 +272768 +272769 +272770 +272771 +272772 +272773 +272774 +272775 +272800 +272801 +272802 +272803 +272804 +272805 +272806 +272807 +272832 +272833 +272834 +272835 +272836 +272837 +272838 +272839 +272864 +272865 +272866 +272867 +272868 +272869 +272870 +272871 +272896 +272897 +272898 +272899 +272900 +272901 +272902 +272903 +272928 +272929 +272930 +272931 +272932 +272933 +272934 +272935 +272960 +272961 +272962 +272963 +272964 +272965 +272966 +272967 +272992 +272993 +272994 +272995 +272996 +272997 +272998 +272999 +273024 +273025 +273026 +273027 +273028 +273029 +273030 +273031 +273056 +273057 +273058 +273059 +273060 +273061 +273062 +273063 +273088 +273089 +273090 +273091 +273092 +273093 +273094 +273095 +273120 +273121 +273122 +273123 +273124 +273125 +273126 +273127 +273152 +273153 +273154 +273155 +273156 +273157 +273158 +273159 +273184 +273185 +273186 +273187 +273188 +273189 +273190 +273191 +273216 +273217 +273218 +273219 +273220 +273221 +273222 +273223 +273248 +273249 +273250 +273251 +273252 +273253 +273254 +273255 +273280 +273281 +273282 +273283 +273284 +273285 +273286 +273287 +273312 +273313 +273314 +273315 +273316 +273317 +273318 +273319 +273344 +273345 +273346 +273347 +273348 +273349 +273350 +273351 +273376 +273377 +273378 +273379 +273380 +273381 +273382 +273383 +273408 +273409 +273410 +273411 +273412 +273413 +273414 +273415 +273440 +273441 +273442 +273443 +273444 +273445 +273446 +273447 +273472 +273473 +273474 +273475 +273476 +273477 +273478 +273479 +273504 +273505 +273506 +273507 +273508 +273509 +273510 +273511 +273536 +273537 +273538 +273539 +273540 +273541 +273542 +273543 +273568 +273569 +273570 +273571 +273572 +273573 +273574 +273575 +273600 +273601 +273602 +273603 +273604 +273605 +273606 +273607 +273632 +273633 +273634 +273635 +273636 +273637 +273638 +273639 +273664 +273665 +273666 +273667 +273668 +273669 +273670 +273671 +273696 +273697 +273698 +273699 +273700 +273701 +273702 +273703 +273728 +273729 +273730 +273731 +273732 +273733 +273734 +273735 +273760 +273761 +273762 +273763 +273764 +273765 +273766 +273767 +273792 +273793 +273794 +273795 +273796 +273797 +273798 +273799 +273824 +273825 +273826 +273827 +273828 +273829 +273830 +273831 +273856 +273857 +273858 +273859 +273860 +273861 +273862 +273863 +273888 +273889 +273890 +273891 +273892 +273893 +273894 +273895 +273920 +273921 +273922 +273923 +273924 +273925 +273926 +273927 +273952 +273953 +273954 +273955 +273956 +273957 +273958 +273959 +273984 +273985 +273986 +273987 +273988 +273989 +273990 +273991 +274016 +274017 +274018 +274019 +274020 +274021 +274022 +274023 +274048 +274049 +274050 +274051 +274052 +274053 +274054 +274055 +274080 +274081 +274082 +274083 +274084 +274085 +274086 +274087 +274112 +274113 +274114 +274115 +274116 +274117 +274118 +274119 +274144 +274145 +274146 +274147 +274148 +274149 +274150 +274151 +274176 +274177 +274178 +274179 +274180 +274181 +274182 +274183 +274208 +274209 +274210 +274211 +274212 +274213 +274214 +274215 +274240 +274241 +274242 +274243 +274244 +274245 +274246 +274247 +274272 +274273 +274274 +274275 +274276 +274277 +274278 +274279 +274304 +274305 +274306 +274307 +274308 +274309 +274310 +274311 +274336 +274337 +274338 +274339 +274340 +274341 +274342 +274343 +274368 +274369 +274370 +274371 +274372 +274373 +274374 +274375 +274400 +274401 +274402 +274403 +274404 +274405 +274406 +274407 +274432 +274433 +274434 +274435 +274436 +274437 +274438 +274439 +274464 +274465 +274466 +274467 +274468 +274469 +274470 +274471 +274496 +274497 +274498 +274499 +274500 +274501 +274502 +274503 +274528 +274529 +274530 +274531 +274532 +274533 +274534 +274535 +274560 +274561 +274562 +274563 +274564 +274565 +274566 +274567 +274592 +274593 +274594 +274595 +274596 +274597 +274598 +274599 +274624 +274625 +274626 +274627 +274628 +274629 +274630 +274631 +274656 +274657 +274658 +274659 +274660 +274661 +274662 +274663 +274688 +274689 +274690 +274691 +274692 +274693 +274694 +274695 +274720 +274721 +274722 +274723 +274724 +274725 +274726 +274727 +274752 +274753 +274754 +274755 +274756 +274757 +274758 +274759 +274784 +274785 +274786 +274787 +274788 +274789 +274790 +274791 +274816 +274817 +274818 +274819 +274820 +274821 +274822 +274823 +274848 +274849 +274850 +274851 +274852 +274853 +274854 +274855 +274880 +274881 +274882 +274883 +274884 +274885 +274886 +274887 +274912 +274913 +274914 +274915 +274916 +274917 +274918 +274919 +274944 +274945 +274946 +274947 +274948 +274949 +274950 +274951 +274976 +274977 +274978 +274979 +274980 +274981 +274982 +274983 +275008 +275009 +275010 +275011 +275012 +275013 +275014 +275015 +275040 +275041 +275042 +275043 +275044 +275045 +275046 +275047 +275072 +275073 +275074 +275075 +275076 +275077 +275078 +275079 +275104 +275105 +275106 +275107 +275108 +275109 +275110 +275111 +275136 +275137 +275138 +275139 +275140 +275141 +275142 +275143 +275168 +275169 +275170 +275171 +275172 +275173 +275174 +275175 +275200 +275201 +275202 +275203 +275204 +275205 +275206 +275207 +275232 +275233 +275234 +275235 +275236 +275237 +275238 +275239 +275264 +275265 +275266 +275267 +275268 +275269 +275270 +275271 +275296 +275297 +275298 +275299 +275300 +275301 +275302 +275303 +275328 +275329 +275330 +275331 +275332 +275333 +275334 +275335 +275360 +275361 +275362 +275363 +275364 +275365 +275366 +275367 +275392 +275393 +275394 +275395 +275396 +275397 +275398 +275399 +275424 +275425 +275426 +275427 +275428 +275429 +275430 +275431 +275456 +275457 +275458 +275459 +275460 +275461 +275462 +275463 +275488 +275489 +275490 +275491 +275492 +275493 +275494 +275495 +275520 +275521 +275522 +275523 +275524 +275525 +275526 +275527 +275552 +275553 +275554 +275555 +275556 +275557 +275558 +275559 +275584 +275585 +275586 +275587 +275588 +275589 +275590 +275591 +275616 +275617 +275618 +275619 +275620 +275621 +275622 +275623 +275648 +275649 +275650 +275651 +275652 +275653 +275654 +275655 +275680 +275681 +275682 +275683 +275684 +275685 +275686 +275687 +275712 +275713 +275714 +275715 +275716 +275717 +275718 +275719 +275744 +275745 +275746 +275747 +275748 +275749 +275750 +275751 +275776 +275777 +275778 +275779 +275780 +275781 +275782 +275783 +275808 +275809 +275810 +275811 +275812 +275813 +275814 +275815 +275840 +275841 +275842 +275843 +275844 +275845 +275846 +275847 +275872 +275873 +275874 +275875 +275876 +275877 +275878 +275879 +275904 +275905 +275906 +275907 +275908 +275909 +275910 +275911 +275936 +275937 +275938 +275939 +275940 +275941 +275942 +275943 +275968 +275969 +275970 +275971 +275972 +275973 +275974 +275975 +276000 +276001 +276002 +276003 +276004 +276005 +276006 +276007 +276032 +276033 +276034 +276035 +276036 +276037 +276038 +276039 +276064 +276065 +276066 +276067 +276068 +276069 +276070 +276071 +276096 +276097 +276098 +276099 +276100 +276101 +276102 +276103 +276128 +276129 +276130 +276131 +276132 +276133 +276134 +276135 +276160 +276161 +276162 +276163 +276164 +276165 +276166 +276167 +276192 +276193 +276194 +276195 +276196 +276197 +276198 +276199 +276224 +276225 +276226 +276227 +276228 +276229 +276230 +276231 +276256 +276257 +276258 +276259 +276260 +276261 +276262 +276263 +276288 +276289 +276290 +276291 +276292 +276293 +276294 +276295 +276320 +276321 +276322 +276323 +276324 +276325 +276326 +276327 +276352 +276353 +276354 +276355 +276356 +276357 +276358 +276359 +276384 +276385 +276386 +276387 +276388 +276389 +276390 +276391 +276416 +276417 +276418 +276419 +276420 +276421 +276422 +276423 +276448 +276449 +276450 +276451 +276452 +276453 +276454 +276455 +276480 +276481 +276482 +276483 +276484 +276485 +276486 +276487 +276512 +276513 +276514 +276515 +276516 +276517 +276518 +276519 +276544 +276545 +276546 +276547 +276548 +276549 +276550 +276551 +276576 +276577 +276578 +276579 +276580 +276581 +276582 +276583 +276608 +276609 +276610 +276611 +276612 +276613 +276614 +276615 +276640 +276641 +276642 +276643 +276644 +276645 +276646 +276647 +276672 +276673 +276674 +276675 +276676 +276677 +276678 +276679 +276704 +276705 +276706 +276707 +276708 +276709 +276710 +276711 +276736 +276737 +276738 +276739 +276740 +276741 +276742 +276743 +276768 +276769 +276770 +276771 +276772 +276773 +276774 +276775 +276800 +276801 +276802 +276803 +276804 +276805 +276806 +276807 +276832 +276833 +276834 +276835 +276836 +276837 +276838 +276839 +276864 +276865 +276866 +276867 +276868 +276869 +276870 +276871 +276896 +276897 +276898 +276899 +276900 +276901 +276902 +276903 +276928 +276929 +276930 +276931 +276932 +276933 +276934 +276935 +276960 +276961 +276962 +276963 +276964 +276965 +276966 +276967 +276992 +276993 +276994 +276995 +276996 +276997 +276998 +276999 +277024 +277025 +277026 +277027 +277028 +277029 +277030 +277031 +277056 +277057 +277058 +277059 +277060 +277061 +277062 +277063 +277088 +277089 +277090 +277091 +277092 +277093 +277094 +277095 +277120 +277121 +277122 +277123 +277124 +277125 +277126 +277127 +277152 +277153 +277154 +277155 +277156 +277157 +277158 +277159 +277184 +277185 +277186 +277187 +277188 +277189 +277190 +277191 +277216 +277217 +277218 +277219 +277220 +277221 +277222 +277223 +277248 +277249 +277250 +277251 +277252 +277253 +277254 +277255 +277280 +277281 +277282 +277283 +277284 +277285 +277286 +277287 +277312 +277313 +277314 +277315 +277316 +277317 +277318 +277319 +277344 +277345 +277346 +277347 +277348 +277349 +277350 +277351 +277376 +277377 +277378 +277379 +277380 +277381 +277382 +277383 +277408 +277409 +277410 +277411 +277412 +277413 +277414 +277415 +277440 +277441 +277442 +277443 +277444 +277445 +277446 +277447 +277472 +277473 +277474 +277475 +277476 +277477 +277478 +277479 +277504 +277505 +277506 +277507 +277508 +277509 +277510 +277511 +277536 +277537 +277538 +277539 +277540 +277541 +277542 +277543 +277568 +277569 +277570 +277571 +277572 +277573 +277574 +277575 +277600 +277601 +277602 +277603 +277604 +277605 +277606 +277607 +277632 +277633 +277634 +277635 +277636 +277637 +277638 +277639 +277664 +277665 +277666 +277667 +277668 +277669 +277670 +277671 +277696 +277697 +277698 +277699 +277700 +277701 +277702 +277703 +277728 +277729 +277730 +277731 +277732 +277733 +277734 +277735 +277760 +277761 +277762 +277763 +277764 +277765 +277766 +277767 +277792 +277793 +277794 +277795 +277796 +277797 +277798 +277799 +277824 +277825 +277826 +277827 +277828 +277829 +277830 +277831 +277856 +277857 +277858 +277859 +277860 +277861 +277862 +277863 +277888 +277889 +277890 +277891 +277892 +277893 +277894 +277895 +277920 +277921 +277922 +277923 +277924 +277925 +277926 +277927 +277952 +277953 +277954 +277955 +277956 +277957 +277958 +277959 +277984 +277985 +277986 +277987 +277988 +277989 +277990 +277991 +278016 +278017 +278018 +278019 +278020 +278021 +278022 +278023 +278048 +278049 +278050 +278051 +278052 +278053 +278054 +278055 +278080 +278081 +278082 +278083 +278084 +278085 +278086 +278087 +278112 +278113 +278114 +278115 +278116 +278117 +278118 +278119 +278144 +278145 +278146 +278147 +278148 +278149 +278150 +278151 +278176 +278177 +278178 +278179 +278180 +278181 +278182 +278183 +278208 +278209 +278210 +278211 +278212 +278213 +278214 +278215 +278240 +278241 +278242 +278243 +278244 +278245 +278246 +278247 +278272 +278273 +278274 +278275 +278276 +278277 +278278 +278279 +278304 +278305 +278306 +278307 +278308 +278309 +278310 +278311 +278336 +278337 +278338 +278339 +278340 +278341 +278342 +278343 +278368 +278369 +278370 +278371 +278372 +278373 +278374 +278375 +278400 +278401 +278402 +278403 +278404 +278405 +278406 +278407 +278432 +278433 +278434 +278435 +278436 +278437 +278438 +278439 +278464 +278465 +278466 +278467 +278468 +278469 +278470 +278471 +278496 +278497 +278498 +278499 +278500 +278501 +278502 +278503 +278528 +278529 +278530 +278531 +278532 +278533 +278534 +278535 +278560 +278561 +278562 +278563 +278564 +278565 +278566 +278567 +278592 +278593 +278594 +278595 +278596 +278597 +278598 +278599 +278624 +278625 +278626 +278627 +278628 +278629 +278630 +278631 +278656 +278657 +278658 +278659 +278660 +278661 +278662 +278663 +278688 +278689 +278690 +278691 +278692 +278693 +278694 +278695 +278720 +278721 +278722 +278723 +278724 +278725 +278726 +278727 +278752 +278753 +278754 +278755 +278756 +278757 +278758 +278759 +278784 +278785 +278786 +278787 +278788 +278789 +278790 +278791 +278816 +278817 +278818 +278819 +278820 +278821 +278822 +278823 +278848 +278849 +278850 +278851 +278852 +278853 +278854 +278855 +278880 +278881 +278882 +278883 +278884 +278885 +278886 +278887 +278912 +278913 +278914 +278915 +278916 +278917 +278918 +278919 +278944 +278945 +278946 +278947 +278948 +278949 +278950 +278951 +278976 +278977 +278978 +278979 +278980 +278981 +278982 +278983 +279008 +279009 +279010 +279011 +279012 +279013 +279014 +279015 +279040 +279041 +279042 +279043 +279044 +279045 +279046 +279047 +279072 +279073 +279074 +279075 +279076 +279077 +279078 +279079 +279104 +279105 +279106 +279107 +279108 +279109 +279110 +279111 +279136 +279137 +279138 +279139 +279140 +279141 +279142 +279143 +279168 +279169 +279170 +279171 +279172 +279173 +279174 +279175 +279200 +279201 +279202 +279203 +279204 +279205 +279206 +279207 +279232 +279233 +279234 +279235 +279236 +279237 +279238 +279239 +279264 +279265 +279266 +279267 +279268 +279269 +279270 +279271 +279296 +279297 +279298 +279299 +279300 +279301 +279302 +279303 +279328 +279329 +279330 +279331 +279332 +279333 +279334 +279335 +279360 +279361 +279362 +279363 +279364 +279365 +279366 +279367 +279392 +279393 +279394 +279395 +279396 +279397 +279398 +279399 +279424 +279425 +279426 +279427 +279428 +279429 +279430 +279431 +279456 +279457 +279458 +279459 +279460 +279461 +279462 +279463 +279488 +279489 +279490 +279491 +279492 +279493 +279494 +279495 +279520 +279521 +279522 +279523 +279524 +279525 +279526 +279527 +279552 +279553 +279554 +279555 +279556 +279557 +279558 +279559 +279584 +279585 +279586 +279587 +279588 +279589 +279590 +279591 +279616 +279617 +279618 +279619 +279620 +279621 +279622 +279623 +279648 +279649 +279650 +279651 +279652 +279653 +279654 +279655 +279680 +279681 +279682 +279683 +279684 +279685 +279686 +279687 +279712 +279713 +279714 +279715 +279716 +279717 +279718 +279719 +279744 +279745 +279746 +279747 +279748 +279749 +279750 +279751 +279776 +279777 +279778 +279779 +279780 +279781 +279782 +279783 +279808 +279809 +279810 +279811 +279812 +279813 +279814 +279815 +279840 +279841 +279842 +279843 +279844 +279845 +279846 +279847 +279872 +279873 +279874 +279875 +279876 +279877 +279878 +279879 +279904 +279905 +279906 +279907 +279908 +279909 +279910 +279911 +279936 +279937 +279938 +279939 +279940 +279941 +279942 +279943 +279968 +279969 +279970 +279971 +279972 +279973 +279974 +279975 +280000 +280001 +280002 +280003 +280004 +280005 +280006 +280007 +280032 +280033 +280034 +280035 +280036 +280037 +280038 +280039 +280064 +280065 +280066 +280067 +280068 +280069 +280070 +280071 +280096 +280097 +280098 +280099 +280100 +280101 +280102 +280103 +280128 +280129 +280130 +280131 +280132 +280133 +280134 +280135 +280160 +280161 +280162 +280163 +280164 +280165 +280166 +280167 +280192 +280193 +280194 +280195 +280196 +280197 +280198 +280199 +280224 +280225 +280226 +280227 +280228 +280229 +280230 +280231 +280256 +280257 +280258 +280259 +280260 +280261 +280262 +280263 +280288 +280289 +280290 +280291 +280292 +280293 +280294 +280295 +280320 +280321 +280322 +280323 +280324 +280325 +280326 +280327 +280352 +280353 +280354 +280355 +280356 +280357 +280358 +280359 +280384 +280385 +280386 +280387 +280388 +280389 +280390 +280391 +280416 +280417 +280418 +280419 +280420 +280421 +280422 +280423 +280448 +280449 +280450 +280451 +280452 +280453 +280454 +280455 +280480 +280481 +280482 +280483 +280484 +280485 +280486 +280487 +280512 +280513 +280514 +280515 +280516 +280517 +280518 +280519 +280544 +280545 +280546 +280547 +280548 +280549 +280550 +280551 +280576 +280577 +280578 +280579 +280580 +280581 +280582 +280583 +280608 +280609 +280610 +280611 +280612 +280613 +280614 +280615 +280640 +280641 +280642 +280643 +280644 +280645 +280646 +280647 +280672 +280673 +280674 +280675 +280676 +280677 +280678 +280679 +280704 +280705 +280706 +280707 +280708 +280709 +280710 +280711 +280736 +280737 +280738 +280739 +280740 +280741 +280742 +280743 +280768 +280769 +280770 +280771 +280772 +280773 +280774 +280775 +280800 +280801 +280802 +280803 +280804 +280805 +280806 +280807 +280832 +280833 +280834 +280835 +280836 +280837 +280838 +280839 +280864 +280865 +280866 +280867 +280868 +280869 +280870 +280871 +280896 +280897 +280898 +280899 +280900 +280901 +280902 +280903 +280928 +280929 +280930 +280931 +280932 +280933 +280934 +280935 +280960 +280961 +280962 +280963 +280964 +280965 +280966 +280967 +280992 +280993 +280994 +280995 +280996 +280997 +280998 +280999 +281024 +281025 +281026 +281027 +281028 +281029 +281030 +281031 +281056 +281057 +281058 +281059 +281060 +281061 +281062 +281063 +281088 +281089 +281090 +281091 +281092 +281093 +281094 +281095 +281120 +281121 +281122 +281123 +281124 +281125 +281126 +281127 +281152 +281153 +281154 +281155 +281156 +281157 +281158 +281159 +281184 +281185 +281186 +281187 +281188 +281189 +281190 +281191 +281216 +281217 +281218 +281219 +281220 +281221 +281222 +281223 +281248 +281249 +281250 +281251 +281252 +281253 +281254 +281255 +281280 +281281 +281282 +281283 +281284 +281285 +281286 +281287 +281312 +281313 +281314 +281315 +281316 +281317 +281318 +281319 +281344 +281345 +281346 +281347 +281348 +281349 +281350 +281351 +281376 +281377 +281378 +281379 +281380 +281381 +281382 +281383 +281408 +281409 +281410 +281411 +281412 +281413 +281414 +281415 +281440 +281441 +281442 +281443 +281444 +281445 +281446 +281447 +281472 +281473 +281474 +281475 +281476 +281477 +281478 +281479 +281504 +281505 +281506 +281507 +281508 +281509 +281510 +281511 +281536 +281537 +281538 +281539 +281540 +281541 +281542 +281543 +281568 +281569 +281570 +281571 +281572 +281573 +281574 +281575 +281600 +281601 +281602 +281603 +281604 +281605 +281606 +281607 +281632 +281633 +281634 +281635 +281636 +281637 +281638 +281639 +281664 +281665 +281666 +281667 +281668 +281669 +281670 +281671 +281696 +281697 +281698 +281699 +281700 +281701 +281702 +281703 +281728 +281729 +281730 +281731 +281732 +281733 +281734 +281735 +281760 +281761 +281762 +281763 +281764 +281765 +281766 +281767 +281792 +281793 +281794 +281795 +281796 +281797 +281798 +281799 +281824 +281825 +281826 +281827 +281828 +281829 +281830 +281831 +281856 +281857 +281858 +281859 +281860 +281861 +281862 +281863 +281888 +281889 +281890 +281891 +281892 +281893 +281894 +281895 +281920 +281921 +281922 +281923 +281924 +281925 +281926 +281927 +281952 +281953 +281954 +281955 +281956 +281957 +281958 +281959 +281984 +281985 +281986 +281987 +281988 +281989 +281990 +281991 +282016 +282017 +282018 +282019 +282020 +282021 +282022 +282023 +282048 +282049 +282050 +282051 +282052 +282053 +282054 +282055 +282080 +282081 +282082 +282083 +282084 +282085 +282086 +282087 +282112 +282113 +282114 +282115 +282116 +282117 +282118 +282119 +282144 +282145 +282146 +282147 +282148 +282149 +282150 +282151 +282176 +282177 +282178 +282179 +282180 +282181 +282182 +282183 +282208 +282209 +282210 +282211 +282212 +282213 +282214 +282215 +282240 +282241 +282242 +282243 +282244 +282245 +282246 +282247 +282272 +282273 +282274 +282275 +282276 +282277 +282278 +282279 +282304 +282305 +282306 +282307 +282308 +282309 +282310 +282311 +282336 +282337 +282338 +282339 +282340 +282341 +282342 +282343 +282368 +282369 +282370 +282371 +282372 +282373 +282374 +282375 +282400 +282401 +282402 +282403 +282404 +282405 +282406 +282407 +282432 +282433 +282434 +282435 +282436 +282437 +282438 +282439 +282464 +282465 +282466 +282467 +282468 +282469 +282470 +282471 +282496 +282497 +282498 +282499 +282500 +282501 +282502 +282503 +282528 +282529 +282530 +282531 +282532 +282533 +282534 +282535 +282560 +282561 +282562 +282563 +282564 +282565 +282566 +282567 +282592 +282593 +282594 +282595 +282596 +282597 +282598 +282599 +282624 +282625 +282626 +282627 +282628 +282629 +282630 +282631 +282656 +282657 +282658 +282659 +282660 +282661 +282662 +282663 +282688 +282689 +282690 +282691 +282692 +282693 +282694 +282695 +282720 +282721 +282722 +282723 +282724 +282725 +282726 +282727 +282752 +282753 +282754 +282755 +282756 +282757 +282758 +282759 +282784 +282785 +282786 +282787 +282788 +282789 +282790 +282791 +282816 +282817 +282818 +282819 +282820 +282821 +282822 +282823 +282848 +282849 +282850 +282851 +282852 +282853 +282854 +282855 +282880 +282881 +282882 +282883 +282884 +282885 +282886 +282887 +282912 +282913 +282914 +282915 +282916 +282917 +282918 +282919 +282944 +282945 +282946 +282947 +282948 +282949 +282950 +282951 +282976 +282977 +282978 +282979 +282980 +282981 +282982 +282983 +283008 +283009 +283010 +283011 +283012 +283013 +283014 +283015 +283040 +283041 +283042 +283043 +283044 +283045 +283046 +283047 +283072 +283073 +283074 +283075 +283076 +283077 +283078 +283079 +283104 +283105 +283106 +283107 +283108 +283109 +283110 +283111 +283136 +283137 +283138 +283139 +283140 +283141 +283142 +283143 +283168 +283169 +283170 +283171 +283172 +283173 +283174 +283175 +283200 +283201 +283202 +283203 +283204 +283205 +283206 +283207 +283232 +283233 +283234 +283235 +283236 +283237 +283238 +283239 +283264 +283265 +283266 +283267 +283268 +283269 +283270 +283271 +283296 +283297 +283298 +283299 +283300 +283301 +283302 +283303 +283328 +283329 +283330 +283331 +283332 +283333 +283334 +283335 +283360 +283361 +283362 +283363 +283364 +283365 +283366 +283367 +283392 +283393 +283394 +283395 +283396 +283397 +283398 +283399 +283424 +283425 +283426 +283427 +283428 +283429 +283430 +283431 +283456 +283457 +283458 +283459 +283460 +283461 +283462 +283463 +283488 +283489 +283490 +283491 +283492 +283493 +283494 +283495 +283520 +283521 +283522 +283523 +283524 +283525 +283526 +283527 +283552 +283553 +283554 +283555 +283556 +283557 +283558 +283559 +283584 +283585 +283586 +283587 +283588 +283589 +283590 +283591 +283616 +283617 +283618 +283619 +283620 +283621 +283622 +283623 +283648 +283649 +283650 +283651 +283652 +283653 +283654 +283655 +283680 +283681 +283682 +283683 +283684 +283685 +283686 +283687 +283712 +283713 +283714 +283715 +283716 +283717 +283718 +283719 +283744 +283745 +283746 +283747 +283748 +283749 +283750 +283751 +283776 +283777 +283778 +283779 +283780 +283781 +283782 +283783 +283808 +283809 +283810 +283811 +283812 +283813 +283814 +283815 +283840 +283841 +283842 +283843 +283844 +283845 +283846 +283847 +283872 +283873 +283874 +283875 +283876 +283877 +283878 +283879 +283904 +283905 +283906 +283907 +283908 +283909 +283910 +283911 +283936 +283937 +283938 +283939 +283940 +283941 +283942 +283943 +283968 +283969 +283970 +283971 +283972 +283973 +283974 +283975 +284000 +284001 +284002 +284003 +284004 +284005 +284006 +284007 +284032 +284033 +284034 +284035 +284036 +284037 +284038 +284039 +284064 +284065 +284066 +284067 +284068 +284069 +284070 +284071 +284096 +284097 +284098 +284099 +284100 +284101 +284102 +284103 +284128 +284129 +284130 +284131 +284132 +284133 +284134 +284135 +284160 +284161 +284162 +284163 +284164 +284165 +284166 +284167 +284192 +284193 +284194 +284195 +284196 +284197 +284198 +284199 +284224 +284225 +284226 +284227 +284228 +284229 +284230 +284231 +284256 +284257 +284258 +284259 +284260 +284261 +284262 +284263 +284288 +284289 +284290 +284291 +284292 +284293 +284294 +284295 +284320 +284321 +284322 +284323 +284324 +284325 +284326 +284327 +284352 +284353 +284354 +284355 +284356 +284357 +284358 +284359 +284384 +284385 +284386 +284387 +284388 +284389 +284390 +284391 +284416 +284417 +284418 +284419 +284420 +284421 +284422 +284423 +284448 +284449 +284450 +284451 +284452 +284453 +284454 +284455 +284480 +284481 +284482 +284483 +284484 +284485 +284486 +284487 +284512 +284513 +284514 +284515 +284516 +284517 +284518 +284519 +284544 +284545 +284546 +284547 +284548 +284549 +284550 +284551 +284576 +284577 +284578 +284579 +284580 +284581 +284582 +284583 +284608 +284609 +284610 +284611 +284612 +284613 +284614 +284615 +284640 +284641 +284642 +284643 +284644 +284645 +284646 +284647 +284672 +284673 +284674 +284675 +284676 +284677 +284678 +284679 +284704 +284705 +284706 +284707 +284708 +284709 +284710 +284711 +284736 +284737 +284738 +284739 +284740 +284741 +284742 +284743 +284768 +284769 +284770 +284771 +284772 +284773 +284774 +284775 +284800 +284801 +284802 +284803 +284804 +284805 +284806 +284807 +284832 +284833 +284834 +284835 +284836 +284837 +284838 +284839 +284864 +284865 +284866 +284867 +284868 +284869 +284870 +284871 +284896 +284897 +284898 +284899 +284900 +284901 +284902 +284903 +284928 +284929 +284930 +284931 +284932 +284933 +284934 +284935 +284960 +284961 +284962 +284963 +284964 +284965 +284966 +284967 +284992 +284993 +284994 +284995 +284996 +284997 +284998 +284999 +285024 +285025 +285026 +285027 +285028 +285029 +285030 +285031 +285056 +285057 +285058 +285059 +285060 +285061 +285062 +285063 +285088 +285089 +285090 +285091 +285092 +285093 +285094 +285095 +285120 +285121 +285122 +285123 +285124 +285125 +285126 +285127 +285152 +285153 +285154 +285155 +285156 +285157 +285158 +285159 +285184 +285185 +285186 +285187 +285188 +285189 +285190 +285191 +285216 +285217 +285218 +285219 +285220 +285221 +285222 +285223 +285248 +285249 +285250 +285251 +285252 +285253 +285254 +285255 +285280 +285281 +285282 +285283 +285284 +285285 +285286 +285287 +285312 +285313 +285314 +285315 +285316 +285317 +285318 +285319 +285344 +285345 +285346 +285347 +285348 +285349 +285350 +285351 +285376 +285377 +285378 +285379 +285380 +285381 +285382 +285383 +285408 +285409 +285410 +285411 +285412 +285413 +285414 +285415 +285440 +285441 +285442 +285443 +285444 +285445 +285446 +285447 +285472 +285473 +285474 +285475 +285476 +285477 +285478 +285479 +285504 +285505 +285506 +285507 +285508 +285509 +285510 +285511 +285536 +285537 +285538 +285539 +285540 +285541 +285542 +285543 +285568 +285569 +285570 +285571 +285572 +285573 +285574 +285575 +285600 +285601 +285602 +285603 +285604 +285605 +285606 +285607 +285632 +285633 +285634 +285635 +285636 +285637 +285638 +285639 +285664 +285665 +285666 +285667 +285668 +285669 +285670 +285671 +285696 +285697 +285698 +285699 +285700 +285701 +285702 +285703 +285728 +285729 +285730 +285731 +285732 +285733 +285734 +285735 +285760 +285761 +285762 +285763 +285764 +285765 +285766 +285767 +285792 +285793 +285794 +285795 +285796 +285797 +285798 +285799 +285824 +285825 +285826 +285827 +285828 +285829 +285830 +285831 +285856 +285857 +285858 +285859 +285860 +285861 +285862 +285863 +285888 +285889 +285890 +285891 +285892 +285893 +285894 +285895 +285920 +285921 +285922 +285923 +285924 +285925 +285926 +285927 +285952 +285953 +285954 +285955 +285956 +285957 +285958 +285959 +285984 +285985 +285986 +285987 +285988 +285989 +285990 +285991 +286016 +286017 +286018 +286019 +286020 +286021 +286022 +286023 +286048 +286049 +286050 +286051 +286052 +286053 +286054 +286055 +286080 +286081 +286082 +286083 +286084 +286085 +286086 +286087 +286112 +286113 +286114 +286115 +286116 +286117 +286118 +286119 +286144 +286145 +286146 +286147 +286148 +286149 +286150 +286151 +286176 +286177 +286178 +286179 +286180 +286181 +286182 +286183 +286208 +286209 +286210 +286211 +286212 +286213 +286214 +286215 +286240 +286241 +286242 +286243 +286244 +286245 +286246 +286247 +286272 +286273 +286274 +286275 +286276 +286277 +286278 +286279 +286304 +286305 +286306 +286307 +286308 +286309 +286310 +286311 +286336 +286337 +286338 +286339 +286340 +286341 +286342 +286343 +286368 +286369 +286370 +286371 +286372 +286373 +286374 +286375 +286400 +286401 +286402 +286403 +286404 +286405 +286406 +286407 +286432 +286433 +286434 +286435 +286436 +286437 +286438 +286439 +286464 +286465 +286466 +286467 +286468 +286469 +286470 +286471 +286496 +286497 +286498 +286499 +286500 +286501 +286502 +286503 +286528 +286529 +286530 +286531 +286532 +286533 +286534 +286535 +286560 +286561 +286562 +286563 +286564 +286565 +286566 +286567 +286592 +286593 +286594 +286595 +286596 +286597 +286598 +286599 +286624 +286625 +286626 +286627 +286628 +286629 +286630 +286631 +286656 +286657 +286658 +286659 +286660 +286661 +286662 +286663 +286688 +286689 +286690 +286691 +286692 +286693 +286694 +286695 +286720 +286721 +286722 +286723 +286724 +286725 +286726 +286727 +286752 +286753 +286754 +286755 +286756 +286757 +286758 +286759 +286784 +286785 +286786 +286787 +286788 +286789 +286790 +286791 +286816 +286817 +286818 +286819 +286820 +286821 +286822 +286823 +286848 +286849 +286850 +286851 +286852 +286853 +286854 +286855 +286880 +286881 +286882 +286883 +286884 +286885 +286886 +286887 +286912 +286913 +286914 +286915 +286916 +286917 +286918 +286919 +286944 +286945 +286946 +286947 +286948 +286949 +286950 +286951 +286976 +286977 +286978 +286979 +286980 +286981 +286982 +286983 +287008 +287009 +287010 +287011 +287012 +287013 +287014 +287015 +287040 +287041 +287042 +287043 +287044 +287045 +287046 +287047 +287072 +287073 +287074 +287075 +287076 +287077 +287078 +287079 +287104 +287105 +287106 +287107 +287108 +287109 +287110 +287111 +287136 +287137 +287138 +287139 +287140 +287141 +287142 +287143 +287168 +287169 +287170 +287171 +287172 +287173 +287174 +287175 +287200 +287201 +287202 +287203 +287204 +287205 +287206 +287207 +287232 +287233 +287234 +287235 +287236 +287237 +287238 +287239 +287264 +287265 +287266 +287267 +287268 +287269 +287270 +287271 +287296 +287297 +287298 +287299 +287300 +287301 +287302 +287303 +287328 +287329 +287330 +287331 +287332 +287333 +287334 +287335 +287360 +287361 +287362 +287363 +287364 +287365 +287366 +287367 +287392 +287393 +287394 +287395 +287396 +287397 +287398 +287399 +287424 +287425 +287426 +287427 +287428 +287429 +287430 +287431 +287456 +287457 +287458 +287459 +287460 +287461 +287462 +287463 +287488 +287489 +287490 +287491 +287492 +287493 +287494 +287495 +287520 +287521 +287522 +287523 +287524 +287525 +287526 +287527 +287552 +287553 +287554 +287555 +287556 +287557 +287558 +287559 +287584 +287585 +287586 +287587 +287588 +287589 +287590 +287591 +287616 +287617 +287618 +287619 +287620 +287621 +287622 +287623 +287648 +287649 +287650 +287651 +287652 +287653 +287654 +287655 +287680 +287681 +287682 +287683 +287684 +287685 +287686 +287687 +287712 +287713 +287714 +287715 +287716 +287717 +287718 +287719 +287744 +287745 +287746 +287747 +287748 +287749 +287750 +287751 +287776 +287777 +287778 +287779 +287780 +287781 +287782 +287783 +287808 +287809 +287810 +287811 +287812 +287813 +287814 +287815 +287840 +287841 +287842 +287843 +287844 +287845 +287846 +287847 +287872 +287873 +287874 +287875 +287876 +287877 +287878 +287879 +287904 +287905 +287906 +287907 +287908 +287909 +287910 +287911 +287936 +287937 +287938 +287939 +287940 +287941 +287942 +287943 +287968 +287969 +287970 +287971 +287972 +287973 +287974 +287975 +288000 +288001 +288002 +288003 +288004 +288005 +288006 +288007 +288032 +288033 +288034 +288035 +288036 +288037 +288038 +288039 +288064 +288065 +288066 +288067 +288068 +288069 +288070 +288071 +288096 +288097 +288098 +288099 +288100 +288101 +288102 +288103 +288128 +288129 +288130 +288131 +288132 +288133 +288134 +288135 +288160 +288161 +288162 +288163 +288164 +288165 +288166 +288167 +288192 +288193 +288194 +288195 +288196 +288197 +288198 +288199 +288224 +288225 +288226 +288227 +288228 +288229 +288230 +288231 +288256 +288257 +288258 +288259 +288260 +288261 +288262 +288263 +288288 +288289 +288290 +288291 +288292 +288293 +288294 +288295 +288320 +288321 +288322 +288323 +288324 +288325 +288326 +288327 +288352 +288353 +288354 +288355 +288356 +288357 +288358 +288359 +288384 +288385 +288386 +288387 +288388 +288389 +288390 +288391 +288416 +288417 +288418 +288419 +288420 +288421 +288422 +288423 +288448 +288449 +288450 +288451 +288452 +288453 +288454 +288455 +288480 +288481 +288482 +288483 +288484 +288485 +288486 +288487 +288512 +288513 +288514 +288515 +288516 +288517 +288518 +288519 +288544 +288545 +288546 +288547 +288548 +288549 +288550 +288551 +288576 +288577 +288578 +288579 +288580 +288581 +288582 +288583 +288608 +288609 +288610 +288611 +288612 +288613 +288614 +288615 +288640 +288641 +288642 +288643 +288644 +288645 +288646 +288647 +288672 +288673 +288674 +288675 +288676 +288677 +288678 +288679 +288704 +288705 +288706 +288707 +288708 +288709 +288710 +288711 +288736 +288737 +288738 +288739 +288740 +288741 +288742 +288743 +288768 +288769 +288770 +288771 +288772 +288773 +288774 +288775 +288800 +288801 +288802 +288803 +288804 +288805 +288806 +288807 +288832 +288833 +288834 +288835 +288836 +288837 +288838 +288839 +288864 +288865 +288866 +288867 +288868 +288869 +288870 +288871 +288896 +288897 +288898 +288899 +288900 +288901 +288902 +288903 +288928 +288929 +288930 +288931 +288932 +288933 +288934 +288935 +288960 +288961 +288962 +288963 +288964 +288965 +288966 +288967 +288992 +288993 +288994 +288995 +288996 +288997 +288998 +288999 +289024 +289025 +289026 +289027 +289028 +289029 +289030 +289031 +289056 +289057 +289058 +289059 +289060 +289061 +289062 +289063 +289088 +289089 +289090 +289091 +289092 +289093 +289094 +289095 +289120 +289121 +289122 +289123 +289124 +289125 +289126 +289127 +289152 +289153 +289154 +289155 +289156 +289157 +289158 +289159 +289184 +289185 +289186 +289187 +289188 +289189 +289190 +289191 +289216 +289217 +289218 +289219 +289220 +289221 +289222 +289223 +289248 +289249 +289250 +289251 +289252 +289253 +289254 +289255 +289280 +289281 +289282 +289283 +289284 +289285 +289286 +289287 +289312 +289313 +289314 +289315 +289316 +289317 +289318 +289319 +289344 +289345 +289346 +289347 +289348 +289349 +289350 +289351 +289376 +289377 +289378 +289379 +289380 +289381 +289382 +289383 +289408 +289409 +289410 +289411 +289412 +289413 +289414 +289415 +289440 +289441 +289442 +289443 +289444 +289445 +289446 +289447 +289472 +289473 +289474 +289475 +289476 +289477 +289478 +289479 +289504 +289505 +289506 +289507 +289508 +289509 +289510 +289511 +289536 +289537 +289538 +289539 +289540 +289541 +289542 +289543 +289568 +289569 +289570 +289571 +289572 +289573 +289574 +289575 +289600 +289601 +289602 +289603 +289604 +289605 +289606 +289607 +289632 +289633 +289634 +289635 +289636 +289637 +289638 +289639 +289664 +289665 +289666 +289667 +289668 +289669 +289670 +289671 +289696 +289697 +289698 +289699 +289700 +289701 +289702 +289703 +289728 +289729 +289730 +289731 +289732 +289733 +289734 +289735 +289760 +289761 +289762 +289763 +289764 +289765 +289766 +289767 +289792 +289793 +289794 +289795 +289796 +289797 +289798 +289799 +289824 +289825 +289826 +289827 +289828 +289829 +289830 +289831 +289856 +289857 +289858 +289859 +289860 +289861 +289862 +289863 +289888 +289889 +289890 +289891 +289892 +289893 +289894 +289895 +289920 +289921 +289922 +289923 +289924 +289925 +289926 +289927 +289952 +289953 +289954 +289955 +289956 +289957 +289958 +289959 +289984 +289985 +289986 +289987 +289988 +289989 +289990 +289991 +290016 +290017 +290018 +290019 +290020 +290021 +290022 +290023 +290048 +290049 +290050 +290051 +290052 +290053 +290054 +290055 +290080 +290081 +290082 +290083 +290084 +290085 +290086 +290087 +290112 +290113 +290114 +290115 +290116 +290117 +290118 +290119 +290144 +290145 +290146 +290147 +290148 +290149 +290150 +290151 +290176 +290177 +290178 +290179 +290180 +290181 +290182 +290183 +290208 +290209 +290210 +290211 +290212 +290213 +290214 +290215 +290240 +290241 +290242 +290243 +290244 +290245 +290246 +290247 +290272 +290273 +290274 +290275 +290276 +290277 +290278 +290279 +290304 +290305 +290306 +290307 +290308 +290309 +290310 +290311 +290336 +290337 +290338 +290339 +290340 +290341 +290342 +290343 +290368 +290369 +290370 +290371 +290372 +290373 +290374 +290375 +290400 +290401 +290402 +290403 +290404 +290405 +290406 +290407 +290432 +290433 +290434 +290435 +290436 +290437 +290438 +290439 +290464 +290465 +290466 +290467 +290468 +290469 +290470 +290471 +290496 +290497 +290498 +290499 +290500 +290501 +290502 +290503 +290528 +290529 +290530 +290531 +290532 +290533 +290534 +290535 +290560 +290561 +290562 +290563 +290564 +290565 +290566 +290567 +290592 +290593 +290594 +290595 +290596 +290597 +290598 +290599 +290624 +290625 +290626 +290627 +290628 +290629 +290630 +290631 +290656 +290657 +290658 +290659 +290660 +290661 +290662 +290663 +290688 +290689 +290690 +290691 +290692 +290693 +290694 +290695 +290720 +290721 +290722 +290723 +290724 +290725 +290726 +290727 +290752 +290753 +290754 +290755 +290756 +290757 +290758 +290759 +290784 +290785 +290786 +290787 +290788 +290789 +290790 +290791 +290816 +290817 +290818 +290819 +290820 +290821 +290822 +290823 +290848 +290849 +290850 +290851 +290852 +290853 +290854 +290855 +290880 +290881 +290882 +290883 +290884 +290885 +290886 +290887 +290912 +290913 +290914 +290915 +290916 +290917 +290918 +290919 +290944 +290945 +290946 +290947 +290948 +290949 +290950 +290951 +290976 +290977 +290978 +290979 +290980 +290981 +290982 +290983 +291008 +291009 +291010 +291011 +291012 +291013 +291014 +291015 +291040 +291041 +291042 +291043 +291044 +291045 +291046 +291047 +291072 +291073 +291074 +291075 +291076 +291077 +291078 +291079 +291104 +291105 +291106 +291107 +291108 +291109 +291110 +291111 +291136 +291137 +291138 +291139 +291140 +291141 +291142 +291143 +291168 +291169 +291170 +291171 +291172 +291173 +291174 +291175 +291200 +291201 +291202 +291203 +291204 +291205 +291206 +291207 +291232 +291233 +291234 +291235 +291236 +291237 +291238 +291239 +291264 +291265 +291266 +291267 +291268 +291269 +291270 +291271 +291296 +291297 +291298 +291299 +291300 +291301 +291302 +291303 +291328 +291329 +291330 +291331 +291332 +291333 +291334 +291335 +291360 +291361 +291362 +291363 +291364 +291365 +291366 +291367 +291392 +291393 +291394 +291395 +291396 +291397 +291398 +291399 +291424 +291425 +291426 +291427 +291428 +291429 +291430 +291431 +291456 +291457 +291458 +291459 +291460 +291461 +291462 +291463 +291488 +291489 +291490 +291491 +291492 +291493 +291494 +291495 +291520 +291521 +291522 +291523 +291524 +291525 +291526 +291527 +291552 +291553 +291554 +291555 +291556 +291557 +291558 +291559 +291584 +291585 +291586 +291587 +291588 +291589 +291590 +291591 +291616 +291617 +291618 +291619 +291620 +291621 +291622 +291623 +291648 +291649 +291650 +291651 +291652 +291653 +291654 +291655 +291680 +291681 +291682 +291683 +291684 +291685 +291686 +291687 +291712 +291713 +291714 +291715 +291716 +291717 +291718 +291719 +291744 +291745 +291746 +291747 +291748 +291749 +291750 +291751 +291776 +291777 +291778 +291779 +291780 +291781 +291782 +291783 +291808 +291809 +291810 +291811 +291812 +291813 +291814 +291815 +291840 +291841 +291842 +291843 +291844 +291845 +291846 +291847 +291872 +291873 +291874 +291875 +291876 +291877 +291878 +291879 +291904 +291905 +291906 +291907 +291908 +291909 +291910 +291911 +291936 +291937 +291938 +291939 +291940 +291941 +291942 +291943 +291968 +291969 +291970 +291971 +291972 +291973 +291974 +291975 +292000 +292001 +292002 +292003 +292004 +292005 +292006 +292007 +292032 +292033 +292034 +292035 +292036 +292037 +292038 +292039 +292064 +292065 +292066 +292067 +292068 +292069 +292070 +292071 +292096 +292097 +292098 +292099 +292100 +292101 +292102 +292103 +292128 +292129 +292130 +292131 +292132 +292133 +292134 +292135 +292160 +292161 +292162 +292163 +292164 +292165 +292166 +292167 +292192 +292193 +292194 +292195 +292196 +292197 +292198 +292199 +292224 +292225 +292226 +292227 +292228 +292229 +292230 +292231 +292256 +292257 +292258 +292259 +292260 +292261 +292262 +292263 +292288 +292289 +292290 +292291 +292292 +292293 +292294 +292295 +292320 +292321 +292322 +292323 +292324 +292325 +292326 +292327 +292352 +292353 +292354 +292355 +292356 +292357 +292358 +292359 +292384 +292385 +292386 +292387 +292388 +292389 +292390 +292391 +292416 +292417 +292418 +292419 +292420 +292421 +292422 +292423 +292448 +292449 +292450 +292451 +292452 +292453 +292454 +292455 +292480 +292481 +292482 +292483 +292484 +292485 +292486 +292487 +292512 +292513 +292514 +292515 +292516 +292517 +292518 +292519 +292544 +292545 +292546 +292547 +292548 +292549 +292550 +292551 +292576 +292577 +292578 +292579 +292580 +292581 +292582 +292583 +292608 +292609 +292610 +292611 +292612 +292613 +292614 +292615 +292640 +292641 +292642 +292643 +292644 +292645 +292646 +292647 +292672 +292673 +292674 +292675 +292676 +292677 +292678 +292679 +292704 +292705 +292706 +292707 +292708 +292709 +292710 +292711 +292736 +292737 +292738 +292739 +292740 +292741 +292742 +292743 +292768 +292769 +292770 +292771 +292772 +292773 +292774 +292775 +292800 +292801 +292802 +292803 +292804 +292805 +292806 +292807 +292832 +292833 +292834 +292835 +292836 +292837 +292838 +292839 +292864 +292865 +292866 +292867 +292868 +292869 +292870 +292871 +292896 +292897 +292898 +292899 +292900 +292901 +292902 +292903 +292928 +292929 +292930 +292931 +292932 +292933 +292934 +292935 +292960 +292961 +292962 +292963 +292964 +292965 +292966 +292967 +292992 +292993 +292994 +292995 +292996 +292997 +292998 +292999 +293024 +293025 +293026 +293027 +293028 +293029 +293030 +293031 +293056 +293057 +293058 +293059 +293060 +293061 +293062 +293063 +293088 +293089 +293090 +293091 +293092 +293093 +293094 +293095 +293120 +293121 +293122 +293123 +293124 +293125 +293126 +293127 +293152 +293153 +293154 +293155 +293156 +293157 +293158 +293159 +293184 +293185 +293186 +293187 +293188 +293189 +293190 +293191 +293216 +293217 +293218 +293219 +293220 +293221 +293222 +293223 +293248 +293249 +293250 +293251 +293252 +293253 +293254 +293255 +293280 +293281 +293282 +293283 +293284 +293285 +293286 +293287 +293312 +293313 +293314 +293315 +293316 +293317 +293318 +293319 +293344 +293345 +293346 +293347 +293348 +293349 +293350 +293351 +293376 +293377 +293378 +293379 +293380 +293381 +293382 +293383 +293408 +293409 +293410 +293411 +293412 +293413 +293414 +293415 +293440 +293441 +293442 +293443 +293444 +293445 +293446 +293447 +293472 +293473 +293474 +293475 +293476 +293477 +293478 +293479 +293504 +293505 +293506 +293507 +293508 +293509 +293510 +293511 +293536 +293537 +293538 +293539 +293540 +293541 +293542 +293543 +293568 +293569 +293570 +293571 +293572 +293573 +293574 +293575 +293600 +293601 +293602 +293603 +293604 +293605 +293606 +293607 +293632 +293633 +293634 +293635 +293636 +293637 +293638 +293639 +293664 +293665 +293666 +293667 +293668 +293669 +293670 +293671 +293696 +293697 +293698 +293699 +293700 +293701 +293702 +293703 +293728 +293729 +293730 +293731 +293732 +293733 +293734 +293735 +293760 +293761 +293762 +293763 +293764 +293765 +293766 +293767 +293792 +293793 +293794 +293795 +293796 +293797 +293798 +293799 +293824 +293825 +293826 +293827 +293828 +293829 +293830 +293831 +293856 +293857 +293858 +293859 +293860 +293861 +293862 +293863 +293888 +293889 +293890 +293891 +293892 +293893 +293894 +293895 +293920 +293921 +293922 +293923 +293924 +293925 +293926 +293927 +293952 +293953 +293954 +293955 +293956 +293957 +293958 +293959 +293984 +293985 +293986 +293987 +293988 +293989 +293990 +293991 +294016 +294017 +294018 +294019 +294020 +294021 +294022 +294023 +294048 +294049 +294050 +294051 +294052 +294053 +294054 +294055 +294080 +294081 +294082 +294083 +294084 +294085 +294086 +294087 +294112 +294113 +294114 +294115 +294116 +294117 +294118 +294119 +294144 +294145 +294146 +294147 +294148 +294149 +294150 +294151 +294176 +294177 +294178 +294179 +294180 +294181 +294182 +294183 +294208 +294209 +294210 +294211 +294212 +294213 +294214 +294215 +294240 +294241 +294242 +294243 +294244 +294245 +294246 +294247 +294272 +294273 +294274 +294275 +294276 +294277 +294278 +294279 +294304 +294305 +294306 +294307 +294308 +294309 +294310 +294311 +294336 +294337 +294338 +294339 +294340 +294341 +294342 +294343 +294368 +294369 +294370 +294371 +294372 +294373 +294374 +294375 +294400 +294401 +294402 +294403 +294404 +294405 +294406 +294407 +294432 +294433 +294434 +294435 +294436 +294437 +294438 +294439 +294464 +294465 +294466 +294467 +294468 +294469 +294470 +294471 +294496 +294497 +294498 +294499 +294500 +294501 +294502 +294503 +294528 +294529 +294530 +294531 +294532 +294533 +294534 +294535 +294560 +294561 +294562 +294563 +294564 +294565 +294566 +294567 +294592 +294593 +294594 +294595 +294596 +294597 +294598 +294599 +294624 +294625 +294626 +294627 +294628 +294629 +294630 +294631 +294656 +294657 +294658 +294659 +294660 +294661 +294662 +294663 +294688 +294689 +294690 +294691 +294692 +294693 +294694 +294695 +294720 +294721 +294722 +294723 +294724 +294725 +294726 +294727 +294752 +294753 +294754 +294755 +294756 +294757 +294758 +294759 +294784 +294785 +294786 +294787 +294788 +294789 +294790 +294791 +294816 +294817 +294818 +294819 +294820 +294821 +294822 +294823 +294848 +294849 +294850 +294851 +294852 +294853 +294854 +294855 +294880 +294881 +294882 +294883 +294884 +294885 +294886 +294887 +294912 +294913 +294914 +294915 +294916 +294917 +294918 +294919 +294944 +294945 +294946 +294947 +294948 +294949 +294950 +294951 +294976 +294977 +294978 +294979 +294980 +294981 +294982 +294983 +295008 +295009 +295010 +295011 +295012 +295013 +295014 +295015 +295040 +295041 +295042 +295043 +295044 +295045 +295046 +295047 +295072 +295073 +295074 +295075 +295076 +295077 +295078 +295079 +295104 +295105 +295106 +295107 +295108 +295109 +295110 +295111 +295136 +295137 +295138 +295139 +295140 +295141 +295142 +295143 +295168 +295169 +295170 +295171 +295172 +295173 +295174 +295175 +295200 +295201 +295202 +295203 +295204 +295205 +295206 +295207 +295232 +295233 +295234 +295235 +295236 +295237 +295238 +295239 +295264 +295265 +295266 +295267 +295268 +295269 +295270 +295271 +295296 +295297 +295298 +295299 +295300 +295301 +295302 +295303 +295328 +295329 +295330 +295331 +295332 +295333 +295334 +295335 +295360 +295361 +295362 +295363 +295364 +295365 +295366 +295367 +295392 +295393 +295394 +295395 +295396 +295397 +295398 +295399 +295424 +295425 +295426 +295427 +295428 +295429 +295430 +295431 +295456 +295457 +295458 +295459 +295460 +295461 +295462 +295463 +295488 +295489 +295490 +295491 +295492 +295493 +295494 +295495 +295520 +295521 +295522 +295523 +295524 +295525 +295526 +295527 +295552 +295553 +295554 +295555 +295556 +295557 +295558 +295559 +295584 +295585 +295586 +295587 +295588 +295589 +295590 +295591 +295616 +295617 +295618 +295619 +295620 +295621 +295622 +295623 +295648 +295649 +295650 +295651 +295652 +295653 +295654 +295655 +295680 +295681 +295682 +295683 +295684 +295685 +295686 +295687 +295712 +295713 +295714 +295715 +295716 +295717 +295718 +295719 +295744 +295745 +295746 +295747 +295748 +295749 +295750 +295751 +295776 +295777 +295778 +295779 +295780 +295781 +295782 +295783 +295808 +295809 +295810 +295811 +295812 +295813 +295814 +295815 +295840 +295841 +295842 +295843 +295844 +295845 +295846 +295847 +295872 +295873 +295874 +295875 +295876 +295877 +295878 +295879 +295904 +295905 +295906 +295907 +295908 +295909 +295910 +295911 +295936 +295937 +295938 +295939 +295940 +295941 +295942 +295943 +295968 +295969 +295970 +295971 +295972 +295973 +295974 +295975 +296000 +296001 +296002 +296003 +296004 +296005 +296006 +296007 +296032 +296033 +296034 +296035 +296036 +296037 +296038 +296039 +296064 +296065 +296066 +296067 +296068 +296069 +296070 +296071 +296096 +296097 +296098 +296099 +296100 +296101 +296102 +296103 +296128 +296129 +296130 +296131 +296132 +296133 +296134 +296135 +296160 +296161 +296162 +296163 +296164 +296165 +296166 +296167 +296192 +296193 +296194 +296195 +296196 +296197 +296198 +296199 +296224 +296225 +296226 +296227 +296228 +296229 +296230 +296231 +296256 +296257 +296258 +296259 +296260 +296261 +296262 +296263 +296288 +296289 +296290 +296291 +296292 +296293 +296294 +296295 +296320 +296321 +296322 +296323 +296324 +296325 +296326 +296327 +296352 +296353 +296354 +296355 +296356 +296357 +296358 +296359 +296384 +296385 +296386 +296387 +296388 +296389 +296390 +296391 +296416 +296417 +296418 +296419 +296420 +296421 +296422 +296423 +296448 +296449 +296450 +296451 +296452 +296453 +296454 +296455 +296480 +296481 +296482 +296483 +296484 +296485 +296486 +296487 +296512 +296513 +296514 +296515 +296516 +296517 +296518 +296519 +296544 +296545 +296546 +296547 +296548 +296549 +296550 +296551 +296576 +296577 +296578 +296579 +296580 +296581 +296582 +296583 +296608 +296609 +296610 +296611 +296612 +296613 +296614 +296615 +296640 +296641 +296642 +296643 +296644 +296645 +296646 +296647 +296672 +296673 +296674 +296675 +296676 +296677 +296678 +296679 +296704 +296705 +296706 +296707 +296708 +296709 +296710 +296711 +296736 +296737 +296738 +296739 +296740 +296741 +296742 +296743 +296768 +296769 +296770 +296771 +296772 +296773 +296774 +296775 +296800 +296801 +296802 +296803 +296804 +296805 +296806 +296807 +296832 +296833 +296834 +296835 +296836 +296837 +296838 +296839 +296864 +296865 +296866 +296867 +296868 +296869 +296870 +296871 +296896 +296897 +296898 +296899 +296900 +296901 +296902 +296903 +296928 +296929 +296930 +296931 +296932 +296933 +296934 +296935 +296960 +296961 +296962 +296963 +296964 +296965 +296966 +296967 +296992 +296993 +296994 +296995 +296996 +296997 +296998 +296999 +297024 +297025 +297026 +297027 +297028 +297029 +297030 +297031 +297056 +297057 +297058 +297059 +297060 +297061 +297062 +297063 +297088 +297089 +297090 +297091 +297092 +297093 +297094 +297095 +297120 +297121 +297122 +297123 +297124 +297125 +297126 +297127 +297152 +297153 +297154 +297155 +297156 +297157 +297158 +297159 +297184 +297185 +297186 +297187 +297188 +297189 +297190 +297191 +297216 +297217 +297218 +297219 +297220 +297221 +297222 +297223 +297248 +297249 +297250 +297251 +297252 +297253 +297254 +297255 +297280 +297281 +297282 +297283 +297284 +297285 +297286 +297287 +297312 +297313 +297314 +297315 +297316 +297317 +297318 +297319 +297344 +297345 +297346 +297347 +297348 +297349 +297350 +297351 +297376 +297377 +297378 +297379 +297380 +297381 +297382 +297383 +297408 +297409 +297410 +297411 +297412 +297413 +297414 +297415 +297440 +297441 +297442 +297443 +297444 +297445 +297446 +297447 +297472 +297473 +297474 +297475 +297476 +297477 +297478 +297479 +297504 +297505 +297506 +297507 +297508 +297509 +297510 +297511 +297536 +297537 +297538 +297539 +297540 +297541 +297542 +297543 +297568 +297569 +297570 +297571 +297572 +297573 +297574 +297575 +297600 +297601 +297602 +297603 +297604 +297605 +297606 +297607 +297632 +297633 +297634 +297635 +297636 +297637 +297638 +297639 +297664 +297665 +297666 +297667 +297668 +297669 +297670 +297671 +297696 +297697 +297698 +297699 +297700 +297701 +297702 +297703 +297728 +297729 +297730 +297731 +297732 +297733 +297734 +297735 +297760 +297761 +297762 +297763 +297764 +297765 +297766 +297767 +297792 +297793 +297794 +297795 +297796 +297797 +297798 +297799 +297824 +297825 +297826 +297827 +297828 +297829 +297830 +297831 +297856 +297857 +297858 +297859 +297860 +297861 +297862 +297863 +297888 +297889 +297890 +297891 +297892 +297893 +297894 +297895 +297920 +297921 +297922 +297923 +297924 +297925 +297926 +297927 +297952 +297953 +297954 +297955 +297956 +297957 +297958 +297959 +297984 +297985 +297986 +297987 +297988 +297989 +297990 +297991 +298016 +298017 +298018 +298019 +298020 +298021 +298022 +298023 +298048 +298049 +298050 +298051 +298052 +298053 +298054 +298055 +298080 +298081 +298082 +298083 +298084 +298085 +298086 +298087 +298112 +298113 +298114 +298115 +298116 +298117 +298118 +298119 +298144 +298145 +298146 +298147 +298148 +298149 +298150 +298151 +298176 +298177 +298178 +298179 +298180 +298181 +298182 +298183 +298208 +298209 +298210 +298211 +298212 +298213 +298214 +298215 +298240 +298241 +298242 +298243 +298244 +298245 +298246 +298247 +298272 +298273 +298274 +298275 +298276 +298277 +298278 +298279 +298304 +298305 +298306 +298307 +298308 +298309 +298310 +298311 +298336 +298337 +298338 +298339 +298340 +298341 +298342 +298343 +298368 +298369 +298370 +298371 +298372 +298373 +298374 +298375 +298400 +298401 +298402 +298403 +298404 +298405 +298406 +298407 +298432 +298433 +298434 +298435 +298436 +298437 +298438 +298439 +298464 +298465 +298466 +298467 +298468 +298469 +298470 +298471 +298496 +298497 +298498 +298499 +298500 +298501 +298502 +298503 +298528 +298529 +298530 +298531 +298532 +298533 +298534 +298535 +298560 +298561 +298562 +298563 +298564 +298565 +298566 +298567 +298592 +298593 +298594 +298595 +298596 +298597 +298598 +298599 +298624 +298625 +298626 +298627 +298628 +298629 +298630 +298631 +298656 +298657 +298658 +298659 +298660 +298661 +298662 +298663 +298688 +298689 +298690 +298691 +298692 +298693 +298694 +298695 +298720 +298721 +298722 +298723 +298724 +298725 +298726 +298727 +298752 +298753 +298754 +298755 +298756 +298757 +298758 +298759 +298784 +298785 +298786 +298787 +298788 +298789 +298790 +298791 +298816 +298817 +298818 +298819 +298820 +298821 +298822 +298823 +298848 +298849 +298850 +298851 +298852 +298853 +298854 +298855 +298880 +298881 +298882 +298883 +298884 +298885 +298886 +298887 +298912 +298913 +298914 +298915 +298916 +298917 +298918 +298919 +298944 +298945 +298946 +298947 +298948 +298949 +298950 +298951 +298976 +298977 +298978 +298979 +298980 +298981 +298982 +298983 +299008 +299009 +299010 +299011 +299012 +299013 +299014 +299015 +299040 +299041 +299042 +299043 +299044 +299045 +299046 +299047 +299072 +299073 +299074 +299075 +299076 +299077 +299078 +299079 +299104 +299105 +299106 +299107 +299108 +299109 +299110 +299111 +299136 +299137 +299138 +299139 +299140 +299141 +299142 +299143 +299168 +299169 +299170 +299171 +299172 +299173 +299174 +299175 +299200 +299201 +299202 +299203 +299204 +299205 +299206 +299207 +299232 +299233 +299234 +299235 +299236 +299237 +299238 +299239 +299264 +299265 +299266 +299267 +299268 +299269 +299270 +299271 +299296 +299297 +299298 +299299 +299300 +299301 +299302 +299303 +299328 +299329 +299330 +299331 +299332 +299333 +299334 +299335 +299360 +299361 +299362 +299363 +299364 +299365 +299366 +299367 +299392 +299393 +299394 +299395 +299396 +299397 +299398 +299399 +299424 +299425 +299426 +299427 +299428 +299429 +299430 +299431 +299456 +299457 +299458 +299459 +299460 +299461 +299462 +299463 +299488 +299489 +299490 +299491 +299492 +299493 +299494 +299495 +299520 +299521 +299522 +299523 +299524 +299525 +299526 +299527 +299552 +299553 +299554 +299555 +299556 +299557 +299558 +299559 +299584 +299585 +299586 +299587 +299588 +299589 +299590 +299591 +299616 +299617 +299618 +299619 +299620 +299621 +299622 +299623 +299648 +299649 +299650 +299651 +299652 +299653 +299654 +299655 +299680 +299681 +299682 +299683 +299684 +299685 +299686 +299687 +299712 +299713 +299714 +299715 +299716 +299717 +299718 +299719 +299744 +299745 +299746 +299747 +299748 +299749 +299750 +299751 +299776 +299777 +299778 +299779 +299780 +299781 +299782 +299783 +299808 +299809 +299810 +299811 +299812 +299813 +299814 +299815 +299840 +299841 +299842 +299843 +299844 +299845 +299846 +299847 +299872 +299873 +299874 +299875 +299876 +299877 +299878 +299879 +299904 +299905 +299906 +299907 +299908 +299909 +299910 +299911 +299936 +299937 +299938 +299939 +299940 +299941 +299942 +299943 +299968 +299969 +299970 +299971 +299972 +299973 +299974 +299975 +300000 +300001 +300002 +300003 +300004 +300005 +300006 +300007 +300032 +300033 +300034 +300035 +300036 +300037 +300038 +300039 +300064 +300065 +300066 +300067 +300068 +300069 +300070 +300071 +300096 +300097 +300098 +300099 +300100 +300101 +300102 +300103 +300128 +300129 +300130 +300131 +300132 +300133 +300134 +300135 +300160 +300161 +300162 +300163 +300164 +300165 +300166 +300167 +300192 +300193 +300194 +300195 +300196 +300197 +300198 +300199 +300224 +300225 +300226 +300227 +300228 +300229 +300230 +300231 +300256 +300257 +300258 +300259 +300260 +300261 +300262 +300263 +300288 +300289 +300290 +300291 +300292 +300293 +300294 +300295 +300320 +300321 +300322 +300323 +300324 +300325 +300326 +300327 +300352 +300353 +300354 +300355 +300356 +300357 +300358 +300359 +300384 +300385 +300386 +300387 +300388 +300389 +300390 +300391 +300416 +300417 +300418 +300419 +300420 +300421 +300422 +300423 +300448 +300449 +300450 +300451 +300452 +300453 +300454 +300455 +300480 +300481 +300482 +300483 +300484 +300485 +300486 +300487 +300512 +300513 +300514 +300515 +300516 +300517 +300518 +300519 +300544 +300545 +300546 +300547 +300548 +300549 +300550 +300551 +300576 +300577 +300578 +300579 +300580 +300581 +300582 +300583 +300608 +300609 +300610 +300611 +300612 +300613 +300614 +300615 +300640 +300641 +300642 +300643 +300644 +300645 +300646 +300647 +300672 +300673 +300674 +300675 +300676 +300677 +300678 +300679 +300704 +300705 +300706 +300707 +300708 +300709 +300710 +300711 +300736 +300737 +300738 +300739 +300740 +300741 +300742 +300743 +300768 +300769 +300770 +300771 +300772 +300773 +300774 +300775 +300800 +300801 +300802 +300803 +300804 +300805 +300806 +300807 +300832 +300833 +300834 +300835 +300836 +300837 +300838 +300839 +300864 +300865 +300866 +300867 +300868 +300869 +300870 +300871 +300896 +300897 +300898 +300899 +300900 +300901 +300902 +300903 +300928 +300929 +300930 +300931 +300932 +300933 +300934 +300935 +300960 +300961 +300962 +300963 +300964 +300965 +300966 +300967 +300992 +300993 +300994 +300995 +300996 +300997 +300998 +300999 +301024 +301025 +301026 +301027 +301028 +301029 +301030 +301031 +301056 +301057 +301058 +301059 +301060 +301061 +301062 +301063 +301088 +301089 +301090 +301091 +301092 +301093 +301094 +301095 +301120 +301121 +301122 +301123 +301124 +301125 +301126 +301127 +301152 +301153 +301154 +301155 +301156 +301157 +301158 +301159 +301184 +301185 +301186 +301187 +301188 +301189 +301190 +301191 +301216 +301217 +301218 +301219 +301220 +301221 +301222 +301223 +301248 +301249 +301250 +301251 +301252 +301253 +301254 +301255 +301280 +301281 +301282 +301283 +301284 +301285 +301286 +301287 +301312 +301313 +301314 +301315 +301316 +301317 +301318 +301319 +301344 +301345 +301346 +301347 +301348 +301349 +301350 +301351 +301376 +301377 +301378 +301379 +301380 +301381 +301382 +301383 +301408 +301409 +301410 +301411 +301412 +301413 +301414 +301415 +301440 +301441 +301442 +301443 +301444 +301445 +301446 +301447 +301472 +301473 +301474 +301475 +301476 +301477 +301478 +301479 +301504 +301505 +301506 +301507 +301508 +301509 +301510 +301511 +301536 +301537 +301538 +301539 +301540 +301541 +301542 +301543 +301568 +301569 +301570 +301571 +301572 +301573 +301574 +301575 +301600 +301601 +301602 +301603 +301604 +301605 +301606 +301607 +301632 +301633 +301634 +301635 +301636 +301637 +301638 +301639 +301664 +301665 +301666 +301667 +301668 +301669 +301670 +301671 +301696 +301697 +301698 +301699 +301700 +301701 +301702 +301703 +301728 +301729 +301730 +301731 +301732 +301733 +301734 +301735 +301760 +301761 +301762 +301763 +301764 +301765 +301766 +301767 +301792 +301793 +301794 +301795 +301796 +301797 +301798 +301799 +301824 +301825 +301826 +301827 +301828 +301829 +301830 +301831 +301856 +301857 +301858 +301859 +301860 +301861 +301862 +301863 +301888 +301889 +301890 +301891 +301892 +301893 +301894 +301895 +301920 +301921 +301922 +301923 +301924 +301925 +301926 +301927 +301952 +301953 +301954 +301955 +301956 +301957 +301958 +301959 +301984 +301985 +301986 +301987 +301988 +301989 +301990 +301991 +302016 +302017 +302018 +302019 +302020 +302021 +302022 +302023 +302048 +302049 +302050 +302051 +302052 +302053 +302054 +302055 +302080 +302081 +302082 +302083 +302084 +302085 +302086 +302087 +302112 +302113 +302114 +302115 +302116 +302117 +302118 +302119 +302144 +302145 +302146 +302147 +302148 +302149 +302150 +302151 +302176 +302177 +302178 +302179 +302180 +302181 +302182 +302183 +302208 +302209 +302210 +302211 +302212 +302213 +302214 +302215 +302240 +302241 +302242 +302243 +302244 +302245 +302246 +302247 +302272 +302273 +302274 +302275 +302276 +302277 +302278 +302279 +302304 +302305 +302306 +302307 +302308 +302309 +302310 +302311 +302336 +302337 +302338 +302339 +302340 +302341 +302342 +302343 +302368 +302369 +302370 +302371 +302372 +302373 +302374 +302375 +302400 +302401 +302402 +302403 +302404 +302405 +302406 +302407 +302432 +302433 +302434 +302435 +302436 +302437 +302438 +302439 +302464 +302465 +302466 +302467 +302468 +302469 +302470 +302471 +302496 +302497 +302498 +302499 +302500 +302501 +302502 +302503 +302528 +302529 +302530 +302531 +302532 +302533 +302534 +302535 +302560 +302561 +302562 +302563 +302564 +302565 +302566 +302567 +302592 +302593 +302594 +302595 +302596 +302597 +302598 +302599 +302624 +302625 +302626 +302627 +302628 +302629 +302630 +302631 +302656 +302657 +302658 +302659 +302660 +302661 +302662 +302663 +302688 +302689 +302690 +302691 +302692 +302693 +302694 +302695 +302720 +302721 +302722 +302723 +302724 +302725 +302726 +302727 +302752 +302753 +302754 +302755 +302756 +302757 +302758 +302759 +302784 +302785 +302786 +302787 +302788 +302789 +302790 +302791 +302816 +302817 +302818 +302819 +302820 +302821 +302822 +302823 +302848 +302849 +302850 +302851 +302852 +302853 +302854 +302855 +302880 +302881 +302882 +302883 +302884 +302885 +302886 +302887 +302912 +302913 +302914 +302915 +302916 +302917 +302918 +302919 +302944 +302945 +302946 +302947 +302948 +302949 +302950 +302951 +302976 +302977 +302978 +302979 +302980 +302981 +302982 +302983 +303008 +303009 +303010 +303011 +303012 +303013 +303014 +303015 +303040 +303041 +303042 +303043 +303044 +303045 +303046 +303047 +303072 +303073 +303074 +303075 +303076 +303077 +303078 +303079 +303104 +303105 +303106 +303107 +303108 +303109 +303110 +303111 +303136 +303137 +303138 +303139 +303140 +303141 +303142 +303143 +303168 +303169 +303170 +303171 +303172 +303173 +303174 +303175 +303200 +303201 +303202 +303203 +303204 +303205 +303206 +303207 +303232 +303233 +303234 +303235 +303236 +303237 +303238 +303239 +303264 +303265 +303266 +303267 +303268 +303269 +303270 +303271 +303296 +303297 +303298 +303299 +303300 +303301 +303302 +303303 +303328 +303329 +303330 +303331 +303332 +303333 +303334 +303335 +303360 +303361 +303362 +303363 +303364 +303365 +303366 +303367 +303392 +303393 +303394 +303395 +303396 +303397 +303398 +303399 +303424 +303425 +303426 +303427 +303428 +303429 +303430 +303431 +303456 +303457 +303458 +303459 +303460 +303461 +303462 +303463 +303488 +303489 +303490 +303491 +303492 +303493 +303494 +303495 +303520 +303521 +303522 +303523 +303524 +303525 +303526 +303527 +303552 +303553 +303554 +303555 +303556 +303557 +303558 +303559 +303584 +303585 +303586 +303587 +303588 +303589 +303590 +303591 +303616 +303617 +303618 +303619 +303620 +303621 +303622 +303623 +303648 +303649 +303650 +303651 +303652 +303653 +303654 +303655 +303680 +303681 +303682 +303683 +303684 +303685 +303686 +303687 +303712 +303713 +303714 +303715 +303716 +303717 +303718 +303719 +303744 +303745 +303746 +303747 +303748 +303749 +303750 +303751 +303776 +303777 +303778 +303779 +303780 +303781 +303782 +303783 +303808 +303809 +303810 +303811 +303812 +303813 +303814 +303815 +303840 +303841 +303842 +303843 +303844 +303845 +303846 +303847 +303872 +303873 +303874 +303875 +303876 +303877 +303878 +303879 +303904 +303905 +303906 +303907 +303908 +303909 +303910 +303911 +303936 +303937 +303938 +303939 +303940 +303941 +303942 +303943 +303968 +303969 +303970 +303971 +303972 +303973 +303974 +303975 +304000 +304001 +304002 +304003 +304004 +304005 +304006 +304007 +304032 +304033 +304034 +304035 +304036 +304037 +304038 +304039 +304064 +304065 +304066 +304067 +304068 +304069 +304070 +304071 +304096 +304097 +304098 +304099 +304100 +304101 +304102 +304103 +304128 +304129 +304130 +304131 +304132 +304133 +304134 +304135 +304160 +304161 +304162 +304163 +304164 +304165 +304166 +304167 +304192 +304193 +304194 +304195 +304196 +304197 +304198 +304199 +304224 +304225 +304226 +304227 +304228 +304229 +304230 +304231 +304256 +304257 +304258 +304259 +304260 +304261 +304262 +304263 +304288 +304289 +304290 +304291 +304292 +304293 +304294 +304295 +304320 +304321 +304322 +304323 +304324 +304325 +304326 +304327 +304352 +304353 +304354 +304355 +304356 +304357 +304358 +304359 +304384 +304385 +304386 +304387 +304388 +304389 +304390 +304391 +304416 +304417 +304418 +304419 +304420 +304421 +304422 +304423 +304448 +304449 +304450 +304451 +304452 +304453 +304454 +304455 +304480 +304481 +304482 +304483 +304484 +304485 +304486 +304487 +304512 +304513 +304514 +304515 +304516 +304517 +304518 +304519 +304544 +304545 +304546 +304547 +304548 +304549 +304550 +304551 +304576 +304577 +304578 +304579 +304580 +304581 +304582 +304583 +304608 +304609 +304610 +304611 +304612 +304613 +304614 +304615 +304640 +304641 +304642 +304643 +304644 +304645 +304646 +304647 +304672 +304673 +304674 +304675 +304676 +304677 +304678 +304679 +304704 +304705 +304706 +304707 +304708 +304709 +304710 +304711 +304736 +304737 +304738 +304739 +304740 +304741 +304742 +304743 +304768 +304769 +304770 +304771 +304772 +304773 +304774 +304775 +304800 +304801 +304802 +304803 +304804 +304805 +304806 +304807 +304832 +304833 +304834 +304835 +304836 +304837 +304838 +304839 +304864 +304865 +304866 +304867 +304868 +304869 +304870 +304871 +304896 +304897 +304898 +304899 +304900 +304901 +304902 +304903 +304928 +304929 +304930 +304931 +304932 +304933 +304934 +304935 +304960 +304961 +304962 +304963 +304964 +304965 +304966 +304967 +304992 +304993 +304994 +304995 +304996 +304997 +304998 +304999 +305024 +305025 +305026 +305027 +305028 +305029 +305030 +305031 +305056 +305057 +305058 +305059 +305060 +305061 +305062 +305063 +305088 +305089 +305090 +305091 +305092 +305093 +305094 +305095 +305120 +305121 +305122 +305123 +305124 +305125 +305126 +305127 +305152 +305153 +305154 +305155 +305156 +305157 +305158 +305159 +305184 +305185 +305186 +305187 +305188 +305189 +305190 +305191 +305216 +305217 +305218 +305219 +305220 +305221 +305222 +305223 +305248 +305249 +305250 +305251 +305252 +305253 +305254 +305255 +305280 +305281 +305282 +305283 +305284 +305285 +305286 +305287 +305312 +305313 +305314 +305315 +305316 +305317 +305318 +305319 +305344 +305345 +305346 +305347 +305348 +305349 +305350 +305351 +305376 +305377 +305378 +305379 +305380 +305381 +305382 +305383 +305408 +305409 +305410 +305411 +305412 +305413 +305414 +305415 +305440 +305441 +305442 +305443 +305444 +305445 +305446 +305447 +305472 +305473 +305474 +305475 +305476 +305477 +305478 +305479 +305504 +305505 +305506 +305507 +305508 +305509 +305510 +305511 +305536 +305537 +305538 +305539 +305540 +305541 +305542 +305543 +305568 +305569 +305570 +305571 +305572 +305573 +305574 +305575 +305600 +305601 +305602 +305603 +305604 +305605 +305606 +305607 +305632 +305633 +305634 +305635 +305636 +305637 +305638 +305639 +305664 +305665 +305666 +305667 +305668 +305669 +305670 +305671 +305696 +305697 +305698 +305699 +305700 +305701 +305702 +305703 +305728 +305729 +305730 +305731 +305732 +305733 +305734 +305735 +305760 +305761 +305762 +305763 +305764 +305765 +305766 +305767 +305792 +305793 +305794 +305795 +305796 +305797 +305798 +305799 +305824 +305825 +305826 +305827 +305828 +305829 +305830 +305831 +305856 +305857 +305858 +305859 +305860 +305861 +305862 +305863 +305888 +305889 +305890 +305891 +305892 +305893 +305894 +305895 +305920 +305921 +305922 +305923 +305924 +305925 +305926 +305927 +305952 +305953 +305954 +305955 +305956 +305957 +305958 +305959 +305984 +305985 +305986 +305987 +305988 +305989 +305990 +305991 +306016 +306017 +306018 +306019 +306020 +306021 +306022 +306023 +306048 +306049 +306050 +306051 +306052 +306053 +306054 +306055 +306080 +306081 +306082 +306083 +306084 +306085 +306086 +306087 +306112 +306113 +306114 +306115 +306116 +306117 +306118 +306119 +306144 +306145 +306146 +306147 +306148 +306149 +306150 +306151 +306176 +306177 +306178 +306179 +306180 +306181 +306182 +306183 +306208 +306209 +306210 +306211 +306212 +306213 +306214 +306215 +306240 +306241 +306242 +306243 +306244 +306245 +306246 +306247 +306272 +306273 +306274 +306275 +306276 +306277 +306278 +306279 +306304 +306305 +306306 +306307 +306308 +306309 +306310 +306311 +306336 +306337 +306338 +306339 +306340 +306341 +306342 +306343 +306368 +306369 +306370 +306371 +306372 +306373 +306374 +306375 +306400 +306401 +306402 +306403 +306404 +306405 +306406 +306407 +306432 +306433 +306434 +306435 +306436 +306437 +306438 +306439 +306464 +306465 +306466 +306467 +306468 +306469 +306470 +306471 +306496 +306497 +306498 +306499 +306500 +306501 +306502 +306503 +306528 +306529 +306530 +306531 +306532 +306533 +306534 +306535 +306560 +306561 +306562 +306563 +306564 +306565 +306566 +306567 +306592 +306593 +306594 +306595 +306596 +306597 +306598 +306599 +306624 +306625 +306626 +306627 +306628 +306629 +306630 +306631 +306656 +306657 +306658 +306659 +306660 +306661 +306662 +306663 +306688 +306689 +306690 +306691 +306692 +306693 +306694 +306695 +306720 +306721 +306722 +306723 +306724 +306725 +306726 +306727 +306752 +306753 +306754 +306755 +306756 +306757 +306758 +306759 +306784 +306785 +306786 +306787 +306788 +306789 +306790 +306791 +306816 +306817 +306818 +306819 +306820 +306821 +306822 +306823 +306848 +306849 +306850 +306851 +306852 +306853 +306854 +306855 +306880 +306881 +306882 +306883 +306884 +306885 +306886 +306887 +306912 +306913 +306914 +306915 +306916 +306917 +306918 +306919 +306944 +306945 +306946 +306947 +306948 +306949 +306950 +306951 +306976 +306977 +306978 +306979 +306980 +306981 +306982 +306983 +307008 +307009 +307010 +307011 +307012 +307013 +307014 +307015 +307040 +307041 +307042 +307043 +307044 +307045 +307046 +307047 +307072 +307073 +307074 +307075 +307076 +307077 +307078 +307079 +307104 +307105 +307106 +307107 +307108 +307109 +307110 +307111 +307136 +307137 +307138 +307139 +307140 +307141 +307142 +307143 +307168 +307169 +307170 +307171 +307172 +307173 +307174 +307175 +307200 +307201 +307202 +307203 +307204 +307205 +307206 +307207 +307232 +307233 +307234 +307235 +307236 +307237 +307238 +307239 +307264 +307265 +307266 +307267 +307268 +307269 +307270 +307271 +307296 +307297 +307298 +307299 +307300 +307301 +307302 +307303 +307328 +307329 +307330 +307331 +307332 +307333 +307334 +307335 +307360 +307361 +307362 +307363 +307364 +307365 +307366 +307367 +307392 +307393 +307394 +307395 +307396 +307397 +307398 +307399 +307424 +307425 +307426 +307427 +307428 +307429 +307430 +307431 +307456 +307457 +307458 +307459 +307460 +307461 +307462 +307463 +307488 +307489 +307490 +307491 +307492 +307493 +307494 +307495 +307520 +307521 +307522 +307523 +307524 +307525 +307526 +307527 +307552 +307553 +307554 +307555 +307556 +307557 +307558 +307559 +307584 +307585 +307586 +307587 +307588 +307589 +307590 +307591 +307616 +307617 +307618 +307619 +307620 +307621 +307622 +307623 +307648 +307649 +307650 +307651 +307652 +307653 +307654 +307655 +307680 +307681 +307682 +307683 +307684 +307685 +307686 +307687 +307712 +307713 +307714 +307715 +307716 +307717 +307718 +307719 +307744 +307745 +307746 +307747 +307748 +307749 +307750 +307751 +307776 +307777 +307778 +307779 +307780 +307781 +307782 +307783 +307808 +307809 +307810 +307811 +307812 +307813 +307814 +307815 +307840 +307841 +307842 +307843 +307844 +307845 +307846 +307847 +307872 +307873 +307874 +307875 +307876 +307877 +307878 +307879 +307904 +307905 +307906 +307907 +307908 +307909 +307910 +307911 +307936 +307937 +307938 +307939 +307940 +307941 +307942 +307943 +307968 +307969 +307970 +307971 +307972 +307973 +307974 +307975 +308000 +308001 +308002 +308003 +308004 +308005 +308006 +308007 +308032 +308033 +308034 +308035 +308036 +308037 +308038 +308039 +308064 +308065 +308066 +308067 +308068 +308069 +308070 +308071 +308096 +308097 +308098 +308099 +308100 +308101 +308102 +308103 +308128 +308129 +308130 +308131 +308132 +308133 +308134 +308135 +308160 +308161 +308162 +308163 +308164 +308165 +308166 +308167 +308192 +308193 +308194 +308195 +308196 +308197 +308198 +308199 +308224 +308225 +308226 +308227 +308228 +308229 +308230 +308231 +308256 +308257 +308258 +308259 +308260 +308261 +308262 +308263 +308288 +308289 +308290 +308291 +308292 +308293 +308294 +308295 +308320 +308321 +308322 +308323 +308324 +308325 +308326 +308327 +308352 +308353 +308354 +308355 +308356 +308357 +308358 +308359 +308384 +308385 +308386 +308387 +308388 +308389 +308390 +308391 +308416 +308417 +308418 +308419 +308420 +308421 +308422 +308423 +308448 +308449 +308450 +308451 +308452 +308453 +308454 +308455 +308480 +308481 +308482 +308483 +308484 +308485 +308486 +308487 +308512 +308513 +308514 +308515 +308516 +308517 +308518 +308519 +308544 +308545 +308546 +308547 +308548 +308549 +308550 +308551 +308576 +308577 +308578 +308579 +308580 +308581 +308582 +308583 +308608 +308609 +308610 +308611 +308612 +308613 +308614 +308615 +308640 +308641 +308642 +308643 +308644 +308645 +308646 +308647 +308672 +308673 +308674 +308675 +308676 +308677 +308678 +308679 +308704 +308705 +308706 +308707 +308708 +308709 +308710 +308711 +308736 +308737 +308738 +308739 +308740 +308741 +308742 +308743 +308768 +308769 +308770 +308771 +308772 +308773 +308774 +308775 +308800 +308801 +308802 +308803 +308804 +308805 +308806 +308807 +308832 +308833 +308834 +308835 +308836 +308837 +308838 +308839 +308864 +308865 +308866 +308867 +308868 +308869 +308870 +308871 +308896 +308897 +308898 +308899 +308900 +308901 +308902 +308903 +308928 +308929 +308930 +308931 +308932 +308933 +308934 +308935 +308960 +308961 +308962 +308963 +308964 +308965 +308966 +308967 +308992 +308993 +308994 +308995 +308996 +308997 +308998 +308999 +309024 +309025 +309026 +309027 +309028 +309029 +309030 +309031 +309056 +309057 +309058 +309059 +309060 +309061 +309062 +309063 +309088 +309089 +309090 +309091 +309092 +309093 +309094 +309095 +309120 +309121 +309122 +309123 +309124 +309125 +309126 +309127 +309152 +309153 +309154 +309155 +309156 +309157 +309158 +309159 +309184 +309185 +309186 +309187 +309188 +309189 +309190 +309191 +309216 +309217 +309218 +309219 +309220 +309221 +309222 +309223 +309248 +309249 +309250 +309251 +309252 +309253 +309254 +309255 +309280 +309281 +309282 +309283 +309284 +309285 +309286 +309287 +309312 +309313 +309314 +309315 +309316 +309317 +309318 +309319 +309344 +309345 +309346 +309347 +309348 +309349 +309350 +309351 +309376 +309377 +309378 +309379 +309380 +309381 +309382 +309383 +309408 +309409 +309410 +309411 +309412 +309413 +309414 +309415 +309440 +309441 +309442 +309443 +309444 +309445 +309446 +309447 +309472 +309473 +309474 +309475 +309476 +309477 +309478 +309479 +309504 +309505 +309506 +309507 +309508 +309509 +309510 +309511 +309536 +309537 +309538 +309539 +309540 +309541 +309542 +309543 +309568 +309569 +309570 +309571 +309572 +309573 +309574 +309575 +309600 +309601 +309602 +309603 +309604 +309605 +309606 +309607 +309632 +309633 +309634 +309635 +309636 +309637 +309638 +309639 +309664 +309665 +309666 +309667 +309668 +309669 +309670 +309671 +309696 +309697 +309698 +309699 +309700 +309701 +309702 +309703 +309728 +309729 +309730 +309731 +309732 +309733 +309734 +309735 +309760 +309761 +309762 +309763 +309764 +309765 +309766 +309767 +309792 +309793 +309794 +309795 +309796 +309797 +309798 +309799 +309824 +309825 +309826 +309827 +309828 +309829 +309830 +309831 +309856 +309857 +309858 +309859 +309860 +309861 +309862 +309863 +309888 +309889 +309890 +309891 +309892 +309893 +309894 +309895 +309920 +309921 +309922 +309923 +309924 +309925 +309926 +309927 +309952 +309953 +309954 +309955 +309956 +309957 +309958 +309959 +309984 +309985 +309986 +309987 +309988 +309989 +309990 +309991 +310016 +310017 +310018 +310019 +310020 +310021 +310022 +310023 +310048 +310049 +310050 +310051 +310052 +310053 +310054 +310055 +310080 +310081 +310082 +310083 +310084 +310085 +310086 +310087 +310112 +310113 +310114 +310115 +310116 +310117 +310118 +310119 +310144 +310145 +310146 +310147 +310148 +310149 +310150 +310151 +310176 +310177 +310178 +310179 +310180 +310181 +310182 +310183 +310208 +310209 +310210 +310211 +310212 +310213 +310214 +310215 +310240 +310241 +310242 +310243 +310244 +310245 +310246 +310247 +310272 +310273 +310274 +310275 +310276 +310277 +310278 +310279 +310304 +310305 +310306 +310307 +310308 +310309 +310310 +310311 +310336 +310337 +310338 +310339 +310340 +310341 +310342 +310343 +310368 +310369 +310370 +310371 +310372 +310373 +310374 +310375 +310400 +310401 +310402 +310403 +310404 +310405 +310406 +310407 +310432 +310433 +310434 +310435 +310436 +310437 +310438 +310439 +310464 +310465 +310466 +310467 +310468 +310469 +310470 +310471 +310496 +310497 +310498 +310499 +310500 +310501 +310502 +310503 +310528 +310529 +310530 +310531 +310532 +310533 +310534 +310535 +310560 +310561 +310562 +310563 +310564 +310565 +310566 +310567 +310592 +310593 +310594 +310595 +310596 +310597 +310598 +310599 +310624 +310625 +310626 +310627 +310628 +310629 +310630 +310631 +310656 +310657 +310658 +310659 +310660 +310661 +310662 +310663 +310688 +310689 +310690 +310691 +310692 +310693 +310694 +310695 +310720 +310721 +310722 +310723 +310724 +310725 +310726 +310727 +310752 +310753 +310754 +310755 +310756 +310757 +310758 +310759 +310784 +310785 +310786 +310787 +310788 +310789 +310790 +310791 +310816 +310817 +310818 +310819 +310820 +310821 +310822 +310823 +310848 +310849 +310850 +310851 +310852 +310853 +310854 +310855 +310880 +310881 +310882 +310883 +310884 +310885 +310886 +310887 +310912 +310913 +310914 +310915 +310916 +310917 +310918 +310919 +310944 +310945 +310946 +310947 +310948 +310949 +310950 +310951 +310976 +310977 +310978 +310979 +310980 +310981 +310982 +310983 +311008 +311009 +311010 +311011 +311012 +311013 +311014 +311015 +311040 +311041 +311042 +311043 +311044 +311045 +311046 +311047 +311072 +311073 +311074 +311075 +311076 +311077 +311078 +311079 +311104 +311105 +311106 +311107 +311108 +311109 +311110 +311111 +311136 +311137 +311138 +311139 +311140 +311141 +311142 +311143 +311168 +311169 +311170 +311171 +311172 +311173 +311174 +311175 +311200 +311201 +311202 +311203 +311204 +311205 +311206 +311207 +311232 +311233 +311234 +311235 +311236 +311237 +311238 +311239 +311264 +311265 +311266 +311267 +311268 +311269 +311270 +311271 +311296 +311297 +311298 +311299 +311300 +311301 +311302 +311303 +311328 +311329 +311330 +311331 +311332 +311333 +311334 +311335 +311360 +311361 +311362 +311363 +311364 +311365 +311366 +311367 +311392 +311393 +311394 +311395 +311396 +311397 +311398 +311399 +311424 +311425 +311426 +311427 +311428 +311429 +311430 +311431 +311456 +311457 +311458 +311459 +311460 +311461 +311462 +311463 +311488 +311489 +311490 +311491 +311492 +311493 +311494 +311495 +311520 +311521 +311522 +311523 +311524 +311525 +311526 +311527 +311552 +311553 +311554 +311555 +311556 +311557 +311558 +311559 +311584 +311585 +311586 +311587 +311588 +311589 +311590 +311591 +311616 +311617 +311618 +311619 +311620 +311621 +311622 +311623 +311648 +311649 +311650 +311651 +311652 +311653 +311654 +311655 +311680 +311681 +311682 +311683 +311684 +311685 +311686 +311687 +311712 +311713 +311714 +311715 +311716 +311717 +311718 +311719 +311744 +311745 +311746 +311747 +311748 +311749 +311750 +311751 +311776 +311777 +311778 +311779 +311780 +311781 +311782 +311783 +311808 +311809 +311810 +311811 +311812 +311813 +311814 +311815 +311840 +311841 +311842 +311843 +311844 +311845 +311846 +311847 +311872 +311873 +311874 +311875 +311876 +311877 +311878 +311879 +311904 +311905 +311906 +311907 +311908 +311909 +311910 +311911 +311936 +311937 +311938 +311939 +311940 +311941 +311942 +311943 +311968 +311969 +311970 +311971 +311972 +311973 +311974 +311975 +312000 +312001 +312002 +312003 +312004 +312005 +312006 +312007 +312032 +312033 +312034 +312035 +312036 +312037 +312038 +312039 +312064 +312065 +312066 +312067 +312068 +312069 +312070 +312071 +312096 +312097 +312098 +312099 +312100 +312101 +312102 +312103 +312128 +312129 +312130 +312131 +312132 +312133 +312134 +312135 +312160 +312161 +312162 +312163 +312164 +312165 +312166 +312167 +312192 +312193 +312194 +312195 +312196 +312197 +312198 +312199 +312224 +312225 +312226 +312227 +312228 +312229 +312230 +312231 +312256 +312257 +312258 +312259 +312260 +312261 +312262 +312263 +312288 +312289 +312290 +312291 +312292 +312293 +312294 +312295 +312320 +312321 +312322 +312323 +312324 +312325 +312326 +312327 +312352 +312353 +312354 +312355 +312356 +312357 +312358 +312359 +312384 +312385 +312386 +312387 +312388 +312389 +312390 +312391 +312416 +312417 +312418 +312419 +312420 +312421 +312422 +312423 +312448 +312449 +312450 +312451 +312452 +312453 +312454 +312455 +312480 +312481 +312482 +312483 +312484 +312485 +312486 +312487 +312512 +312513 +312514 +312515 +312516 +312517 +312518 +312519 +312544 +312545 +312546 +312547 +312548 +312549 +312550 +312551 +312576 +312577 +312578 +312579 +312580 +312581 +312582 +312583 +312608 +312609 +312610 +312611 +312612 +312613 +312614 +312615 +312640 +312641 +312642 +312643 +312644 +312645 +312646 +312647 +312672 +312673 +312674 +312675 +312676 +312677 +312678 +312679 +312704 +312705 +312706 +312707 +312708 +312709 +312710 +312711 +312736 +312737 +312738 +312739 +312740 +312741 +312742 +312743 +312768 +312769 +312770 +312771 +312772 +312773 +312774 +312775 +312800 +312801 +312802 +312803 +312804 +312805 +312806 +312807 +312832 +312833 +312834 +312835 +312836 +312837 +312838 +312839 +312864 +312865 +312866 +312867 +312868 +312869 +312870 +312871 +312896 +312897 +312898 +312899 +312900 +312901 +312902 +312903 +312928 +312929 +312930 +312931 +312932 +312933 +312934 +312935 +312960 +312961 +312962 +312963 +312964 +312965 +312966 +312967 +312992 +312993 +312994 +312995 +312996 +312997 +312998 +312999 +313024 +313025 +313026 +313027 +313028 +313029 +313030 +313031 +313056 +313057 +313058 +313059 +313060 +313061 +313062 +313063 +313088 +313089 +313090 +313091 +313092 +313093 +313094 +313095 +313120 +313121 +313122 +313123 +313124 +313125 +313126 +313127 +313152 +313153 +313154 +313155 +313156 +313157 +313158 +313159 +313184 +313185 +313186 +313187 +313188 +313189 +313190 +313191 +313216 +313217 +313218 +313219 +313220 +313221 +313222 +313223 +313248 +313249 +313250 +313251 +313252 +313253 +313254 +313255 +313280 +313281 +313282 +313283 +313284 +313285 +313286 +313287 +313312 +313313 +313314 +313315 +313316 +313317 +313318 +313319 +313344 +313345 +313346 +313347 +313348 +313349 +313350 +313351 +313376 +313377 +313378 +313379 +313380 +313381 +313382 +313383 +313408 +313409 +313410 +313411 +313412 +313413 +313414 +313415 +313440 +313441 +313442 +313443 +313444 +313445 +313446 +313447 +313472 +313473 +313474 +313475 +313476 +313477 +313478 +313479 +313504 +313505 +313506 +313507 +313508 +313509 +313510 +313511 +313536 +313537 +313538 +313539 +313540 +313541 +313542 +313543 +313568 +313569 +313570 +313571 +313572 +313573 +313574 +313575 +313600 +313601 +313602 +313603 +313604 +313605 +313606 +313607 +313632 +313633 +313634 +313635 +313636 +313637 +313638 +313639 +313664 +313665 +313666 +313667 +313668 +313669 +313670 +313671 +313696 +313697 +313698 +313699 +313700 +313701 +313702 +313703 +313728 +313729 +313730 +313731 +313732 +313733 +313734 +313735 +313760 +313761 +313762 +313763 +313764 +313765 +313766 +313767 +313792 +313793 +313794 +313795 +313796 +313797 +313798 +313799 +313824 +313825 +313826 +313827 +313828 +313829 +313830 +313831 +313856 +313857 +313858 +313859 +313860 +313861 +313862 +313863 +313888 +313889 +313890 +313891 +313892 +313893 +313894 +313895 +313920 +313921 +313922 +313923 +313924 +313925 +313926 +313927 +313952 +313953 +313954 +313955 +313956 +313957 +313958 +313959 +313984 +313985 +313986 +313987 +313988 +313989 +313990 +313991 +314016 +314017 +314018 +314019 +314020 +314021 +314022 +314023 +314048 +314049 +314050 +314051 +314052 +314053 +314054 +314055 +314080 +314081 +314082 +314083 +314084 +314085 +314086 +314087 +314112 +314113 +314114 +314115 +314116 +314117 +314118 +314119 +314144 +314145 +314146 +314147 +314148 +314149 +314150 +314151 +314176 +314177 +314178 +314179 +314180 +314181 +314182 +314183 +314208 +314209 +314210 +314211 +314212 +314213 +314214 +314215 +314240 +314241 +314242 +314243 +314244 +314245 +314246 +314247 +314272 +314273 +314274 +314275 +314276 +314277 +314278 +314279 +314304 +314305 +314306 +314307 +314308 +314309 +314310 +314311 +314336 +314337 +314338 +314339 +314340 +314341 +314342 +314343 +314368 +314369 +314370 +314371 +314372 +314373 +314374 +314375 +314400 +314401 +314402 +314403 +314404 +314405 +314406 +314407 +314432 +314433 +314434 +314435 +314436 +314437 +314438 +314439 +314464 +314465 +314466 +314467 +314468 +314469 +314470 +314471 +314496 +314497 +314498 +314499 +314500 +314501 +314502 +314503 +314528 +314529 +314530 +314531 +314532 +314533 +314534 +314535 +314560 +314561 +314562 +314563 +314564 +314565 +314566 +314567 +314592 +314593 +314594 +314595 +314596 +314597 +314598 +314599 +314624 +314625 +314626 +314627 +314628 +314629 +314630 +314631 +314656 +314657 +314658 +314659 +314660 +314661 +314662 +314663 +314688 +314689 +314690 +314691 +314692 +314693 +314694 +314695 +314720 +314721 +314722 +314723 +314724 +314725 +314726 +314727 +314752 +314753 +314754 +314755 +314756 +314757 +314758 +314759 +314784 +314785 +314786 +314787 +314788 +314789 +314790 +314791 +314816 +314817 +314818 +314819 +314820 +314821 +314822 +314823 +314848 +314849 +314850 +314851 +314852 +314853 +314854 +314855 +314880 +314881 +314882 +314883 +314884 +314885 +314886 +314887 +314912 +314913 +314914 +314915 +314916 +314917 +314918 +314919 +314944 +314945 +314946 +314947 +314948 +314949 +314950 +314951 +314976 +314977 +314978 +314979 +314980 +314981 +314982 +314983 +315008 +315009 +315010 +315011 +315012 +315013 +315014 +315015 +315040 +315041 +315042 +315043 +315044 +315045 +315046 +315047 +315072 +315073 +315074 +315075 +315076 +315077 +315078 +315079 +315104 +315105 +315106 +315107 +315108 +315109 +315110 +315111 +315136 +315137 +315138 +315139 +315140 +315141 +315142 +315143 +315168 +315169 +315170 +315171 +315172 +315173 +315174 +315175 +315200 +315201 +315202 +315203 +315204 +315205 +315206 +315207 +315232 +315233 +315234 +315235 +315236 +315237 +315238 +315239 +315264 +315265 +315266 +315267 +315268 +315269 +315270 +315271 +315296 +315297 +315298 +315299 +315300 +315301 +315302 +315303 +315328 +315329 +315330 +315331 +315332 +315333 +315334 +315335 +315360 +315361 +315362 +315363 +315364 +315365 +315366 +315367 +315392 +315393 +315394 +315395 +315396 +315397 +315398 +315399 +315424 +315425 +315426 +315427 +315428 +315429 +315430 +315431 +315456 +315457 +315458 +315459 +315460 +315461 +315462 +315463 +315488 +315489 +315490 +315491 +315492 +315493 +315494 +315495 +315520 +315521 +315522 +315523 +315524 +315525 +315526 +315527 +315552 +315553 +315554 +315555 +315556 +315557 +315558 +315559 +315584 +315585 +315586 +315587 +315588 +315589 +315590 +315591 +315616 +315617 +315618 +315619 +315620 +315621 +315622 +315623 +315648 +315649 +315650 +315651 +315652 +315653 +315654 +315655 +315680 +315681 +315682 +315683 +315684 +315685 +315686 +315687 +315712 +315713 +315714 +315715 +315716 +315717 +315718 +315719 +315744 +315745 +315746 +315747 +315748 +315749 +315750 +315751 +315776 +315777 +315778 +315779 +315780 +315781 +315782 +315783 +315808 +315809 +315810 +315811 +315812 +315813 +315814 +315815 +315840 +315841 +315842 +315843 +315844 +315845 +315846 +315847 +315872 +315873 +315874 +315875 +315876 +315877 +315878 +315879 +315904 +315905 +315906 +315907 +315908 +315909 +315910 +315911 +315936 +315937 +315938 +315939 +315940 +315941 +315942 +315943 +315968 +315969 +315970 +315971 +315972 +315973 +315974 +315975 +316000 +316001 +316002 +316003 +316004 +316005 +316006 +316007 +316032 +316033 +316034 +316035 +316036 +316037 +316038 +316039 +316064 +316065 +316066 +316067 +316068 +316069 +316070 +316071 +316096 +316097 +316098 +316099 +316100 +316101 +316102 +316103 +316128 +316129 +316130 +316131 +316132 +316133 +316134 +316135 +316160 +316161 +316162 +316163 +316164 +316165 +316166 +316167 +316192 +316193 +316194 +316195 +316196 +316197 +316198 +316199 +316224 +316225 +316226 +316227 +316228 +316229 +316230 +316231 +316256 +316257 +316258 +316259 +316260 +316261 +316262 +316263 +316288 +316289 +316290 +316291 +316292 +316293 +316294 +316295 +316320 +316321 +316322 +316323 +316324 +316325 +316326 +316327 +316352 +316353 +316354 +316355 +316356 +316357 +316358 +316359 +316384 +316385 +316386 +316387 +316388 +316389 +316390 +316391 +316416 +316417 +316418 +316419 +316420 +316421 +316422 +316423 +316448 +316449 +316450 +316451 +316452 +316453 +316454 +316455 +316480 +316481 +316482 +316483 +316484 +316485 +316486 +316487 +316512 +316513 +316514 +316515 +316516 +316517 +316518 +316519 +316544 +316545 +316546 +316547 +316548 +316549 +316550 +316551 +316576 +316577 +316578 +316579 +316580 +316581 +316582 +316583 +316608 +316609 +316610 +316611 +316612 +316613 +316614 +316615 +316640 +316641 +316642 +316643 +316644 +316645 +316646 +316647 +316672 +316673 +316674 +316675 +316676 +316677 +316678 +316679 +316704 +316705 +316706 +316707 +316708 +316709 +316710 +316711 +316736 +316737 +316738 +316739 +316740 +316741 +316742 +316743 +316768 +316769 +316770 +316771 +316772 +316773 +316774 +316775 +316800 +316801 +316802 +316803 +316804 +316805 +316806 +316807 +316832 +316833 +316834 +316835 +316836 +316837 +316838 +316839 +316864 +316865 +316866 +316867 +316868 +316869 +316870 +316871 +316896 +316897 +316898 +316899 +316900 +316901 +316902 +316903 +316928 +316929 +316930 +316931 +316932 +316933 +316934 +316935 +316960 +316961 +316962 +316963 +316964 +316965 +316966 +316967 +316992 +316993 +316994 +316995 +316996 +316997 +316998 +316999 +317024 +317025 +317026 +317027 +317028 +317029 +317030 +317031 +317056 +317057 +317058 +317059 +317060 +317061 +317062 +317063 +317088 +317089 +317090 +317091 +317092 +317093 +317094 +317095 +317120 +317121 +317122 +317123 +317124 +317125 +317126 +317127 +317152 +317153 +317154 +317155 +317156 +317157 +317158 +317159 +317184 +317185 +317186 +317187 +317188 +317189 +317190 +317191 +317216 +317217 +317218 +317219 +317220 +317221 +317222 +317223 +317248 +317249 +317250 +317251 +317252 +317253 +317254 +317255 +317280 +317281 +317282 +317283 +317284 +317285 +317286 +317287 +317312 +317313 +317314 +317315 +317316 +317317 +317318 +317319 +317344 +317345 +317346 +317347 +317348 +317349 +317350 +317351 +317376 +317377 +317378 +317379 +317380 +317381 +317382 +317383 +317408 +317409 +317410 +317411 +317412 +317413 +317414 +317415 +317440 +317441 +317442 +317443 +317444 +317445 +317446 +317447 +317472 +317473 +317474 +317475 +317476 +317477 +317478 +317479 +317504 +317505 +317506 +317507 +317508 +317509 +317510 +317511 +317536 +317537 +317538 +317539 +317540 +317541 +317542 +317543 +317568 +317569 +317570 +317571 +317572 +317573 +317574 +317575 +317600 +317601 +317602 +317603 +317604 +317605 +317606 +317607 +317632 +317633 +317634 +317635 +317636 +317637 +317638 +317639 +317664 +317665 +317666 +317667 +317668 +317669 +317670 +317671 +317696 +317697 +317698 +317699 +317700 +317701 +317702 +317703 +317728 +317729 +317730 +317731 +317732 +317733 +317734 +317735 +317760 +317761 +317762 +317763 +317764 +317765 +317766 +317767 +317792 +317793 +317794 +317795 +317796 +317797 +317798 +317799 +317824 +317825 +317826 +317827 +317828 +317829 +317830 +317831 +317856 +317857 +317858 +317859 +317860 +317861 +317862 +317863 +317888 +317889 +317890 +317891 +317892 +317893 +317894 +317895 +317920 +317921 +317922 +317923 +317924 +317925 +317926 +317927 +317952 +317953 +317954 +317955 +317956 +317957 +317958 +317959 +317984 +317985 +317986 +317987 +317988 +317989 +317990 +317991 +318016 +318017 +318018 +318019 +318020 +318021 +318022 +318023 +318048 +318049 +318050 +318051 +318052 +318053 +318054 +318055 +318080 +318081 +318082 +318083 +318084 +318085 +318086 +318087 +318112 +318113 +318114 +318115 +318116 +318117 +318118 +318119 +318144 +318145 +318146 +318147 +318148 +318149 +318150 +318151 +318176 +318177 +318178 +318179 +318180 +318181 +318182 +318183 +318208 +318209 +318210 +318211 +318212 +318213 +318214 +318215 +318240 +318241 +318242 +318243 +318244 +318245 +318246 +318247 +318272 +318273 +318274 +318275 +318276 +318277 +318278 +318279 +318304 +318305 +318306 +318307 +318308 +318309 +318310 +318311 +318336 +318337 +318338 +318339 +318340 +318341 +318342 +318343 +318368 +318369 +318370 +318371 +318372 +318373 +318374 +318375 +318400 +318401 +318402 +318403 +318404 +318405 +318406 +318407 +318432 +318433 +318434 +318435 +318436 +318437 +318438 +318439 +318464 +318465 +318466 +318467 +318468 +318469 +318470 +318471 +318496 +318497 +318498 +318499 +318500 +318501 +318502 +318503 +318528 +318529 +318530 +318531 +318532 +318533 +318534 +318535 +318560 +318561 +318562 +318563 +318564 +318565 +318566 +318567 +318592 +318593 +318594 +318595 +318596 +318597 +318598 +318599 +318624 +318625 +318626 +318627 +318628 +318629 +318630 +318631 +318656 +318657 +318658 +318659 +318660 +318661 +318662 +318663 +318688 +318689 +318690 +318691 +318692 +318693 +318694 +318695 +318720 +318721 +318722 +318723 +318724 +318725 +318726 +318727 +318752 +318753 +318754 +318755 +318756 +318757 +318758 +318759 +318784 +318785 +318786 +318787 +318788 +318789 +318790 +318791 +318816 +318817 +318818 +318819 +318820 +318821 +318822 +318823 +318848 +318849 +318850 +318851 +318852 +318853 +318854 +318855 +318880 +318881 +318882 +318883 +318884 +318885 +318886 +318887 +318912 +318913 +318914 +318915 +318916 +318917 +318918 +318919 +318944 +318945 +318946 +318947 +318948 +318949 +318950 +318951 +318976 +318977 +318978 +318979 +318980 +318981 +318982 +318983 +319008 +319009 +319010 +319011 +319012 +319013 +319014 +319015 +319040 +319041 +319042 +319043 +319044 +319045 +319046 +319047 +319072 +319073 +319074 +319075 +319076 +319077 +319078 +319079 +319104 +319105 +319106 +319107 +319108 +319109 +319110 +319111 +319136 +319137 +319138 +319139 +319140 +319141 +319142 +319143 +319168 +319169 +319170 +319171 +319172 +319173 +319174 +319175 +319200 +319201 +319202 +319203 +319204 +319205 +319206 +319207 +319232 +319233 +319234 +319235 +319236 +319237 +319238 +319239 +319264 +319265 +319266 +319267 +319268 +319269 +319270 +319271 +319296 +319297 +319298 +319299 +319300 +319301 +319302 +319303 +319328 +319329 +319330 +319331 +319332 +319333 +319334 +319335 +319360 +319361 +319362 +319363 +319364 +319365 +319366 +319367 +319392 +319393 +319394 +319395 +319396 +319397 +319398 +319399 +319424 +319425 +319426 +319427 +319428 +319429 +319430 +319431 +319456 +319457 +319458 +319459 +319460 +319461 +319462 +319463 +319488 +319489 +319490 +319491 +319492 +319493 +319494 +319495 +319520 +319521 +319522 +319523 +319524 +319525 +319526 +319527 +319552 +319553 +319554 +319555 +319556 +319557 +319558 +319559 +319584 +319585 +319586 +319587 +319588 +319589 +319590 +319591 +319616 +319617 +319618 +319619 +319620 +319621 +319622 +319623 +319648 +319649 +319650 +319651 +319652 +319653 +319654 +319655 +319680 +319681 +319682 +319683 +319684 +319685 +319686 +319687 +319712 +319713 +319714 +319715 +319716 +319717 +319718 +319719 +319744 +319745 +319746 +319747 +319748 +319749 +319750 +319751 +319776 +319777 +319778 +319779 +319780 +319781 +319782 +319783 +319808 +319809 +319810 +319811 +319812 +319813 +319814 +319815 +319840 +319841 +319842 +319843 +319844 +319845 +319846 +319847 +319872 +319873 +319874 +319875 +319876 +319877 +319878 +319879 +319904 +319905 +319906 +319907 +319908 +319909 +319910 +319911 +319936 +319937 +319938 +319939 +319940 +319941 +319942 +319943 +319968 +319969 +319970 +319971 +319972 +319973 +319974 +319975 +320000 +320001 +320002 +320003 +320004 +320005 +320006 +320007 +320032 +320033 +320034 +320035 +320036 +320037 +320038 +320039 +320064 +320065 +320066 +320067 +320068 +320069 +320070 +320071 +320096 +320097 +320098 +320099 +320100 +320101 +320102 +320103 +320128 +320129 +320130 +320131 +320132 +320133 +320134 +320135 +320160 +320161 +320162 +320163 +320164 +320165 +320166 +320167 +320192 +320193 +320194 +320195 +320196 +320197 +320198 +320199 +320224 +320225 +320226 +320227 +320228 +320229 +320230 +320231 +320256 +320257 +320258 +320259 +320260 +320261 +320262 +320263 +320288 +320289 +320290 +320291 +320292 +320293 +320294 +320295 +320320 +320321 +320322 +320323 +320324 +320325 +320326 +320327 +320352 +320353 +320354 +320355 +320356 +320357 +320358 +320359 +320384 +320385 +320386 +320387 +320388 +320389 +320390 +320391 +320416 +320417 +320418 +320419 +320420 +320421 +320422 +320423 +320448 +320449 +320450 +320451 +320452 +320453 +320454 +320455 +320480 +320481 +320482 +320483 +320484 +320485 +320486 +320487 +320512 +320513 +320514 +320515 +320516 +320517 +320518 +320519 +320544 +320545 +320546 +320547 +320548 +320549 +320550 +320551 +320576 +320577 +320578 +320579 +320580 +320581 +320582 +320583 +320608 +320609 +320610 +320611 +320612 +320613 +320614 +320615 +320640 +320641 +320642 +320643 +320644 +320645 +320646 +320647 +320672 +320673 +320674 +320675 +320676 +320677 +320678 +320679 +320704 +320705 +320706 +320707 +320708 +320709 +320710 +320711 +320736 +320737 +320738 +320739 +320740 +320741 +320742 +320743 +320768 +320769 +320770 +320771 +320772 +320773 +320774 +320775 +320800 +320801 +320802 +320803 +320804 +320805 +320806 +320807 +320832 +320833 +320834 +320835 +320836 +320837 +320838 +320839 +320864 +320865 +320866 +320867 +320868 +320869 +320870 +320871 +320896 +320897 +320898 +320899 +320900 +320901 +320902 +320903 +320928 +320929 +320930 +320931 +320932 +320933 +320934 +320935 +320960 +320961 +320962 +320963 +320964 +320965 +320966 +320967 +320992 +320993 +320994 +320995 +320996 +320997 +320998 +320999 +321024 +321025 +321026 +321027 +321028 +321029 +321030 +321031 +321056 +321057 +321058 +321059 +321060 +321061 +321062 +321063 +321088 +321089 +321090 +321091 +321092 +321093 +321094 +321095 +321120 +321121 +321122 +321123 +321124 +321125 +321126 +321127 +321152 +321153 +321154 +321155 +321156 +321157 +321158 +321159 +321184 +321185 +321186 +321187 +321188 +321189 +321190 +321191 +321216 +321217 +321218 +321219 +321220 +321221 +321222 +321223 +321248 +321249 +321250 +321251 +321252 +321253 +321254 +321255 +321280 +321281 +321282 +321283 +321284 +321285 +321286 +321287 +321312 +321313 +321314 +321315 +321316 +321317 +321318 +321319 +321344 +321345 +321346 +321347 +321348 +321349 +321350 +321351 +321376 +321377 +321378 +321379 +321380 +321381 +321382 +321383 +321408 +321409 +321410 +321411 +321412 +321413 +321414 +321415 +321440 +321441 +321442 +321443 +321444 +321445 +321446 +321447 +321472 +321473 +321474 +321475 +321476 +321477 +321478 +321479 +321504 +321505 +321506 +321507 +321508 +321509 +321510 +321511 +321536 +321537 +321538 +321539 +321540 +321541 +321542 +321543 +321568 +321569 +321570 +321571 +321572 +321573 +321574 +321575 +321600 +321601 +321602 +321603 +321604 +321605 +321606 +321607 +321632 +321633 +321634 +321635 +321636 +321637 +321638 +321639 +321664 +321665 +321666 +321667 +321668 +321669 +321670 +321671 +321696 +321697 +321698 +321699 +321700 +321701 +321702 +321703 +321728 +321729 +321730 +321731 +321732 +321733 +321734 +321735 +321760 +321761 +321762 +321763 +321764 +321765 +321766 +321767 +321792 +321793 +321794 +321795 +321796 +321797 +321798 +321799 +321824 +321825 +321826 +321827 +321828 +321829 +321830 +321831 +321856 +321857 +321858 +321859 +321860 +321861 +321862 +321863 +321888 +321889 +321890 +321891 +321892 +321893 +321894 +321895 +321920 +321921 +321922 +321923 +321924 +321925 +321926 +321927 +321952 +321953 +321954 +321955 +321956 +321957 +321958 +321959 +321984 +321985 +321986 +321987 +321988 +321989 +321990 +321991 +322016 +322017 +322018 +322019 +322020 +322021 +322022 +322023 +322048 +322049 +322050 +322051 +322052 +322053 +322054 +322055 +322080 +322081 +322082 +322083 +322084 +322085 +322086 +322087 +322112 +322113 +322114 +322115 +322116 +322117 +322118 +322119 +322144 +322145 +322146 +322147 +322148 +322149 +322150 +322151 +322176 +322177 +322178 +322179 +322180 +322181 +322182 +322183 +322208 +322209 +322210 +322211 +322212 +322213 +322214 +322215 +322240 +322241 +322242 +322243 +322244 +322245 +322246 +322247 +322272 +322273 +322274 +322275 +322276 +322277 +322278 +322279 +322304 +322305 +322306 +322307 +322308 +322309 +322310 +322311 +322336 +322337 +322338 +322339 +322340 +322341 +322342 +322343 +322368 +322369 +322370 +322371 +322372 +322373 +322374 +322375 +322400 +322401 +322402 +322403 +322404 +322405 +322406 +322407 +322432 +322433 +322434 +322435 +322436 +322437 +322438 +322439 +322464 +322465 +322466 +322467 +322468 +322469 +322470 +322471 +322496 +322497 +322498 +322499 +322500 +322501 +322502 +322503 +322528 +322529 +322530 +322531 +322532 +322533 +322534 +322535 +322560 +322561 +322562 +322563 +322564 +322565 +322566 +322567 +322592 +322593 +322594 +322595 +322596 +322597 +322598 +322599 +322624 +322625 +322626 +322627 +322628 +322629 +322630 +322631 +322656 +322657 +322658 +322659 +322660 +322661 +322662 +322663 +322688 +322689 +322690 +322691 +322692 +322693 +322694 +322695 +322720 +322721 +322722 +322723 +322724 +322725 +322726 +322727 +322752 +322753 +322754 +322755 +322756 +322757 +322758 +322759 +322784 +322785 +322786 +322787 +322788 +322789 +322790 +322791 +322816 +322817 +322818 +322819 +322820 +322821 +322822 +322823 +322848 +322849 +322850 +322851 +322852 +322853 +322854 +322855 +322880 +322881 +322882 +322883 +322884 +322885 +322886 +322887 +322912 +322913 +322914 +322915 +322916 +322917 +322918 +322919 +322944 +322945 +322946 +322947 +322948 +322949 +322950 +322951 +322976 +322977 +322978 +322979 +322980 +322981 +322982 +322983 +323008 +323009 +323010 +323011 +323012 +323013 +323014 +323015 +323040 +323041 +323042 +323043 +323044 +323045 +323046 +323047 +323072 +323073 +323074 +323075 +323076 +323077 +323078 +323079 +323104 +323105 +323106 +323107 +323108 +323109 +323110 +323111 +323136 +323137 +323138 +323139 +323140 +323141 +323142 +323143 +323168 +323169 +323170 +323171 +323172 +323173 +323174 +323175 +323200 +323201 +323202 +323203 +323204 +323205 +323206 +323207 +323232 +323233 +323234 +323235 +323236 +323237 +323238 +323239 +323264 +323265 +323266 +323267 +323268 +323269 +323270 +323271 +323296 +323297 +323298 +323299 +323300 +323301 +323302 +323303 +323328 +323329 +323330 +323331 +323332 +323333 +323334 +323335 +323360 +323361 +323362 +323363 +323364 +323365 +323366 +323367 +323392 +323393 +323394 +323395 +323396 +323397 +323398 +323399 +323424 +323425 +323426 +323427 +323428 +323429 +323430 +323431 +323456 +323457 +323458 +323459 +323460 +323461 +323462 +323463 +323488 +323489 +323490 +323491 +323492 +323493 +323494 +323495 +323520 +323521 +323522 +323523 +323524 +323525 +323526 +323527 +323552 +323553 +323554 +323555 +323556 +323557 +323558 +323559 +323584 +323585 +323586 +323587 +323588 +323589 +323590 +323591 +323616 +323617 +323618 +323619 +323620 +323621 +323622 +323623 +323648 +323649 +323650 +323651 +323652 +323653 +323654 +323655 +323680 +323681 +323682 +323683 +323684 +323685 +323686 +323687 +323712 +323713 +323714 +323715 +323716 +323717 +323718 +323719 +323744 +323745 +323746 +323747 +323748 +323749 +323750 +323751 +323776 +323777 +323778 +323779 +323780 +323781 +323782 +323783 +323808 +323809 +323810 +323811 +323812 +323813 +323814 +323815 +323840 +323841 +323842 +323843 +323844 +323845 +323846 +323847 +323872 +323873 +323874 +323875 +323876 +323877 +323878 +323879 +323904 +323905 +323906 +323907 +323908 +323909 +323910 +323911 +323936 +323937 +323938 +323939 +323940 +323941 +323942 +323943 +323968 +323969 +323970 +323971 +323972 +323973 +323974 +323975 +324000 +324001 +324002 +324003 +324004 +324005 +324006 +324007 +324032 +324033 +324034 +324035 +324036 +324037 +324038 +324039 +324064 +324065 +324066 +324067 +324068 +324069 +324070 +324071 +324096 +324097 +324098 +324099 +324100 +324101 +324102 +324103 +324128 +324129 +324130 +324131 +324132 +324133 +324134 +324135 +324160 +324161 +324162 +324163 +324164 +324165 +324166 +324167 +324192 +324193 +324194 +324195 +324196 +324197 +324198 +324199 +324224 +324225 +324226 +324227 +324228 +324229 +324230 +324231 +324256 +324257 +324258 +324259 +324260 +324261 +324262 +324263 +324288 +324289 +324290 +324291 +324292 +324293 +324294 +324295 +324320 +324321 +324322 +324323 +324324 +324325 +324326 +324327 +324352 +324353 +324354 +324355 +324356 +324357 +324358 +324359 +324384 +324385 +324386 +324387 +324388 +324389 +324390 +324391 +324416 +324417 +324418 +324419 +324420 +324421 +324422 +324423 +324448 +324449 +324450 +324451 +324452 +324453 +324454 +324455 +324480 +324481 +324482 +324483 +324484 +324485 +324486 +324487 +324512 +324513 +324514 +324515 +324516 +324517 +324518 +324519 +324544 +324545 +324546 +324547 +324548 +324549 +324550 +324551 +324576 +324577 +324578 +324579 +324580 +324581 +324582 +324583 +324608 +324609 +324610 +324611 +324612 +324613 +324614 +324615 +324640 +324641 +324642 +324643 +324644 +324645 +324646 +324647 +324672 +324673 +324674 +324675 +324676 +324677 +324678 +324679 +324704 +324705 +324706 +324707 +324708 +324709 +324710 +324711 +324736 +324737 +324738 +324739 +324740 +324741 +324742 +324743 +324768 +324769 +324770 +324771 +324772 +324773 +324774 +324775 +324800 +324801 +324802 +324803 +324804 +324805 +324806 +324807 +324832 +324833 +324834 +324835 +324836 +324837 +324838 +324839 +324864 +324865 +324866 +324867 +324868 +324869 +324870 +324871 +324896 +324897 +324898 +324899 +324900 +324901 +324902 +324903 +324928 +324929 +324930 +324931 +324932 +324933 +324934 +324935 +324960 +324961 +324962 +324963 +324964 +324965 +324966 +324967 +324992 +324993 +324994 +324995 +324996 +324997 +324998 +324999 +325024 +325025 +325026 +325027 +325028 +325029 +325030 +325031 +325056 +325057 +325058 +325059 +325060 +325061 +325062 +325063 +325088 +325089 +325090 +325091 +325092 +325093 +325094 +325095 +325120 +325121 +325122 +325123 +325124 +325125 +325126 +325127 +325152 +325153 +325154 +325155 +325156 +325157 +325158 +325159 +325184 +325185 +325186 +325187 +325188 +325189 +325190 +325191 +325216 +325217 +325218 +325219 +325220 +325221 +325222 +325223 +325248 +325249 +325250 +325251 +325252 +325253 +325254 +325255 +325280 +325281 +325282 +325283 +325284 +325285 +325286 +325287 +325312 +325313 +325314 +325315 +325316 +325317 +325318 +325319 +325344 +325345 +325346 +325347 +325348 +325349 +325350 +325351 +325376 +325377 +325378 +325379 +325380 +325381 +325382 +325383 +325408 +325409 +325410 +325411 +325412 +325413 +325414 +325415 +325440 +325441 +325442 +325443 +325444 +325445 +325446 +325447 +325472 +325473 +325474 +325475 +325476 +325477 +325478 +325479 +325504 +325505 +325506 +325507 +325508 +325509 +325510 +325511 +325536 +325537 +325538 +325539 +325540 +325541 +325542 +325543 +325568 +325569 +325570 +325571 +325572 +325573 +325574 +325575 +325600 +325601 +325602 +325603 +325604 +325605 +325606 +325607 +325632 +325633 +325634 +325635 +325636 +325637 +325638 +325639 +325664 +325665 +325666 +325667 +325668 +325669 +325670 +325671 +325696 +325697 +325698 +325699 +325700 +325701 +325702 +325703 +325728 +325729 +325730 +325731 +325732 +325733 +325734 +325735 +325760 +325761 +325762 +325763 +325764 +325765 +325766 +325767 +325792 +325793 +325794 +325795 +325796 +325797 +325798 +325799 +325824 +325825 +325826 +325827 +325828 +325829 +325830 +325831 +325856 +325857 +325858 +325859 +325860 +325861 +325862 +325863 +325888 +325889 +325890 +325891 +325892 +325893 +325894 +325895 +325920 +325921 +325922 +325923 +325924 +325925 +325926 +325927 +325952 +325953 +325954 +325955 +325956 +325957 +325958 +325959 +325984 +325985 +325986 +325987 +325988 +325989 +325990 +325991 +326016 +326017 +326018 +326019 +326020 +326021 +326022 +326023 +326048 +326049 +326050 +326051 +326052 +326053 +326054 +326055 +326080 +326081 +326082 +326083 +326084 +326085 +326086 +326087 +326112 +326113 +326114 +326115 +326116 +326117 +326118 +326119 +326144 +326145 +326146 +326147 +326148 +326149 +326150 +326151 +326176 +326177 +326178 +326179 +326180 +326181 +326182 +326183 +326208 +326209 +326210 +326211 +326212 +326213 +326214 +326215 +326240 +326241 +326242 +326243 +326244 +326245 +326246 +326247 +326272 +326273 +326274 +326275 +326276 +326277 +326278 +326279 +326304 +326305 +326306 +326307 +326308 +326309 +326310 +326311 +326336 +326337 +326338 +326339 +326340 +326341 +326342 +326343 +326368 +326369 +326370 +326371 +326372 +326373 +326374 +326375 +326400 +326401 +326402 +326403 +326404 +326405 +326406 +326407 +326432 +326433 +326434 +326435 +326436 +326437 +326438 +326439 +326464 +326465 +326466 +326467 +326468 +326469 +326470 +326471 +326496 +326497 +326498 +326499 +326500 +326501 +326502 +326503 +326528 +326529 +326530 +326531 +326532 +326533 +326534 +326535 +326560 +326561 +326562 +326563 +326564 +326565 +326566 +326567 +326592 +326593 +326594 +326595 +326596 +326597 +326598 +326599 +326624 +326625 +326626 +326627 +326628 +326629 +326630 +326631 +326656 +326657 +326658 +326659 +326660 +326661 +326662 +326663 +326688 +326689 +326690 +326691 +326692 +326693 +326694 +326695 +326720 +326721 +326722 +326723 +326724 +326725 +326726 +326727 +326752 +326753 +326754 +326755 +326756 +326757 +326758 +326759 +326784 +326785 +326786 +326787 +326788 +326789 +326790 +326791 +326816 +326817 +326818 +326819 +326820 +326821 +326822 +326823 +326848 +326849 +326850 +326851 +326852 +326853 +326854 +326855 +326880 +326881 +326882 +326883 +326884 +326885 +326886 +326887 +326912 +326913 +326914 +326915 +326916 +326917 +326918 +326919 +326944 +326945 +326946 +326947 +326948 +326949 +326950 +326951 +326976 +326977 +326978 +326979 +326980 +326981 +326982 +326983 +327008 +327009 +327010 +327011 +327012 +327013 +327014 +327015 +327040 +327041 +327042 +327043 +327044 +327045 +327046 +327047 +327072 +327073 +327074 +327075 +327076 +327077 +327078 +327079 +327104 +327105 +327106 +327107 +327108 +327109 +327110 +327111 +327136 +327137 +327138 +327139 +327140 +327141 +327142 +327143 +327168 +327169 +327170 +327171 +327172 +327173 +327174 +327175 +327200 +327201 +327202 +327203 +327204 +327205 +327206 +327207 +327232 +327233 +327234 +327235 +327236 +327237 +327238 +327239 +327264 +327265 +327266 +327267 +327268 +327269 +327270 +327271 +327296 +327297 +327298 +327299 +327300 +327301 +327302 +327303 +327328 +327329 +327330 +327331 +327332 +327333 +327334 +327335 +327360 +327361 +327362 +327363 +327364 +327365 +327366 +327367 +327392 +327393 +327394 +327395 +327396 +327397 +327398 +327399 +327424 +327425 +327426 +327427 +327428 +327429 +327430 +327431 +327456 +327457 +327458 +327459 +327460 +327461 +327462 +327463 +327488 +327489 +327490 +327491 +327492 +327493 +327494 +327495 +327520 +327521 +327522 +327523 +327524 +327525 +327526 +327527 +327552 +327553 +327554 +327555 +327556 +327557 +327558 +327559 +327584 +327585 +327586 +327587 +327588 +327589 +327590 +327591 +327616 +327617 +327618 +327619 +327620 +327621 +327622 +327623 +327648 +327649 +327650 +327651 +327652 +327653 +327654 +327655 +327680 +327681 +327682 +327683 +327684 +327685 +327686 +327687 +327712 +327713 +327714 +327715 +327716 +327717 +327718 +327719 +327744 +327745 +327746 +327747 +327748 +327749 +327750 +327751 +327776 +327777 +327778 +327779 +327780 +327781 +327782 +327783 +327808 +327809 +327810 +327811 +327812 +327813 +327814 +327815 +327840 +327841 +327842 +327843 +327844 +327845 +327846 +327847 +327872 +327873 +327874 +327875 +327876 +327877 +327878 +327879 +327904 +327905 +327906 +327907 +327908 +327909 +327910 +327911 +327936 +327937 +327938 +327939 +327940 +327941 +327942 +327943 +327968 +327969 +327970 +327971 +327972 +327973 +327974 +327975 +328000 +328001 +328002 +328003 +328004 +328005 +328006 +328007 +328032 +328033 +328034 +328035 +328036 +328037 +328038 +328039 +328064 +328065 +328066 +328067 +328068 +328069 +328070 +328071 +328096 +328097 +328098 +328099 +328100 +328101 +328102 +328103 +328128 +328129 +328130 +328131 +328132 +328133 +328134 +328135 +328160 +328161 +328162 +328163 +328164 +328165 +328166 +328167 +328192 +328193 +328194 +328195 +328196 +328197 +328198 +328199 +328224 +328225 +328226 +328227 +328228 +328229 +328230 +328231 +328256 +328257 +328258 +328259 +328260 +328261 +328262 +328263 +328288 +328289 +328290 +328291 +328292 +328293 +328294 +328295 +328320 +328321 +328322 +328323 +328324 +328325 +328326 +328327 +328352 +328353 +328354 +328355 +328356 +328357 +328358 +328359 +328384 +328385 +328386 +328387 +328388 +328389 +328390 +328391 +328416 +328417 +328418 +328419 +328420 +328421 +328422 +328423 +328448 +328449 +328450 +328451 +328452 +328453 +328454 +328455 +328480 +328481 +328482 +328483 +328484 +328485 +328486 +328487 +328512 +328513 +328514 +328515 +328516 +328517 +328518 +328519 +328544 +328545 +328546 +328547 +328548 +328549 +328550 +328551 +328576 +328577 +328578 +328579 +328580 +328581 +328582 +328583 +328608 +328609 +328610 +328611 +328612 +328613 +328614 +328615 +328640 +328641 +328642 +328643 +328644 +328645 +328646 +328647 +328672 +328673 +328674 +328675 +328676 +328677 +328678 +328679 +328704 +328705 +328706 +328707 +328708 +328709 +328710 +328711 +328736 +328737 +328738 +328739 +328740 +328741 +328742 +328743 +328768 +328769 +328770 +328771 +328772 +328773 +328774 +328775 +328800 +328801 +328802 +328803 +328804 +328805 +328806 +328807 +328832 +328833 +328834 +328835 +328836 +328837 +328838 +328839 +328864 +328865 +328866 +328867 +328868 +328869 +328870 +328871 +328896 +328897 +328898 +328899 +328900 +328901 +328902 +328903 +328928 +328929 +328930 +328931 +328932 +328933 +328934 +328935 +328960 +328961 +328962 +328963 +328964 +328965 +328966 +328967 +328992 +328993 +328994 +328995 +328996 +328997 +328998 +328999 +329024 +329025 +329026 +329027 +329028 +329029 +329030 +329031 +329056 +329057 +329058 +329059 +329060 +329061 +329062 +329063 +329088 +329089 +329090 +329091 +329092 +329093 +329094 +329095 +329120 +329121 +329122 +329123 +329124 +329125 +329126 +329127 +329152 +329153 +329154 +329155 +329156 +329157 +329158 +329159 +329184 +329185 +329186 +329187 +329188 +329189 +329190 +329191 +329216 +329217 +329218 +329219 +329220 +329221 +329222 +329223 +329248 +329249 +329250 +329251 +329252 +329253 +329254 +329255 +329280 +329281 +329282 +329283 +329284 +329285 +329286 +329287 +329312 +329313 +329314 +329315 +329316 +329317 +329318 +329319 +329344 +329345 +329346 +329347 +329348 +329349 +329350 +329351 +329376 +329377 +329378 +329379 +329380 +329381 +329382 +329383 +329408 +329409 +329410 +329411 +329412 +329413 +329414 +329415 +329440 +329441 +329442 +329443 +329444 +329445 +329446 +329447 +329472 +329473 +329474 +329475 +329476 +329477 +329478 +329479 +329504 +329505 +329506 +329507 +329508 +329509 +329510 +329511 +329536 +329537 +329538 +329539 +329540 +329541 +329542 +329543 +329568 +329569 +329570 +329571 +329572 +329573 +329574 +329575 +329600 +329601 +329602 +329603 +329604 +329605 +329606 +329607 +329632 +329633 +329634 +329635 +329636 +329637 +329638 +329639 +329664 +329665 +329666 +329667 +329668 +329669 +329670 +329671 +329696 +329697 +329698 +329699 +329700 +329701 +329702 +329703 +329728 +329729 +329730 +329731 +329732 +329733 +329734 +329735 +329760 +329761 +329762 +329763 +329764 +329765 +329766 +329767 +329792 +329793 +329794 +329795 +329796 +329797 +329798 +329799 +329824 +329825 +329826 +329827 +329828 +329829 +329830 +329831 +329856 +329857 +329858 +329859 +329860 +329861 +329862 +329863 +329888 +329889 +329890 +329891 +329892 +329893 +329894 +329895 +329920 +329921 +329922 +329923 +329924 +329925 +329926 +329927 +329952 +329953 +329954 +329955 +329956 +329957 +329958 +329959 +329984 +329985 +329986 +329987 +329988 +329989 +329990 +329991 +330016 +330017 +330018 +330019 +330020 +330021 +330022 +330023 +330048 +330049 +330050 +330051 +330052 +330053 +330054 +330055 +330080 +330081 +330082 +330083 +330084 +330085 +330086 +330087 +330112 +330113 +330114 +330115 +330116 +330117 +330118 +330119 +330144 +330145 +330146 +330147 +330148 +330149 +330150 +330151 +330176 +330177 +330178 +330179 +330180 +330181 +330182 +330183 +330208 +330209 +330210 +330211 +330212 +330213 +330214 +330215 +330240 +330241 +330242 +330243 +330244 +330245 +330246 +330247 +330272 +330273 +330274 +330275 +330276 +330277 +330278 +330279 +330304 +330305 +330306 +330307 +330308 +330309 +330310 +330311 +330336 +330337 +330338 +330339 +330340 +330341 +330342 +330343 +330368 +330369 +330370 +330371 +330372 +330373 +330374 +330375 +330400 +330401 +330402 +330403 +330404 +330405 +330406 +330407 +330432 +330433 +330434 +330435 +330436 +330437 +330438 +330439 +330464 +330465 +330466 +330467 +330468 +330469 +330470 +330471 +330496 +330497 +330498 +330499 +330500 +330501 +330502 +330503 +330528 +330529 +330530 +330531 +330532 +330533 +330534 +330535 +330560 +330561 +330562 +330563 +330564 +330565 +330566 +330567 +330592 +330593 +330594 +330595 +330596 +330597 +330598 +330599 +330624 +330625 +330626 +330627 +330628 +330629 +330630 +330631 +330656 +330657 +330658 +330659 +330660 +330661 +330662 +330663 +330688 +330689 +330690 +330691 +330692 +330693 +330694 +330695 +330720 +330721 +330722 +330723 +330724 +330725 +330726 +330727 +330752 +330753 +330754 +330755 +330756 +330757 +330758 +330759 +330784 +330785 +330786 +330787 +330788 +330789 +330790 +330791 +330816 +330817 +330818 +330819 +330820 +330821 +330822 +330823 +330848 +330849 +330850 +330851 +330852 +330853 +330854 +330855 +330880 +330881 +330882 +330883 +330884 +330885 +330886 +330887 +330912 +330913 +330914 +330915 +330916 +330917 +330918 +330919 +330944 +330945 +330946 +330947 +330948 +330949 +330950 +330951 +330976 +330977 +330978 +330979 +330980 +330981 +330982 +330983 +331008 +331009 +331010 +331011 +331012 +331013 +331014 +331015 +331040 +331041 +331042 +331043 +331044 +331045 +331046 +331047 +331072 +331073 +331074 +331075 +331076 +331077 +331078 +331079 +331104 +331105 +331106 +331107 +331108 +331109 +331110 +331111 +331136 +331137 +331138 +331139 +331140 +331141 +331142 +331143 +331168 +331169 +331170 +331171 +331172 +331173 +331174 +331175 +331200 +331201 +331202 +331203 +331204 +331205 +331206 +331207 +331232 +331233 +331234 +331235 +331236 +331237 +331238 +331239 +331264 +331265 +331266 +331267 +331268 +331269 +331270 +331271 +331296 +331297 +331298 +331299 +331300 +331301 +331302 +331303 +331328 +331329 +331330 +331331 +331332 +331333 +331334 +331335 +331360 +331361 +331362 +331363 +331364 +331365 +331366 +331367 +331392 +331393 +331394 +331395 +331396 +331397 +331398 +331399 +331424 +331425 +331426 +331427 +331428 +331429 +331430 +331431 +331456 +331457 +331458 +331459 +331460 +331461 +331462 +331463 +331488 +331489 +331490 +331491 +331492 +331493 +331494 +331495 +331520 +331521 +331522 +331523 +331524 +331525 +331526 +331527 +331552 +331553 +331554 +331555 +331556 +331557 +331558 +331559 +331584 +331585 +331586 +331587 +331588 +331589 +331590 +331591 +331616 +331617 +331618 +331619 +331620 +331621 +331622 +331623 +331648 +331649 +331650 +331651 +331652 +331653 +331654 +331655 +331680 +331681 +331682 +331683 +331684 +331685 +331686 +331687 +331712 +331713 +331714 +331715 +331716 +331717 +331718 +331719 +331744 +331745 +331746 +331747 +331748 +331749 +331750 +331751 +331776 +331777 +331778 +331779 +331780 +331781 +331782 +331783 +331808 +331809 +331810 +331811 +331812 +331813 +331814 +331815 +331840 +331841 +331842 +331843 +331844 +331845 +331846 +331847 +331872 +331873 +331874 +331875 +331876 +331877 +331878 +331879 +331904 +331905 +331906 +331907 +331908 +331909 +331910 +331911 +331936 +331937 +331938 +331939 +331940 +331941 +331942 +331943 +331968 +331969 +331970 +331971 +331972 +331973 +331974 +331975 +332000 +332001 +332002 +332003 +332004 +332005 +332006 +332007 +332032 +332033 +332034 +332035 +332036 +332037 +332038 +332039 +332064 +332065 +332066 +332067 +332068 +332069 +332070 +332071 +332096 +332097 +332098 +332099 +332100 +332101 +332102 +332103 +332128 +332129 +332130 +332131 +332132 +332133 +332134 +332135 +332160 +332161 +332162 +332163 +332164 +332165 +332166 +332167 +332192 +332193 +332194 +332195 +332196 +332197 +332198 +332199 +332224 +332225 +332226 +332227 +332228 +332229 +332230 +332231 +332256 +332257 +332258 +332259 +332260 +332261 +332262 +332263 +332288 +332289 +332290 +332291 +332292 +332293 +332294 +332295 +332320 +332321 +332322 +332323 +332324 +332325 +332326 +332327 +332352 +332353 +332354 +332355 +332356 +332357 +332358 +332359 +332384 +332385 +332386 +332387 +332388 +332389 +332390 +332391 +332416 +332417 +332418 +332419 +332420 +332421 +332422 +332423 +332448 +332449 +332450 +332451 +332452 +332453 +332454 +332455 +332480 +332481 +332482 +332483 +332484 +332485 +332486 +332487 +332512 +332513 +332514 +332515 +332516 +332517 +332518 +332519 +332544 +332545 +332546 +332547 +332548 +332549 +332550 +332551 +332576 +332577 +332578 +332579 +332580 +332581 +332582 +332583 +332608 +332609 +332610 +332611 +332612 +332613 +332614 +332615 +332640 +332641 +332642 +332643 +332644 +332645 +332646 +332647 +332672 +332673 +332674 +332675 +332676 +332677 +332678 +332679 +332704 +332705 +332706 +332707 +332708 +332709 +332710 +332711 +332736 +332737 +332738 +332739 +332740 +332741 +332742 +332743 +332768 +332769 +332770 +332771 +332772 +332773 +332774 +332775 +332800 +332801 +332802 +332803 +332804 +332805 +332806 +332807 +332832 +332833 +332834 +332835 +332836 +332837 +332838 +332839 +332864 +332865 +332866 +332867 +332868 +332869 +332870 +332871 +332896 +332897 +332898 +332899 +332900 +332901 +332902 +332903 +332928 +332929 +332930 +332931 +332932 +332933 +332934 +332935 +332960 +332961 +332962 +332963 +332964 +332965 +332966 +332967 +332992 +332993 +332994 +332995 +332996 +332997 +332998 +332999 +333024 +333025 +333026 +333027 +333028 +333029 +333030 +333031 +333056 +333057 +333058 +333059 +333060 +333061 +333062 +333063 +333088 +333089 +333090 +333091 +333092 +333093 +333094 +333095 +333120 +333121 +333122 +333123 +333124 +333125 +333126 +333127 +333152 +333153 +333154 +333155 +333156 +333157 +333158 +333159 +333184 +333185 +333186 +333187 +333188 +333189 +333190 +333191 +333216 +333217 +333218 +333219 +333220 +333221 +333222 +333223 +333248 +333249 +333250 +333251 +333252 +333253 +333254 +333255 +333280 +333281 +333282 +333283 +333284 +333285 +333286 +333287 +333312 +333313 +333314 +333315 +333316 +333317 +333318 +333319 +333344 +333345 +333346 +333347 +333348 +333349 +333350 +333351 +333376 +333377 +333378 +333379 +333380 +333381 +333382 +333383 +333408 +333409 +333410 +333411 +333412 +333413 +333414 +333415 +333440 +333441 +333442 +333443 +333444 +333445 +333446 +333447 +333472 +333473 +333474 +333475 +333476 +333477 +333478 +333479 +333504 +333505 +333506 +333507 +333508 +333509 +333510 +333511 +333536 +333537 +333538 +333539 +333540 +333541 +333542 +333543 +333568 +333569 +333570 +333571 +333572 +333573 +333574 +333575 +333600 +333601 +333602 +333603 +333604 +333605 +333606 +333607 +333632 +333633 +333634 +333635 +333636 +333637 +333638 +333639 +333664 +333665 +333666 +333667 +333668 +333669 +333670 +333671 +333696 +333697 +333698 +333699 +333700 +333701 +333702 +333703 +333728 +333729 +333730 +333731 +333732 +333733 +333734 +333735 +333760 +333761 +333762 +333763 +333764 +333765 +333766 +333767 +333792 +333793 +333794 +333795 +333796 +333797 +333798 +333799 +333824 +333825 +333826 +333827 +333828 +333829 +333830 +333831 +333856 +333857 +333858 +333859 +333860 +333861 +333862 +333863 +333888 +333889 +333890 +333891 +333892 +333893 +333894 +333895 +333920 +333921 +333922 +333923 +333924 +333925 +333926 +333927 +333952 +333953 +333954 +333955 +333956 +333957 +333958 +333959 +333984 +333985 +333986 +333987 +333988 +333989 +333990 +333991 +334016 +334017 +334018 +334019 +334020 +334021 +334022 +334023 +334048 +334049 +334050 +334051 +334052 +334053 +334054 +334055 +334080 +334081 +334082 +334083 +334084 +334085 +334086 +334087 +334112 +334113 +334114 +334115 +334116 +334117 +334118 +334119 +334144 +334145 +334146 +334147 +334148 +334149 +334150 +334151 +334176 +334177 +334178 +334179 +334180 +334181 +334182 +334183 +334208 +334209 +334210 +334211 +334212 +334213 +334214 +334215 +334240 +334241 +334242 +334243 +334244 +334245 +334246 +334247 +334272 +334273 +334274 +334275 +334276 +334277 +334278 +334279 +334304 +334305 +334306 +334307 +334308 +334309 +334310 +334311 +334336 +334337 +334338 +334339 +334340 +334341 +334342 +334343 +334368 +334369 +334370 +334371 +334372 +334373 +334374 +334375 +334400 +334401 +334402 +334403 +334404 +334405 +334406 +334407 +334432 +334433 +334434 +334435 +334436 +334437 +334438 +334439 +334464 +334465 +334466 +334467 +334468 +334469 +334470 +334471 +334496 +334497 +334498 +334499 +334500 +334501 +334502 +334503 +334528 +334529 +334530 +334531 +334532 +334533 +334534 +334535 +334560 +334561 +334562 +334563 +334564 +334565 +334566 +334567 +334592 +334593 +334594 +334595 +334596 +334597 +334598 +334599 +334624 +334625 +334626 +334627 +334628 +334629 +334630 +334631 +334656 +334657 +334658 +334659 +334660 +334661 +334662 +334663 +334688 +334689 +334690 +334691 +334692 +334693 +334694 +334695 +334720 +334721 +334722 +334723 +334724 +334725 +334726 +334727 +334752 +334753 +334754 +334755 +334756 +334757 +334758 +334759 +334784 +334785 +334786 +334787 +334788 +334789 +334790 +334791 +334816 +334817 +334818 +334819 +334820 +334821 +334822 +334823 +334848 +334849 +334850 +334851 +334852 +334853 +334854 +334855 +334880 +334881 +334882 +334883 +334884 +334885 +334886 +334887 +334912 +334913 +334914 +334915 +334916 +334917 +334918 +334919 +334944 +334945 +334946 +334947 +334948 +334949 +334950 +334951 +334976 +334977 +334978 +334979 +334980 +334981 +334982 +334983 +335008 +335009 +335010 +335011 +335012 +335013 +335014 +335015 +335040 +335041 +335042 +335043 +335044 +335045 +335046 +335047 +335072 +335073 +335074 +335075 +335076 +335077 +335078 +335079 +335104 +335105 +335106 +335107 +335108 +335109 +335110 +335111 +335136 +335137 +335138 +335139 +335140 +335141 +335142 +335143 +335168 +335169 +335170 +335171 +335172 +335173 +335174 +335175 +335200 +335201 +335202 +335203 +335204 +335205 +335206 +335207 +335232 +335233 +335234 +335235 +335236 +335237 +335238 +335239 +335264 +335265 +335266 +335267 +335268 +335269 +335270 +335271 +335296 +335297 +335298 +335299 +335300 +335301 +335302 +335303 +335328 +335329 +335330 +335331 +335332 +335333 +335334 +335335 +335360 +335361 +335362 +335363 +335364 +335365 +335366 +335367 +335392 +335393 +335394 +335395 +335396 +335397 +335398 +335399 +335424 +335425 +335426 +335427 +335428 +335429 +335430 +335431 +335456 +335457 +335458 +335459 +335460 +335461 +335462 +335463 +335488 +335489 +335490 +335491 +335492 +335493 +335494 +335495 +335520 +335521 +335522 +335523 +335524 +335525 +335526 +335527 +335552 +335553 +335554 +335555 +335556 +335557 +335558 +335559 +335584 +335585 +335586 +335587 +335588 +335589 +335590 +335591 +335616 +335617 +335618 +335619 +335620 +335621 +335622 +335623 +335648 +335649 +335650 +335651 +335652 +335653 +335654 +335655 +335680 +335681 +335682 +335683 +335684 +335685 +335686 +335687 +335712 +335713 +335714 +335715 +335716 +335717 +335718 +335719 +335744 +335745 +335746 +335747 +335748 +335749 +335750 +335751 +335776 +335777 +335778 +335779 +335780 +335781 +335782 +335783 +335808 +335809 +335810 +335811 +335812 +335813 +335814 +335815 +335840 +335841 +335842 +335843 +335844 +335845 +335846 +335847 +335872 +335873 +335874 +335875 +335876 +335877 +335878 +335879 +335904 +335905 +335906 +335907 +335908 +335909 +335910 +335911 +335936 +335937 +335938 +335939 +335940 +335941 +335942 +335943 +335968 +335969 +335970 +335971 +335972 +335973 +335974 +335975 +336000 +336001 +336002 +336003 +336004 +336005 +336006 +336007 +336032 +336033 +336034 +336035 +336036 +336037 +336038 +336039 +336064 +336065 +336066 +336067 +336068 +336069 +336070 +336071 +336096 +336097 +336098 +336099 +336100 +336101 +336102 +336103 +336128 +336129 +336130 +336131 +336132 +336133 +336134 +336135 +336160 +336161 +336162 +336163 +336164 +336165 +336166 +336167 +336192 +336193 +336194 +336195 +336196 +336197 +336198 +336199 +336224 +336225 +336226 +336227 +336228 +336229 +336230 +336231 +336256 +336257 +336258 +336259 +336260 +336261 +336262 +336263 +336288 +336289 +336290 +336291 +336292 +336293 +336294 +336295 +336320 +336321 +336322 +336323 +336324 +336325 +336326 +336327 +336352 +336353 +336354 +336355 +336356 +336357 +336358 +336359 +336384 +336385 +336386 +336387 +336388 +336389 +336390 +336391 +336416 +336417 +336418 +336419 +336420 +336421 +336422 +336423 +336448 +336449 +336450 +336451 +336452 +336453 +336454 +336455 +336480 +336481 +336482 +336483 +336484 +336485 +336486 +336487 +336512 +336513 +336514 +336515 +336516 +336517 +336518 +336519 +336544 +336545 +336546 +336547 +336548 +336549 +336550 +336551 +336576 +336577 +336578 +336579 +336580 +336581 +336582 +336583 +336608 +336609 +336610 +336611 +336612 +336613 +336614 +336615 +336640 +336641 +336642 +336643 +336644 +336645 +336646 +336647 +336672 +336673 +336674 +336675 +336676 +336677 +336678 +336679 +336704 +336705 +336706 +336707 +336708 +336709 +336710 +336711 +336736 +336737 +336738 +336739 +336740 +336741 +336742 +336743 +336768 +336769 +336770 +336771 +336772 +336773 +336774 +336775 +336800 +336801 +336802 +336803 +336804 +336805 +336806 +336807 +336832 +336833 +336834 +336835 +336836 +336837 +336838 +336839 +336864 +336865 +336866 +336867 +336868 +336869 +336870 +336871 +336896 +336897 +336898 +336899 +336900 +336901 +336902 +336903 +336928 +336929 +336930 +336931 +336932 +336933 +336934 +336935 +336960 +336961 +336962 +336963 +336964 +336965 +336966 +336967 +336992 +336993 +336994 +336995 +336996 +336997 +336998 +336999 +337024 +337025 +337026 +337027 +337028 +337029 +337030 +337031 +337056 +337057 +337058 +337059 +337060 +337061 +337062 +337063 +337088 +337089 +337090 +337091 +337092 +337093 +337094 +337095 +337120 +337121 +337122 +337123 +337124 +337125 +337126 +337127 +337152 +337153 +337154 +337155 +337156 +337157 +337158 +337159 +337184 +337185 +337186 +337187 +337188 +337189 +337190 +337191 +337216 +337217 +337218 +337219 +337220 +337221 +337222 +337223 +337248 +337249 +337250 +337251 +337252 +337253 +337254 +337255 +337280 +337281 +337282 +337283 +337284 +337285 +337286 +337287 +337312 +337313 +337314 +337315 +337316 +337317 +337318 +337319 +337344 +337345 +337346 +337347 +337348 +337349 +337350 +337351 +337376 +337377 +337378 +337379 +337380 +337381 +337382 +337383 +337408 +337409 +337410 +337411 +337412 +337413 +337414 +337415 +337440 +337441 +337442 +337443 +337444 +337445 +337446 +337447 +337472 +337473 +337474 +337475 +337476 +337477 +337478 +337479 +337504 +337505 +337506 +337507 +337508 +337509 +337510 +337511 +337536 +337537 +337538 +337539 +337540 +337541 +337542 +337543 +337568 +337569 +337570 +337571 +337572 +337573 +337574 +337575 +337600 +337601 +337602 +337603 +337604 +337605 +337606 +337607 +337632 +337633 +337634 +337635 +337636 +337637 +337638 +337639 +337664 +337665 +337666 +337667 +337668 +337669 +337670 +337671 +337696 +337697 +337698 +337699 +337700 +337701 +337702 +337703 +337728 +337729 +337730 +337731 +337732 +337733 +337734 +337735 +337760 +337761 +337762 +337763 +337764 +337765 +337766 +337767 +337792 +337793 +337794 +337795 +337796 +337797 +337798 +337799 +337824 +337825 +337826 +337827 +337828 +337829 +337830 +337831 +337856 +337857 +337858 +337859 +337860 +337861 +337862 +337863 +337888 +337889 +337890 +337891 +337892 +337893 +337894 +337895 +337920 +337921 +337922 +337923 +337924 +337925 +337926 +337927 +337952 +337953 +337954 +337955 +337956 +337957 +337958 +337959 +337984 +337985 +337986 +337987 +337988 +337989 +337990 +337991 +338016 +338017 +338018 +338019 +338020 +338021 +338022 +338023 +338048 +338049 +338050 +338051 +338052 +338053 +338054 +338055 +338080 +338081 +338082 +338083 +338084 +338085 +338086 +338087 +338112 +338113 +338114 +338115 +338116 +338117 +338118 +338119 +338144 +338145 +338146 +338147 +338148 +338149 +338150 +338151 +338176 +338177 +338178 +338179 +338180 +338181 +338182 +338183 +338208 +338209 +338210 +338211 +338212 +338213 +338214 +338215 +338240 +338241 +338242 +338243 +338244 +338245 +338246 +338247 +338272 +338273 +338274 +338275 +338276 +338277 +338278 +338279 +338304 +338305 +338306 +338307 +338308 +338309 +338310 +338311 +338336 +338337 +338338 +338339 +338340 +338341 +338342 +338343 +338368 +338369 +338370 +338371 +338372 +338373 +338374 +338375 +338400 +338401 +338402 +338403 +338404 +338405 +338406 +338407 +338432 +338433 +338434 +338435 +338436 +338437 +338438 +338439 +338464 +338465 +338466 +338467 +338468 +338469 +338470 +338471 +338496 +338497 +338498 +338499 +338500 +338501 +338502 +338503 +338528 +338529 +338530 +338531 +338532 +338533 +338534 +338535 +338560 +338561 +338562 +338563 +338564 +338565 +338566 +338567 +338592 +338593 +338594 +338595 +338596 +338597 +338598 +338599 +338624 +338625 +338626 +338627 +338628 +338629 +338630 +338631 +338656 +338657 +338658 +338659 +338660 +338661 +338662 +338663 +338688 +338689 +338690 +338691 +338692 +338693 +338694 +338695 +338720 +338721 +338722 +338723 +338724 +338725 +338726 +338727 +338752 +338753 +338754 +338755 +338756 +338757 +338758 +338759 +338784 +338785 +338786 +338787 +338788 +338789 +338790 +338791 +338816 +338817 +338818 +338819 +338820 +338821 +338822 +338823 +338848 +338849 +338850 +338851 +338852 +338853 +338854 +338855 +338880 +338881 +338882 +338883 +338884 +338885 +338886 +338887 +338912 +338913 +338914 +338915 +338916 +338917 +338918 +338919 +338944 +338945 +338946 +338947 +338948 +338949 +338950 +338951 +338976 +338977 +338978 +338979 +338980 +338981 +338982 +338983 +339008 +339009 +339010 +339011 +339012 +339013 +339014 +339015 +339040 +339041 +339042 +339043 +339044 +339045 +339046 +339047 +339072 +339073 +339074 +339075 +339076 +339077 +339078 +339079 +339104 +339105 +339106 +339107 +339108 +339109 +339110 +339111 +339136 +339137 +339138 +339139 +339140 +339141 +339142 +339143 +339168 +339169 +339170 +339171 +339172 +339173 +339174 +339175 +339200 +339201 +339202 +339203 +339204 +339205 +339206 +339207 +339232 +339233 +339234 +339235 +339236 +339237 +339238 +339239 +339264 +339265 +339266 +339267 +339268 +339269 +339270 +339271 +339296 +339297 +339298 +339299 +339300 +339301 +339302 +339303 +339328 +339329 +339330 +339331 +339332 +339333 +339334 +339335 +339360 +339361 +339362 +339363 +339364 +339365 +339366 +339367 +339392 +339393 +339394 +339395 +339396 +339397 +339398 +339399 +339424 +339425 +339426 +339427 +339428 +339429 +339430 +339431 +339456 +339457 +339458 +339459 +339460 +339461 +339462 +339463 +339488 +339489 +339490 +339491 +339492 +339493 +339494 +339495 +339520 +339521 +339522 +339523 +339524 +339525 +339526 +339527 +339552 +339553 +339554 +339555 +339556 +339557 +339558 +339559 +339584 +339585 +339586 +339587 +339588 +339589 +339590 +339591 +339616 +339617 +339618 +339619 +339620 +339621 +339622 +339623 +339648 +339649 +339650 +339651 +339652 +339653 +339654 +339655 +339680 +339681 +339682 +339683 +339684 +339685 +339686 +339687 +339712 +339713 +339714 +339715 +339716 +339717 +339718 +339719 +339744 +339745 +339746 +339747 +339748 +339749 +339750 +339751 +339776 +339777 +339778 +339779 +339780 +339781 +339782 +339783 +339808 +339809 +339810 +339811 +339812 +339813 +339814 +339815 +339840 +339841 +339842 +339843 +339844 +339845 +339846 +339847 +339872 +339873 +339874 +339875 +339876 +339877 +339878 +339879 +339904 +339905 +339906 +339907 +339908 +339909 +339910 +339911 +339936 +339937 +339938 +339939 +339940 +339941 +339942 +339943 +339968 +339969 +339970 +339971 +339972 +339973 +339974 +339975 +340000 +340001 +340002 +340003 +340004 +340005 +340006 +340007 +340032 +340033 +340034 +340035 +340036 +340037 +340038 +340039 +340064 +340065 +340066 +340067 +340068 +340069 +340070 +340071 +340096 +340097 +340098 +340099 +340100 +340101 +340102 +340103 +340128 +340129 +340130 +340131 +340132 +340133 +340134 +340135 +340160 +340161 +340162 +340163 +340164 +340165 +340166 +340167 +340192 +340193 +340194 +340195 +340196 +340197 +340198 +340199 +340224 +340225 +340226 +340227 +340228 +340229 +340230 +340231 +340256 +340257 +340258 +340259 +340260 +340261 +340262 +340263 +340288 +340289 +340290 +340291 +340292 +340293 +340294 +340295 +340320 +340321 +340322 +340323 +340324 +340325 +340326 +340327 +340352 +340353 +340354 +340355 +340356 +340357 +340358 +340359 +340384 +340385 +340386 +340387 +340388 +340389 +340390 +340391 +340416 +340417 +340418 +340419 +340420 +340421 +340422 +340423 +340448 +340449 +340450 +340451 +340452 +340453 +340454 +340455 +340480 +340481 +340482 +340483 +340484 +340485 +340486 +340487 +340512 +340513 +340514 +340515 +340516 +340517 +340518 +340519 +340544 +340545 +340546 +340547 +340548 +340549 +340550 +340551 +340576 +340577 +340578 +340579 +340580 +340581 +340582 +340583 +340608 +340609 +340610 +340611 +340612 +340613 +340614 +340615 +340640 +340641 +340642 +340643 +340644 +340645 +340646 +340647 +340672 +340673 +340674 +340675 +340676 +340677 +340678 +340679 +340704 +340705 +340706 +340707 +340708 +340709 +340710 +340711 +340736 +340737 +340738 +340739 +340740 +340741 +340742 +340743 +340768 +340769 +340770 +340771 +340772 +340773 +340774 +340775 +340800 +340801 +340802 +340803 +340804 +340805 +340806 +340807 +340832 +340833 +340834 +340835 +340836 +340837 +340838 +340839 +340864 +340865 +340866 +340867 +340868 +340869 +340870 +340871 +340896 +340897 +340898 +340899 +340900 +340901 +340902 +340903 +340928 +340929 +340930 +340931 +340932 +340933 +340934 +340935 +340960 +340961 +340962 +340963 +340964 +340965 +340966 +340967 +340992 +340993 +340994 +340995 +340996 +340997 +340998 +340999 +341024 +341025 +341026 +341027 +341028 +341029 +341030 +341031 +341056 +341057 +341058 +341059 +341060 +341061 +341062 +341063 +341088 +341089 +341090 +341091 +341092 +341093 +341094 +341095 +341120 +341121 +341122 +341123 +341124 +341125 +341126 +341127 +341152 +341153 +341154 +341155 +341156 +341157 +341158 +341159 +341184 +341185 +341186 +341187 +341188 +341189 +341190 +341191 +341216 +341217 +341218 +341219 +341220 +341221 +341222 +341223 +341248 +341249 +341250 +341251 +341252 +341253 +341254 +341255 +341280 +341281 +341282 +341283 +341284 +341285 +341286 +341287 +341312 +341313 +341314 +341315 +341316 +341317 +341318 +341319 +341344 +341345 +341346 +341347 +341348 +341349 +341350 +341351 +341376 +341377 +341378 +341379 +341380 +341381 +341382 +341383 +341408 +341409 +341410 +341411 +341412 +341413 +341414 +341415 +341440 +341441 +341442 +341443 +341444 +341445 +341446 +341447 +341472 +341473 +341474 +341475 +341476 +341477 +341478 +341479 +341504 +341505 +341506 +341507 +341508 +341509 +341510 +341511 +341536 +341537 +341538 +341539 +341540 +341541 +341542 +341543 +341568 +341569 +341570 +341571 +341572 +341573 +341574 +341575 +341600 +341601 +341602 +341603 +341604 +341605 +341606 +341607 +341632 +341633 +341634 +341635 +341636 +341637 +341638 +341639 +341664 +341665 +341666 +341667 +341668 +341669 +341670 +341671 +341696 +341697 +341698 +341699 +341700 +341701 +341702 +341703 +341728 +341729 +341730 +341731 +341732 +341733 +341734 +341735 +341760 +341761 +341762 +341763 +341764 +341765 +341766 +341767 +341792 +341793 +341794 +341795 +341796 +341797 +341798 +341799 +341824 +341825 +341826 +341827 +341828 +341829 +341830 +341831 +341856 +341857 +341858 +341859 +341860 +341861 +341862 +341863 +341888 +341889 +341890 +341891 +341892 +341893 +341894 +341895 +341920 +341921 +341922 +341923 +341924 +341925 +341926 +341927 +341952 +341953 +341954 +341955 +341956 +341957 +341958 +341959 +341984 +341985 +341986 +341987 +341988 +341989 +341990 +341991 +342016 +342017 +342018 +342019 +342020 +342021 +342022 +342023 +342048 +342049 +342050 +342051 +342052 +342053 +342054 +342055 +342080 +342081 +342082 +342083 +342084 +342085 +342086 +342087 +342112 +342113 +342114 +342115 +342116 +342117 +342118 +342119 +342144 +342145 +342146 +342147 +342148 +342149 +342150 +342151 +342176 +342177 +342178 +342179 +342180 +342181 +342182 +342183 +342208 +342209 +342210 +342211 +342212 +342213 +342214 +342215 +342240 +342241 +342242 +342243 +342244 +342245 +342246 +342247 +342272 +342273 +342274 +342275 +342276 +342277 +342278 +342279 +342304 +342305 +342306 +342307 +342308 +342309 +342310 +342311 +342336 +342337 +342338 +342339 +342340 +342341 +342342 +342343 +342368 +342369 +342370 +342371 +342372 +342373 +342374 +342375 +342400 +342401 +342402 +342403 +342404 +342405 +342406 +342407 +342432 +342433 +342434 +342435 +342436 +342437 +342438 +342439 +342464 +342465 +342466 +342467 +342468 +342469 +342470 +342471 +342496 +342497 +342498 +342499 +342500 +342501 +342502 +342503 +342528 +342529 +342530 +342531 +342532 +342533 +342534 +342535 +342560 +342561 +342562 +342563 +342564 +342565 +342566 +342567 +342592 +342593 +342594 +342595 +342596 +342597 +342598 +342599 +342624 +342625 +342626 +342627 +342628 +342629 +342630 +342631 +342656 +342657 +342658 +342659 +342660 +342661 +342662 +342663 +342688 +342689 +342690 +342691 +342692 +342693 +342694 +342695 +342720 +342721 +342722 +342723 +342724 +342725 +342726 +342727 +342752 +342753 +342754 +342755 +342756 +342757 +342758 +342759 +342784 +342785 +342786 +342787 +342788 +342789 +342790 +342791 +342816 +342817 +342818 +342819 +342820 +342821 +342822 +342823 +342848 +342849 +342850 +342851 +342852 +342853 +342854 +342855 +342880 +342881 +342882 +342883 +342884 +342885 +342886 +342887 +342912 +342913 +342914 +342915 +342916 +342917 +342918 +342919 +342944 +342945 +342946 +342947 +342948 +342949 +342950 +342951 +342976 +342977 +342978 +342979 +342980 +342981 +342982 +342983 +343008 +343009 +343010 +343011 +343012 +343013 +343014 +343015 +343040 +343041 +343042 +343043 +343044 +343045 +343046 +343047 +343072 +343073 +343074 +343075 +343076 +343077 +343078 +343079 +343104 +343105 +343106 +343107 +343108 +343109 +343110 +343111 +343136 +343137 +343138 +343139 +343140 +343141 +343142 +343143 +343168 +343169 +343170 +343171 +343172 +343173 +343174 +343175 +343200 +343201 +343202 +343203 +343204 +343205 +343206 +343207 +343232 +343233 +343234 +343235 +343236 +343237 +343238 +343239 +343264 +343265 +343266 +343267 +343268 +343269 +343270 +343271 +343296 +343297 +343298 +343299 +343300 +343301 +343302 +343303 +343328 +343329 +343330 +343331 +343332 +343333 +343334 +343335 +343360 +343361 +343362 +343363 +343364 +343365 +343366 +343367 +343392 +343393 +343394 +343395 +343396 +343397 +343398 +343399 +343424 +343425 +343426 +343427 +343428 +343429 +343430 +343431 +343456 +343457 +343458 +343459 +343460 +343461 +343462 +343463 +343488 +343489 +343490 +343491 +343492 +343493 +343494 +343495 +343520 +343521 +343522 +343523 +343524 +343525 +343526 +343527 +343552 +343553 +343554 +343555 +343556 +343557 +343558 +343559 +343584 +343585 +343586 +343587 +343588 +343589 +343590 +343591 +343616 +343617 +343618 +343619 +343620 +343621 +343622 +343623 +343648 +343649 +343650 +343651 +343652 +343653 +343654 +343655 +343680 +343681 +343682 +343683 +343684 +343685 +343686 +343687 +343712 +343713 +343714 +343715 +343716 +343717 +343718 +343719 +343744 +343745 +343746 +343747 +343748 +343749 +343750 +343751 +343776 +343777 +343778 +343779 +343780 +343781 +343782 +343783 +343808 +343809 +343810 +343811 +343812 +343813 +343814 +343815 +343840 +343841 +343842 +343843 +343844 +343845 +343846 +343847 +343872 +343873 +343874 +343875 +343876 +343877 +343878 +343879 +343904 +343905 +343906 +343907 +343908 +343909 +343910 +343911 +343936 +343937 +343938 +343939 +343940 +343941 +343942 +343943 +343968 +343969 +343970 +343971 +343972 +343973 +343974 +343975 +344000 +344001 +344002 +344003 +344004 +344005 +344006 +344007 +344032 +344033 +344034 +344035 +344036 +344037 +344038 +344039 +344064 +344065 +344066 +344067 +344068 +344069 +344070 +344071 +344096 +344097 +344098 +344099 +344100 +344101 +344102 +344103 +344128 +344129 +344130 +344131 +344132 +344133 +344134 +344135 +344160 +344161 +344162 +344163 +344164 +344165 +344166 +344167 +344192 +344193 +344194 +344195 +344196 +344197 +344198 +344199 +344224 +344225 +344226 +344227 +344228 +344229 +344230 +344231 +344256 +344257 +344258 +344259 +344260 +344261 +344262 +344263 +344288 +344289 +344290 +344291 +344292 +344293 +344294 +344295 +344320 +344321 +344322 +344323 +344324 +344325 +344326 +344327 +344352 +344353 +344354 +344355 +344356 +344357 +344358 +344359 +344384 +344385 +344386 +344387 +344388 +344389 +344390 +344391 +344416 +344417 +344418 +344419 +344420 +344421 +344422 +344423 +344448 +344449 +344450 +344451 +344452 +344453 +344454 +344455 +344480 +344481 +344482 +344483 +344484 +344485 +344486 +344487 +344512 +344513 +344514 +344515 +344516 +344517 +344518 +344519 +344544 +344545 +344546 +344547 +344548 +344549 +344550 +344551 +344576 +344577 +344578 +344579 +344580 +344581 +344582 +344583 +344608 +344609 +344610 +344611 +344612 +344613 +344614 +344615 +344640 +344641 +344642 +344643 +344644 +344645 +344646 +344647 +344672 +344673 +344674 +344675 +344676 +344677 +344678 +344679 +344704 +344705 +344706 +344707 +344708 +344709 +344710 +344711 +344736 +344737 +344738 +344739 +344740 +344741 +344742 +344743 +344768 +344769 +344770 +344771 +344772 +344773 +344774 +344775 +344800 +344801 +344802 +344803 +344804 +344805 +344806 +344807 +344832 +344833 +344834 +344835 +344836 +344837 +344838 +344839 +344864 +344865 +344866 +344867 +344868 +344869 +344870 +344871 +344896 +344897 +344898 +344899 +344900 +344901 +344902 +344903 +344928 +344929 +344930 +344931 +344932 +344933 +344934 +344935 +344960 +344961 +344962 +344963 +344964 +344965 +344966 +344967 +344992 +344993 +344994 +344995 +344996 +344997 +344998 +344999 +345024 +345025 +345026 +345027 +345028 +345029 +345030 +345031 +345056 +345057 +345058 +345059 +345060 +345061 +345062 +345063 +345088 +345089 +345090 +345091 +345092 +345093 +345094 +345095 +345120 +345121 +345122 +345123 +345124 +345125 +345126 +345127 +345152 +345153 +345154 +345155 +345156 +345157 +345158 +345159 +345184 +345185 +345186 +345187 +345188 +345189 +345190 +345191 +345216 +345217 +345218 +345219 +345220 +345221 +345222 +345223 +345248 +345249 +345250 +345251 +345252 +345253 +345254 +345255 +345280 +345281 +345282 +345283 +345284 +345285 +345286 +345287 +345312 +345313 +345314 +345315 +345316 +345317 +345318 +345319 +345344 +345345 +345346 +345347 +345348 +345349 +345350 +345351 +345376 +345377 +345378 +345379 +345380 +345381 +345382 +345383 +345408 +345409 +345410 +345411 +345412 +345413 +345414 +345415 +345440 +345441 +345442 +345443 +345444 +345445 +345446 +345447 +345472 +345473 +345474 +345475 +345476 +345477 +345478 +345479 +345504 +345505 +345506 +345507 +345508 +345509 +345510 +345511 +345536 +345537 +345538 +345539 +345540 +345541 +345542 +345543 +345568 +345569 +345570 +345571 +345572 +345573 +345574 +345575 +345600 +345601 +345602 +345603 +345604 +345605 +345606 +345607 +345632 +345633 +345634 +345635 +345636 +345637 +345638 +345639 +345664 +345665 +345666 +345667 +345668 +345669 +345670 +345671 +345696 +345697 +345698 +345699 +345700 +345701 +345702 +345703 +345728 +345729 +345730 +345731 +345732 +345733 +345734 +345735 +345760 +345761 +345762 +345763 +345764 +345765 +345766 +345767 +345792 +345793 +345794 +345795 +345796 +345797 +345798 +345799 +345824 +345825 +345826 +345827 +345828 +345829 +345830 +345831 +345856 +345857 +345858 +345859 +345860 +345861 +345862 +345863 +345888 +345889 +345890 +345891 +345892 +345893 +345894 +345895 +345920 +345921 +345922 +345923 +345924 +345925 +345926 +345927 +345952 +345953 +345954 +345955 +345956 +345957 +345958 +345959 +345984 +345985 +345986 +345987 +345988 +345989 +345990 +345991 +346016 +346017 +346018 +346019 +346020 +346021 +346022 +346023 +346048 +346049 +346050 +346051 +346052 +346053 +346054 +346055 +346080 +346081 +346082 +346083 +346084 +346085 +346086 +346087 +346112 +346113 +346114 +346115 +346116 +346117 +346118 +346119 +346144 +346145 +346146 +346147 +346148 +346149 +346150 +346151 +346176 +346177 +346178 +346179 +346180 +346181 +346182 +346183 +346208 +346209 +346210 +346211 +346212 +346213 +346214 +346215 +346240 +346241 +346242 +346243 +346244 +346245 +346246 +346247 +346272 +346273 +346274 +346275 +346276 +346277 +346278 +346279 +346304 +346305 +346306 +346307 +346308 +346309 +346310 +346311 +346336 +346337 +346338 +346339 +346340 +346341 +346342 +346343 +346368 +346369 +346370 +346371 +346372 +346373 +346374 +346375 +346400 +346401 +346402 +346403 +346404 +346405 +346406 +346407 +346432 +346433 +346434 +346435 +346436 +346437 +346438 +346439 +346464 +346465 +346466 +346467 +346468 +346469 +346470 +346471 +346496 +346497 +346498 +346499 +346500 +346501 +346502 +346503 +346528 +346529 +346530 +346531 +346532 +346533 +346534 +346535 +346560 +346561 +346562 +346563 +346564 +346565 +346566 +346567 +346592 +346593 +346594 +346595 +346596 +346597 +346598 +346599 +346624 +346625 +346626 +346627 +346628 +346629 +346630 +346631 +346656 +346657 +346658 +346659 +346660 +346661 +346662 +346663 +346688 +346689 +346690 +346691 +346692 +346693 +346694 +346695 +346720 +346721 +346722 +346723 +346724 +346725 +346726 +346727 +346752 +346753 +346754 +346755 +346756 +346757 +346758 +346759 +346784 +346785 +346786 +346787 +346788 +346789 +346790 +346791 +346816 +346817 +346818 +346819 +346820 +346821 +346822 +346823 +346848 +346849 +346850 +346851 +346852 +346853 +346854 +346855 +346880 +346881 +346882 +346883 +346884 +346885 +346886 +346887 +346912 +346913 +346914 +346915 +346916 +346917 +346918 +346919 +346944 +346945 +346946 +346947 +346948 +346949 +346950 +346951 +346976 +346977 +346978 +346979 +346980 +346981 +346982 +346983 +347008 +347009 +347010 +347011 +347012 +347013 +347014 +347015 +347040 +347041 +347042 +347043 +347044 +347045 +347046 +347047 +347072 +347073 +347074 +347075 +347076 +347077 +347078 +347079 +347104 +347105 +347106 +347107 +347108 +347109 +347110 +347111 +347136 +347137 +347138 +347139 +347140 +347141 +347142 +347143 +347168 +347169 +347170 +347171 +347172 +347173 +347174 +347175 +347200 +347201 +347202 +347203 +347204 +347205 +347206 +347207 +347232 +347233 +347234 +347235 +347236 +347237 +347238 +347239 +347264 +347265 +347266 +347267 +347268 +347269 +347270 +347271 +347296 +347297 +347298 +347299 +347300 +347301 +347302 +347303 +347328 +347329 +347330 +347331 +347332 +347333 +347334 +347335 +347360 +347361 +347362 +347363 +347364 +347365 +347366 +347367 +347392 +347393 +347394 +347395 +347396 +347397 +347398 +347399 +347424 +347425 +347426 +347427 +347428 +347429 +347430 +347431 +347456 +347457 +347458 +347459 +347460 +347461 +347462 +347463 +347488 +347489 +347490 +347491 +347492 +347493 +347494 +347495 +347520 +347521 +347522 +347523 +347524 +347525 +347526 +347527 +347552 +347553 +347554 +347555 +347556 +347557 +347558 +347559 +347584 +347585 +347586 +347587 +347588 +347589 +347590 +347591 +347616 +347617 +347618 +347619 +347620 +347621 +347622 +347623 +347648 +347649 +347650 +347651 +347652 +347653 +347654 +347655 +347680 +347681 +347682 +347683 +347684 +347685 +347686 +347687 +347712 +347713 +347714 +347715 +347716 +347717 +347718 +347719 +347744 +347745 +347746 +347747 +347748 +347749 +347750 +347751 +347776 +347777 +347778 +347779 +347780 +347781 +347782 +347783 +347808 +347809 +347810 +347811 +347812 +347813 +347814 +347815 +347840 +347841 +347842 +347843 +347844 +347845 +347846 +347847 +347872 +347873 +347874 +347875 +347876 +347877 +347878 +347879 +347904 +347905 +347906 +347907 +347908 +347909 +347910 +347911 +347936 +347937 +347938 +347939 +347940 +347941 +347942 +347943 +347968 +347969 +347970 +347971 +347972 +347973 +347974 +347975 +348000 +348001 +348002 +348003 +348004 +348005 +348006 +348007 +348032 +348033 +348034 +348035 +348036 +348037 +348038 +348039 +348064 +348065 +348066 +348067 +348068 +348069 +348070 +348071 +348096 +348097 +348098 +348099 +348100 +348101 +348102 +348103 +348128 +348129 +348130 +348131 +348132 +348133 +348134 +348135 +348160 +348161 +348162 +348163 +348164 +348165 +348166 +348167 +348192 +348193 +348194 +348195 +348196 +348197 +348198 +348199 +348224 +348225 +348226 +348227 +348228 +348229 +348230 +348231 +348256 +348257 +348258 +348259 +348260 +348261 +348262 +348263 +348288 +348289 +348290 +348291 +348292 +348293 +348294 +348295 +348320 +348321 +348322 +348323 +348324 +348325 +348326 +348327 +348352 +348353 +348354 +348355 +348356 +348357 +348358 +348359 +348384 +348385 +348386 +348387 +348388 +348389 +348390 +348391 +348416 +348417 +348418 +348419 +348420 +348421 +348422 +348423 +348448 +348449 +348450 +348451 +348452 +348453 +348454 +348455 +348480 +348481 +348482 +348483 +348484 +348485 +348486 +348487 +348512 +348513 +348514 +348515 +348516 +348517 +348518 +348519 +348544 +348545 +348546 +348547 +348548 +348549 +348550 +348551 +348576 +348577 +348578 +348579 +348580 +348581 +348582 +348583 +348608 +348609 +348610 +348611 +348612 +348613 +348614 +348615 +348640 +348641 +348642 +348643 +348644 +348645 +348646 +348647 +348672 +348673 +348674 +348675 +348676 +348677 +348678 +348679 +348704 +348705 +348706 +348707 +348708 +348709 +348710 +348711 +348736 +348737 +348738 +348739 +348740 +348741 +348742 +348743 +348768 +348769 +348770 +348771 +348772 +348773 +348774 +348775 +348800 +348801 +348802 +348803 +348804 +348805 +348806 +348807 +348832 +348833 +348834 +348835 +348836 +348837 +348838 +348839 +348864 +348865 +348866 +348867 +348868 +348869 +348870 +348871 +348896 +348897 +348898 +348899 +348900 +348901 +348902 +348903 +348928 +348929 +348930 +348931 +348932 +348933 +348934 +348935 +348960 +348961 +348962 +348963 +348964 +348965 +348966 +348967 +348992 +348993 +348994 +348995 +348996 +348997 +348998 +348999 +349024 +349025 +349026 +349027 +349028 +349029 +349030 +349031 +349056 +349057 +349058 +349059 +349060 +349061 +349062 +349063 +349088 +349089 +349090 +349091 +349092 +349093 +349094 +349095 +349120 +349121 +349122 +349123 +349124 +349125 +349126 +349127 +349152 +349153 +349154 +349155 +349156 +349157 +349158 +349159 +349184 +349185 +349186 +349187 +349188 +349189 +349190 +349191 +349216 +349217 +349218 +349219 +349220 +349221 +349222 +349223 +349248 +349249 +349250 +349251 +349252 +349253 +349254 +349255 +349280 +349281 +349282 +349283 +349284 +349285 +349286 +349287 +349312 +349313 +349314 +349315 +349316 +349317 +349318 +349319 +349344 +349345 +349346 +349347 +349348 +349349 +349350 +349351 +349376 +349377 +349378 +349379 +349380 +349381 +349382 +349383 +349408 +349409 +349410 +349411 +349412 +349413 +349414 +349415 +349440 +349441 +349442 +349443 +349444 +349445 +349446 +349447 +349472 +349473 +349474 +349475 +349476 +349477 +349478 +349479 +349504 +349505 +349506 +349507 +349508 +349509 +349510 +349511 +349536 +349537 +349538 +349539 +349540 +349541 +349542 +349543 +349568 +349569 +349570 +349571 +349572 +349573 +349574 +349575 +349600 +349601 +349602 +349603 +349604 +349605 +349606 +349607 +349632 +349633 +349634 +349635 +349636 +349637 +349638 +349639 +349664 +349665 +349666 +349667 +349668 +349669 +349670 +349671 +349696 +349697 +349698 +349699 +349700 +349701 +349702 +349703 +349728 +349729 +349730 +349731 +349732 +349733 +349734 +349735 +349760 +349761 +349762 +349763 +349764 +349765 +349766 +349767 +349792 +349793 +349794 +349795 +349796 +349797 +349798 +349799 +349824 +349825 +349826 +349827 +349828 +349829 +349830 +349831 +349856 +349857 +349858 +349859 +349860 +349861 +349862 +349863 +349888 +349889 +349890 +349891 +349892 +349893 +349894 +349895 +349920 +349921 +349922 +349923 +349924 +349925 +349926 +349927 +349952 +349953 +349954 +349955 +349956 +349957 +349958 +349959 +349984 +349985 +349986 +349987 +349988 +349989 +349990 +349991 +350016 +350017 +350018 +350019 +350020 +350021 +350022 +350023 +350048 +350049 +350050 +350051 +350052 +350053 +350054 +350055 +350080 +350081 +350082 +350083 +350084 +350085 +350086 +350087 +350112 +350113 +350114 +350115 +350116 +350117 +350118 +350119 +350144 +350145 +350146 +350147 +350148 +350149 +350150 +350151 +350176 +350177 +350178 +350179 +350180 +350181 +350182 +350183 +350208 +350209 +350210 +350211 +350212 +350213 +350214 +350215 +350240 +350241 +350242 +350243 +350244 +350245 +350246 +350247 +350272 +350273 +350274 +350275 +350276 +350277 +350278 +350279 +350304 +350305 +350306 +350307 +350308 +350309 +350310 +350311 +350336 +350337 +350338 +350339 +350340 +350341 +350342 +350343 +350368 +350369 +350370 +350371 +350372 +350373 +350374 +350375 +350400 +350401 +350402 +350403 +350404 +350405 +350406 +350407 +350432 +350433 +350434 +350435 +350436 +350437 +350438 +350439 +350464 +350465 +350466 +350467 +350468 +350469 +350470 +350471 +350496 +350497 +350498 +350499 +350500 +350501 +350502 +350503 +350528 +350529 +350530 +350531 +350532 +350533 +350534 +350535 +350560 +350561 +350562 +350563 +350564 +350565 +350566 +350567 +350592 +350593 +350594 +350595 +350596 +350597 +350598 +350599 +350624 +350625 +350626 +350627 +350628 +350629 +350630 +350631 +350656 +350657 +350658 +350659 +350660 +350661 +350662 +350663 +350688 +350689 +350690 +350691 +350692 +350693 +350694 +350695 +350720 +350721 +350722 +350723 +350724 +350725 +350726 +350727 +350752 +350753 +350754 +350755 +350756 +350757 +350758 +350759 +350784 +350785 +350786 +350787 +350788 +350789 +350790 +350791 +350816 +350817 +350818 +350819 +350820 +350821 +350822 +350823 +350848 +350849 +350850 +350851 +350852 +350853 +350854 +350855 +350880 +350881 +350882 +350883 +350884 +350885 +350886 +350887 +350912 +350913 +350914 +350915 +350916 +350917 +350918 +350919 +350944 +350945 +350946 +350947 +350948 +350949 +350950 +350951 +350976 +350977 +350978 +350979 +350980 +350981 +350982 +350983 +351008 +351009 +351010 +351011 +351012 +351013 +351014 +351015 +351040 +351041 +351042 +351043 +351044 +351045 +351046 +351047 +351072 +351073 +351074 +351075 +351076 +351077 +351078 +351079 +351104 +351105 +351106 +351107 +351108 +351109 +351110 +351111 +351136 +351137 +351138 +351139 +351140 +351141 +351142 +351143 +351168 +351169 +351170 +351171 +351172 +351173 +351174 +351175 +351200 +351201 +351202 +351203 +351204 +351205 +351206 +351207 +351232 +351233 +351234 +351235 +351236 +351237 +351238 +351239 +351264 +351265 +351266 +351267 +351268 +351269 +351270 +351271 +351296 +351297 +351298 +351299 +351300 +351301 +351302 +351303 +351328 +351329 +351330 +351331 +351332 +351333 +351334 +351335 +351360 +351361 +351362 +351363 +351364 +351365 +351366 +351367 +351392 +351393 +351394 +351395 +351396 +351397 +351398 +351399 +351424 +351425 +351426 +351427 +351428 +351429 +351430 +351431 +351456 +351457 +351458 +351459 +351460 +351461 +351462 +351463 +351488 +351489 +351490 +351491 +351492 +351493 +351494 +351495 +351520 +351521 +351522 +351523 +351524 +351525 +351526 +351527 +351552 +351553 +351554 +351555 +351556 +351557 +351558 +351559 +351584 +351585 +351586 +351587 +351588 +351589 +351590 +351591 +351616 +351617 +351618 +351619 +351620 +351621 +351622 +351623 +351648 +351649 +351650 +351651 +351652 +351653 +351654 +351655 +351680 +351681 +351682 +351683 +351684 +351685 +351686 +351687 +351712 +351713 +351714 +351715 +351716 +351717 +351718 +351719 +351744 +351745 +351746 +351747 +351748 +351749 +351750 +351751 +351776 +351777 +351778 +351779 +351780 +351781 +351782 +351783 +351808 +351809 +351810 +351811 +351812 +351813 +351814 +351815 +351840 +351841 +351842 +351843 +351844 +351845 +351846 +351847 +351872 +351873 +351874 +351875 +351876 +351877 +351878 +351879 +351904 +351905 +351906 +351907 +351908 +351909 +351910 +351911 +351936 +351937 +351938 +351939 +351940 +351941 +351942 +351943 +351968 +351969 +351970 +351971 +351972 +351973 +351974 +351975 +352000 +352001 +352002 +352003 +352004 +352005 +352006 +352007 +352032 +352033 +352034 +352035 +352036 +352037 +352038 +352039 +352064 +352065 +352066 +352067 +352068 +352069 +352070 +352071 +352096 +352097 +352098 +352099 +352100 +352101 +352102 +352103 +352128 +352129 +352130 +352131 +352132 +352133 +352134 +352135 +352160 +352161 +352162 +352163 +352164 +352165 +352166 +352167 +352192 +352193 +352194 +352195 +352196 +352197 +352198 +352199 +352224 +352225 +352226 +352227 +352228 +352229 +352230 +352231 +352256 +352257 +352258 +352259 +352260 +352261 +352262 +352263 +352288 +352289 +352290 +352291 +352292 +352293 +352294 +352295 +352320 +352321 +352322 +352323 +352324 +352325 +352326 +352327 +352352 +352353 +352354 +352355 +352356 +352357 +352358 +352359 +352384 +352385 +352386 +352387 +352388 +352389 +352390 +352391 +352416 +352417 +352418 +352419 +352420 +352421 +352422 +352423 +352448 +352449 +352450 +352451 +352452 +352453 +352454 +352455 +352480 +352481 +352482 +352483 +352484 +352485 +352486 +352487 +352512 +352513 +352514 +352515 +352516 +352517 +352518 +352519 +352544 +352545 +352546 +352547 +352548 +352549 +352550 +352551 +352576 +352577 +352578 +352579 +352580 +352581 +352582 +352583 +352608 +352609 +352610 +352611 +352612 +352613 +352614 +352615 +352640 +352641 +352642 +352643 +352644 +352645 +352646 +352647 +352672 +352673 +352674 +352675 +352676 +352677 +352678 +352679 +352704 +352705 +352706 +352707 +352708 +352709 +352710 +352711 +352736 +352737 +352738 +352739 +352740 +352741 +352742 +352743 +352768 +352769 +352770 +352771 +352772 +352773 +352774 +352775 +352800 +352801 +352802 +352803 +352804 +352805 +352806 +352807 +352832 +352833 +352834 +352835 +352836 +352837 +352838 +352839 +352864 +352865 +352866 +352867 +352868 +352869 +352870 +352871 +352896 +352897 +352898 +352899 +352900 +352901 +352902 +352903 +352928 +352929 +352930 +352931 +352932 +352933 +352934 +352935 +352960 +352961 +352962 +352963 +352964 +352965 +352966 +352967 +352992 +352993 +352994 +352995 +352996 +352997 +352998 +352999 +353024 +353025 +353026 +353027 +353028 +353029 +353030 +353031 +353056 +353057 +353058 +353059 +353060 +353061 +353062 +353063 +353088 +353089 +353090 +353091 +353092 +353093 +353094 +353095 +353120 +353121 +353122 +353123 +353124 +353125 +353126 +353127 +353152 +353153 +353154 +353155 +353156 +353157 +353158 +353159 +353184 +353185 +353186 +353187 +353188 +353189 +353190 +353191 +353216 +353217 +353218 +353219 +353220 +353221 +353222 +353223 +353248 +353249 +353250 +353251 +353252 +353253 +353254 +353255 +353280 +353281 +353282 +353283 +353284 +353285 +353286 +353287 +353312 +353313 +353314 +353315 +353316 +353317 +353318 +353319 +353344 +353345 +353346 +353347 +353348 +353349 +353350 +353351 +353376 +353377 +353378 +353379 +353380 +353381 +353382 +353383 +353408 +353409 +353410 +353411 +353412 +353413 +353414 +353415 +353440 +353441 +353442 +353443 +353444 +353445 +353446 +353447 +353472 +353473 +353474 +353475 +353476 +353477 +353478 +353479 +353504 +353505 +353506 +353507 +353508 +353509 +353510 +353511 +353536 +353537 +353538 +353539 +353540 +353541 +353542 +353543 +353568 +353569 +353570 +353571 +353572 +353573 +353574 +353575 +353600 +353601 +353602 +353603 +353604 +353605 +353606 +353607 +353632 +353633 +353634 +353635 +353636 +353637 +353638 +353639 +353664 +353665 +353666 +353667 +353668 +353669 +353670 +353671 +353696 +353697 +353698 +353699 +353700 +353701 +353702 +353703 +353728 +353729 +353730 +353731 +353732 +353733 +353734 +353735 +353760 +353761 +353762 +353763 +353764 +353765 +353766 +353767 +353792 +353793 +353794 +353795 +353796 +353797 +353798 +353799 +353824 +353825 +353826 +353827 +353828 +353829 +353830 +353831 +353856 +353857 +353858 +353859 +353860 +353861 +353862 +353863 +353888 +353889 +353890 +353891 +353892 +353893 +353894 +353895 +353920 +353921 +353922 +353923 +353924 +353925 +353926 +353927 +353952 +353953 +353954 +353955 +353956 +353957 +353958 +353959 +353984 +353985 +353986 +353987 +353988 +353989 +353990 +353991 +354016 +354017 +354018 +354019 +354020 +354021 +354022 +354023 +354048 +354049 +354050 +354051 +354052 +354053 +354054 +354055 +354080 +354081 +354082 +354083 +354084 +354085 +354086 +354087 +354112 +354113 +354114 +354115 +354116 +354117 +354118 +354119 +354144 +354145 +354146 +354147 +354148 +354149 +354150 +354151 +354176 +354177 +354178 +354179 +354180 +354181 +354182 +354183 +354208 +354209 +354210 +354211 +354212 +354213 +354214 +354215 +354240 +354241 +354242 +354243 +354244 +354245 +354246 +354247 +354272 +354273 +354274 +354275 +354276 +354277 +354278 +354279 +354304 +354305 +354306 +354307 +354308 +354309 +354310 +354311 +354336 +354337 +354338 +354339 +354340 +354341 +354342 +354343 +354368 +354369 +354370 +354371 +354372 +354373 +354374 +354375 +354400 +354401 +354402 +354403 +354404 +354405 +354406 +354407 +354432 +354433 +354434 +354435 +354436 +354437 +354438 +354439 +354464 +354465 +354466 +354467 +354468 +354469 +354470 +354471 +354496 +354497 +354498 +354499 +354500 +354501 +354502 +354503 +354528 +354529 +354530 +354531 +354532 +354533 +354534 +354535 +354560 +354561 +354562 +354563 +354564 +354565 +354566 +354567 +354592 +354593 +354594 +354595 +354596 +354597 +354598 +354599 +354624 +354625 +354626 +354627 +354628 +354629 +354630 +354631 +354656 +354657 +354658 +354659 +354660 +354661 +354662 +354663 +354688 +354689 +354690 +354691 +354692 +354693 +354694 +354695 +354720 +354721 +354722 +354723 +354724 +354725 +354726 +354727 +354752 +354753 +354754 +354755 +354756 +354757 +354758 +354759 +354784 +354785 +354786 +354787 +354788 +354789 +354790 +354791 +354816 +354817 +354818 +354819 +354820 +354821 +354822 +354823 +354848 +354849 +354850 +354851 +354852 +354853 +354854 +354855 +354880 +354881 +354882 +354883 +354884 +354885 +354886 +354887 +354912 +354913 +354914 +354915 +354916 +354917 +354918 +354919 +354944 +354945 +354946 +354947 +354948 +354949 +354950 +354951 +354976 +354977 +354978 +354979 +354980 +354981 +354982 +354983 +355008 +355009 +355010 +355011 +355012 +355013 +355014 +355015 +355040 +355041 +355042 +355043 +355044 +355045 +355046 +355047 +355072 +355073 +355074 +355075 +355076 +355077 +355078 +355079 +355104 +355105 +355106 +355107 +355108 +355109 +355110 +355111 +355136 +355137 +355138 +355139 +355140 +355141 +355142 +355143 +355168 +355169 +355170 +355171 +355172 +355173 +355174 +355175 +355200 +355201 +355202 +355203 +355204 +355205 +355206 +355207 +355232 +355233 +355234 +355235 +355236 +355237 +355238 +355239 +355264 +355265 +355266 +355267 +355268 +355269 +355270 +355271 +355296 +355297 +355298 +355299 +355300 +355301 +355302 +355303 +355328 +355329 +355330 +355331 +355332 +355333 +355334 +355335 +355360 +355361 +355362 +355363 +355364 +355365 +355366 +355367 +355392 +355393 +355394 +355395 +355396 +355397 +355398 +355399 +355424 +355425 +355426 +355427 +355428 +355429 +355430 +355431 +355456 +355457 +355458 +355459 +355460 +355461 +355462 +355463 +355488 +355489 +355490 +355491 +355492 +355493 +355494 +355495 +355520 +355521 +355522 +355523 +355524 +355525 +355526 +355527 +355552 +355553 +355554 +355555 +355556 +355557 +355558 +355559 +355584 +355585 +355586 +355587 +355588 +355589 +355590 +355591 +355616 +355617 +355618 +355619 +355620 +355621 +355622 +355623 +355648 +355649 +355650 +355651 +355652 +355653 +355654 +355655 +355680 +355681 +355682 +355683 +355684 +355685 +355686 +355687 +355712 +355713 +355714 +355715 +355716 +355717 +355718 +355719 +355744 +355745 +355746 +355747 +355748 +355749 +355750 +355751 +355776 +355777 +355778 +355779 +355780 +355781 +355782 +355783 +355808 +355809 +355810 +355811 +355812 +355813 +355814 +355815 +355840 +355841 +355842 +355843 +355844 +355845 +355846 +355847 +355872 +355873 +355874 +355875 +355876 +355877 +355878 +355879 +355904 +355905 +355906 +355907 +355908 +355909 +355910 +355911 +355936 +355937 +355938 +355939 +355940 +355941 +355942 +355943 +355968 +355969 +355970 +355971 +355972 +355973 +355974 +355975 +356000 +356001 +356002 +356003 +356004 +356005 +356006 +356007 +356032 +356033 +356034 +356035 +356036 +356037 +356038 +356039 +356064 +356065 +356066 +356067 +356068 +356069 +356070 +356071 +356096 +356097 +356098 +356099 +356100 +356101 +356102 +356103 +356128 +356129 +356130 +356131 +356132 +356133 +356134 +356135 +356160 +356161 +356162 +356163 +356164 +356165 +356166 +356167 +356192 +356193 +356194 +356195 +356196 +356197 +356198 +356199 +356224 +356225 +356226 +356227 +356228 +356229 +356230 +356231 +356256 +356257 +356258 +356259 +356260 +356261 +356262 +356263 +356288 +356289 +356290 +356291 +356292 +356293 +356294 +356295 +356320 +356321 +356322 +356323 +356324 +356325 +356326 +356327 +356352 +356353 +356354 +356355 +356356 +356357 +356358 +356359 +356384 +356385 +356386 +356387 +356388 +356389 +356390 +356391 +356416 +356417 +356418 +356419 +356420 +356421 +356422 +356423 +356448 +356449 +356450 +356451 +356452 +356453 +356454 +356455 +356480 +356481 +356482 +356483 +356484 +356485 +356486 +356487 +356512 +356513 +356514 +356515 +356516 +356517 +356518 +356519 +356544 +356545 +356546 +356547 +356548 +356549 +356550 +356551 +356576 +356577 +356578 +356579 +356580 +356581 +356582 +356583 +356608 +356609 +356610 +356611 +356612 +356613 +356614 +356615 +356640 +356641 +356642 +356643 +356644 +356645 +356646 +356647 +356672 +356673 +356674 +356675 +356676 +356677 +356678 +356679 +356704 +356705 +356706 +356707 +356708 +356709 +356710 +356711 +356736 +356737 +356738 +356739 +356740 +356741 +356742 +356743 +356768 +356769 +356770 +356771 +356772 +356773 +356774 +356775 +356800 +356801 +356802 +356803 +356804 +356805 +356806 +356807 +356832 +356833 +356834 +356835 +356836 +356837 +356838 +356839 +356864 +356865 +356866 +356867 +356868 +356869 +356870 +356871 +356896 +356897 +356898 +356899 +356900 +356901 +356902 +356903 +356928 +356929 +356930 +356931 +356932 +356933 +356934 +356935 +356960 +356961 +356962 +356963 +356964 +356965 +356966 +356967 +356992 +356993 +356994 +356995 +356996 +356997 +356998 +356999 +357024 +357025 +357026 +357027 +357028 +357029 +357030 +357031 +357056 +357057 +357058 +357059 +357060 +357061 +357062 +357063 +357088 +357089 +357090 +357091 +357092 +357093 +357094 +357095 +357120 +357121 +357122 +357123 +357124 +357125 +357126 +357127 +357152 +357153 +357154 +357155 +357156 +357157 +357158 +357159 +357184 +357185 +357186 +357187 +357188 +357189 +357190 +357191 +357216 +357217 +357218 +357219 +357220 +357221 +357222 +357223 +357248 +357249 +357250 +357251 +357252 +357253 +357254 +357255 +357280 +357281 +357282 +357283 +357284 +357285 +357286 +357287 +357312 +357313 +357314 +357315 +357316 +357317 +357318 +357319 +357344 +357345 +357346 +357347 +357348 +357349 +357350 +357351 +357376 +357377 +357378 +357379 +357380 +357381 +357382 +357383 +357408 +357409 +357410 +357411 +357412 +357413 +357414 +357415 +357440 +357441 +357442 +357443 +357444 +357445 +357446 +357447 +357472 +357473 +357474 +357475 +357476 +357477 +357478 +357479 +357504 +357505 +357506 +357507 +357508 +357509 +357510 +357511 +357536 +357537 +357538 +357539 +357540 +357541 +357542 +357543 +357568 +357569 +357570 +357571 +357572 +357573 +357574 +357575 +357600 +357601 +357602 +357603 +357604 +357605 +357606 +357607 +357632 +357633 +357634 +357635 +357636 +357637 +357638 +357639 +357664 +357665 +357666 +357667 +357668 +357669 +357670 +357671 +357696 +357697 +357698 +357699 +357700 +357701 +357702 +357703 +357728 +357729 +357730 +357731 +357732 +357733 +357734 +357735 +357760 +357761 +357762 +357763 +357764 +357765 +357766 +357767 +357792 +357793 +357794 +357795 +357796 +357797 +357798 +357799 +357824 +357825 +357826 +357827 +357828 +357829 +357830 +357831 +357856 +357857 +357858 +357859 +357860 +357861 +357862 +357863 +357888 +357889 +357890 +357891 +357892 +357893 +357894 +357895 +357920 +357921 +357922 +357923 +357924 +357925 +357926 +357927 +357952 +357953 +357954 +357955 +357956 +357957 +357958 +357959 +357984 +357985 +357986 +357987 +357988 +357989 +357990 +357991 +358016 +358017 +358018 +358019 +358020 +358021 +358022 +358023 +358048 +358049 +358050 +358051 +358052 +358053 +358054 +358055 +358080 +358081 +358082 +358083 +358084 +358085 +358086 +358087 +358112 +358113 +358114 +358115 +358116 +358117 +358118 +358119 +358144 +358145 +358146 +358147 +358148 +358149 +358150 +358151 +358176 +358177 +358178 +358179 +358180 +358181 +358182 +358183 +358208 +358209 +358210 +358211 +358212 +358213 +358214 +358215 +358240 +358241 +358242 +358243 +358244 +358245 +358246 +358247 +358272 +358273 +358274 +358275 +358276 +358277 +358278 +358279 +358304 +358305 +358306 +358307 +358308 +358309 +358310 +358311 +358336 +358337 +358338 +358339 +358340 +358341 +358342 +358343 +358368 +358369 +358370 +358371 +358372 +358373 +358374 +358375 +358400 +358401 +358402 +358403 +358404 +358405 +358406 +358407 +358432 +358433 +358434 +358435 +358436 +358437 +358438 +358439 +358464 +358465 +358466 +358467 +358468 +358469 +358470 +358471 +358496 +358497 +358498 +358499 +358500 +358501 +358502 +358503 +358528 +358529 +358530 +358531 +358532 +358533 +358534 +358535 +358560 +358561 +358562 +358563 +358564 +358565 +358566 +358567 +358592 +358593 +358594 +358595 +358596 +358597 +358598 +358599 +358624 +358625 +358626 +358627 +358628 +358629 +358630 +358631 +358656 +358657 +358658 +358659 +358660 +358661 +358662 +358663 +358688 +358689 +358690 +358691 +358692 +358693 +358694 +358695 +358720 +358721 +358722 +358723 +358724 +358725 +358726 +358727 +358752 +358753 +358754 +358755 +358756 +358757 +358758 +358759 +358784 +358785 +358786 +358787 +358788 +358789 +358790 +358791 +358816 +358817 +358818 +358819 +358820 +358821 +358822 +358823 +358848 +358849 +358850 +358851 +358852 +358853 +358854 +358855 +358880 +358881 +358882 +358883 +358884 +358885 +358886 +358887 +358912 +358913 +358914 +358915 +358916 +358917 +358918 +358919 +358944 +358945 +358946 +358947 +358948 +358949 +358950 +358951 +358976 +358977 +358978 +358979 +358980 +358981 +358982 +358983 +359008 +359009 +359010 +359011 +359012 +359013 +359014 +359015 +359040 +359041 +359042 +359043 +359044 +359045 +359046 +359047 +359072 +359073 +359074 +359075 +359076 +359077 +359078 +359079 +359104 +359105 +359106 +359107 +359108 +359109 +359110 +359111 +359136 +359137 +359138 +359139 +359140 +359141 +359142 +359143 +359168 +359169 +359170 +359171 +359172 +359173 +359174 +359175 +359200 +359201 +359202 +359203 +359204 +359205 +359206 +359207 +359232 +359233 +359234 +359235 +359236 +359237 +359238 +359239 +359264 +359265 +359266 +359267 +359268 +359269 +359270 +359271 +359296 +359297 +359298 +359299 +359300 +359301 +359302 +359303 +359328 +359329 +359330 +359331 +359332 +359333 +359334 +359335 +359360 +359361 +359362 +359363 +359364 +359365 +359366 +359367 +359392 +359393 +359394 +359395 +359396 +359397 +359398 +359399 +359424 +359425 +359426 +359427 +359428 +359429 +359430 +359431 +359456 +359457 +359458 +359459 +359460 +359461 +359462 +359463 +359488 +359489 +359490 +359491 +359492 +359493 +359494 +359495 +359520 +359521 +359522 +359523 +359524 +359525 +359526 +359527 +359552 +359553 +359554 +359555 +359556 +359557 +359558 +359559 +359584 +359585 +359586 +359587 +359588 +359589 +359590 +359591 +359616 +359617 +359618 +359619 +359620 +359621 +359622 +359623 +359648 +359649 +359650 +359651 +359652 +359653 +359654 +359655 +359680 +359681 +359682 +359683 +359684 +359685 +359686 +359687 +359712 +359713 +359714 +359715 +359716 +359717 +359718 +359719 +359744 +359745 +359746 +359747 +359748 +359749 +359750 +359751 +359776 +359777 +359778 +359779 +359780 +359781 +359782 +359783 +359808 +359809 +359810 +359811 +359812 +359813 +359814 +359815 +359840 +359841 +359842 +359843 +359844 +359845 +359846 +359847 +359872 +359873 +359874 +359875 +359876 +359877 +359878 +359879 +359904 +359905 +359906 +359907 +359908 +359909 +359910 +359911 +359936 +359937 +359938 +359939 +359940 +359941 +359942 +359943 +359968 +359969 +359970 +359971 +359972 +359973 +359974 +359975 +360000 +360001 +360002 +360003 +360004 +360005 +360006 +360007 +360032 +360033 +360034 +360035 +360036 +360037 +360038 +360039 +360064 +360065 +360066 +360067 +360068 +360069 +360070 +360071 +360096 +360097 +360098 +360099 +360100 +360101 +360102 +360103 +360128 +360129 +360130 +360131 +360132 +360133 +360134 +360135 +360160 +360161 +360162 +360163 +360164 +360165 +360166 +360167 +360192 +360193 +360194 +360195 +360196 +360197 +360198 +360199 +360224 +360225 +360226 +360227 +360228 +360229 +360230 +360231 +360256 +360257 +360258 +360259 +360260 +360261 +360262 +360263 +360288 +360289 +360290 +360291 +360292 +360293 +360294 +360295 +360320 +360321 +360322 +360323 +360324 +360325 +360326 +360327 +360352 +360353 +360354 +360355 +360356 +360357 +360358 +360359 +360384 +360385 +360386 +360387 +360388 +360389 +360390 +360391 +360416 +360417 +360418 +360419 +360420 +360421 +360422 +360423 +360448 +360449 +360450 +360451 +360452 +360453 +360454 +360455 +360480 +360481 +360482 +360483 +360484 +360485 +360486 +360487 +360512 +360513 +360514 +360515 +360516 +360517 +360518 +360519 +360544 +360545 +360546 +360547 +360548 +360549 +360550 +360551 +360576 +360577 +360578 +360579 +360580 +360581 +360582 +360583 +360608 +360609 +360610 +360611 +360612 +360613 +360614 +360615 +360640 +360641 +360642 +360643 +360644 +360645 +360646 +360647 +360672 +360673 +360674 +360675 +360676 +360677 +360678 +360679 +360704 +360705 +360706 +360707 +360708 +360709 +360710 +360711 +360736 +360737 +360738 +360739 +360740 +360741 +360742 +360743 +360768 +360769 +360770 +360771 +360772 +360773 +360774 +360775 +360800 +360801 +360802 +360803 +360804 +360805 +360806 +360807 +360832 +360833 +360834 +360835 +360836 +360837 +360838 +360839 +360864 +360865 +360866 +360867 +360868 +360869 +360870 +360871 +360896 +360897 +360898 +360899 +360900 +360901 +360902 +360903 +360928 +360929 +360930 +360931 +360932 +360933 +360934 +360935 +360960 +360961 +360962 +360963 +360964 +360965 +360966 +360967 +360992 +360993 +360994 +360995 +360996 +360997 +360998 +360999 +361024 +361025 +361026 +361027 +361028 +361029 +361030 +361031 +361056 +361057 +361058 +361059 +361060 +361061 +361062 +361063 +361088 +361089 +361090 +361091 +361092 +361093 +361094 +361095 +361120 +361121 +361122 +361123 +361124 +361125 +361126 +361127 +361152 +361153 +361154 +361155 +361156 +361157 +361158 +361159 +361184 +361185 +361186 +361187 +361188 +361189 +361190 +361191 +361216 +361217 +361218 +361219 +361220 +361221 +361222 +361223 +361248 +361249 +361250 +361251 +361252 +361253 +361254 +361255 +361280 +361281 +361282 +361283 +361284 +361285 +361286 +361287 +361312 +361313 +361314 +361315 +361316 +361317 +361318 +361319 +361344 +361345 +361346 +361347 +361348 +361349 +361350 +361351 +361376 +361377 +361378 +361379 +361380 +361381 +361382 +361383 +361408 +361409 +361410 +361411 +361412 +361413 +361414 +361415 +361440 +361441 +361442 +361443 +361444 +361445 +361446 +361447 +361472 +361473 +361474 +361475 +361476 +361477 +361478 +361479 +361504 +361505 +361506 +361507 +361508 +361509 +361510 +361511 +361536 +361537 +361538 +361539 +361540 +361541 +361542 +361543 +361568 +361569 +361570 +361571 +361572 +361573 +361574 +361575 +361600 +361601 +361602 +361603 +361604 +361605 +361606 +361607 +361632 +361633 +361634 +361635 +361636 +361637 +361638 +361639 +361664 +361665 +361666 +361667 +361668 +361669 +361670 +361671 +361696 +361697 +361698 +361699 +361700 +361701 +361702 +361703 +361728 +361729 +361730 +361731 +361732 +361733 +361734 +361735 +361760 +361761 +361762 +361763 +361764 +361765 +361766 +361767 +361792 +361793 +361794 +361795 +361796 +361797 +361798 +361799 +361824 +361825 +361826 +361827 +361828 +361829 +361830 +361831 +361856 +361857 +361858 +361859 +361860 +361861 +361862 +361863 +361888 +361889 +361890 +361891 +361892 +361893 +361894 +361895 +361920 +361921 +361922 +361923 +361924 +361925 +361926 +361927 +361952 +361953 +361954 +361955 +361956 +361957 +361958 +361959 +361984 +361985 +361986 +361987 +361988 +361989 +361990 +361991 +362016 +362017 +362018 +362019 +362020 +362021 +362022 +362023 +362048 +362049 +362050 +362051 +362052 +362053 +362054 +362055 +362080 +362081 +362082 +362083 +362084 +362085 +362086 +362087 +362112 +362113 +362114 +362115 +362116 +362117 +362118 +362119 +362144 +362145 +362146 +362147 +362148 +362149 +362150 +362151 +362176 +362177 +362178 +362179 +362180 +362181 +362182 +362183 +362208 +362209 +362210 +362211 +362212 +362213 +362214 +362215 +362240 +362241 +362242 +362243 +362244 +362245 +362246 +362247 +362272 +362273 +362274 +362275 +362276 +362277 +362278 +362279 +362304 +362305 +362306 +362307 +362308 +362309 +362310 +362311 +362336 +362337 +362338 +362339 +362340 +362341 +362342 +362343 +362368 +362369 +362370 +362371 +362372 +362373 +362374 +362375 +362400 +362401 +362402 +362403 +362404 +362405 +362406 +362407 +362432 +362433 +362434 +362435 +362436 +362437 +362438 +362439 +362464 +362465 +362466 +362467 +362468 +362469 +362470 +362471 +362496 +362497 +362498 +362499 +362500 +362501 +362502 +362503 +362528 +362529 +362530 +362531 +362532 +362533 +362534 +362535 +362560 +362561 +362562 +362563 +362564 +362565 +362566 +362567 +362592 +362593 +362594 +362595 +362596 +362597 +362598 +362599 +362624 +362625 +362626 +362627 +362628 +362629 +362630 +362631 +362656 +362657 +362658 +362659 +362660 +362661 +362662 +362663 +362688 +362689 +362690 +362691 +362692 +362693 +362694 +362695 +362720 +362721 +362722 +362723 +362724 +362725 +362726 +362727 +362752 +362753 +362754 +362755 +362756 +362757 +362758 +362759 +362784 +362785 +362786 +362787 +362788 +362789 +362790 +362791 +362816 +362817 +362818 +362819 +362820 +362821 +362822 +362823 +362848 +362849 +362850 +362851 +362852 +362853 +362854 +362855 +362880 +362881 +362882 +362883 +362884 +362885 +362886 +362887 +362912 +362913 +362914 +362915 +362916 +362917 +362918 +362919 +362944 +362945 +362946 +362947 +362948 +362949 +362950 +362951 +362976 +362977 +362978 +362979 +362980 +362981 +362982 +362983 +363008 +363009 +363010 +363011 +363012 +363013 +363014 +363015 +363040 +363041 +363042 +363043 +363044 +363045 +363046 +363047 +363072 +363073 +363074 +363075 +363076 +363077 +363078 +363079 +363104 +363105 +363106 +363107 +363108 +363109 +363110 +363111 +363136 +363137 +363138 +363139 +363140 +363141 +363142 +363143 +363168 +363169 +363170 +363171 +363172 +363173 +363174 +363175 +363200 +363201 +363202 +363203 +363204 +363205 +363206 +363207 +363232 +363233 +363234 +363235 +363236 +363237 +363238 +363239 +363264 +363265 +363266 +363267 +363268 +363269 +363270 +363271 +363296 +363297 +363298 +363299 +363300 +363301 +363302 +363303 +363328 +363329 +363330 +363331 +363332 +363333 +363334 +363335 +363360 +363361 +363362 +363363 +363364 +363365 +363366 +363367 +363392 +363393 +363394 +363395 +363396 +363397 +363398 +363399 +363424 +363425 +363426 +363427 +363428 +363429 +363430 +363431 +363456 +363457 +363458 +363459 +363460 +363461 +363462 +363463 +363488 +363489 +363490 +363491 +363492 +363493 +363494 +363495 +363520 +363521 +363522 +363523 +363524 +363525 +363526 +363527 +363552 +363553 +363554 +363555 +363556 +363557 +363558 +363559 +363584 +363585 +363586 +363587 +363588 +363589 +363590 +363591 +363616 +363617 +363618 +363619 +363620 +363621 +363622 +363623 +363648 +363649 +363650 +363651 +363652 +363653 +363654 +363655 +363680 +363681 +363682 +363683 +363684 +363685 +363686 +363687 +363712 +363713 +363714 +363715 +363716 +363717 +363718 +363719 +363744 +363745 +363746 +363747 +363748 +363749 +363750 +363751 +363776 +363777 +363778 +363779 +363780 +363781 +363782 +363783 +363808 +363809 +363810 +363811 +363812 +363813 +363814 +363815 +363840 +363841 +363842 +363843 +363844 +363845 +363846 +363847 +363872 +363873 +363874 +363875 +363876 +363877 +363878 +363879 +363904 +363905 +363906 +363907 +363908 +363909 +363910 +363911 +363936 +363937 +363938 +363939 +363940 +363941 +363942 +363943 +363968 +363969 +363970 +363971 +363972 +363973 +363974 +363975 +364000 +364001 +364002 +364003 +364004 +364005 +364006 +364007 +364032 +364033 +364034 +364035 +364036 +364037 +364038 +364039 +364064 +364065 +364066 +364067 +364068 +364069 +364070 +364071 +364096 +364097 +364098 +364099 +364100 +364101 +364102 +364103 +364128 +364129 +364130 +364131 +364132 +364133 +364134 +364135 +364160 +364161 +364162 +364163 +364164 +364165 +364166 +364167 +364192 +364193 +364194 +364195 +364196 +364197 +364198 +364199 +364224 +364225 +364226 +364227 +364228 +364229 +364230 +364231 +364256 +364257 +364258 +364259 +364260 +364261 +364262 +364263 +364288 +364289 +364290 +364291 +364292 +364293 +364294 +364295 +364320 +364321 +364322 +364323 +364324 +364325 +364326 +364327 +364352 +364353 +364354 +364355 +364356 +364357 +364358 +364359 +364384 +364385 +364386 +364387 +364388 +364389 +364390 +364391 +364416 +364417 +364418 +364419 +364420 +364421 +364422 +364423 +364448 +364449 +364450 +364451 +364452 +364453 +364454 +364455 +364480 +364481 +364482 +364483 +364484 +364485 +364486 +364487 +364512 +364513 +364514 +364515 +364516 +364517 +364518 +364519 +364544 +364545 +364546 +364547 +364548 +364549 +364550 +364551 +364576 +364577 +364578 +364579 +364580 +364581 +364582 +364583 +364608 +364609 +364610 +364611 +364612 +364613 +364614 +364615 +364640 +364641 +364642 +364643 +364644 +364645 +364646 +364647 +364672 +364673 +364674 +364675 +364676 +364677 +364678 +364679 +364704 +364705 +364706 +364707 +364708 +364709 +364710 +364711 +364736 +364737 +364738 +364739 +364740 +364741 +364742 +364743 +364768 +364769 +364770 +364771 +364772 +364773 +364774 +364775 +364800 +364801 +364802 +364803 +364804 +364805 +364806 +364807 +364832 +364833 +364834 +364835 +364836 +364837 +364838 +364839 +364864 +364865 +364866 +364867 +364868 +364869 +364870 +364871 +364896 +364897 +364898 +364899 +364900 +364901 +364902 +364903 +364928 +364929 +364930 +364931 +364932 +364933 +364934 +364935 +364960 +364961 +364962 +364963 +364964 +364965 +364966 +364967 +364992 +364993 +364994 +364995 +364996 +364997 +364998 +364999 +365024 +365025 +365026 +365027 +365028 +365029 +365030 +365031 +365056 +365057 +365058 +365059 +365060 +365061 +365062 +365063 +365088 +365089 +365090 +365091 +365092 +365093 +365094 +365095 +365120 +365121 +365122 +365123 +365124 +365125 +365126 +365127 +365152 +365153 +365154 +365155 +365156 +365157 +365158 +365159 +365184 +365185 +365186 +365187 +365188 +365189 +365190 +365191 +365216 +365217 +365218 +365219 +365220 +365221 +365222 +365223 +365248 +365249 +365250 +365251 +365252 +365253 +365254 +365255 +365280 +365281 +365282 +365283 +365284 +365285 +365286 +365287 +365312 +365313 +365314 +365315 +365316 +365317 +365318 +365319 +365344 +365345 +365346 +365347 +365348 +365349 +365350 +365351 +365376 +365377 +365378 +365379 +365380 +365381 +365382 +365383 +365408 +365409 +365410 +365411 +365412 +365413 +365414 +365415 +365440 +365441 +365442 +365443 +365444 +365445 +365446 +365447 +365472 +365473 +365474 +365475 +365476 +365477 +365478 +365479 +365504 +365505 +365506 +365507 +365508 +365509 +365510 +365511 +365536 +365537 +365538 +365539 +365540 +365541 +365542 +365543 +365568 +365569 +365570 +365571 +365572 +365573 +365574 +365575 +365600 +365601 +365602 +365603 +365604 +365605 +365606 +365607 +365632 +365633 +365634 +365635 +365636 +365637 +365638 +365639 +365664 +365665 +365666 +365667 +365668 +365669 +365670 +365671 +365696 +365697 +365698 +365699 +365700 +365701 +365702 +365703 +365728 +365729 +365730 +365731 +365732 +365733 +365734 +365735 +365760 +365761 +365762 +365763 +365764 +365765 +365766 +365767 +365792 +365793 +365794 +365795 +365796 +365797 +365798 +365799 +365824 +365825 +365826 +365827 +365828 +365829 +365830 +365831 +365856 +365857 +365858 +365859 +365860 +365861 +365862 +365863 +365888 +365889 +365890 +365891 +365892 +365893 +365894 +365895 +365920 +365921 +365922 +365923 +365924 +365925 +365926 +365927 +365952 +365953 +365954 +365955 +365956 +365957 +365958 +365959 +365984 +365985 +365986 +365987 +365988 +365989 +365990 +365991 +366016 +366017 +366018 +366019 +366020 +366021 +366022 +366023 +366048 +366049 +366050 +366051 +366052 +366053 +366054 +366055 +366080 +366081 +366082 +366083 +366084 +366085 +366086 +366087 +366112 +366113 +366114 +366115 +366116 +366117 +366118 +366119 +366144 +366145 +366146 +366147 +366148 +366149 +366150 +366151 +366176 +366177 +366178 +366179 +366180 +366181 +366182 +366183 +366208 +366209 +366210 +366211 +366212 +366213 +366214 +366215 +366240 +366241 +366242 +366243 +366244 +366245 +366246 +366247 +366272 +366273 +366274 +366275 +366276 +366277 +366278 +366279 +366304 +366305 +366306 +366307 +366308 +366309 +366310 +366311 +366336 +366337 +366338 +366339 +366340 +366341 +366342 +366343 +366368 +366369 +366370 +366371 +366372 +366373 +366374 +366375 +366400 +366401 +366402 +366403 +366404 +366405 +366406 +366407 +366432 +366433 +366434 +366435 +366436 +366437 +366438 +366439 +366464 +366465 +366466 +366467 +366468 +366469 +366470 +366471 +366496 +366497 +366498 +366499 +366500 +366501 +366502 +366503 +366528 +366529 +366530 +366531 +366532 +366533 +366534 +366535 +366560 +366561 +366562 +366563 +366564 +366565 +366566 +366567 +366592 +366593 +366594 +366595 +366596 +366597 +366598 +366599 +366624 +366625 +366626 +366627 +366628 +366629 +366630 +366631 +366656 +366657 +366658 +366659 +366660 +366661 +366662 +366663 +366688 +366689 +366690 +366691 +366692 +366693 +366694 +366695 +366720 +366721 +366722 +366723 +366724 +366725 +366726 +366727 +366752 +366753 +366754 +366755 +366756 +366757 +366758 +366759 +366784 +366785 +366786 +366787 +366788 +366789 +366790 +366791 +366816 +366817 +366818 +366819 +366820 +366821 +366822 +366823 +366848 +366849 +366850 +366851 +366852 +366853 +366854 +366855 +366880 +366881 +366882 +366883 +366884 +366885 +366886 +366887 +366912 +366913 +366914 +366915 +366916 +366917 +366918 +366919 +366944 +366945 +366946 +366947 +366948 +366949 +366950 +366951 +366976 +366977 +366978 +366979 +366980 +366981 +366982 +366983 +367008 +367009 +367010 +367011 +367012 +367013 +367014 +367015 +367040 +367041 +367042 +367043 +367044 +367045 +367046 +367047 +367072 +367073 +367074 +367075 +367076 +367077 +367078 +367079 +367104 +367105 +367106 +367107 +367108 +367109 +367110 +367111 +367136 +367137 +367138 +367139 +367140 +367141 +367142 +367143 +367168 +367169 +367170 +367171 +367172 +367173 +367174 +367175 +367200 +367201 +367202 +367203 +367204 +367205 +367206 +367207 +367232 +367233 +367234 +367235 +367236 +367237 +367238 +367239 +367264 +367265 +367266 +367267 +367268 +367269 +367270 +367271 +367296 +367297 +367298 +367299 +367300 +367301 +367302 +367303 +367328 +367329 +367330 +367331 +367332 +367333 +367334 +367335 +367360 +367361 +367362 +367363 +367364 +367365 +367366 +367367 +367392 +367393 +367394 +367395 +367396 +367397 +367398 +367399 +367424 +367425 +367426 +367427 +367428 +367429 +367430 +367431 +367456 +367457 +367458 +367459 +367460 +367461 +367462 +367463 +367488 +367489 +367490 +367491 +367492 +367493 +367494 +367495 +367520 +367521 +367522 +367523 +367524 +367525 +367526 +367527 +367552 +367553 +367554 +367555 +367556 +367557 +367558 +367559 +367584 +367585 +367586 +367587 +367588 +367589 +367590 +367591 +367616 +367617 +367618 +367619 +367620 +367621 +367622 +367623 +367648 +367649 +367650 +367651 +367652 +367653 +367654 +367655 +367680 +367681 +367682 +367683 +367684 +367685 +367686 +367687 +367712 +367713 +367714 +367715 +367716 +367717 +367718 +367719 +367744 +367745 +367746 +367747 +367748 +367749 +367750 +367751 +367776 +367777 +367778 +367779 +367780 +367781 +367782 +367783 +367808 +367809 +367810 +367811 +367812 +367813 +367814 +367815 +367840 +367841 +367842 +367843 +367844 +367845 +367846 +367847 +367872 +367873 +367874 +367875 +367876 +367877 +367878 +367879 +367904 +367905 +367906 +367907 +367908 +367909 +367910 +367911 +367936 +367937 +367938 +367939 +367940 +367941 +367942 +367943 +367968 +367969 +367970 +367971 +367972 +367973 +367974 +367975 +368000 +368001 +368002 +368003 +368004 +368005 +368006 +368007 +368032 +368033 +368034 +368035 +368036 +368037 +368038 +368039 +368064 +368065 +368066 +368067 +368068 +368069 +368070 +368071 +368096 +368097 +368098 +368099 +368100 +368101 +368102 +368103 +368128 +368129 +368130 +368131 +368132 +368133 +368134 +368135 +368160 +368161 +368162 +368163 +368164 +368165 +368166 +368167 +368192 +368193 +368194 +368195 +368196 +368197 +368198 +368199 +368224 +368225 +368226 +368227 +368228 +368229 +368230 +368231 +368256 +368257 +368258 +368259 +368260 +368261 +368262 +368263 +368288 +368289 +368290 +368291 +368292 +368293 +368294 +368295 +368320 +368321 +368322 +368323 +368324 +368325 +368326 +368327 +368352 +368353 +368354 +368355 +368356 +368357 +368358 +368359 +368384 +368385 +368386 +368387 +368388 +368389 +368390 +368391 +368416 +368417 +368418 +368419 +368420 +368421 +368422 +368423 +368448 +368449 +368450 +368451 +368452 +368453 +368454 +368455 +368480 +368481 +368482 +368483 +368484 +368485 +368486 +368487 +368512 +368513 +368514 +368515 +368516 +368517 +368518 +368519 +368544 +368545 +368546 +368547 +368548 +368549 +368550 +368551 +368576 +368577 +368578 +368579 +368580 +368581 +368582 +368583 +368608 +368609 +368610 +368611 +368612 +368613 +368614 +368615 +368640 +368641 +368642 +368643 +368644 +368645 +368646 +368647 +368672 +368673 +368674 +368675 +368676 +368677 +368678 +368679 +368704 +368705 +368706 +368707 +368708 +368709 +368710 +368711 +368736 +368737 +368738 +368739 +368740 +368741 +368742 +368743 +368768 +368769 +368770 +368771 +368772 +368773 +368774 +368775 +368800 +368801 +368802 +368803 +368804 +368805 +368806 +368807 +368832 +368833 +368834 +368835 +368836 +368837 +368838 +368839 +368864 +368865 +368866 +368867 +368868 +368869 +368870 +368871 +368896 +368897 +368898 +368899 +368900 +368901 +368902 +368903 +368928 +368929 +368930 +368931 +368932 +368933 +368934 +368935 +368960 +368961 +368962 +368963 +368964 +368965 +368966 +368967 +368992 +368993 +368994 +368995 +368996 +368997 +368998 +368999 +369024 +369025 +369026 +369027 +369028 +369029 +369030 +369031 +369056 +369057 +369058 +369059 +369060 +369061 +369062 +369063 +369088 +369089 +369090 +369091 +369092 +369093 +369094 +369095 +369120 +369121 +369122 +369123 +369124 +369125 +369126 +369127 +369152 +369153 +369154 +369155 +369156 +369157 +369158 +369159 +369184 +369185 +369186 +369187 +369188 +369189 +369190 +369191 +369216 +369217 +369218 +369219 +369220 +369221 +369222 +369223 +369248 +369249 +369250 +369251 +369252 +369253 +369254 +369255 +369280 +369281 +369282 +369283 +369284 +369285 +369286 +369287 +369312 +369313 +369314 +369315 +369316 +369317 +369318 +369319 +369344 +369345 +369346 +369347 +369348 +369349 +369350 +369351 +369376 +369377 +369378 +369379 +369380 +369381 +369382 +369383 +369408 +369409 +369410 +369411 +369412 +369413 +369414 +369415 +369440 +369441 +369442 +369443 +369444 +369445 +369446 +369447 +369472 +369473 +369474 +369475 +369476 +369477 +369478 +369479 +369504 +369505 +369506 +369507 +369508 +369509 +369510 +369511 +369536 +369537 +369538 +369539 +369540 +369541 +369542 +369543 +369568 +369569 +369570 +369571 +369572 +369573 +369574 +369575 +369600 +369601 +369602 +369603 +369604 +369605 +369606 +369607 +369632 +369633 +369634 +369635 +369636 +369637 +369638 +369639 +369664 +369665 +369666 +369667 +369668 +369669 +369670 +369671 +369696 +369697 +369698 +369699 +369700 +369701 +369702 +369703 +369728 +369729 +369730 +369731 +369732 +369733 +369734 +369735 +369760 +369761 +369762 +369763 +369764 +369765 +369766 +369767 +369792 +369793 +369794 +369795 +369796 +369797 +369798 +369799 +369824 +369825 +369826 +369827 +369828 +369829 +369830 +369831 +369856 +369857 +369858 +369859 +369860 +369861 +369862 +369863 +369888 +369889 +369890 +369891 +369892 +369893 +369894 +369895 +369920 +369921 +369922 +369923 +369924 +369925 +369926 +369927 +369952 +369953 +369954 +369955 +369956 +369957 +369958 +369959 +369984 +369985 +369986 +369987 +369988 +369989 +369990 +369991 +370016 +370017 +370018 +370019 +370020 +370021 +370022 +370023 +370048 +370049 +370050 +370051 +370052 +370053 +370054 +370055 +370080 +370081 +370082 +370083 +370084 +370085 +370086 +370087 +370112 +370113 +370114 +370115 +370116 +370117 +370118 +370119 +370144 +370145 +370146 +370147 +370148 +370149 +370150 +370151 +370176 +370177 +370178 +370179 +370180 +370181 +370182 +370183 +370208 +370209 +370210 +370211 +370212 +370213 +370214 +370215 +370240 +370241 +370242 +370243 +370244 +370245 +370246 +370247 +370272 +370273 +370274 +370275 +370276 +370277 +370278 +370279 +370304 +370305 +370306 +370307 +370308 +370309 +370310 +370311 +370336 +370337 +370338 +370339 +370340 +370341 +370342 +370343 +370368 +370369 +370370 +370371 +370372 +370373 +370374 +370375 +370400 +370401 +370402 +370403 +370404 +370405 +370406 +370407 +370432 +370433 +370434 +370435 +370436 +370437 +370438 +370439 +370464 +370465 +370466 +370467 +370468 +370469 +370470 +370471 +370496 +370497 +370498 +370499 +370500 +370501 +370502 +370503 +370528 +370529 +370530 +370531 +370532 +370533 +370534 +370535 +370560 +370561 +370562 +370563 +370564 +370565 +370566 +370567 +370592 +370593 +370594 +370595 +370596 +370597 +370598 +370599 +370624 +370625 +370626 +370627 +370628 +370629 +370630 +370631 +370656 +370657 +370658 +370659 +370660 +370661 +370662 +370663 +370688 +370689 +370690 +370691 +370692 +370693 +370694 +370695 +370720 +370721 +370722 +370723 +370724 +370725 +370726 +370727 +370752 +370753 +370754 +370755 +370756 +370757 +370758 +370759 +370784 +370785 +370786 +370787 +370788 +370789 +370790 +370791 +370816 +370817 +370818 +370819 +370820 +370821 +370822 +370823 +370848 +370849 +370850 +370851 +370852 +370853 +370854 +370855 +370880 +370881 +370882 +370883 +370884 +370885 +370886 +370887 +370912 +370913 +370914 +370915 +370916 +370917 +370918 +370919 +370944 +370945 +370946 +370947 +370948 +370949 +370950 +370951 +370976 +370977 +370978 +370979 +370980 +370981 +370982 +370983 +371008 +371009 +371010 +371011 +371012 +371013 +371014 +371015 +371040 +371041 +371042 +371043 +371044 +371045 +371046 +371047 +371072 +371073 +371074 +371075 +371076 +371077 +371078 +371079 +371104 +371105 +371106 +371107 +371108 +371109 +371110 +371111 +371136 +371137 +371138 +371139 +371140 +371141 +371142 +371143 +371168 +371169 +371170 +371171 +371172 +371173 +371174 +371175 +371200 +371201 +371202 +371203 +371204 +371205 +371206 +371207 +371232 +371233 +371234 +371235 +371236 +371237 +371238 +371239 +371264 +371265 +371266 +371267 +371268 +371269 +371270 +371271 +371296 +371297 +371298 +371299 +371300 +371301 +371302 +371303 +371328 +371329 +371330 +371331 +371332 +371333 +371334 +371335 +371360 +371361 +371362 +371363 +371364 +371365 +371366 +371367 +371392 +371393 +371394 +371395 +371396 +371397 +371398 +371399 +371424 +371425 +371426 +371427 +371428 +371429 +371430 +371431 +371456 +371457 +371458 +371459 +371460 +371461 +371462 +371463 +371488 +371489 +371490 +371491 +371492 +371493 +371494 +371495 +371520 +371521 +371522 +371523 +371524 +371525 +371526 +371527 +371552 +371553 +371554 +371555 +371556 +371557 +371558 +371559 +371584 +371585 +371586 +371587 +371588 +371589 +371590 +371591 +371616 +371617 +371618 +371619 +371620 +371621 +371622 +371623 +371648 +371649 +371650 +371651 +371652 +371653 +371654 +371655 +371680 +371681 +371682 +371683 +371684 +371685 +371686 +371687 +371712 +371713 +371714 +371715 +371716 +371717 +371718 +371719 +371744 +371745 +371746 +371747 +371748 +371749 +371750 +371751 +371776 +371777 +371778 +371779 +371780 +371781 +371782 +371783 +371808 +371809 +371810 +371811 +371812 +371813 +371814 +371815 +371840 +371841 +371842 +371843 +371844 +371845 +371846 +371847 +371872 +371873 +371874 +371875 +371876 +371877 +371878 +371879 +371904 +371905 +371906 +371907 +371908 +371909 +371910 +371911 +371936 +371937 +371938 +371939 +371940 +371941 +371942 +371943 +371968 +371969 +371970 +371971 +371972 +371973 +371974 +371975 +372000 +372001 +372002 +372003 +372004 +372005 +372006 +372007 +372032 +372033 +372034 +372035 +372036 +372037 +372038 +372039 +372064 +372065 +372066 +372067 +372068 +372069 +372070 +372071 +372096 +372097 +372098 +372099 +372100 +372101 +372102 +372103 +372128 +372129 +372130 +372131 +372132 +372133 +372134 +372135 +372160 +372161 +372162 +372163 +372164 +372165 +372166 +372167 +372192 +372193 +372194 +372195 +372196 +372197 +372198 +372199 +372224 +372225 +372226 +372227 +372228 +372229 +372230 +372231 +372256 +372257 +372258 +372259 +372260 +372261 +372262 +372263 +372288 +372289 +372290 +372291 +372292 +372293 +372294 +372295 +372320 +372321 +372322 +372323 +372324 +372325 +372326 +372327 +372352 +372353 +372354 +372355 +372356 +372357 +372358 +372359 +372384 +372385 +372386 +372387 +372388 +372389 +372390 +372391 +372416 +372417 +372418 +372419 +372420 +372421 +372422 +372423 +372448 +372449 +372450 +372451 +372452 +372453 +372454 +372455 +372480 +372481 +372482 +372483 +372484 +372485 +372486 +372487 +372512 +372513 +372514 +372515 +372516 +372517 +372518 +372519 +372544 +372545 +372546 +372547 +372548 +372549 +372550 +372551 +372576 +372577 +372578 +372579 +372580 +372581 +372582 +372583 +372608 +372609 +372610 +372611 +372612 +372613 +372614 +372615 +372640 +372641 +372642 +372643 +372644 +372645 +372646 +372647 +372672 +372673 +372674 +372675 +372676 +372677 +372678 +372679 +372704 +372705 +372706 +372707 +372708 +372709 +372710 +372711 +372736 +372737 +372738 +372739 +372740 +372741 +372742 +372743 +372768 +372769 +372770 +372771 +372772 +372773 +372774 +372775 +372800 +372801 +372802 +372803 +372804 +372805 +372806 +372807 +372832 +372833 +372834 +372835 +372836 +372837 +372838 +372839 +372864 +372865 +372866 +372867 +372868 +372869 +372870 +372871 +372896 +372897 +372898 +372899 +372900 +372901 +372902 +372903 +372928 +372929 +372930 +372931 +372932 +372933 +372934 +372935 +372960 +372961 +372962 +372963 +372964 +372965 +372966 +372967 +372992 +372993 +372994 +372995 +372996 +372997 +372998 +372999 +373024 +373025 +373026 +373027 +373028 +373029 +373030 +373031 +373056 +373057 +373058 +373059 +373060 +373061 +373062 +373063 +373088 +373089 +373090 +373091 +373092 +373093 +373094 +373095 +373120 +373121 +373122 +373123 +373124 +373125 +373126 +373127 +373152 +373153 +373154 +373155 +373156 +373157 +373158 +373159 +373184 +373185 +373186 +373187 +373188 +373189 +373190 +373191 +373216 +373217 +373218 +373219 +373220 +373221 +373222 +373223 +373248 +373249 +373250 +373251 +373252 +373253 +373254 +373255 +373280 +373281 +373282 +373283 +373284 +373285 +373286 +373287 +373312 +373313 +373314 +373315 +373316 +373317 +373318 +373319 +373344 +373345 +373346 +373347 +373348 +373349 +373350 +373351 +373376 +373377 +373378 +373379 +373380 +373381 +373382 +373383 +373408 +373409 +373410 +373411 +373412 +373413 +373414 +373415 +373440 +373441 +373442 +373443 +373444 +373445 +373446 +373447 +373472 +373473 +373474 +373475 +373476 +373477 +373478 +373479 +373504 +373505 +373506 +373507 +373508 +373509 +373510 +373511 +373536 +373537 +373538 +373539 +373540 +373541 +373542 +373543 +373568 +373569 +373570 +373571 +373572 +373573 +373574 +373575 +373600 +373601 +373602 +373603 +373604 +373605 +373606 +373607 +373632 +373633 +373634 +373635 +373636 +373637 +373638 +373639 +373664 +373665 +373666 +373667 +373668 +373669 +373670 +373671 +373696 +373697 +373698 +373699 +373700 +373701 +373702 +373703 +373728 +373729 +373730 +373731 +373732 +373733 +373734 +373735 +373760 +373761 +373762 +373763 +373764 +373765 +373766 +373767 +373792 +373793 +373794 +373795 +373796 +373797 +373798 +373799 +373824 +373825 +373826 +373827 +373828 +373829 +373830 +373831 +373856 +373857 +373858 +373859 +373860 +373861 +373862 +373863 +373888 +373889 +373890 +373891 +373892 +373893 +373894 +373895 +373920 +373921 +373922 +373923 +373924 +373925 +373926 +373927 +373952 +373953 +373954 +373955 +373956 +373957 +373958 +373959 +373984 +373985 +373986 +373987 +373988 +373989 +373990 +373991 +374016 +374017 +374018 +374019 +374020 +374021 +374022 +374023 +374048 +374049 +374050 +374051 +374052 +374053 +374054 +374055 +374080 +374081 +374082 +374083 +374084 +374085 +374086 +374087 +374112 +374113 +374114 +374115 +374116 +374117 +374118 +374119 +374144 +374145 +374146 +374147 +374148 +374149 +374150 +374151 +374176 +374177 +374178 +374179 +374180 +374181 +374182 +374183 +374208 +374209 +374210 +374211 +374212 +374213 +374214 +374215 +374240 +374241 +374242 +374243 +374244 +374245 +374246 +374247 +374272 +374273 +374274 +374275 +374276 +374277 +374278 +374279 +374304 +374305 +374306 +374307 +374308 +374309 +374310 +374311 +374336 +374337 +374338 +374339 +374340 +374341 +374342 +374343 +374368 +374369 +374370 +374371 +374372 +374373 +374374 +374375 +374400 +374401 +374402 +374403 +374404 +374405 +374406 +374407 +374432 +374433 +374434 +374435 +374436 +374437 +374438 +374439 +374464 +374465 +374466 +374467 +374468 +374469 +374470 +374471 +374496 +374497 +374498 +374499 +374500 +374501 +374502 +374503 +374528 +374529 +374530 +374531 +374532 +374533 +374534 +374535 +374560 +374561 +374562 +374563 +374564 +374565 +374566 +374567 +374592 +374593 +374594 +374595 +374596 +374597 +374598 +374599 +374624 +374625 +374626 +374627 +374628 +374629 +374630 +374631 +374656 +374657 +374658 +374659 +374660 +374661 +374662 +374663 +374688 +374689 +374690 +374691 +374692 +374693 +374694 +374695 +374720 +374721 +374722 +374723 +374724 +374725 +374726 +374727 +374752 +374753 +374754 +374755 +374756 +374757 +374758 +374759 +374784 +374785 +374786 +374787 +374788 +374789 +374790 +374791 +374816 +374817 +374818 +374819 +374820 +374821 +374822 +374823 +374848 +374849 +374850 +374851 +374852 +374853 +374854 +374855 +374880 +374881 +374882 +374883 +374884 +374885 +374886 +374887 +374912 +374913 +374914 +374915 +374916 +374917 +374918 +374919 +374944 +374945 +374946 +374947 +374948 +374949 +374950 +374951 +374976 +374977 +374978 +374979 +374980 +374981 +374982 +374983 +375008 +375009 +375010 +375011 +375012 +375013 +375014 +375015 +375040 +375041 +375042 +375043 +375044 +375045 +375046 +375047 +375072 +375073 +375074 +375075 +375076 +375077 +375078 +375079 +375104 +375105 +375106 +375107 +375108 +375109 +375110 +375111 +375136 +375137 +375138 +375139 +375140 +375141 +375142 +375143 +375168 +375169 +375170 +375171 +375172 +375173 +375174 +375175 +375200 +375201 +375202 +375203 +375204 +375205 +375206 +375207 +375232 +375233 +375234 +375235 +375236 +375237 +375238 +375239 +375264 +375265 +375266 +375267 +375268 +375269 +375270 +375271 +375296 +375297 +375298 +375299 +375300 +375301 +375302 +375303 +375328 +375329 +375330 +375331 +375332 +375333 +375334 +375335 +375360 +375361 +375362 +375363 +375364 +375365 +375366 +375367 +375392 +375393 +375394 +375395 +375396 +375397 +375398 +375399 +375424 +375425 +375426 +375427 +375428 +375429 +375430 +375431 +375456 +375457 +375458 +375459 +375460 +375461 +375462 +375463 +375488 +375489 +375490 +375491 +375492 +375493 +375494 +375495 +375520 +375521 +375522 +375523 +375524 +375525 +375526 +375527 +375552 +375553 +375554 +375555 +375556 +375557 +375558 +375559 +375584 +375585 +375586 +375587 +375588 +375589 +375590 +375591 +375616 +375617 +375618 +375619 +375620 +375621 +375622 +375623 +375648 +375649 +375650 +375651 +375652 +375653 +375654 +375655 +375680 +375681 +375682 +375683 +375684 +375685 +375686 +375687 +375712 +375713 +375714 +375715 +375716 +375717 +375718 +375719 +375744 +375745 +375746 +375747 +375748 +375749 +375750 +375751 +375776 +375777 +375778 +375779 +375780 +375781 +375782 +375783 +375808 +375809 +375810 +375811 +375812 +375813 +375814 +375815 +375840 +375841 +375842 +375843 +375844 +375845 +375846 +375847 +375872 +375873 +375874 +375875 +375876 +375877 +375878 +375879 +375904 +375905 +375906 +375907 +375908 +375909 +375910 +375911 +375936 +375937 +375938 +375939 +375940 +375941 +375942 +375943 +375968 +375969 +375970 +375971 +375972 +375973 +375974 +375975 +376000 +376001 +376002 +376003 +376004 +376005 +376006 +376007 +376032 +376033 +376034 +376035 +376036 +376037 +376038 +376039 +376064 +376065 +376066 +376067 +376068 +376069 +376070 +376071 +376096 +376097 +376098 +376099 +376100 +376101 +376102 +376103 +376128 +376129 +376130 +376131 +376132 +376133 +376134 +376135 +376160 +376161 +376162 +376163 +376164 +376165 +376166 +376167 +376192 +376193 +376194 +376195 +376196 +376197 +376198 +376199 +376224 +376225 +376226 +376227 +376228 +376229 +376230 +376231 +376256 +376257 +376258 +376259 +376260 +376261 +376262 +376263 +376288 +376289 +376290 +376291 +376292 +376293 +376294 +376295 +376320 +376321 +376322 +376323 +376324 +376325 +376326 +376327 +376352 +376353 +376354 +376355 +376356 +376357 +376358 +376359 +376384 +376385 +376386 +376387 +376388 +376389 +376390 +376391 +376416 +376417 +376418 +376419 +376420 +376421 +376422 +376423 +376448 +376449 +376450 +376451 +376452 +376453 +376454 +376455 +376480 +376481 +376482 +376483 +376484 +376485 +376486 +376487 +376512 +376513 +376514 +376515 +376516 +376517 +376518 +376519 +376544 +376545 +376546 +376547 +376548 +376549 +376550 +376551 +376576 +376577 +376578 +376579 +376580 +376581 +376582 +376583 +376608 +376609 +376610 +376611 +376612 +376613 +376614 +376615 +376640 +376641 +376642 +376643 +376644 +376645 +376646 +376647 +376672 +376673 +376674 +376675 +376676 +376677 +376678 +376679 +376704 +376705 +376706 +376707 +376708 +376709 +376710 +376711 +376736 +376737 +376738 +376739 +376740 +376741 +376742 +376743 +376768 +376769 +376770 +376771 +376772 +376773 +376774 +376775 +376800 +376801 +376802 +376803 +376804 +376805 +376806 +376807 +376832 +376833 +376834 +376835 +376836 +376837 +376838 +376839 +376864 +376865 +376866 +376867 +376868 +376869 +376870 +376871 +376896 +376897 +376898 +376899 +376900 +376901 +376902 +376903 +376928 +376929 +376930 +376931 +376932 +376933 +376934 +376935 +376960 +376961 +376962 +376963 +376964 +376965 +376966 +376967 +376992 +376993 +376994 +376995 +376996 +376997 +376998 +376999 +377024 +377025 +377026 +377027 +377028 +377029 +377030 +377031 +377056 +377057 +377058 +377059 +377060 +377061 +377062 +377063 +377088 +377089 +377090 +377091 +377092 +377093 +377094 +377095 +377120 +377121 +377122 +377123 +377124 +377125 +377126 +377127 +377152 +377153 +377154 +377155 +377156 +377157 +377158 +377159 +377184 +377185 +377186 +377187 +377188 +377189 +377190 +377191 +377216 +377217 +377218 +377219 +377220 +377221 +377222 +377223 +377248 +377249 +377250 +377251 +377252 +377253 +377254 +377255 +377280 +377281 +377282 +377283 +377284 +377285 +377286 +377287 +377312 +377313 +377314 +377315 +377316 +377317 +377318 +377319 +377344 +377345 +377346 +377347 +377348 +377349 +377350 +377351 +377376 +377377 +377378 +377379 +377380 +377381 +377382 +377383 +377408 +377409 +377410 +377411 +377412 +377413 +377414 +377415 +377440 +377441 +377442 +377443 +377444 +377445 +377446 +377447 +377472 +377473 +377474 +377475 +377476 +377477 +377478 +377479 +377504 +377505 +377506 +377507 +377508 +377509 +377510 +377511 +377536 +377537 +377538 +377539 +377540 +377541 +377542 +377543 +377568 +377569 +377570 +377571 +377572 +377573 +377574 +377575 +377600 +377601 +377602 +377603 +377604 +377605 +377606 +377607 +377632 +377633 +377634 +377635 +377636 +377637 +377638 +377639 +377664 +377665 +377666 +377667 +377668 +377669 +377670 +377671 +377696 +377697 +377698 +377699 +377700 +377701 +377702 +377703 +377728 +377729 +377730 +377731 +377732 +377733 +377734 +377735 +377760 +377761 +377762 +377763 +377764 +377765 +377766 +377767 +377792 +377793 +377794 +377795 +377796 +377797 +377798 +377799 +377824 +377825 +377826 +377827 +377828 +377829 +377830 +377831 +377856 +377857 +377858 +377859 +377860 +377861 +377862 +377863 +377888 +377889 +377890 +377891 +377892 +377893 +377894 +377895 +377920 +377921 +377922 +377923 +377924 +377925 +377926 +377927 +377952 +377953 +377954 +377955 +377956 +377957 +377958 +377959 +377984 +377985 +377986 +377987 +377988 +377989 +377990 +377991 +378016 +378017 +378018 +378019 +378020 +378021 +378022 +378023 +378048 +378049 +378050 +378051 +378052 +378053 +378054 +378055 +378080 +378081 +378082 +378083 +378084 +378085 +378086 +378087 +378112 +378113 +378114 +378115 +378116 +378117 +378118 +378119 +378144 +378145 +378146 +378147 +378148 +378149 +378150 +378151 +378176 +378177 +378178 +378179 +378180 +378181 +378182 +378183 +378208 +378209 +378210 +378211 +378212 +378213 +378214 +378215 +378240 +378241 +378242 +378243 +378244 +378245 +378246 +378247 +378272 +378273 +378274 +378275 +378276 +378277 +378278 +378279 +378304 +378305 +378306 +378307 +378308 +378309 +378310 +378311 +378336 +378337 +378338 +378339 +378340 +378341 +378342 +378343 +378368 +378369 +378370 +378371 +378372 +378373 +378374 +378375 +378400 +378401 +378402 +378403 +378404 +378405 +378406 +378407 +378432 +378433 +378434 +378435 +378436 +378437 +378438 +378439 +378464 +378465 +378466 +378467 +378468 +378469 +378470 +378471 +378496 +378497 +378498 +378499 +378500 +378501 +378502 +378503 +378528 +378529 +378530 +378531 +378532 +378533 +378534 +378535 +378560 +378561 +378562 +378563 +378564 +378565 +378566 +378567 +378592 +378593 +378594 +378595 +378596 +378597 +378598 +378599 +378624 +378625 +378626 +378627 +378628 +378629 +378630 +378631 +378656 +378657 +378658 +378659 +378660 +378661 +378662 +378663 +378688 +378689 +378690 +378691 +378692 +378693 +378694 +378695 +378720 +378721 +378722 +378723 +378724 +378725 +378726 +378727 +378752 +378753 +378754 +378755 +378756 +378757 +378758 +378759 +378784 +378785 +378786 +378787 +378788 +378789 +378790 +378791 +378816 +378817 +378818 +378819 +378820 +378821 +378822 +378823 +378848 +378849 +378850 +378851 +378852 +378853 +378854 +378855 +378880 +378881 +378882 +378883 +378884 +378885 +378886 +378887 +378912 +378913 +378914 +378915 +378916 +378917 +378918 +378919 +378944 +378945 +378946 +378947 +378948 +378949 +378950 +378951 +378976 +378977 +378978 +378979 +378980 +378981 +378982 +378983 +379008 +379009 +379010 +379011 +379012 +379013 +379014 +379015 +379040 +379041 +379042 +379043 +379044 +379045 +379046 +379047 +379072 +379073 +379074 +379075 +379076 +379077 +379078 +379079 +379104 +379105 +379106 +379107 +379108 +379109 +379110 +379111 +379136 +379137 +379138 +379139 +379140 +379141 +379142 +379143 +379168 +379169 +379170 +379171 +379172 +379173 +379174 +379175 +379200 +379201 +379202 +379203 +379204 +379205 +379206 +379207 +379232 +379233 +379234 +379235 +379236 +379237 +379238 +379239 +379264 +379265 +379266 +379267 +379268 +379269 +379270 +379271 +379296 +379297 +379298 +379299 +379300 +379301 +379302 +379303 +379328 +379329 +379330 +379331 +379332 +379333 +379334 +379335 +379360 +379361 +379362 +379363 +379364 +379365 +379366 +379367 +379392 +379393 +379394 +379395 +379396 +379397 +379398 +379399 +379424 +379425 +379426 +379427 +379428 +379429 +379430 +379431 +379456 +379457 +379458 +379459 +379460 +379461 +379462 +379463 +379488 +379489 +379490 +379491 +379492 +379493 +379494 +379495 +379520 +379521 +379522 +379523 +379524 +379525 +379526 +379527 +379552 +379553 +379554 +379555 +379556 +379557 +379558 +379559 +379584 +379585 +379586 +379587 +379588 +379589 +379590 +379591 +379616 +379617 +379618 +379619 +379620 +379621 +379622 +379623 +379648 +379649 +379650 +379651 +379652 +379653 +379654 +379655 +379680 +379681 +379682 +379683 +379684 +379685 +379686 +379687 +379712 +379713 +379714 +379715 +379716 +379717 +379718 +379719 +379744 +379745 +379746 +379747 +379748 +379749 +379750 +379751 +379776 +379777 +379778 +379779 +379780 +379781 +379782 +379783 +379808 +379809 +379810 +379811 +379812 +379813 +379814 +379815 +379840 +379841 +379842 +379843 +379844 +379845 +379846 +379847 +379872 +379873 +379874 +379875 +379876 +379877 +379878 +379879 +379904 +379905 +379906 +379907 +379908 +379909 +379910 +379911 +379936 +379937 +379938 +379939 +379940 +379941 +379942 +379943 +379968 +379969 +379970 +379971 +379972 +379973 +379974 +379975 +380000 +380001 +380002 +380003 +380004 +380005 +380006 +380007 +380032 +380033 +380034 +380035 +380036 +380037 +380038 +380039 +380064 +380065 +380066 +380067 +380068 +380069 +380070 +380071 +380096 +380097 +380098 +380099 +380100 +380101 +380102 +380103 +380128 +380129 +380130 +380131 +380132 +380133 +380134 +380135 +380160 +380161 +380162 +380163 +380164 +380165 +380166 +380167 +380192 +380193 +380194 +380195 +380196 +380197 +380198 +380199 +380224 +380225 +380226 +380227 +380228 +380229 +380230 +380231 +380256 +380257 +380258 +380259 +380260 +380261 +380262 +380263 +380288 +380289 +380290 +380291 +380292 +380293 +380294 +380295 +380320 +380321 +380322 +380323 +380324 +380325 +380326 +380327 +380352 +380353 +380354 +380355 +380356 +380357 +380358 +380359 +380384 +380385 +380386 +380387 +380388 +380389 +380390 +380391 +380416 +380417 +380418 +380419 +380420 +380421 +380422 +380423 +380448 +380449 +380450 +380451 +380452 +380453 +380454 +380455 +380480 +380481 +380482 +380483 +380484 +380485 +380486 +380487 +380512 +380513 +380514 +380515 +380516 +380517 +380518 +380519 +380544 +380545 +380546 +380547 +380548 +380549 +380550 +380551 +380576 +380577 +380578 +380579 +380580 +380581 +380582 +380583 +380608 +380609 +380610 +380611 +380612 +380613 +380614 +380615 +380640 +380641 +380642 +380643 +380644 +380645 +380646 +380647 +380672 +380673 +380674 +380675 +380676 +380677 +380678 +380679 +380704 +380705 +380706 +380707 +380708 +380709 +380710 +380711 +380736 +380737 +380738 +380739 +380740 +380741 +380742 +380743 +380768 +380769 +380770 +380771 +380772 +380773 +380774 +380775 +380800 +380801 +380802 +380803 +380804 +380805 +380806 +380807 +380832 +380833 +380834 +380835 +380836 +380837 +380838 +380839 +380864 +380865 +380866 +380867 +380868 +380869 +380870 +380871 +380896 +380897 +380898 +380899 +380900 +380901 +380902 +380903 +380928 +380929 +380930 +380931 +380932 +380933 +380934 +380935 +380960 +380961 +380962 +380963 +380964 +380965 +380966 +380967 +380992 +380993 +380994 +380995 +380996 +380997 +380998 +380999 +381024 +381025 +381026 +381027 +381028 +381029 +381030 +381031 +381056 +381057 +381058 +381059 +381060 +381061 +381062 +381063 +381088 +381089 +381090 +381091 +381092 +381093 +381094 +381095 +381120 +381121 +381122 +381123 +381124 +381125 +381126 +381127 +381152 +381153 +381154 +381155 +381156 +381157 +381158 +381159 +381184 +381185 +381186 +381187 +381188 +381189 +381190 +381191 +381216 +381217 +381218 +381219 +381220 +381221 +381222 +381223 +381248 +381249 +381250 +381251 +381252 +381253 +381254 +381255 +381280 +381281 +381282 +381283 +381284 +381285 +381286 +381287 +381312 +381313 +381314 +381315 +381316 +381317 +381318 +381319 +381344 +381345 +381346 +381347 +381348 +381349 +381350 +381351 +381376 +381377 +381378 +381379 +381380 +381381 +381382 +381383 +381408 +381409 +381410 +381411 +381412 +381413 +381414 +381415 +381440 +381441 +381442 +381443 +381444 +381445 +381446 +381447 +381472 +381473 +381474 +381475 +381476 +381477 +381478 +381479 +381504 +381505 +381506 +381507 +381508 +381509 +381510 +381511 +381536 +381537 +381538 +381539 +381540 +381541 +381542 +381543 +381568 +381569 +381570 +381571 +381572 +381573 +381574 +381575 +381600 +381601 +381602 +381603 +381604 +381605 +381606 +381607 +381632 +381633 +381634 +381635 +381636 +381637 +381638 +381639 +381664 +381665 +381666 +381667 +381668 +381669 +381670 +381671 +381696 +381697 +381698 +381699 +381700 +381701 +381702 +381703 +381728 +381729 +381730 +381731 +381732 +381733 +381734 +381735 +381760 +381761 +381762 +381763 +381764 +381765 +381766 +381767 +381792 +381793 +381794 +381795 +381796 +381797 +381798 +381799 +381824 +381825 +381826 +381827 +381828 +381829 +381830 +381831 +381856 +381857 +381858 +381859 +381860 +381861 +381862 +381863 +381888 +381889 +381890 +381891 +381892 +381893 +381894 +381895 +381920 +381921 +381922 +381923 +381924 +381925 +381926 +381927 +381952 +381953 +381954 +381955 +381956 +381957 +381958 +381959 +381984 +381985 +381986 +381987 +381988 +381989 +381990 +381991 +382016 +382017 +382018 +382019 +382020 +382021 +382022 +382023 +382048 +382049 +382050 +382051 +382052 +382053 +382054 +382055 +382080 +382081 +382082 +382083 +382084 +382085 +382086 +382087 +382112 +382113 +382114 +382115 +382116 +382117 +382118 +382119 +382144 +382145 +382146 +382147 +382148 +382149 +382150 +382151 +382176 +382177 +382178 +382179 +382180 +382181 +382182 +382183 +382208 +382209 +382210 +382211 +382212 +382213 +382214 +382215 +382240 +382241 +382242 +382243 +382244 +382245 +382246 +382247 +382272 +382273 +382274 +382275 +382276 +382277 +382278 +382279 +382304 +382305 +382306 +382307 +382308 +382309 +382310 +382311 +382336 +382337 +382338 +382339 +382340 +382341 +382342 +382343 +382368 +382369 +382370 +382371 +382372 +382373 +382374 +382375 +382400 +382401 +382402 +382403 +382404 +382405 +382406 +382407 +382432 +382433 +382434 +382435 +382436 +382437 +382438 +382439 +382464 +382465 +382466 +382467 +382468 +382469 +382470 +382471 +382496 +382497 +382498 +382499 +382500 +382501 +382502 +382503 +382528 +382529 +382530 +382531 +382532 +382533 +382534 +382535 +382560 +382561 +382562 +382563 +382564 +382565 +382566 +382567 +382592 +382593 +382594 +382595 +382596 +382597 +382598 +382599 +382624 +382625 +382626 +382627 +382628 +382629 +382630 +382631 +382656 +382657 +382658 +382659 +382660 +382661 +382662 +382663 +382688 +382689 +382690 +382691 +382692 +382693 +382694 +382695 +382720 +382721 +382722 +382723 +382724 +382725 +382726 +382727 +382752 +382753 +382754 +382755 +382756 +382757 +382758 +382759 +382784 +382785 +382786 +382787 +382788 +382789 +382790 +382791 +382816 +382817 +382818 +382819 +382820 +382821 +382822 +382823 +382848 +382849 +382850 +382851 +382852 +382853 +382854 +382855 +382880 +382881 +382882 +382883 +382884 +382885 +382886 +382887 +382912 +382913 +382914 +382915 +382916 +382917 +382918 +382919 +382944 +382945 +382946 +382947 +382948 +382949 +382950 +382951 +382976 +382977 +382978 +382979 +382980 +382981 +382982 +382983 +383008 +383009 +383010 +383011 +383012 +383013 +383014 +383015 +383040 +383041 +383042 +383043 +383044 +383045 +383046 +383047 +383072 +383073 +383074 +383075 +383076 +383077 +383078 +383079 +383104 +383105 +383106 +383107 +383108 +383109 +383110 +383111 +383136 +383137 +383138 +383139 +383140 +383141 +383142 +383143 +383168 +383169 +383170 +383171 +383172 +383173 +383174 +383175 +383200 +383201 +383202 +383203 +383204 +383205 +383206 +383207 +383232 +383233 +383234 +383235 +383236 +383237 +383238 +383239 +383264 +383265 +383266 +383267 +383268 +383269 +383270 +383271 +383296 +383297 +383298 +383299 +383300 +383301 +383302 +383303 +383328 +383329 +383330 +383331 +383332 +383333 +383334 +383335 +383360 +383361 +383362 +383363 +383364 +383365 +383366 +383367 +383392 +383393 +383394 +383395 +383396 +383397 +383398 +383399 +383424 +383425 +383426 +383427 +383428 +383429 +383430 +383431 +383456 +383457 +383458 +383459 +383460 +383461 +383462 +383463 +383488 +383489 +383490 +383491 +383492 +383493 +383494 +383495 +383520 +383521 +383522 +383523 +383524 +383525 +383526 +383527 +383552 +383553 +383554 +383555 +383556 +383557 +383558 +383559 +383584 +383585 +383586 +383587 +383588 +383589 +383590 +383591 +383616 +383617 +383618 +383619 +383620 +383621 +383622 +383623 +383648 +383649 +383650 +383651 +383652 +383653 +383654 +383655 +383680 +383681 +383682 +383683 +383684 +383685 +383686 +383687 +383712 +383713 +383714 +383715 +383716 +383717 +383718 +383719 +383744 +383745 +383746 +383747 +383748 +383749 +383750 +383751 +383776 +383777 +383778 +383779 +383780 +383781 +383782 +383783 +383808 +383809 +383810 +383811 +383812 +383813 +383814 +383815 +383840 +383841 +383842 +383843 +383844 +383845 +383846 +383847 +383872 +383873 +383874 +383875 +383876 +383877 +383878 +383879 +383904 +383905 +383906 +383907 +383908 +383909 +383910 +383911 +383936 +383937 +383938 +383939 +383940 +383941 +383942 +383943 +383968 +383969 +383970 +383971 +383972 +383973 +383974 +383975 +384000 +384001 +384002 +384003 +384004 +384005 +384006 +384007 +384032 +384033 +384034 +384035 +384036 +384037 +384038 +384039 +384064 +384065 +384066 +384067 +384068 +384069 +384070 +384071 +384096 +384097 +384098 +384099 +384100 +384101 +384102 +384103 +384128 +384129 +384130 +384131 +384132 +384133 +384134 +384135 +384160 +384161 +384162 +384163 +384164 +384165 +384166 +384167 +384192 +384193 +384194 +384195 +384196 +384197 +384198 +384199 +384224 +384225 +384226 +384227 +384228 +384229 +384230 +384231 +384256 +384257 +384258 +384259 +384260 +384261 +384262 +384263 +384288 +384289 +384290 +384291 +384292 +384293 +384294 +384295 +384320 +384321 +384322 +384323 +384324 +384325 +384326 +384327 +384352 +384353 +384354 +384355 +384356 +384357 +384358 +384359 +384384 +384385 +384386 +384387 +384388 +384389 +384390 +384391 +384416 +384417 +384418 +384419 +384420 +384421 +384422 +384423 +384448 +384449 +384450 +384451 +384452 +384453 +384454 +384455 +384480 +384481 +384482 +384483 +384484 +384485 +384486 +384487 +384512 +384513 +384514 +384515 +384516 +384517 +384518 +384519 +384544 +384545 +384546 +384547 +384548 +384549 +384550 +384551 +384576 +384577 +384578 +384579 +384580 +384581 +384582 +384583 +384608 +384609 +384610 +384611 +384612 +384613 +384614 +384615 +384640 +384641 +384642 +384643 +384644 +384645 +384646 +384647 +384672 +384673 +384674 +384675 +384676 +384677 +384678 +384679 +384704 +384705 +384706 +384707 +384708 +384709 +384710 +384711 +384736 +384737 +384738 +384739 +384740 +384741 +384742 +384743 +384768 +384769 +384770 +384771 +384772 +384773 +384774 +384775 +384800 +384801 +384802 +384803 +384804 +384805 +384806 +384807 +384832 +384833 +384834 +384835 +384836 +384837 +384838 +384839 +384864 +384865 +384866 +384867 +384868 +384869 +384870 +384871 +384896 +384897 +384898 +384899 +384900 +384901 +384902 +384903 +384928 +384929 +384930 +384931 +384932 +384933 +384934 +384935 +384960 +384961 +384962 +384963 +384964 +384965 +384966 +384967 +384992 +384993 +384994 +384995 +384996 +384997 +384998 +384999 +385024 +385025 +385026 +385027 +385028 +385029 +385030 +385031 +385056 +385057 +385058 +385059 +385060 +385061 +385062 +385063 +385088 +385089 +385090 +385091 +385092 +385093 +385094 +385095 +385120 +385121 +385122 +385123 +385124 +385125 +385126 +385127 +385152 +385153 +385154 +385155 +385156 +385157 +385158 +385159 +385184 +385185 +385186 +385187 +385188 +385189 +385190 +385191 +385216 +385217 +385218 +385219 +385220 +385221 +385222 +385223 +385248 +385249 +385250 +385251 +385252 +385253 +385254 +385255 +385280 +385281 +385282 +385283 +385284 +385285 +385286 +385287 +385312 +385313 +385314 +385315 +385316 +385317 +385318 +385319 +385344 +385345 +385346 +385347 +385348 +385349 +385350 +385351 +385376 +385377 +385378 +385379 +385380 +385381 +385382 +385383 +385408 +385409 +385410 +385411 +385412 +385413 +385414 +385415 +385440 +385441 +385442 +385443 +385444 +385445 +385446 +385447 +385472 +385473 +385474 +385475 +385476 +385477 +385478 +385479 +385504 +385505 +385506 +385507 +385508 +385509 +385510 +385511 +385536 +385537 +385538 +385539 +385540 +385541 +385542 +385543 +385568 +385569 +385570 +385571 +385572 +385573 +385574 +385575 +385600 +385601 +385602 +385603 +385604 +385605 +385606 +385607 +385632 +385633 +385634 +385635 +385636 +385637 +385638 +385639 +385664 +385665 +385666 +385667 +385668 +385669 +385670 +385671 +385696 +385697 +385698 +385699 +385700 +385701 +385702 +385703 +385728 +385729 +385730 +385731 +385732 +385733 +385734 +385735 +385760 +385761 +385762 +385763 +385764 +385765 +385766 +385767 +385792 +385793 +385794 +385795 +385796 +385797 +385798 +385799 +385824 +385825 +385826 +385827 +385828 +385829 +385830 +385831 +385856 +385857 +385858 +385859 +385860 +385861 +385862 +385863 +385888 +385889 +385890 +385891 +385892 +385893 +385894 +385895 +385920 +385921 +385922 +385923 +385924 +385925 +385926 +385927 +385952 +385953 +385954 +385955 +385956 +385957 +385958 +385959 +385984 +385985 +385986 +385987 +385988 +385989 +385990 +385991 +386016 +386017 +386018 +386019 +386020 +386021 +386022 +386023 +386048 +386049 +386050 +386051 +386052 +386053 +386054 +386055 +386080 +386081 +386082 +386083 +386084 +386085 +386086 +386087 +386112 +386113 +386114 +386115 +386116 +386117 +386118 +386119 +386144 +386145 +386146 +386147 +386148 +386149 +386150 +386151 +386176 +386177 +386178 +386179 +386180 +386181 +386182 +386183 +386208 +386209 +386210 +386211 +386212 +386213 +386214 +386215 +386240 +386241 +386242 +386243 +386244 +386245 +386246 +386247 +386272 +386273 +386274 +386275 +386276 +386277 +386278 +386279 +386304 +386305 +386306 +386307 +386308 +386309 +386310 +386311 +386336 +386337 +386338 +386339 +386340 +386341 +386342 +386343 +386368 +386369 +386370 +386371 +386372 +386373 +386374 +386375 +386400 +386401 +386402 +386403 +386404 +386405 +386406 +386407 +386432 +386433 +386434 +386435 +386436 +386437 +386438 +386439 +386464 +386465 +386466 +386467 +386468 +386469 +386470 +386471 +386496 +386497 +386498 +386499 +386500 +386501 +386502 +386503 +386528 +386529 +386530 +386531 +386532 +386533 +386534 +386535 +386560 +386561 +386562 +386563 +386564 +386565 +386566 +386567 +386592 +386593 +386594 +386595 +386596 +386597 +386598 +386599 +386624 +386625 +386626 +386627 +386628 +386629 +386630 +386631 +386656 +386657 +386658 +386659 +386660 +386661 +386662 +386663 +386688 +386689 +386690 +386691 +386692 +386693 +386694 +386695 +386720 +386721 +386722 +386723 +386724 +386725 +386726 +386727 +386752 +386753 +386754 +386755 +386756 +386757 +386758 +386759 +386784 +386785 +386786 +386787 +386788 +386789 +386790 +386791 +386816 +386817 +386818 +386819 +386820 +386821 +386822 +386823 +386848 +386849 +386850 +386851 +386852 +386853 +386854 +386855 +386880 +386881 +386882 +386883 +386884 +386885 +386886 +386887 +386912 +386913 +386914 +386915 +386916 +386917 +386918 +386919 +386944 +386945 +386946 +386947 +386948 +386949 +386950 +386951 +386976 +386977 +386978 +386979 +386980 +386981 +386982 +386983 +387008 +387009 +387010 +387011 +387012 +387013 +387014 +387015 +387040 +387041 +387042 +387043 +387044 +387045 +387046 +387047 +387072 +387073 +387074 +387075 +387076 +387077 +387078 +387079 +387104 +387105 +387106 +387107 +387108 +387109 +387110 +387111 +387136 +387137 +387138 +387139 +387140 +387141 +387142 +387143 +387168 +387169 +387170 +387171 +387172 +387173 +387174 +387175 +387200 +387201 +387202 +387203 +387204 +387205 +387206 +387207 +387232 +387233 +387234 +387235 +387236 +387237 +387238 +387239 +387264 +387265 +387266 +387267 +387268 +387269 +387270 +387271 +387296 +387297 +387298 +387299 +387300 +387301 +387302 +387303 +387328 +387329 +387330 +387331 +387332 +387333 +387334 +387335 +387360 +387361 +387362 +387363 +387364 +387365 +387366 +387367 +387392 +387393 +387394 +387395 +387396 +387397 +387398 +387399 +387424 +387425 +387426 +387427 +387428 +387429 +387430 +387431 +387456 +387457 +387458 +387459 +387460 +387461 +387462 +387463 +387488 +387489 +387490 +387491 +387492 +387493 +387494 +387495 +387520 +387521 +387522 +387523 +387524 +387525 +387526 +387527 +387552 +387553 +387554 +387555 +387556 +387557 +387558 +387559 +387584 +387585 +387586 +387587 +387588 +387589 +387590 +387591 +387616 +387617 +387618 +387619 +387620 +387621 +387622 +387623 +387648 +387649 +387650 +387651 +387652 +387653 +387654 +387655 +387680 +387681 +387682 +387683 +387684 +387685 +387686 +387687 +387712 +387713 +387714 +387715 +387716 +387717 +387718 +387719 +387744 +387745 +387746 +387747 +387748 +387749 +387750 +387751 +387776 +387777 +387778 +387779 +387780 +387781 +387782 +387783 +387808 +387809 +387810 +387811 +387812 +387813 +387814 +387815 +387840 +387841 +387842 +387843 +387844 +387845 +387846 +387847 +387872 +387873 +387874 +387875 +387876 +387877 +387878 +387879 +387904 +387905 +387906 +387907 +387908 +387909 +387910 +387911 +387936 +387937 +387938 +387939 +387940 +387941 +387942 +387943 +387968 +387969 +387970 +387971 +387972 +387973 +387974 +387975 +388000 +388001 +388002 +388003 +388004 +388005 +388006 +388007 +388032 +388033 +388034 +388035 +388036 +388037 +388038 +388039 +388064 +388065 +388066 +388067 +388068 +388069 +388070 +388071 +388096 +388097 +388098 +388099 +388100 +388101 +388102 +388103 +388128 +388129 +388130 +388131 +388132 +388133 +388134 +388135 +388160 +388161 +388162 +388163 +388164 +388165 +388166 +388167 +388192 +388193 +388194 +388195 +388196 +388197 +388198 +388199 +388224 +388225 +388226 +388227 +388228 +388229 +388230 +388231 +388256 +388257 +388258 +388259 +388260 +388261 +388262 +388263 +388288 +388289 +388290 +388291 +388292 +388293 +388294 +388295 +388320 +388321 +388322 +388323 +388324 +388325 +388326 +388327 +388352 +388353 +388354 +388355 +388356 +388357 +388358 +388359 +388384 +388385 +388386 +388387 +388388 +388389 +388390 +388391 +388416 +388417 +388418 +388419 +388420 +388421 +388422 +388423 +388448 +388449 +388450 +388451 +388452 +388453 +388454 +388455 +388480 +388481 +388482 +388483 +388484 +388485 +388486 +388487 +388512 +388513 +388514 +388515 +388516 +388517 +388518 +388519 +388544 +388545 +388546 +388547 +388548 +388549 +388550 +388551 +388576 +388577 +388578 +388579 +388580 +388581 +388582 +388583 +388608 +388609 +388610 +388611 +388612 +388613 +388614 +388615 +388640 +388641 +388642 +388643 +388644 +388645 +388646 +388647 +388672 +388673 +388674 +388675 +388676 +388677 +388678 +388679 +388704 +388705 +388706 +388707 +388708 +388709 +388710 +388711 +388736 +388737 +388738 +388739 +388740 +388741 +388742 +388743 +388768 +388769 +388770 +388771 +388772 +388773 +388774 +388775 +388800 +388801 +388802 +388803 +388804 +388805 +388806 +388807 +388832 +388833 +388834 +388835 +388836 +388837 +388838 +388839 +388864 +388865 +388866 +388867 +388868 +388869 +388870 +388871 +388896 +388897 +388898 +388899 +388900 +388901 +388902 +388903 +388928 +388929 +388930 +388931 +388932 +388933 +388934 +388935 +388960 +388961 +388962 +388963 +388964 +388965 +388966 +388967 +388992 +388993 +388994 +388995 +388996 +388997 +388998 +388999 +389024 +389025 +389026 +389027 +389028 +389029 +389030 +389031 +389056 +389057 +389058 +389059 +389060 +389061 +389062 +389063 +389088 +389089 +389090 +389091 +389092 +389093 +389094 +389095 +389120 +389121 +389122 +389123 +389124 +389125 +389126 +389127 +389152 +389153 +389154 +389155 +389156 +389157 +389158 +389159 +389184 +389185 +389186 +389187 +389188 +389189 +389190 +389191 +389216 +389217 +389218 +389219 +389220 +389221 +389222 +389223 +389248 +389249 +389250 +389251 +389252 +389253 +389254 +389255 +389280 +389281 +389282 +389283 +389284 +389285 +389286 +389287 +389312 +389313 +389314 +389315 +389316 +389317 +389318 +389319 +389344 +389345 +389346 +389347 +389348 +389349 +389350 +389351 +389376 +389377 +389378 +389379 +389380 +389381 +389382 +389383 +389408 +389409 +389410 +389411 +389412 +389413 +389414 +389415 +389440 +389441 +389442 +389443 +389444 +389445 +389446 +389447 +389472 +389473 +389474 +389475 +389476 +389477 +389478 +389479 +389504 +389505 +389506 +389507 +389508 +389509 +389510 +389511 +389536 +389537 +389538 +389539 +389540 +389541 +389542 +389543 +389568 +389569 +389570 +389571 +389572 +389573 +389574 +389575 +389600 +389601 +389602 +389603 +389604 +389605 +389606 +389607 +389632 +389633 +389634 +389635 +389636 +389637 +389638 +389639 +389664 +389665 +389666 +389667 +389668 +389669 +389670 +389671 +389696 +389697 +389698 +389699 +389700 +389701 +389702 +389703 +389728 +389729 +389730 +389731 +389732 +389733 +389734 +389735 +389760 +389761 +389762 +389763 +389764 +389765 +389766 +389767 +389792 +389793 +389794 +389795 +389796 +389797 +389798 +389799 +389824 +389825 +389826 +389827 +389828 +389829 +389830 +389831 +389856 +389857 +389858 +389859 +389860 +389861 +389862 +389863 +389888 +389889 +389890 +389891 +389892 +389893 +389894 +389895 +389920 +389921 +389922 +389923 +389924 +389925 +389926 +389927 +389952 +389953 +389954 +389955 +389956 +389957 +389958 +389959 +389984 +389985 +389986 +389987 +389988 +389989 +389990 +389991 +390016 +390017 +390018 +390019 +390020 +390021 +390022 +390023 +390048 +390049 +390050 +390051 +390052 +390053 +390054 +390055 +390080 +390081 +390082 +390083 +390084 +390085 +390086 +390087 +390112 +390113 +390114 +390115 +390116 +390117 +390118 +390119 +390144 +390145 +390146 +390147 +390148 +390149 +390150 +390151 +390176 +390177 +390178 +390179 +390180 +390181 +390182 +390183 +390208 +390209 +390210 +390211 +390212 +390213 +390214 +390215 +390240 +390241 +390242 +390243 +390244 +390245 +390246 +390247 +390272 +390273 +390274 +390275 +390276 +390277 +390278 +390279 +390304 +390305 +390306 +390307 +390308 +390309 +390310 +390311 +390336 +390337 +390338 +390339 +390340 +390341 +390342 +390343 +390368 +390369 +390370 +390371 +390372 +390373 +390374 +390375 +390400 +390401 +390402 +390403 +390404 +390405 +390406 +390407 +390432 +390433 +390434 +390435 +390436 +390437 +390438 +390439 +390464 +390465 +390466 +390467 +390468 +390469 +390470 +390471 +390496 +390497 +390498 +390499 +390500 +390501 +390502 +390503 +390528 +390529 +390530 +390531 +390532 +390533 +390534 +390535 +390560 +390561 +390562 +390563 +390564 +390565 +390566 +390567 +390592 +390593 +390594 +390595 +390596 +390597 +390598 +390599 +390624 +390625 +390626 +390627 +390628 +390629 +390630 +390631 +390656 +390657 +390658 +390659 +390660 +390661 +390662 +390663 +390688 +390689 +390690 +390691 +390692 +390693 +390694 +390695 +390720 +390721 +390722 +390723 +390724 +390725 +390726 +390727 +390752 +390753 +390754 +390755 +390756 +390757 +390758 +390759 +390784 +390785 +390786 +390787 +390788 +390789 +390790 +390791 +390816 +390817 +390818 +390819 +390820 +390821 +390822 +390823 +390848 +390849 +390850 +390851 +390852 +390853 +390854 +390855 +390880 +390881 +390882 +390883 +390884 +390885 +390886 +390887 +390912 +390913 +390914 +390915 +390916 +390917 +390918 +390919 +390944 +390945 +390946 +390947 +390948 +390949 +390950 +390951 +390976 +390977 +390978 +390979 +390980 +390981 +390982 +390983 +391008 +391009 +391010 +391011 +391012 +391013 +391014 +391015 +391040 +391041 +391042 +391043 +391044 +391045 +391046 +391047 +391072 +391073 +391074 +391075 +391076 +391077 +391078 +391079 +391104 +391105 +391106 +391107 +391108 +391109 +391110 +391111 +391136 +391137 +391138 +391139 +391140 +391141 +391142 +391143 +391168 +391169 +391170 +391171 +391172 +391173 +391174 +391175 +391200 +391201 +391202 +391203 +391204 +391205 +391206 +391207 +391232 +391233 +391234 +391235 +391236 +391237 +391238 +391239 +391264 +391265 +391266 +391267 +391268 +391269 +391270 +391271 +391296 +391297 +391298 +391299 +391300 +391301 +391302 +391303 +391328 +391329 +391330 +391331 +391332 +391333 +391334 +391335 +391360 +391361 +391362 +391363 +391364 +391365 +391366 +391367 +391392 +391393 +391394 +391395 +391396 +391397 +391398 +391399 +391424 +391425 +391426 +391427 +391428 +391429 +391430 +391431 +391456 +391457 +391458 +391459 +391460 +391461 +391462 +391463 +391488 +391489 +391490 +391491 +391492 +391493 +391494 +391495 +391520 +391521 +391522 +391523 +391524 +391525 +391526 +391527 +391552 +391553 +391554 +391555 +391556 +391557 +391558 +391559 +391584 +391585 +391586 +391587 +391588 +391589 +391590 +391591 +391616 +391617 +391618 +391619 +391620 +391621 +391622 +391623 +391648 +391649 +391650 +391651 +391652 +391653 +391654 +391655 +391680 +391681 +391682 +391683 +391684 +391685 +391686 +391687 +391712 +391713 +391714 +391715 +391716 +391717 +391718 +391719 +391744 +391745 +391746 +391747 +391748 +391749 +391750 +391751 +391776 +391777 +391778 +391779 +391780 +391781 +391782 +391783 +391808 +391809 +391810 +391811 +391812 +391813 +391814 +391815 +391840 +391841 +391842 +391843 +391844 +391845 +391846 +391847 +391872 +391873 +391874 +391875 +391876 +391877 +391878 +391879 +391904 +391905 +391906 +391907 +391908 +391909 +391910 +391911 +391936 +391937 +391938 +391939 +391940 +391941 +391942 +391943 +391968 +391969 +391970 +391971 +391972 +391973 +391974 +391975 +392000 +392001 +392002 +392003 +392004 +392005 +392006 +392007 +392032 +392033 +392034 +392035 +392036 +392037 +392038 +392039 +392064 +392065 +392066 +392067 +392068 +392069 +392070 +392071 +392096 +392097 +392098 +392099 +392100 +392101 +392102 +392103 +392128 +392129 +392130 +392131 +392132 +392133 +392134 +392135 +392160 +392161 +392162 +392163 +392164 +392165 +392166 +392167 +392192 +392193 +392194 +392195 +392196 +392197 +392198 +392199 +392224 +392225 +392226 +392227 +392228 +392229 +392230 +392231 +392256 +392257 +392258 +392259 +392260 +392261 +392262 +392263 +392288 +392289 +392290 +392291 +392292 +392293 +392294 +392295 +392320 +392321 +392322 +392323 +392324 +392325 +392326 +392327 +392352 +392353 +392354 +392355 +392356 +392357 +392358 +392359 +392384 +392385 +392386 +392387 +392388 +392389 +392390 +392391 +392416 +392417 +392418 +392419 +392420 +392421 +392422 +392423 +392448 +392449 +392450 +392451 +392452 +392453 +392454 +392455 +392480 +392481 +392482 +392483 +392484 +392485 +392486 +392487 +392512 +392513 +392514 +392515 +392516 +392517 +392518 +392519 +392544 +392545 +392546 +392547 +392548 +392549 +392550 +392551 +392576 +392577 +392578 +392579 +392580 +392581 +392582 +392583 +392608 +392609 +392610 +392611 +392612 +392613 +392614 +392615 +392640 +392641 +392642 +392643 +392644 +392645 +392646 +392647 +392672 +392673 +392674 +392675 +392676 +392677 +392678 +392679 +392704 +392705 +392706 +392707 +392708 +392709 +392710 +392711 +392736 +392737 +392738 +392739 +392740 +392741 +392742 +392743 +392768 +392769 +392770 +392771 +392772 +392773 +392774 +392775 +392800 +392801 +392802 +392803 +392804 +392805 +392806 +392807 +392832 +392833 +392834 +392835 +392836 +392837 +392838 +392839 +392864 +392865 +392866 +392867 +392868 +392869 +392870 +392871 +392896 +392897 +392898 +392899 +392900 +392901 +392902 +392903 +392928 +392929 +392930 +392931 +392932 +392933 +392934 +392935 +392960 +392961 +392962 +392963 +392964 +392965 +392966 +392967 +392992 +392993 +392994 +392995 +392996 +392997 +392998 +392999 +393024 +393025 +393026 +393027 +393028 +393029 +393030 +393031 +393056 +393057 +393058 +393059 +393060 +393061 +393062 +393063 +393088 +393089 +393090 +393091 +393092 +393093 +393094 +393095 +393120 +393121 +393122 +393123 +393124 +393125 +393126 +393127 +393152 +393153 +393154 +393155 +393156 +393157 +393158 +393159 +393184 +393185 +393186 +393187 +393188 +393189 +393190 +393191 +393216 +393217 +393218 +393219 +393220 +393221 +393222 +393223 +393248 +393249 +393250 +393251 +393252 +393253 +393254 +393255 +393280 +393281 +393282 +393283 +393284 +393285 +393286 +393287 +393312 +393313 +393314 +393315 +393316 +393317 +393318 +393319 +393344 +393345 +393346 +393347 +393348 +393349 +393350 +393351 +393376 +393377 +393378 +393379 +393380 +393381 +393382 +393383 +393408 +393409 +393410 +393411 +393412 +393413 +393414 +393415 +393440 +393441 +393442 +393443 +393444 +393445 +393446 +393447 +393472 +393473 +393474 +393475 +393476 +393477 +393478 +393479 +393504 +393505 +393506 +393507 +393508 +393509 +393510 +393511 +393536 +393537 +393538 +393539 +393540 +393541 +393542 +393543 +393568 +393569 +393570 +393571 +393572 +393573 +393574 +393575 +393600 +393601 +393602 +393603 +393604 +393605 +393606 +393607 +393632 +393633 +393634 +393635 +393636 +393637 +393638 +393639 +393664 +393665 +393666 +393667 +393668 +393669 +393670 +393671 +393696 +393697 +393698 +393699 +393700 +393701 +393702 +393703 +393728 +393729 +393730 +393731 +393732 +393733 +393734 +393735 +393760 +393761 +393762 +393763 +393764 +393765 +393766 +393767 +393792 +393793 +393794 +393795 +393796 +393797 +393798 +393799 +393824 +393825 +393826 +393827 +393828 +393829 +393830 +393831 +393856 +393857 +393858 +393859 +393860 +393861 +393862 +393863 +393888 +393889 +393890 +393891 +393892 +393893 +393894 +393895 +393920 +393921 +393922 +393923 +393924 +393925 +393926 +393927 +393952 +393953 +393954 +393955 +393956 +393957 +393958 +393959 +393984 +393985 +393986 +393987 +393988 +393989 +393990 +393991 +394016 +394017 +394018 +394019 +394020 +394021 +394022 +394023 +394048 +394049 +394050 +394051 +394052 +394053 +394054 +394055 +394080 +394081 +394082 +394083 +394084 +394085 +394086 +394087 +394112 +394113 +394114 +394115 +394116 +394117 +394118 +394119 +394144 +394145 +394146 +394147 +394148 +394149 +394150 +394151 +394176 +394177 +394178 +394179 +394180 +394181 +394182 +394183 +394208 +394209 +394210 +394211 +394212 +394213 +394214 +394215 +394240 +394241 +394242 +394243 +394244 +394245 +394246 +394247 +394272 +394273 +394274 +394275 +394276 +394277 +394278 +394279 +394304 +394305 +394306 +394307 +394308 +394309 +394310 +394311 +394336 +394337 +394338 +394339 +394340 +394341 +394342 +394343 +394368 +394369 +394370 +394371 +394372 +394373 +394374 +394375 +394400 +394401 +394402 +394403 +394404 +394405 +394406 +394407 +394432 +394433 +394434 +394435 +394436 +394437 +394438 +394439 +394464 +394465 +394466 +394467 +394468 +394469 +394470 +394471 +394496 +394497 +394498 +394499 +394500 +394501 +394502 +394503 +394528 +394529 +394530 +394531 +394532 +394533 +394534 +394535 +394560 +394561 +394562 +394563 +394564 +394565 +394566 +394567 +394592 +394593 +394594 +394595 +394596 +394597 +394598 +394599 +394624 +394625 +394626 +394627 +394628 +394629 +394630 +394631 +394656 +394657 +394658 +394659 +394660 +394661 +394662 +394663 +394688 +394689 +394690 +394691 +394692 +394693 +394694 +394695 +394720 +394721 +394722 +394723 +394724 +394725 +394726 +394727 +394752 +394753 +394754 +394755 +394756 +394757 +394758 +394759 +394784 +394785 +394786 +394787 +394788 +394789 +394790 +394791 +394816 +394817 +394818 +394819 +394820 +394821 +394822 +394823 +394848 +394849 +394850 +394851 +394852 +394853 +394854 +394855 +394880 +394881 +394882 +394883 +394884 +394885 +394886 +394887 +394912 +394913 +394914 +394915 +394916 +394917 +394918 +394919 +394944 +394945 +394946 +394947 +394948 +394949 +394950 +394951 +394976 +394977 +394978 +394979 +394980 +394981 +394982 +394983 +395008 +395009 +395010 +395011 +395012 +395013 +395014 +395015 +395040 +395041 +395042 +395043 +395044 +395045 +395046 +395047 +395072 +395073 +395074 +395075 +395076 +395077 +395078 +395079 +395104 +395105 +395106 +395107 +395108 +395109 +395110 +395111 +395136 +395137 +395138 +395139 +395140 +395141 +395142 +395143 +395168 +395169 +395170 +395171 +395172 +395173 +395174 +395175 +395200 +395201 +395202 +395203 +395204 +395205 +395206 +395207 +395232 +395233 +395234 +395235 +395236 +395237 +395238 +395239 +395264 +395265 +395266 +395267 +395268 +395269 +395270 +395271 +395296 +395297 +395298 +395299 +395300 +395301 +395302 +395303 +395328 +395329 +395330 +395331 +395332 +395333 +395334 +395335 +395360 +395361 +395362 +395363 +395364 +395365 +395366 +395367 +395392 +395393 +395394 +395395 +395396 +395397 +395398 +395399 +395424 +395425 +395426 +395427 +395428 +395429 +395430 +395431 +395456 +395457 +395458 +395459 +395460 +395461 +395462 +395463 +395488 +395489 +395490 +395491 +395492 +395493 +395494 +395495 +395520 +395521 +395522 +395523 +395524 +395525 +395526 +395527 +395552 +395553 +395554 +395555 +395556 +395557 +395558 +395559 +395584 +395585 +395586 +395587 +395588 +395589 +395590 +395591 +395616 +395617 +395618 +395619 +395620 +395621 +395622 +395623 +395648 +395649 +395650 +395651 +395652 +395653 +395654 +395655 +395680 +395681 +395682 +395683 +395684 +395685 +395686 +395687 +395712 +395713 +395714 +395715 +395716 +395717 +395718 +395719 +395744 +395745 +395746 +395747 +395748 +395749 +395750 +395751 +395776 +395777 +395778 +395779 +395780 +395781 +395782 +395783 +395808 +395809 +395810 +395811 +395812 +395813 +395814 +395815 +395840 +395841 +395842 +395843 +395844 +395845 +395846 +395847 +395872 +395873 +395874 +395875 +395876 +395877 +395878 +395879 +395904 +395905 +395906 +395907 +395908 +395909 +395910 +395911 +395936 +395937 +395938 +395939 +395940 +395941 +395942 +395943 +395968 +395969 +395970 +395971 +395972 +395973 +395974 +395975 +396000 +396001 +396002 +396003 +396004 +396005 +396006 +396007 +396032 +396033 +396034 +396035 +396036 +396037 +396038 +396039 +396064 +396065 +396066 +396067 +396068 +396069 +396070 +396071 +396096 +396097 +396098 +396099 +396100 +396101 +396102 +396103 +396128 +396129 +396130 +396131 +396132 +396133 +396134 +396135 +396160 +396161 +396162 +396163 +396164 +396165 +396166 +396167 +396192 +396193 +396194 +396195 +396196 +396197 +396198 +396199 +396224 +396225 +396226 +396227 +396228 +396229 +396230 +396231 +396256 +396257 +396258 +396259 +396260 +396261 +396262 +396263 +396288 +396289 +396290 +396291 +396292 +396293 +396294 +396295 +396320 +396321 +396322 +396323 +396324 +396325 +396326 +396327 +396352 +396353 +396354 +396355 +396356 +396357 +396358 +396359 +396384 +396385 +396386 +396387 +396388 +396389 +396390 +396391 +396416 +396417 +396418 +396419 +396420 +396421 +396422 +396423 +396448 +396449 +396450 +396451 +396452 +396453 +396454 +396455 +396480 +396481 +396482 +396483 +396484 +396485 +396486 +396487 +396512 +396513 +396514 +396515 +396516 +396517 +396518 +396519 +396544 +396545 +396546 +396547 +396548 +396549 +396550 +396551 +396576 +396577 +396578 +396579 +396580 +396581 +396582 +396583 +396608 +396609 +396610 +396611 +396612 +396613 +396614 +396615 +396640 +396641 +396642 +396643 +396644 +396645 +396646 +396647 +396672 +396673 +396674 +396675 +396676 +396677 +396678 +396679 +396704 +396705 +396706 +396707 +396708 +396709 +396710 +396711 +396736 +396737 +396738 +396739 +396740 +396741 +396742 +396743 +396768 +396769 +396770 +396771 +396772 +396773 +396774 +396775 +396800 +396801 +396802 +396803 +396804 +396805 +396806 +396807 +396832 +396833 +396834 +396835 +396836 +396837 +396838 +396839 +396864 +396865 +396866 +396867 +396868 +396869 +396870 +396871 +396896 +396897 +396898 +396899 +396900 +396901 +396902 +396903 +396928 +396929 +396930 +396931 +396932 +396933 +396934 +396935 +396960 +396961 +396962 +396963 +396964 +396965 +396966 +396967 +396992 +396993 +396994 +396995 +396996 +396997 +396998 +396999 +397024 +397025 +397026 +397027 +397028 +397029 +397030 +397031 +397056 +397057 +397058 +397059 +397060 +397061 +397062 +397063 +397088 +397089 +397090 +397091 +397092 +397093 +397094 +397095 +397120 +397121 +397122 +397123 +397124 +397125 +397126 +397127 +397152 +397153 +397154 +397155 +397156 +397157 +397158 +397159 +397184 +397185 +397186 +397187 +397188 +397189 +397190 +397191 +397216 +397217 +397218 +397219 +397220 +397221 +397222 +397223 +397248 +397249 +397250 +397251 +397252 +397253 +397254 +397255 +397280 +397281 +397282 +397283 +397284 +397285 +397286 +397287 +397312 +397313 +397314 +397315 +397316 +397317 +397318 +397319 +397344 +397345 +397346 +397347 +397348 +397349 +397350 +397351 +397376 +397377 +397378 +397379 +397380 +397381 +397382 +397383 +397408 +397409 +397410 +397411 +397412 +397413 +397414 +397415 +397440 +397441 +397442 +397443 +397444 +397445 +397446 +397447 +397472 +397473 +397474 +397475 +397476 +397477 +397478 +397479 +397504 +397505 +397506 +397507 +397508 +397509 +397510 +397511 +397536 +397537 +397538 +397539 +397540 +397541 +397542 +397543 +397568 +397569 +397570 +397571 +397572 +397573 +397574 +397575 +397600 +397601 +397602 +397603 +397604 +397605 +397606 +397607 +397632 +397633 +397634 +397635 +397636 +397637 +397638 +397639 +397664 +397665 +397666 +397667 +397668 +397669 +397670 +397671 +397696 +397697 +397698 +397699 +397700 +397701 +397702 +397703 +397728 +397729 +397730 +397731 +397732 +397733 +397734 +397735 +397760 +397761 +397762 +397763 +397764 +397765 +397766 +397767 +397792 +397793 +397794 +397795 +397796 +397797 +397798 +397799 +397824 +397825 +397826 +397827 +397828 +397829 +397830 +397831 +397856 +397857 +397858 +397859 +397860 +397861 +397862 +397863 +397888 +397889 +397890 +397891 +397892 +397893 +397894 +397895 +397920 +397921 +397922 +397923 +397924 +397925 +397926 +397927 +397952 +397953 +397954 +397955 +397956 +397957 +397958 +397959 +397984 +397985 +397986 +397987 +397988 +397989 +397990 +397991 +398016 +398017 +398018 +398019 +398020 +398021 +398022 +398023 +398048 +398049 +398050 +398051 +398052 +398053 +398054 +398055 +398080 +398081 +398082 +398083 +398084 +398085 +398086 +398087 +398112 +398113 +398114 +398115 +398116 +398117 +398118 +398119 +398144 +398145 +398146 +398147 +398148 +398149 +398150 +398151 +398176 +398177 +398178 +398179 +398180 +398181 +398182 +398183 +398208 +398209 +398210 +398211 +398212 +398213 +398214 +398215 +398240 +398241 +398242 +398243 +398244 +398245 +398246 +398247 +398272 +398273 +398274 +398275 +398276 +398277 +398278 +398279 +398304 +398305 +398306 +398307 +398308 +398309 +398310 +398311 +398336 +398337 +398338 +398339 +398340 +398341 +398342 +398343 +398368 +398369 +398370 +398371 +398372 +398373 +398374 +398375 +398400 +398401 +398402 +398403 +398404 +398405 +398406 +398407 +398432 +398433 +398434 +398435 +398436 +398437 +398438 +398439 +398464 +398465 +398466 +398467 +398468 +398469 +398470 +398471 +398496 +398497 +398498 +398499 +398500 +398501 +398502 +398503 +398528 +398529 +398530 +398531 +398532 +398533 +398534 +398535 +398560 +398561 +398562 +398563 +398564 +398565 +398566 +398567 +398592 +398593 +398594 +398595 +398596 +398597 +398598 +398599 +398624 +398625 +398626 +398627 +398628 +398629 +398630 +398631 +398656 +398657 +398658 +398659 +398660 +398661 +398662 +398663 +398688 +398689 +398690 +398691 +398692 +398693 +398694 +398695 +398720 +398721 +398722 +398723 +398724 +398725 +398726 +398727 +398752 +398753 +398754 +398755 +398756 +398757 +398758 +398759 +398784 +398785 +398786 +398787 +398788 +398789 +398790 +398791 +398816 +398817 +398818 +398819 +398820 +398821 +398822 +398823 +398848 +398849 +398850 +398851 +398852 +398853 +398854 +398855 +398880 +398881 +398882 +398883 +398884 +398885 +398886 +398887 +398912 +398913 +398914 +398915 +398916 +398917 +398918 +398919 +398944 +398945 +398946 +398947 +398948 +398949 +398950 +398951 +398976 +398977 +398978 +398979 +398980 +398981 +398982 +398983 +399008 +399009 +399010 +399011 +399012 +399013 +399014 +399015 +399040 +399041 +399042 +399043 +399044 +399045 +399046 +399047 +399072 +399073 +399074 +399075 +399076 +399077 +399078 +399079 +399104 +399105 +399106 +399107 +399108 +399109 +399110 +399111 +399136 +399137 +399138 +399139 +399140 +399141 +399142 +399143 +399168 +399169 +399170 +399171 +399172 +399173 +399174 +399175 +399200 +399201 +399202 +399203 +399204 +399205 +399206 +399207 +399232 +399233 +399234 +399235 +399236 +399237 +399238 +399239 +399264 +399265 +399266 +399267 +399268 +399269 +399270 +399271 +399296 +399297 +399298 +399299 +399300 +399301 +399302 +399303 +399328 +399329 +399330 +399331 +399332 +399333 +399334 +399335 +399360 +399361 +399362 +399363 +399364 +399365 +399366 +399367 +399392 +399393 +399394 +399395 +399396 +399397 +399398 +399399 +399424 +399425 +399426 +399427 +399428 +399429 +399430 +399431 +399456 +399457 +399458 +399459 +399460 +399461 +399462 +399463 +399488 +399489 +399490 +399491 +399492 +399493 +399494 +399495 +399520 +399521 +399522 +399523 +399524 +399525 +399526 +399527 +399552 +399553 +399554 +399555 +399556 +399557 +399558 +399559 +399584 +399585 +399586 +399587 +399588 +399589 +399590 +399591 +399616 +399617 +399618 +399619 +399620 +399621 +399622 +399623 +399648 +399649 +399650 +399651 +399652 +399653 +399654 +399655 +399680 +399681 +399682 +399683 +399684 +399685 +399686 +399687 +399712 +399713 +399714 +399715 +399716 +399717 +399718 +399719 +399744 +399745 +399746 +399747 +399748 +399749 +399750 +399751 +399776 +399777 +399778 +399779 +399780 +399781 +399782 +399783 +399808 +399809 +399810 +399811 +399812 +399813 +399814 +399815 +399840 +399841 +399842 +399843 +399844 +399845 +399846 +399847 +399872 +399873 +399874 +399875 +399876 +399877 +399878 +399879 +399904 +399905 +399906 +399907 +399908 +399909 +399910 +399911 +399936 +399937 +399938 +399939 +399940 +399941 +399942 +399943 +399968 +399969 +399970 +399971 +399972 +399973 +399974 +399975 +400000 +400001 +400002 +400003 +400004 +400005 +400006 +400007 +400032 +400033 +400034 +400035 +400036 +400037 +400038 +400039 +400064 +400065 +400066 +400067 +400068 +400069 +400070 +400071 +400096 +400097 +400098 +400099 +400100 +400101 +400102 +400103 +400128 +400129 +400130 +400131 +400132 +400133 +400134 +400135 +400160 +400161 +400162 +400163 +400164 +400165 +400166 +400167 +400192 +400193 +400194 +400195 +400196 +400197 +400198 +400199 +400224 +400225 +400226 +400227 +400228 +400229 +400230 +400231 +400256 +400257 +400258 +400259 +400260 +400261 +400262 +400263 +400288 +400289 +400290 +400291 +400292 +400293 +400294 +400295 +400320 +400321 +400322 +400323 +400324 +400325 +400326 +400327 +400352 +400353 +400354 +400355 +400356 +400357 +400358 +400359 +400384 +400385 +400386 +400387 +400388 +400389 +400390 +400391 +400416 +400417 +400418 +400419 +400420 +400421 +400422 +400423 +400448 +400449 +400450 +400451 +400452 +400453 +400454 +400455 +400480 +400481 +400482 +400483 +400484 +400485 +400486 +400487 +400512 +400513 +400514 +400515 +400516 +400517 +400518 +400519 +400544 +400545 +400546 +400547 +400548 +400549 +400550 +400551 +400576 +400577 +400578 +400579 +400580 +400581 +400582 +400583 +400608 +400609 +400610 +400611 +400612 +400613 +400614 +400615 +400640 +400641 +400642 +400643 +400644 +400645 +400646 +400647 +400672 +400673 +400674 +400675 +400676 +400677 +400678 +400679 +400704 +400705 +400706 +400707 +400708 +400709 +400710 +400711 +400736 +400737 +400738 +400739 +400740 +400741 +400742 +400743 +400768 +400769 +400770 +400771 +400772 +400773 +400774 +400775 +400800 +400801 +400802 +400803 +400804 +400805 +400806 +400807 +400832 +400833 +400834 +400835 +400836 +400837 +400838 +400839 +400864 +400865 +400866 +400867 +400868 +400869 +400870 +400871 +400896 +400897 +400898 +400899 +400900 +400901 +400902 +400903 +400928 +400929 +400930 +400931 +400932 +400933 +400934 +400935 +400960 +400961 +400962 +400963 +400964 +400965 +400966 +400967 +400992 +400993 +400994 +400995 +400996 +400997 +400998 +400999 +401024 +401025 +401026 +401027 +401028 +401029 +401030 +401031 +401056 +401057 +401058 +401059 +401060 +401061 +401062 +401063 +401088 +401089 +401090 +401091 +401092 +401093 +401094 +401095 +401120 +401121 +401122 +401123 +401124 +401125 +401126 +401127 +401152 +401153 +401154 +401155 +401156 +401157 +401158 +401159 +401184 +401185 +401186 +401187 +401188 +401189 +401190 +401191 +401216 +401217 +401218 +401219 +401220 +401221 +401222 +401223 +401248 +401249 +401250 +401251 +401252 +401253 +401254 +401255 +401280 +401281 +401282 +401283 +401284 +401285 +401286 +401287 +401312 +401313 +401314 +401315 +401316 +401317 +401318 +401319 +401344 +401345 +401346 +401347 +401348 +401349 +401350 +401351 +401376 +401377 +401378 +401379 +401380 +401381 +401382 +401383 +401408 +401409 +401410 +401411 +401412 +401413 +401414 +401415 +401440 +401441 +401442 +401443 +401444 +401445 +401446 +401447 +401472 +401473 +401474 +401475 +401476 +401477 +401478 +401479 +401504 +401505 +401506 +401507 +401508 +401509 +401510 +401511 +401536 +401537 +401538 +401539 +401540 +401541 +401542 +401543 +401568 +401569 +401570 +401571 +401572 +401573 +401574 +401575 +401600 +401601 +401602 +401603 +401604 +401605 +401606 +401607 +401632 +401633 +401634 +401635 +401636 +401637 +401638 +401639 +401664 +401665 +401666 +401667 +401668 +401669 +401670 +401671 +401696 +401697 +401698 +401699 +401700 +401701 +401702 +401703 +401728 +401729 +401730 +401731 +401732 +401733 +401734 +401735 +401760 +401761 +401762 +401763 +401764 +401765 +401766 +401767 +401792 +401793 +401794 +401795 +401796 +401797 +401798 +401799 +401824 +401825 +401826 +401827 +401828 +401829 +401830 +401831 +401856 +401857 +401858 +401859 +401860 +401861 +401862 +401863 +401888 +401889 +401890 +401891 +401892 +401893 +401894 +401895 +401920 +401921 +401922 +401923 +401924 +401925 +401926 +401927 +401952 +401953 +401954 +401955 +401956 +401957 +401958 +401959 +401984 +401985 +401986 +401987 +401988 +401989 +401990 +401991 +402016 +402017 +402018 +402019 +402020 +402021 +402022 +402023 +402048 +402049 +402050 +402051 +402052 +402053 +402054 +402055 +402080 +402081 +402082 +402083 +402084 +402085 +402086 +402087 +402112 +402113 +402114 +402115 +402116 +402117 +402118 +402119 +402144 +402145 +402146 +402147 +402148 +402149 +402150 +402151 +402176 +402177 +402178 +402179 +402180 +402181 +402182 +402183 +402208 +402209 +402210 +402211 +402212 +402213 +402214 +402215 +402240 +402241 +402242 +402243 +402244 +402245 +402246 +402247 +402272 +402273 +402274 +402275 +402276 +402277 +402278 +402279 +402304 +402305 +402306 +402307 +402308 +402309 +402310 +402311 +402336 +402337 +402338 +402339 +402340 +402341 +402342 +402343 +402368 +402369 +402370 +402371 +402372 +402373 +402374 +402375 +402400 +402401 +402402 +402403 +402404 +402405 +402406 +402407 +402432 +402433 +402434 +402435 +402436 +402437 +402438 +402439 +402464 +402465 +402466 +402467 +402468 +402469 +402470 +402471 +402496 +402497 +402498 +402499 +402500 +402501 +402502 +402503 +402528 +402529 +402530 +402531 +402532 +402533 +402534 +402535 +402560 +402561 +402562 +402563 +402564 +402565 +402566 +402567 +402592 +402593 +402594 +402595 +402596 +402597 +402598 +402599 +402624 +402625 +402626 +402627 +402628 +402629 +402630 +402631 +402656 +402657 +402658 +402659 +402660 +402661 +402662 +402663 +402688 +402689 +402690 +402691 +402692 +402693 +402694 +402695 +402720 +402721 +402722 +402723 +402724 +402725 +402726 +402727 +402752 +402753 +402754 +402755 +402756 +402757 +402758 +402759 +402784 +402785 +402786 +402787 +402788 +402789 +402790 +402791 +402816 +402817 +402818 +402819 +402820 +402821 +402822 +402823 +402848 +402849 +402850 +402851 +402852 +402853 +402854 +402855 +402880 +402881 +402882 +402883 +402884 +402885 +402886 +402887 +402912 +402913 +402914 +402915 +402916 +402917 +402918 +402919 +402944 +402945 +402946 +402947 +402948 +402949 +402950 +402951 +402976 +402977 +402978 +402979 +402980 +402981 +402982 +402983 +403008 +403009 +403010 +403011 +403012 +403013 +403014 +403015 +403040 +403041 +403042 +403043 +403044 +403045 +403046 +403047 +403072 +403073 +403074 +403075 +403076 +403077 +403078 +403079 +403104 +403105 +403106 +403107 +403108 +403109 +403110 +403111 +403136 +403137 +403138 +403139 +403140 +403141 +403142 +403143 +403168 +403169 +403170 +403171 +403172 +403173 +403174 +403175 +403200 +403201 +403202 +403203 +403204 +403205 +403206 +403207 +403232 +403233 +403234 +403235 +403236 +403237 +403238 +403239 +403264 +403265 +403266 +403267 +403268 +403269 +403270 +403271 +403296 +403297 +403298 +403299 +403300 +403301 +403302 +403303 +403328 +403329 +403330 +403331 +403332 +403333 +403334 +403335 +403360 +403361 +403362 +403363 +403364 +403365 +403366 +403367 +403392 +403393 +403394 +403395 +403396 +403397 +403398 +403399 +403424 +403425 +403426 +403427 +403428 +403429 +403430 +403431 +403456 +403457 +403458 +403459 +403460 +403461 +403462 +403463 +403488 +403489 +403490 +403491 +403492 +403493 +403494 +403495 +403520 +403521 +403522 +403523 +403524 +403525 +403526 +403527 +403552 +403553 +403554 +403555 +403556 +403557 +403558 +403559 +403584 +403585 +403586 +403587 +403588 +403589 +403590 +403591 +403616 +403617 +403618 +403619 +403620 +403621 +403622 +403623 +403648 +403649 +403650 +403651 +403652 +403653 +403654 +403655 +403680 +403681 +403682 +403683 +403684 +403685 +403686 +403687 +403712 +403713 +403714 +403715 +403716 +403717 +403718 +403719 +403744 +403745 +403746 +403747 +403748 +403749 +403750 +403751 +403776 +403777 +403778 +403779 +403780 +403781 +403782 +403783 +403808 +403809 +403810 +403811 +403812 +403813 +403814 +403815 +403840 +403841 +403842 +403843 +403844 +403845 +403846 +403847 +403872 +403873 +403874 +403875 +403876 +403877 +403878 +403879 +403904 +403905 +403906 +403907 +403908 +403909 +403910 +403911 +403936 +403937 +403938 +403939 +403940 +403941 +403942 +403943 +403968 +403969 +403970 +403971 +403972 +403973 +403974 +403975 +404000 +404001 +404002 +404003 +404004 +404005 +404006 +404007 +404032 +404033 +404034 +404035 +404036 +404037 +404038 +404039 +404064 +404065 +404066 +404067 +404068 +404069 +404070 +404071 +404096 +404097 +404098 +404099 +404100 +404101 +404102 +404103 +404128 +404129 +404130 +404131 +404132 +404133 +404134 +404135 +404160 +404161 +404162 +404163 +404164 +404165 +404166 +404167 +404192 +404193 +404194 +404195 +404196 +404197 +404198 +404199 +404224 +404225 +404226 +404227 +404228 +404229 +404230 +404231 +404256 +404257 +404258 +404259 +404260 +404261 +404262 +404263 +404288 +404289 +404290 +404291 +404292 +404293 +404294 +404295 +404320 +404321 +404322 +404323 +404324 +404325 +404326 +404327 +404352 +404353 +404354 +404355 +404356 +404357 +404358 +404359 +404384 +404385 +404386 +404387 +404388 +404389 +404390 +404391 +404416 +404417 +404418 +404419 +404420 +404421 +404422 +404423 +404448 +404449 +404450 +404451 +404452 +404453 +404454 +404455 +404480 +404481 +404482 +404483 +404484 +404485 +404486 +404487 +404512 +404513 +404514 +404515 +404516 +404517 +404518 +404519 +404544 +404545 +404546 +404547 +404548 +404549 +404550 +404551 +404576 +404577 +404578 +404579 +404580 +404581 +404582 +404583 +404608 +404609 +404610 +404611 +404612 +404613 +404614 +404615 +404640 +404641 +404642 +404643 +404644 +404645 +404646 +404647 +404672 +404673 +404674 +404675 +404676 +404677 +404678 +404679 +404704 +404705 +404706 +404707 +404708 +404709 +404710 +404711 +404736 +404737 +404738 +404739 +404740 +404741 +404742 +404743 +404768 +404769 +404770 +404771 +404772 +404773 +404774 +404775 +404800 +404801 +404802 +404803 +404804 +404805 +404806 +404807 +404832 +404833 +404834 +404835 +404836 +404837 +404838 +404839 +404864 +404865 +404866 +404867 +404868 +404869 +404870 +404871 +404896 +404897 +404898 +404899 +404900 +404901 +404902 +404903 +404928 +404929 +404930 +404931 +404932 +404933 +404934 +404935 +404960 +404961 +404962 +404963 +404964 +404965 +404966 +404967 +404992 +404993 +404994 +404995 +404996 +404997 +404998 +404999 +405024 +405025 +405026 +405027 +405028 +405029 +405030 +405031 +405056 +405057 +405058 +405059 +405060 +405061 +405062 +405063 +405088 +405089 +405090 +405091 +405092 +405093 +405094 +405095 +405120 +405121 +405122 +405123 +405124 +405125 +405126 +405127 +405152 +405153 +405154 +405155 +405156 +405157 +405158 +405159 +405184 +405185 +405186 +405187 +405188 +405189 +405190 +405191 +405216 +405217 +405218 +405219 +405220 +405221 +405222 +405223 +405248 +405249 +405250 +405251 +405252 +405253 +405254 +405255 +405280 +405281 +405282 +405283 +405284 +405285 +405286 +405287 +405312 +405313 +405314 +405315 +405316 +405317 +405318 +405319 +405344 +405345 +405346 +405347 +405348 +405349 +405350 +405351 +405376 +405377 +405378 +405379 +405380 +405381 +405382 +405383 +405408 +405409 +405410 +405411 +405412 +405413 +405414 +405415 +405440 +405441 +405442 +405443 +405444 +405445 +405446 +405447 +405472 +405473 +405474 +405475 +405476 +405477 +405478 +405479 +405504 +405505 +405506 +405507 +405508 +405509 +405510 +405511 +405536 +405537 +405538 +405539 +405540 +405541 +405542 +405543 +405568 +405569 +405570 +405571 +405572 +405573 +405574 +405575 +405600 +405601 +405602 +405603 +405604 +405605 +405606 +405607 +405632 +405633 +405634 +405635 +405636 +405637 +405638 +405639 +405664 +405665 +405666 +405667 +405668 +405669 +405670 +405671 +405696 +405697 +405698 +405699 +405700 +405701 +405702 +405703 +405728 +405729 +405730 +405731 +405732 +405733 +405734 +405735 +405760 +405761 +405762 +405763 +405764 +405765 +405766 +405767 +405792 +405793 +405794 +405795 +405796 +405797 +405798 +405799 +405824 +405825 +405826 +405827 +405828 +405829 +405830 +405831 +405856 +405857 +405858 +405859 +405860 +405861 +405862 +405863 +405888 +405889 +405890 +405891 +405892 +405893 +405894 +405895 +405920 +405921 +405922 +405923 +405924 +405925 +405926 +405927 +405952 +405953 +405954 +405955 +405956 +405957 +405958 +405959 +405984 +405985 +405986 +405987 +405988 +405989 +405990 +405991 +406016 +406017 +406018 +406019 +406020 +406021 +406022 +406023 +406048 +406049 +406050 +406051 +406052 +406053 +406054 +406055 +406080 +406081 +406082 +406083 +406084 +406085 +406086 +406087 +406112 +406113 +406114 +406115 +406116 +406117 +406118 +406119 +406144 +406145 +406146 +406147 +406148 +406149 +406150 +406151 +406176 +406177 +406178 +406179 +406180 +406181 +406182 +406183 +406208 +406209 +406210 +406211 +406212 +406213 +406214 +406215 +406240 +406241 +406242 +406243 +406244 +406245 +406246 +406247 +406272 +406273 +406274 +406275 +406276 +406277 +406278 +406279 +406304 +406305 +406306 +406307 +406308 +406309 +406310 +406311 +406336 +406337 +406338 +406339 +406340 +406341 +406342 +406343 +406368 +406369 +406370 +406371 +406372 +406373 +406374 +406375 +406400 +406401 +406402 +406403 +406404 +406405 +406406 +406407 +406432 +406433 +406434 +406435 +406436 +406437 +406438 +406439 +406464 +406465 +406466 +406467 +406468 +406469 +406470 +406471 +406496 +406497 +406498 +406499 +406500 +406501 +406502 +406503 +406528 +406529 +406530 +406531 +406532 +406533 +406534 +406535 +406560 +406561 +406562 +406563 +406564 +406565 +406566 +406567 +406592 +406593 +406594 +406595 +406596 +406597 +406598 +406599 +406624 +406625 +406626 +406627 +406628 +406629 +406630 +406631 +406656 +406657 +406658 +406659 +406660 +406661 +406662 +406663 +406688 +406689 +406690 +406691 +406692 +406693 +406694 +406695 +406720 +406721 +406722 +406723 +406724 +406725 +406726 +406727 +406752 +406753 +406754 +406755 +406756 +406757 +406758 +406759 +406784 +406785 +406786 +406787 +406788 +406789 +406790 +406791 +406816 +406817 +406818 +406819 +406820 +406821 +406822 +406823 +406848 +406849 +406850 +406851 +406852 +406853 +406854 +406855 +406880 +406881 +406882 +406883 +406884 +406885 +406886 +406887 +406912 +406913 +406914 +406915 +406916 +406917 +406918 +406919 +406944 +406945 +406946 +406947 +406948 +406949 +406950 +406951 +406976 +406977 +406978 +406979 +406980 +406981 +406982 +406983 +407008 +407009 +407010 +407011 +407012 +407013 +407014 +407015 +407040 +407041 +407042 +407043 +407044 +407045 +407046 +407047 +407072 +407073 +407074 +407075 +407076 +407077 +407078 +407079 +407104 +407105 +407106 +407107 +407108 +407109 +407110 +407111 +407136 +407137 +407138 +407139 +407140 +407141 +407142 +407143 +407168 +407169 +407170 +407171 +407172 +407173 +407174 +407175 +407200 +407201 +407202 +407203 +407204 +407205 +407206 +407207 +407232 +407233 +407234 +407235 +407236 +407237 +407238 +407239 +407264 +407265 +407266 +407267 +407268 +407269 +407270 +407271 +407296 +407297 +407298 +407299 +407300 +407301 +407302 +407303 +407328 +407329 +407330 +407331 +407332 +407333 +407334 +407335 +407360 +407361 +407362 +407363 +407364 +407365 +407366 +407367 +407392 +407393 +407394 +407395 +407396 +407397 +407398 +407399 +407424 +407425 +407426 +407427 +407428 +407429 +407430 +407431 +407456 +407457 +407458 +407459 +407460 +407461 +407462 +407463 +407488 +407489 +407490 +407491 +407492 +407493 +407494 +407495 +407520 +407521 +407522 +407523 +407524 +407525 +407526 +407527 +407552 +407553 +407554 +407555 +407556 +407557 +407558 +407559 +407584 +407585 +407586 +407587 +407588 +407589 +407590 +407591 +407616 +407617 +407618 +407619 +407620 +407621 +407622 +407623 +407648 +407649 +407650 +407651 +407652 +407653 +407654 +407655 +407680 +407681 +407682 +407683 +407684 +407685 +407686 +407687 +407712 +407713 +407714 +407715 +407716 +407717 +407718 +407719 +407744 +407745 +407746 +407747 +407748 +407749 +407750 +407751 +407776 +407777 +407778 +407779 +407780 +407781 +407782 +407783 +407808 +407809 +407810 +407811 +407812 +407813 +407814 +407815 +407840 +407841 +407842 +407843 +407844 +407845 +407846 +407847 +407872 +407873 +407874 +407875 +407876 +407877 +407878 +407879 +407904 +407905 +407906 +407907 +407908 +407909 +407910 +407911 +407936 +407937 +407938 +407939 +407940 +407941 +407942 +407943 +407968 +407969 +407970 +407971 +407972 +407973 +407974 +407975 +408000 +408001 +408002 +408003 +408004 +408005 +408006 +408007 +408032 +408033 +408034 +408035 +408036 +408037 +408038 +408039 +408064 +408065 +408066 +408067 +408068 +408069 +408070 +408071 +408096 +408097 +408098 +408099 +408100 +408101 +408102 +408103 +408128 +408129 +408130 +408131 +408132 +408133 +408134 +408135 +408160 +408161 +408162 +408163 +408164 +408165 +408166 +408167 +408192 +408193 +408194 +408195 +408196 +408197 +408198 +408199 +408224 +408225 +408226 +408227 +408228 +408229 +408230 +408231 +408256 +408257 +408258 +408259 +408260 +408261 +408262 +408263 +408288 +408289 +408290 +408291 +408292 +408293 +408294 +408295 +408320 +408321 +408322 +408323 +408324 +408325 +408326 +408327 +408352 +408353 +408354 +408355 +408356 +408357 +408358 +408359 +408384 +408385 +408386 +408387 +408388 +408389 +408390 +408391 +408416 +408417 +408418 +408419 +408420 +408421 +408422 +408423 +408448 +408449 +408450 +408451 +408452 +408453 +408454 +408455 +408480 +408481 +408482 +408483 +408484 +408485 +408486 +408487 +408512 +408513 +408514 +408515 +408516 +408517 +408518 +408519 +408544 +408545 +408546 +408547 +408548 +408549 +408550 +408551 +408576 +408577 +408578 +408579 +408580 +408581 +408582 +408583 +408608 +408609 +408610 +408611 +408612 +408613 +408614 +408615 +408640 +408641 +408642 +408643 +408644 +408645 +408646 +408647 +408672 +408673 +408674 +408675 +408676 +408677 +408678 +408679 +408704 +408705 +408706 +408707 +408708 +408709 +408710 +408711 +408736 +408737 +408738 +408739 +408740 +408741 +408742 +408743 +408768 +408769 +408770 +408771 +408772 +408773 +408774 +408775 +408800 +408801 +408802 +408803 +408804 +408805 +408806 +408807 +408832 +408833 +408834 +408835 +408836 +408837 +408838 +408839 +408864 +408865 +408866 +408867 +408868 +408869 +408870 +408871 +408896 +408897 +408898 +408899 +408900 +408901 +408902 +408903 +408928 +408929 +408930 +408931 +408932 +408933 +408934 +408935 +408960 +408961 +408962 +408963 +408964 +408965 +408966 +408967 +408992 +408993 +408994 +408995 +408996 +408997 +408998 +408999 +409024 +409025 +409026 +409027 +409028 +409029 +409030 +409031 +409056 +409057 +409058 +409059 +409060 +409061 +409062 +409063 +409088 +409089 +409090 +409091 +409092 +409093 +409094 +409095 +409120 +409121 +409122 +409123 +409124 +409125 +409126 +409127 +409152 +409153 +409154 +409155 +409156 +409157 +409158 +409159 +409184 +409185 +409186 +409187 +409188 +409189 +409190 +409191 +409216 +409217 +409218 +409219 +409220 +409221 +409222 +409223 +409248 +409249 +409250 +409251 +409252 +409253 +409254 +409255 +409280 +409281 +409282 +409283 +409284 +409285 +409286 +409287 +409312 +409313 +409314 +409315 +409316 +409317 +409318 +409319 +409344 +409345 +409346 +409347 +409348 +409349 +409350 +409351 +409376 +409377 +409378 +409379 +409380 +409381 +409382 +409383 +409408 +409409 +409410 +409411 +409412 +409413 +409414 +409415 +409440 +409441 +409442 +409443 +409444 +409445 +409446 +409447 +409472 +409473 +409474 +409475 +409476 +409477 +409478 +409479 +409504 +409505 +409506 +409507 +409508 +409509 +409510 +409511 +409536 +409537 +409538 +409539 +409540 +409541 +409542 +409543 +409568 +409569 +409570 +409571 +409572 +409573 +409574 +409575 +409600 +409601 +409602 +409603 +409604 +409605 +409606 +409607 +409632 +409633 +409634 +409635 +409636 +409637 +409638 +409639 +409664 +409665 +409666 +409667 +409668 +409669 +409670 +409671 +409696 +409697 +409698 +409699 +409700 +409701 +409702 +409703 +409728 +409729 +409730 +409731 +409732 +409733 +409734 +409735 +409760 +409761 +409762 +409763 +409764 +409765 +409766 +409767 +409792 +409793 +409794 +409795 +409796 +409797 +409798 +409799 +409824 +409825 +409826 +409827 +409828 +409829 +409830 +409831 +409856 +409857 +409858 +409859 +409860 +409861 +409862 +409863 +409888 +409889 +409890 +409891 +409892 +409893 +409894 +409895 +409920 +409921 +409922 +409923 +409924 +409925 +409926 +409927 +409952 +409953 +409954 +409955 +409956 +409957 +409958 +409959 +409984 +409985 +409986 +409987 +409988 +409989 +409990 +409991 +410016 +410017 +410018 +410019 +410020 +410021 +410022 +410023 +410048 +410049 +410050 +410051 +410052 +410053 +410054 +410055 +410080 +410081 +410082 +410083 +410084 +410085 +410086 +410087 +410112 +410113 +410114 +410115 +410116 +410117 +410118 +410119 +410144 +410145 +410146 +410147 +410148 +410149 +410150 +410151 +410176 +410177 +410178 +410179 +410180 +410181 +410182 +410183 +410208 +410209 +410210 +410211 +410212 +410213 +410214 +410215 +410240 +410241 +410242 +410243 +410244 +410245 +410246 +410247 +410272 +410273 +410274 +410275 +410276 +410277 +410278 +410279 +410304 +410305 +410306 +410307 +410308 +410309 +410310 +410311 +410336 +410337 +410338 +410339 +410340 +410341 +410342 +410343 +410368 +410369 +410370 +410371 +410372 +410373 +410374 +410375 +410400 +410401 +410402 +410403 +410404 +410405 +410406 +410407 +410432 +410433 +410434 +410435 +410436 +410437 +410438 +410439 +410464 +410465 +410466 +410467 +410468 +410469 +410470 +410471 +410496 +410497 +410498 +410499 +410500 +410501 +410502 +410503 +410528 +410529 +410530 +410531 +410532 +410533 +410534 +410535 +410560 +410561 +410562 +410563 +410564 +410565 +410566 +410567 +410592 +410593 +410594 +410595 +410596 +410597 +410598 +410599 +410624 +410625 +410626 +410627 +410628 +410629 +410630 +410631 +410656 +410657 +410658 +410659 +410660 +410661 +410662 +410663 +410688 +410689 +410690 +410691 +410692 +410693 +410694 +410695 +410720 +410721 +410722 +410723 +410724 +410725 +410726 +410727 +410752 +410753 +410754 +410755 +410756 +410757 +410758 +410759 +410784 +410785 +410786 +410787 +410788 +410789 +410790 +410791 +410816 +410817 +410818 +410819 +410820 +410821 +410822 +410823 +410848 +410849 +410850 +410851 +410852 +410853 +410854 +410855 +410880 +410881 +410882 +410883 +410884 +410885 +410886 +410887 +410912 +410913 +410914 +410915 +410916 +410917 +410918 +410919 +410944 +410945 +410946 +410947 +410948 +410949 +410950 +410951 +410976 +410977 +410978 +410979 +410980 +410981 +410982 +410983 +411008 +411009 +411010 +411011 +411012 +411013 +411014 +411015 +411040 +411041 +411042 +411043 +411044 +411045 +411046 +411047 +411072 +411073 +411074 +411075 +411076 +411077 +411078 +411079 +411104 +411105 +411106 +411107 +411108 +411109 +411110 +411111 +411136 +411137 +411138 +411139 +411140 +411141 +411142 +411143 +411168 +411169 +411170 +411171 +411172 +411173 +411174 +411175 +411200 +411201 +411202 +411203 +411204 +411205 +411206 +411207 +411232 +411233 +411234 +411235 +411236 +411237 +411238 +411239 +411264 +411265 +411266 +411267 +411268 +411269 +411270 +411271 +411296 +411297 +411298 +411299 +411300 +411301 +411302 +411303 +411328 +411329 +411330 +411331 +411332 +411333 +411334 +411335 +411360 +411361 +411362 +411363 +411364 +411365 +411366 +411367 +411392 +411393 +411394 +411395 +411396 +411397 +411398 +411399 +411424 +411425 +411426 +411427 +411428 +411429 +411430 +411431 +411456 +411457 +411458 +411459 +411460 +411461 +411462 +411463 +411488 +411489 +411490 +411491 +411492 +411493 +411494 +411495 +411520 +411521 +411522 +411523 +411524 +411525 +411526 +411527 +411552 +411553 +411554 +411555 +411556 +411557 +411558 +411559 +411584 +411585 +411586 +411587 +411588 +411589 +411590 +411591 +411616 +411617 +411618 +411619 +411620 +411621 +411622 +411623 +411648 +411649 +411650 +411651 +411652 +411653 +411654 +411655 +411680 +411681 +411682 +411683 +411684 +411685 +411686 +411687 +411712 +411713 +411714 +411715 +411716 +411717 +411718 +411719 +411744 +411745 +411746 +411747 +411748 +411749 +411750 +411751 +411776 +411777 +411778 +411779 +411780 +411781 +411782 +411783 +411808 +411809 +411810 +411811 +411812 +411813 +411814 +411815 +411840 +411841 +411842 +411843 +411844 +411845 +411846 +411847 +411872 +411873 +411874 +411875 +411876 +411877 +411878 +411879 +411904 +411905 +411906 +411907 +411908 +411909 +411910 +411911 +411936 +411937 +411938 +411939 +411940 +411941 +411942 +411943 +411968 +411969 +411970 +411971 +411972 +411973 +411974 +411975 +412000 +412001 +412002 +412003 +412004 +412005 +412006 +412007 +412032 +412033 +412034 +412035 +412036 +412037 +412038 +412039 +412064 +412065 +412066 +412067 +412068 +412069 +412070 +412071 +412096 +412097 +412098 +412099 +412100 +412101 +412102 +412103 +412128 +412129 +412130 +412131 +412132 +412133 +412134 +412135 +412160 +412161 +412162 +412163 +412164 +412165 +412166 +412167 +412192 +412193 +412194 +412195 +412196 +412197 +412198 +412199 +412224 +412225 +412226 +412227 +412228 +412229 +412230 +412231 +412256 +412257 +412258 +412259 +412260 +412261 +412262 +412263 +412288 +412289 +412290 +412291 +412292 +412293 +412294 +412295 +412320 +412321 +412322 +412323 +412324 +412325 +412326 +412327 +412352 +412353 +412354 +412355 +412356 +412357 +412358 +412359 +412384 +412385 +412386 +412387 +412388 +412389 +412390 +412391 +412416 +412417 +412418 +412419 +412420 +412421 +412422 +412423 +412448 +412449 +412450 +412451 +412452 +412453 +412454 +412455 +412480 +412481 +412482 +412483 +412484 +412485 +412486 +412487 +412512 +412513 +412514 +412515 +412516 +412517 +412518 +412519 +412544 +412545 +412546 +412547 +412548 +412549 +412550 +412551 +412576 +412577 +412578 +412579 +412580 +412581 +412582 +412583 +412608 +412609 +412610 +412611 +412612 +412613 +412614 +412615 +412640 +412641 +412642 +412643 +412644 +412645 +412646 +412647 +412672 +412673 +412674 +412675 +412676 +412677 +412678 +412679 +412704 +412705 +412706 +412707 +412708 +412709 +412710 +412711 +412736 +412737 +412738 +412739 +412740 +412741 +412742 +412743 +412768 +412769 +412770 +412771 +412772 +412773 +412774 +412775 +412800 +412801 +412802 +412803 +412804 +412805 +412806 +412807 +412832 +412833 +412834 +412835 +412836 +412837 +412838 +412839 +412864 +412865 +412866 +412867 +412868 +412869 +412870 +412871 +412896 +412897 +412898 +412899 +412900 +412901 +412902 +412903 +412928 +412929 +412930 +412931 +412932 +412933 +412934 +412935 +412960 +412961 +412962 +412963 +412964 +412965 +412966 +412967 +412992 +412993 +412994 +412995 +412996 +412997 +412998 +412999 +413024 +413025 +413026 +413027 +413028 +413029 +413030 +413031 +413056 +413057 +413058 +413059 +413060 +413061 +413062 +413063 +413088 +413089 +413090 +413091 +413092 +413093 +413094 +413095 +413120 +413121 +413122 +413123 +413124 +413125 +413126 +413127 +413152 +413153 +413154 +413155 +413156 +413157 +413158 +413159 +413184 +413185 +413186 +413187 +413188 +413189 +413190 +413191 +413216 +413217 +413218 +413219 +413220 +413221 +413222 +413223 +413248 +413249 +413250 +413251 +413252 +413253 +413254 +413255 +413280 +413281 +413282 +413283 +413284 +413285 +413286 +413287 +413312 +413313 +413314 +413315 +413316 +413317 +413318 +413319 +413344 +413345 +413346 +413347 +413348 +413349 +413350 +413351 +413376 +413377 +413378 +413379 +413380 +413381 +413382 +413383 +413408 +413409 +413410 +413411 +413412 +413413 +413414 +413415 +413440 +413441 +413442 +413443 +413444 +413445 +413446 +413447 +413472 +413473 +413474 +413475 +413476 +413477 +413478 +413479 +413504 +413505 +413506 +413507 +413508 +413509 +413510 +413511 +413536 +413537 +413538 +413539 +413540 +413541 +413542 +413543 +413568 +413569 +413570 +413571 +413572 +413573 +413574 +413575 +413600 +413601 +413602 +413603 +413604 +413605 +413606 +413607 +413632 +413633 +413634 +413635 +413636 +413637 +413638 +413639 +413664 +413665 +413666 +413667 +413668 +413669 +413670 +413671 +413696 +413697 +413698 +413699 +413700 +413701 +413702 +413703 +413728 +413729 +413730 +413731 +413732 +413733 +413734 +413735 +413760 +413761 +413762 +413763 +413764 +413765 +413766 +413767 +413792 +413793 +413794 +413795 +413796 +413797 +413798 +413799 +413824 +413825 +413826 +413827 +413828 +413829 +413830 +413831 +413856 +413857 +413858 +413859 +413860 +413861 +413862 +413863 +413888 +413889 +413890 +413891 +413892 +413893 +413894 +413895 +413920 +413921 +413922 +413923 +413924 +413925 +413926 +413927 +413952 +413953 +413954 +413955 +413956 +413957 +413958 +413959 +413984 +413985 +413986 +413987 +413988 +413989 +413990 +413991 +414016 +414017 +414018 +414019 +414020 +414021 +414022 +414023 +414048 +414049 +414050 +414051 +414052 +414053 +414054 +414055 +414080 +414081 +414082 +414083 +414084 +414085 +414086 +414087 +414112 +414113 +414114 +414115 +414116 +414117 +414118 +414119 +414144 +414145 +414146 +414147 +414148 +414149 +414150 +414151 +414176 +414177 +414178 +414179 +414180 +414181 +414182 +414183 +414208 +414209 +414210 +414211 +414212 +414213 +414214 +414215 +414240 +414241 +414242 +414243 +414244 +414245 +414246 +414247 +414272 +414273 +414274 +414275 +414276 +414277 +414278 +414279 +414304 +414305 +414306 +414307 +414308 +414309 +414310 +414311 +414336 +414337 +414338 +414339 +414340 +414341 +414342 +414343 +414368 +414369 +414370 +414371 +414372 +414373 +414374 +414375 +414400 +414401 +414402 +414403 +414404 +414405 +414406 +414407 +414432 +414433 +414434 +414435 +414436 +414437 +414438 +414439 +414464 +414465 +414466 +414467 +414468 +414469 +414470 +414471 +414496 +414497 +414498 +414499 +414500 +414501 +414502 +414503 +414528 +414529 +414530 +414531 +414532 +414533 +414534 +414535 +414560 +414561 +414562 +414563 +414564 +414565 +414566 +414567 +414592 +414593 +414594 +414595 +414596 +414597 +414598 +414599 +414624 +414625 +414626 +414627 +414628 +414629 +414630 +414631 +414656 +414657 +414658 +414659 +414660 +414661 +414662 +414663 +414688 +414689 +414690 +414691 +414692 +414693 +414694 +414695 +414720 +414721 +414722 +414723 +414724 +414725 +414726 +414727 +414752 +414753 +414754 +414755 +414756 +414757 +414758 +414759 +414784 +414785 +414786 +414787 +414788 +414789 +414790 +414791 +414816 +414817 +414818 +414819 +414820 +414821 +414822 +414823 +414848 +414849 +414850 +414851 +414852 +414853 +414854 +414855 +414880 +414881 +414882 +414883 +414884 +414885 +414886 +414887 +414912 +414913 +414914 +414915 +414916 +414917 +414918 +414919 +414944 +414945 +414946 +414947 +414948 +414949 +414950 +414951 +414976 +414977 +414978 +414979 +414980 +414981 +414982 +414983 +415008 +415009 +415010 +415011 +415012 +415013 +415014 +415015 +415040 +415041 +415042 +415043 +415044 +415045 +415046 +415047 +415072 +415073 +415074 +415075 +415076 +415077 +415078 +415079 +415104 +415105 +415106 +415107 +415108 +415109 +415110 +415111 +415136 +415137 +415138 +415139 +415140 +415141 +415142 +415143 +415168 +415169 +415170 +415171 +415172 +415173 +415174 +415175 +415200 +415201 +415202 +415203 +415204 +415205 +415206 +415207 +415232 +415233 +415234 +415235 +415236 +415237 +415238 +415239 +415264 +415265 +415266 +415267 +415268 +415269 +415270 +415271 +415296 +415297 +415298 +415299 +415300 +415301 +415302 +415303 +415328 +415329 +415330 +415331 +415332 +415333 +415334 +415335 +415360 +415361 +415362 +415363 +415364 +415365 +415366 +415367 +415392 +415393 +415394 +415395 +415396 +415397 +415398 +415399 +415424 +415425 +415426 +415427 +415428 +415429 +415430 +415431 +415456 +415457 +415458 +415459 +415460 +415461 +415462 +415463 +415488 +415489 +415490 +415491 +415492 +415493 +415494 +415495 +415520 +415521 +415522 +415523 +415524 +415525 +415526 +415527 +415552 +415553 +415554 +415555 +415556 +415557 +415558 +415559 +415584 +415585 +415586 +415587 +415588 +415589 +415590 +415591 +415616 +415617 +415618 +415619 +415620 +415621 +415622 +415623 +415648 +415649 +415650 +415651 +415652 +415653 +415654 +415655 +415680 +415681 +415682 +415683 +415684 +415685 +415686 +415687 +415712 +415713 +415714 +415715 +415716 +415717 +415718 +415719 +415744 +415745 +415746 +415747 +415748 +415749 +415750 +415751 +415776 +415777 +415778 +415779 +415780 +415781 +415782 +415783 +415808 +415809 +415810 +415811 +415812 +415813 +415814 +415815 +415840 +415841 +415842 +415843 +415844 +415845 +415846 +415847 +415872 +415873 +415874 +415875 +415876 +415877 +415878 +415879 +415904 +415905 +415906 +415907 +415908 +415909 +415910 +415911 +415936 +415937 +415938 +415939 +415940 +415941 +415942 +415943 +415968 +415969 +415970 +415971 +415972 +415973 +415974 +415975 +416000 +416001 +416002 +416003 +416004 +416005 +416006 +416007 +416032 +416033 +416034 +416035 +416036 +416037 +416038 +416039 +416064 +416065 +416066 +416067 +416068 +416069 +416070 +416071 +416096 +416097 +416098 +416099 +416100 +416101 +416102 +416103 +416128 +416129 +416130 +416131 +416132 +416133 +416134 +416135 +416160 +416161 +416162 +416163 +416164 +416165 +416166 +416167 +416192 +416193 +416194 +416195 +416196 +416197 +416198 +416199 +416224 +416225 +416226 +416227 +416228 +416229 +416230 +416231 +416256 +416257 +416258 +416259 +416260 +416261 +416262 +416263 +416288 +416289 +416290 +416291 +416292 +416293 +416294 +416295 +416320 +416321 +416322 +416323 +416324 +416325 +416326 +416327 +416352 +416353 +416354 +416355 +416356 +416357 +416358 +416359 +416384 +416385 +416386 +416387 +416388 +416389 +416390 +416391 +416416 +416417 +416418 +416419 +416420 +416421 +416422 +416423 +416448 +416449 +416450 +416451 +416452 +416453 +416454 +416455 +416480 +416481 +416482 +416483 +416484 +416485 +416486 +416487 +416512 +416513 +416514 +416515 +416516 +416517 +416518 +416519 +416544 +416545 +416546 +416547 +416548 +416549 +416550 +416551 +416576 +416577 +416578 +416579 +416580 +416581 +416582 +416583 +416608 +416609 +416610 +416611 +416612 +416613 +416614 +416615 +416640 +416641 +416642 +416643 +416644 +416645 +416646 +416647 +416672 +416673 +416674 +416675 +416676 +416677 +416678 +416679 +416704 +416705 +416706 +416707 +416708 +416709 +416710 +416711 +416736 +416737 +416738 +416739 +416740 +416741 +416742 +416743 +416768 +416769 +416770 +416771 +416772 +416773 +416774 +416775 +416800 +416801 +416802 +416803 +416804 +416805 +416806 +416807 +416832 +416833 +416834 +416835 +416836 +416837 +416838 +416839 +416864 +416865 +416866 +416867 +416868 +416869 +416870 +416871 +416896 +416897 +416898 +416899 +416900 +416901 +416902 +416903 +416928 +416929 +416930 +416931 +416932 +416933 +416934 +416935 +416960 +416961 +416962 +416963 +416964 +416965 +416966 +416967 +416992 +416993 +416994 +416995 +416996 +416997 +416998 +416999 +417024 +417025 +417026 +417027 +417028 +417029 +417030 +417031 +417056 +417057 +417058 +417059 +417060 +417061 +417062 +417063 +417088 +417089 +417090 +417091 +417092 +417093 +417094 +417095 +417120 +417121 +417122 +417123 +417124 +417125 +417126 +417127 +417152 +417153 +417154 +417155 +417156 +417157 +417158 +417159 +417184 +417185 +417186 +417187 +417188 +417189 +417190 +417191 +417216 +417217 +417218 +417219 +417220 +417221 +417222 +417223 +417248 +417249 +417250 +417251 +417252 +417253 +417254 +417255 +417280 +417281 +417282 +417283 +417284 +417285 +417286 +417287 +417312 +417313 +417314 +417315 +417316 +417317 +417318 +417319 +417344 +417345 +417346 +417347 +417348 +417349 +417350 +417351 +417376 +417377 +417378 +417379 +417380 +417381 +417382 +417383 +417408 +417409 +417410 +417411 +417412 +417413 +417414 +417415 +417440 +417441 +417442 +417443 +417444 +417445 +417446 +417447 +417472 +417473 +417474 +417475 +417476 +417477 +417478 +417479 +417504 +417505 +417506 +417507 +417508 +417509 +417510 +417511 +417536 +417537 +417538 +417539 +417540 +417541 +417542 +417543 +417568 +417569 +417570 +417571 +417572 +417573 +417574 +417575 +417600 +417601 +417602 +417603 +417604 +417605 +417606 +417607 +417632 +417633 +417634 +417635 +417636 +417637 +417638 +417639 +417664 +417665 +417666 +417667 +417668 +417669 +417670 +417671 +417696 +417697 +417698 +417699 +417700 +417701 +417702 +417703 +417728 +417729 +417730 +417731 +417732 +417733 +417734 +417735 +417760 +417761 +417762 +417763 +417764 +417765 +417766 +417767 +417792 +417793 +417794 +417795 +417796 +417797 +417798 +417799 +417824 +417825 +417826 +417827 +417828 +417829 +417830 +417831 +417856 +417857 +417858 +417859 +417860 +417861 +417862 +417863 +417888 +417889 +417890 +417891 +417892 +417893 +417894 +417895 +417920 +417921 +417922 +417923 +417924 +417925 +417926 +417927 +417952 +417953 +417954 +417955 +417956 +417957 +417958 +417959 +417984 +417985 +417986 +417987 +417988 +417989 +417990 +417991 +418016 +418017 +418018 +418019 +418020 +418021 +418022 +418023 +418048 +418049 +418050 +418051 +418052 +418053 +418054 +418055 +418080 +418081 +418082 +418083 +418084 +418085 +418086 +418087 +418112 +418113 +418114 +418115 +418116 +418117 +418118 +418119 +418144 +418145 +418146 +418147 +418148 +418149 +418150 +418151 +418176 +418177 +418178 +418179 +418180 +418181 +418182 +418183 +418208 +418209 +418210 +418211 +418212 +418213 +418214 +418215 +418240 +418241 +418242 +418243 +418244 +418245 +418246 +418247 +418272 +418273 +418274 +418275 +418276 +418277 +418278 +418279 +418304 +418305 +418306 +418307 +418308 +418309 +418310 +418311 +418336 +418337 +418338 +418339 +418340 +418341 +418342 +418343 +418368 +418369 +418370 +418371 +418372 +418373 +418374 +418375 +418400 +418401 +418402 +418403 +418404 +418405 +418406 +418407 +418432 +418433 +418434 +418435 +418436 +418437 +418438 +418439 +418464 +418465 +418466 +418467 +418468 +418469 +418470 +418471 +418496 +418497 +418498 +418499 +418500 +418501 +418502 +418503 +418528 +418529 +418530 +418531 +418532 +418533 +418534 +418535 +418560 +418561 +418562 +418563 +418564 +418565 +418566 +418567 +418592 +418593 +418594 +418595 +418596 +418597 +418598 +418599 +418624 +418625 +418626 +418627 +418628 +418629 +418630 +418631 +418656 +418657 +418658 +418659 +418660 +418661 +418662 +418663 +418688 +418689 +418690 +418691 +418692 +418693 +418694 +418695 +418720 +418721 +418722 +418723 +418724 +418725 +418726 +418727 +418752 +418753 +418754 +418755 +418756 +418757 +418758 +418759 +418784 +418785 +418786 +418787 +418788 +418789 +418790 +418791 +418816 +418817 +418818 +418819 +418820 +418821 +418822 +418823 +418848 +418849 +418850 +418851 +418852 +418853 +418854 +418855 +418880 +418881 +418882 +418883 +418884 +418885 +418886 +418887 +418912 +418913 +418914 +418915 +418916 +418917 +418918 +418919 +418944 +418945 +418946 +418947 +418948 +418949 +418950 +418951 +418976 +418977 +418978 +418979 +418980 +418981 +418982 +418983 +419008 +419009 +419010 +419011 +419012 +419013 +419014 +419015 +419040 +419041 +419042 +419043 +419044 +419045 +419046 +419047 +419072 +419073 +419074 +419075 +419076 +419077 +419078 +419079 +419104 +419105 +419106 +419107 +419108 +419109 +419110 +419111 +419136 +419137 +419138 +419139 +419140 +419141 +419142 +419143 +419168 +419169 +419170 +419171 +419172 +419173 +419174 +419175 +419200 +419201 +419202 +419203 +419204 +419205 +419206 +419207 +419232 +419233 +419234 +419235 +419236 +419237 +419238 +419239 +419264 +419265 +419266 +419267 +419268 +419269 +419270 +419271 +419296 +419297 +419298 +419299 +419300 +419301 +419302 +419303 +419328 +419329 +419330 +419331 +419332 +419333 +419334 +419335 +419360 +419361 +419362 +419363 +419364 +419365 +419366 +419367 +419392 +419393 +419394 +419395 +419396 +419397 +419398 +419399 +419424 +419425 +419426 +419427 +419428 +419429 +419430 +419431 +419456 +419457 +419458 +419459 +419460 +419461 +419462 +419463 +419488 +419489 +419490 +419491 +419492 +419493 +419494 +419495 +419520 +419521 +419522 +419523 +419524 +419525 +419526 +419527 +419552 +419553 +419554 +419555 +419556 +419557 +419558 +419559 +419584 +419585 +419586 +419587 +419588 +419589 +419590 +419591 +419616 +419617 +419618 +419619 +419620 +419621 +419622 +419623 +419648 +419649 +419650 +419651 +419652 +419653 +419654 +419655 +419680 +419681 +419682 +419683 +419684 +419685 +419686 +419687 +419712 +419713 +419714 +419715 +419716 +419717 +419718 +419719 +419744 +419745 +419746 +419747 +419748 +419749 +419750 +419751 +419776 +419777 +419778 +419779 +419780 +419781 +419782 +419783 +419808 +419809 +419810 +419811 +419812 +419813 +419814 +419815 +419840 +419841 +419842 +419843 +419844 +419845 +419846 +419847 +419872 +419873 +419874 +419875 +419876 +419877 +419878 +419879 +419904 +419905 +419906 +419907 +419908 +419909 +419910 +419911 +419936 +419937 +419938 +419939 +419940 +419941 +419942 +419943 +419968 +419969 +419970 +419971 +419972 +419973 +419974 +419975 +420000 +420001 +420002 +420003 +420004 +420005 +420006 +420007 +420032 +420033 +420034 +420035 +420036 +420037 +420038 +420039 +420064 +420065 +420066 +420067 +420068 +420069 +420070 +420071 +420096 +420097 +420098 +420099 +420100 +420101 +420102 +420103 +420128 +420129 +420130 +420131 +420132 +420133 +420134 +420135 +420160 +420161 +420162 +420163 +420164 +420165 +420166 +420167 +420192 +420193 +420194 +420195 +420196 +420197 +420198 +420199 +420224 +420225 +420226 +420227 +420228 +420229 +420230 +420231 +420256 +420257 +420258 +420259 +420260 +420261 +420262 +420263 +420288 +420289 +420290 +420291 +420292 +420293 +420294 +420295 +420320 +420321 +420322 +420323 +420324 +420325 +420326 +420327 +420352 +420353 +420354 +420355 +420356 +420357 +420358 +420359 +420384 +420385 +420386 +420387 +420388 +420389 +420390 +420391 +420416 +420417 +420418 +420419 +420420 +420421 +420422 +420423 +420448 +420449 +420450 +420451 +420452 +420453 +420454 +420455 +420480 +420481 +420482 +420483 +420484 +420485 +420486 +420487 +420512 +420513 +420514 +420515 +420516 +420517 +420518 +420519 +420544 +420545 +420546 +420547 +420548 +420549 +420550 +420551 +420576 +420577 +420578 +420579 +420580 +420581 +420582 +420583 +420608 +420609 +420610 +420611 +420612 +420613 +420614 +420615 +420640 +420641 +420642 +420643 +420644 +420645 +420646 +420647 +420672 +420673 +420674 +420675 +420676 +420677 +420678 +420679 +420704 +420705 +420706 +420707 +420708 +420709 +420710 +420711 +420736 +420737 +420738 +420739 +420740 +420741 +420742 +420743 +420768 +420769 +420770 +420771 +420772 +420773 +420774 +420775 +420800 +420801 +420802 +420803 +420804 +420805 +420806 +420807 +420832 +420833 +420834 +420835 +420836 +420837 +420838 +420839 +420864 +420865 +420866 +420867 +420868 +420869 +420870 +420871 +420896 +420897 +420898 +420899 +420900 +420901 +420902 +420903 +420928 +420929 +420930 +420931 +420932 +420933 +420934 +420935 +420960 +420961 +420962 +420963 +420964 +420965 +420966 +420967 +420992 +420993 +420994 +420995 +420996 +420997 +420998 +420999 +421024 +421025 +421026 +421027 +421028 +421029 +421030 +421031 +421056 +421057 +421058 +421059 +421060 +421061 +421062 +421063 +421088 +421089 +421090 +421091 +421092 +421093 +421094 +421095 +421120 +421121 +421122 +421123 +421124 +421125 +421126 +421127 +421152 +421153 +421154 +421155 +421156 +421157 +421158 +421159 +421184 +421185 +421186 +421187 +421188 +421189 +421190 +421191 +421216 +421217 +421218 +421219 +421220 +421221 +421222 +421223 +421248 +421249 +421250 +421251 +421252 +421253 +421254 +421255 +421280 +421281 +421282 +421283 +421284 +421285 +421286 +421287 +421312 +421313 +421314 +421315 +421316 +421317 +421318 +421319 +421344 +421345 +421346 +421347 +421348 +421349 +421350 +421351 +421376 +421377 +421378 +421379 +421380 +421381 +421382 +421383 +421408 +421409 +421410 +421411 +421412 +421413 +421414 +421415 +421440 +421441 +421442 +421443 +421444 +421445 +421446 +421447 +421472 +421473 +421474 +421475 +421476 +421477 +421478 +421479 +421504 +421505 +421506 +421507 +421508 +421509 +421510 +421511 +421536 +421537 +421538 +421539 +421540 +421541 +421542 +421543 +421568 +421569 +421570 +421571 +421572 +421573 +421574 +421575 +421600 +421601 +421602 +421603 +421604 +421605 +421606 +421607 +421632 +421633 +421634 +421635 +421636 +421637 +421638 +421639 +421664 +421665 +421666 +421667 +421668 +421669 +421670 +421671 +421696 +421697 +421698 +421699 +421700 +421701 +421702 +421703 +421728 +421729 +421730 +421731 +421732 +421733 +421734 +421735 +421760 +421761 +421762 +421763 +421764 +421765 +421766 +421767 +421792 +421793 +421794 +421795 +421796 +421797 +421798 +421799 +421824 +421825 +421826 +421827 +421828 +421829 +421830 +421831 +421856 +421857 +421858 +421859 +421860 +421861 +421862 +421863 +421888 +421889 +421890 +421891 +421892 +421893 +421894 +421895 +421920 +421921 +421922 +421923 +421924 +421925 +421926 +421927 +421952 +421953 +421954 +421955 +421956 +421957 +421958 +421959 +421984 +421985 +421986 +421987 +421988 +421989 +421990 +421991 +422016 +422017 +422018 +422019 +422020 +422021 +422022 +422023 +422048 +422049 +422050 +422051 +422052 +422053 +422054 +422055 +422080 +422081 +422082 +422083 +422084 +422085 +422086 +422087 +422112 +422113 +422114 +422115 +422116 +422117 +422118 +422119 +422144 +422145 +422146 +422147 +422148 +422149 +422150 +422151 +422176 +422177 +422178 +422179 +422180 +422181 +422182 +422183 +422208 +422209 +422210 +422211 +422212 +422213 +422214 +422215 +422240 +422241 +422242 +422243 +422244 +422245 +422246 +422247 +422272 +422273 +422274 +422275 +422276 +422277 +422278 +422279 +422304 +422305 +422306 +422307 +422308 +422309 +422310 +422311 +422336 +422337 +422338 +422339 +422340 +422341 +422342 +422343 +422368 +422369 +422370 +422371 +422372 +422373 +422374 +422375 +422400 +422401 +422402 +422403 +422404 +422405 +422406 +422407 +422432 +422433 +422434 +422435 +422436 +422437 +422438 +422439 +422464 +422465 +422466 +422467 +422468 +422469 +422470 +422471 +422496 +422497 +422498 +422499 +422500 +422501 +422502 +422503 +422528 +422529 +422530 +422531 +422532 +422533 +422534 +422535 +422560 +422561 +422562 +422563 +422564 +422565 +422566 +422567 +422592 +422593 +422594 +422595 +422596 +422597 +422598 +422599 +422624 +422625 +422626 +422627 +422628 +422629 +422630 +422631 +422656 +422657 +422658 +422659 +422660 +422661 +422662 +422663 +422688 +422689 +422690 +422691 +422692 +422693 +422694 +422695 +422720 +422721 +422722 +422723 +422724 +422725 +422726 +422727 +422752 +422753 +422754 +422755 +422756 +422757 +422758 +422759 +422784 +422785 +422786 +422787 +422788 +422789 +422790 +422791 +422816 +422817 +422818 +422819 +422820 +422821 +422822 +422823 +422848 +422849 +422850 +422851 +422852 +422853 +422854 +422855 +422880 +422881 +422882 +422883 +422884 +422885 +422886 +422887 +422912 +422913 +422914 +422915 +422916 +422917 +422918 +422919 +422944 +422945 +422946 +422947 +422948 +422949 +422950 +422951 +422976 +422977 +422978 +422979 +422980 +422981 +422982 +422983 +423008 +423009 +423010 +423011 +423012 +423013 +423014 +423015 +423040 +423041 +423042 +423043 +423044 +423045 +423046 +423047 +423072 +423073 +423074 +423075 +423076 +423077 +423078 +423079 +423104 +423105 +423106 +423107 +423108 +423109 +423110 +423111 +423136 +423137 +423138 +423139 +423140 +423141 +423142 +423143 +423168 +423169 +423170 +423171 +423172 +423173 +423174 +423175 +423200 +423201 +423202 +423203 +423204 +423205 +423206 +423207 +423232 +423233 +423234 +423235 +423236 +423237 +423238 +423239 +423264 +423265 +423266 +423267 +423268 +423269 +423270 +423271 +423296 +423297 +423298 +423299 +423300 +423301 +423302 +423303 +423328 +423329 +423330 +423331 +423332 +423333 +423334 +423335 +423360 +423361 +423362 +423363 +423364 +423365 +423366 +423367 +423392 +423393 +423394 +423395 +423396 +423397 +423398 +423399 +423424 +423425 +423426 +423427 +423428 +423429 +423430 +423431 +423456 +423457 +423458 +423459 +423460 +423461 +423462 +423463 +423488 +423489 +423490 +423491 +423492 +423493 +423494 +423495 +423520 +423521 +423522 +423523 +423524 +423525 +423526 +423527 +423552 +423553 +423554 +423555 +423556 +423557 +423558 +423559 +423584 +423585 +423586 +423587 +423588 +423589 +423590 +423591 +423616 +423617 +423618 +423619 +423620 +423621 +423622 +423623 +423648 +423649 +423650 +423651 +423652 +423653 +423654 +423655 +423680 +423681 +423682 +423683 +423684 +423685 +423686 +423687 +423712 +423713 +423714 +423715 +423716 +423717 +423718 +423719 +423744 +423745 +423746 +423747 +423748 +423749 +423750 +423751 +423776 +423777 +423778 +423779 +423780 +423781 +423782 +423783 +423808 +423809 +423810 +423811 +423812 +423813 +423814 +423815 +423840 +423841 +423842 +423843 +423844 +423845 +423846 +423847 +423872 +423873 +423874 +423875 +423876 +423877 +423878 +423879 +423904 +423905 +423906 +423907 +423908 +423909 +423910 +423911 +423936 +423937 +423938 +423939 +423940 +423941 +423942 +423943 +423968 +423969 +423970 +423971 +423972 +423973 +423974 +423975 +424000 +424001 +424002 +424003 +424004 +424005 +424006 +424007 +424032 +424033 +424034 +424035 +424036 +424037 +424038 +424039 +424064 +424065 +424066 +424067 +424068 +424069 +424070 +424071 +424096 +424097 +424098 +424099 +424100 +424101 +424102 +424103 +424128 +424129 +424130 +424131 +424132 +424133 +424134 +424135 +424160 +424161 +424162 +424163 +424164 +424165 +424166 +424167 +424192 +424193 +424194 +424195 +424196 +424197 +424198 +424199 +424224 +424225 +424226 +424227 +424228 +424229 +424230 +424231 +424256 +424257 +424258 +424259 +424260 +424261 +424262 +424263 +424288 +424289 +424290 +424291 +424292 +424293 +424294 +424295 +424320 +424321 +424322 +424323 +424324 +424325 +424326 +424327 +424352 +424353 +424354 +424355 +424356 +424357 +424358 +424359 +424384 +424385 +424386 +424387 +424388 +424389 +424390 +424391 +424416 +424417 +424418 +424419 +424420 +424421 +424422 +424423 +424448 +424449 +424450 +424451 +424452 +424453 +424454 +424455 +424480 +424481 +424482 +424483 +424484 +424485 +424486 +424487 +424512 +424513 +424514 +424515 +424516 +424517 +424518 +424519 +424544 +424545 +424546 +424547 +424548 +424549 +424550 +424551 +424576 +424577 +424578 +424579 +424580 +424581 +424582 +424583 +424608 +424609 +424610 +424611 +424612 +424613 +424614 +424615 +424640 +424641 +424642 +424643 +424644 +424645 +424646 +424647 +424672 +424673 +424674 +424675 +424676 +424677 +424678 +424679 +424704 +424705 +424706 +424707 +424708 +424709 +424710 +424711 +424736 +424737 +424738 +424739 +424740 +424741 +424742 +424743 +424768 +424769 +424770 +424771 +424772 +424773 +424774 +424775 +424800 +424801 +424802 +424803 +424804 +424805 +424806 +424807 +424832 +424833 +424834 +424835 +424836 +424837 +424838 +424839 +424864 +424865 +424866 +424867 +424868 +424869 +424870 +424871 +424896 +424897 +424898 +424899 +424900 +424901 +424902 +424903 +424928 +424929 +424930 +424931 +424932 +424933 +424934 +424935 +424960 +424961 +424962 +424963 +424964 +424965 +424966 +424967 +424992 +424993 +424994 +424995 +424996 +424997 +424998 +424999 +425024 +425025 +425026 +425027 +425028 +425029 +425030 +425031 +425056 +425057 +425058 +425059 +425060 +425061 +425062 +425063 +425088 +425089 +425090 +425091 +425092 +425093 +425094 +425095 +425120 +425121 +425122 +425123 +425124 +425125 +425126 +425127 +425152 +425153 +425154 +425155 +425156 +425157 +425158 +425159 +425184 +425185 +425186 +425187 +425188 +425189 +425190 +425191 +425216 +425217 +425218 +425219 +425220 +425221 +425222 +425223 +425248 +425249 +425250 +425251 +425252 +425253 +425254 +425255 +425280 +425281 +425282 +425283 +425284 +425285 +425286 +425287 +425312 +425313 +425314 +425315 +425316 +425317 +425318 +425319 +425344 +425345 +425346 +425347 +425348 +425349 +425350 +425351 +425376 +425377 +425378 +425379 +425380 +425381 +425382 +425383 +425408 +425409 +425410 +425411 +425412 +425413 +425414 +425415 +425440 +425441 +425442 +425443 +425444 +425445 +425446 +425447 +425472 +425473 +425474 +425475 +425476 +425477 +425478 +425479 +425504 +425505 +425506 +425507 +425508 +425509 +425510 +425511 +425536 +425537 +425538 +425539 +425540 +425541 +425542 +425543 +425568 +425569 +425570 +425571 +425572 +425573 +425574 +425575 +425600 +425601 +425602 +425603 +425604 +425605 +425606 +425607 +425632 +425633 +425634 +425635 +425636 +425637 +425638 +425639 +425664 +425665 +425666 +425667 +425668 +425669 +425670 +425671 +425696 +425697 +425698 +425699 +425700 +425701 +425702 +425703 +425728 +425729 +425730 +425731 +425732 +425733 +425734 +425735 +425760 +425761 +425762 +425763 +425764 +425765 +425766 +425767 +425792 +425793 +425794 +425795 +425796 +425797 +425798 +425799 +425824 +425825 +425826 +425827 +425828 +425829 +425830 +425831 +425856 +425857 +425858 +425859 +425860 +425861 +425862 +425863 +425888 +425889 +425890 +425891 +425892 +425893 +425894 +425895 +425920 +425921 +425922 +425923 +425924 +425925 +425926 +425927 +425952 +425953 +425954 +425955 +425956 +425957 +425958 +425959 +425984 +425985 +425986 +425987 +425988 +425989 +425990 +425991 +426016 +426017 +426018 +426019 +426020 +426021 +426022 +426023 +426048 +426049 +426050 +426051 +426052 +426053 +426054 +426055 +426080 +426081 +426082 +426083 +426084 +426085 +426086 +426087 +426112 +426113 +426114 +426115 +426116 +426117 +426118 +426119 +426144 +426145 +426146 +426147 +426148 +426149 +426150 +426151 +426176 +426177 +426178 +426179 +426180 +426181 +426182 +426183 +426208 +426209 +426210 +426211 +426212 +426213 +426214 +426215 +426240 +426241 +426242 +426243 +426244 +426245 +426246 +426247 +426272 +426273 +426274 +426275 +426276 +426277 +426278 +426279 +426304 +426305 +426306 +426307 +426308 +426309 +426310 +426311 +426336 +426337 +426338 +426339 +426340 +426341 +426342 +426343 +426368 +426369 +426370 +426371 +426372 +426373 +426374 +426375 +426400 +426401 +426402 +426403 +426404 +426405 +426406 +426407 +426432 +426433 +426434 +426435 +426436 +426437 +426438 +426439 +426464 +426465 +426466 +426467 +426468 +426469 +426470 +426471 +426496 +426497 +426498 +426499 +426500 +426501 +426502 +426503 +426528 +426529 +426530 +426531 +426532 +426533 +426534 +426535 +426560 +426561 +426562 +426563 +426564 +426565 +426566 +426567 +426592 +426593 +426594 +426595 +426596 +426597 +426598 +426599 +426624 +426625 +426626 +426627 +426628 +426629 +426630 +426631 +426656 +426657 +426658 +426659 +426660 +426661 +426662 +426663 +426688 +426689 +426690 +426691 +426692 +426693 +426694 +426695 +426720 +426721 +426722 +426723 +426724 +426725 +426726 +426727 +426752 +426753 +426754 +426755 +426756 +426757 +426758 +426759 +426784 +426785 +426786 +426787 +426788 +426789 +426790 +426791 +426816 +426817 +426818 +426819 +426820 +426821 +426822 +426823 +426848 +426849 +426850 +426851 +426852 +426853 +426854 +426855 +426880 +426881 +426882 +426883 +426884 +426885 +426886 +426887 +426912 +426913 +426914 +426915 +426916 +426917 +426918 +426919 +426944 +426945 +426946 +426947 +426948 +426949 +426950 +426951 +426976 +426977 +426978 +426979 +426980 +426981 +426982 +426983 +427008 +427009 +427010 +427011 +427012 +427013 +427014 +427015 +427040 +427041 +427042 +427043 +427044 +427045 +427046 +427047 +427072 +427073 +427074 +427075 +427076 +427077 +427078 +427079 +427104 +427105 +427106 +427107 +427108 +427109 +427110 +427111 +427136 +427137 +427138 +427139 +427140 +427141 +427142 +427143 +427168 +427169 +427170 +427171 +427172 +427173 +427174 +427175 +427200 +427201 +427202 +427203 +427204 +427205 +427206 +427207 +427232 +427233 +427234 +427235 +427236 +427237 +427238 +427239 +427264 +427265 +427266 +427267 +427268 +427269 +427270 +427271 +427296 +427297 +427298 +427299 +427300 +427301 +427302 +427303 +427328 +427329 +427330 +427331 +427332 +427333 +427334 +427335 +427360 +427361 +427362 +427363 +427364 +427365 +427366 +427367 +427392 +427393 +427394 +427395 +427396 +427397 +427398 +427399 +427424 +427425 +427426 +427427 +427428 +427429 +427430 +427431 +427456 +427457 +427458 +427459 +427460 +427461 +427462 +427463 +427488 +427489 +427490 +427491 +427492 +427493 +427494 +427495 +427520 +427521 +427522 +427523 +427524 +427525 +427526 +427527 +427552 +427553 +427554 +427555 +427556 +427557 +427558 +427559 +427584 +427585 +427586 +427587 +427588 +427589 +427590 +427591 +427616 +427617 +427618 +427619 +427620 +427621 +427622 +427623 +427648 +427649 +427650 +427651 +427652 +427653 +427654 +427655 +427680 +427681 +427682 +427683 +427684 +427685 +427686 +427687 +427712 +427713 +427714 +427715 +427716 +427717 +427718 +427719 +427744 +427745 +427746 +427747 +427748 +427749 +427750 +427751 +427776 +427777 +427778 +427779 +427780 +427781 +427782 +427783 +427808 +427809 +427810 +427811 +427812 +427813 +427814 +427815 +427840 +427841 +427842 +427843 +427844 +427845 +427846 +427847 +427872 +427873 +427874 +427875 +427876 +427877 +427878 +427879 +427904 +427905 +427906 +427907 +427908 +427909 +427910 +427911 +427936 +427937 +427938 +427939 +427940 +427941 +427942 +427943 +427968 +427969 +427970 +427971 +427972 +427973 +427974 +427975 +428000 +428001 +428002 +428003 +428004 +428005 +428006 +428007 +428032 +428033 +428034 +428035 +428036 +428037 +428038 +428039 +428064 +428065 +428066 +428067 +428068 +428069 +428070 +428071 +428096 +428097 +428098 +428099 +428100 +428101 +428102 +428103 +428128 +428129 +428130 +428131 +428132 +428133 +428134 +428135 +428160 +428161 +428162 +428163 +428164 +428165 +428166 +428167 +428192 +428193 +428194 +428195 +428196 +428197 +428198 +428199 +428224 +428225 +428226 +428227 +428228 +428229 +428230 +428231 +428256 +428257 +428258 +428259 +428260 +428261 +428262 +428263 +428288 +428289 +428290 +428291 +428292 +428293 +428294 +428295 +428320 +428321 +428322 +428323 +428324 +428325 +428326 +428327 +428352 +428353 +428354 +428355 +428356 +428357 +428358 +428359 +428384 +428385 +428386 +428387 +428388 +428389 +428390 +428391 +428416 +428417 +428418 +428419 +428420 +428421 +428422 +428423 +428448 +428449 +428450 +428451 +428452 +428453 +428454 +428455 +428480 +428481 +428482 +428483 +428484 +428485 +428486 +428487 +428512 +428513 +428514 +428515 +428516 +428517 +428518 +428519 +428544 +428545 +428546 +428547 +428548 +428549 +428550 +428551 +428576 +428577 +428578 +428579 +428580 +428581 +428582 +428583 +428608 +428609 +428610 +428611 +428612 +428613 +428614 +428615 +428640 +428641 +428642 +428643 +428644 +428645 +428646 +428647 +428672 +428673 +428674 +428675 +428676 +428677 +428678 +428679 +428704 +428705 +428706 +428707 +428708 +428709 +428710 +428711 +428736 +428737 +428738 +428739 +428740 +428741 +428742 +428743 +428768 +428769 +428770 +428771 +428772 +428773 +428774 +428775 +428800 +428801 +428802 +428803 +428804 +428805 +428806 +428807 +428832 +428833 +428834 +428835 +428836 +428837 +428838 +428839 +428864 +428865 +428866 +428867 +428868 +428869 +428870 +428871 +428896 +428897 +428898 +428899 +428900 +428901 +428902 +428903 +428928 +428929 +428930 +428931 +428932 +428933 +428934 +428935 +428960 +428961 +428962 +428963 +428964 +428965 +428966 +428967 +428992 +428993 +428994 +428995 +428996 +428997 +428998 +428999 +429024 +429025 +429026 +429027 +429028 +429029 +429030 +429031 +429056 +429057 +429058 +429059 +429060 +429061 +429062 +429063 +429088 +429089 +429090 +429091 +429092 +429093 +429094 +429095 +429120 +429121 +429122 +429123 +429124 +429125 +429126 +429127 +429152 +429153 +429154 +429155 +429156 +429157 +429158 +429159 +429184 +429185 +429186 +429187 +429188 +429189 +429190 +429191 +429216 +429217 +429218 +429219 +429220 +429221 +429222 +429223 +429248 +429249 +429250 +429251 +429252 +429253 +429254 +429255 +429280 +429281 +429282 +429283 +429284 +429285 +429286 +429287 +429312 +429313 +429314 +429315 +429316 +429317 +429318 +429319 +429344 +429345 +429346 +429347 +429348 +429349 +429350 +429351 +429376 +429377 +429378 +429379 +429380 +429381 +429382 +429383 +429408 +429409 +429410 +429411 +429412 +429413 +429414 +429415 +429440 +429441 +429442 +429443 +429444 +429445 +429446 +429447 +429472 +429473 +429474 +429475 +429476 +429477 +429478 +429479 +429504 +429505 +429506 +429507 +429508 +429509 +429510 +429511 +429536 +429537 +429538 +429539 +429540 +429541 +429542 +429543 +429568 +429569 +429570 +429571 +429572 +429573 +429574 +429575 +429600 +429601 +429602 +429603 +429604 +429605 +429606 +429607 +429632 +429633 +429634 +429635 +429636 +429637 +429638 +429639 +429664 +429665 +429666 +429667 +429668 +429669 +429670 +429671 +429696 +429697 +429698 +429699 +429700 +429701 +429702 +429703 +429728 +429729 +429730 +429731 +429732 +429733 +429734 +429735 +429760 +429761 +429762 +429763 +429764 +429765 +429766 +429767 +429792 +429793 +429794 +429795 +429796 +429797 +429798 +429799 +429824 +429825 +429826 +429827 +429828 +429829 +429830 +429831 +429856 +429857 +429858 +429859 +429860 +429861 +429862 +429863 +429888 +429889 +429890 +429891 +429892 +429893 +429894 +429895 +429920 +429921 +429922 +429923 +429924 +429925 +429926 +429927 +429952 +429953 +429954 +429955 +429956 +429957 +429958 +429959 +429984 +429985 +429986 +429987 +429988 +429989 +429990 +429991 +430016 +430017 +430018 +430019 +430020 +430021 +430022 +430023 +430048 +430049 +430050 +430051 +430052 +430053 +430054 +430055 +430080 +430081 +430082 +430083 +430084 +430085 +430086 +430087 +430112 +430113 +430114 +430115 +430116 +430117 +430118 +430119 +430144 +430145 +430146 +430147 +430148 +430149 +430150 +430151 +430176 +430177 +430178 +430179 +430180 +430181 +430182 +430183 +430208 +430209 +430210 +430211 +430212 +430213 +430214 +430215 +430240 +430241 +430242 +430243 +430244 +430245 +430246 +430247 +430272 +430273 +430274 +430275 +430276 +430277 +430278 +430279 +430304 +430305 +430306 +430307 +430308 +430309 +430310 +430311 +430336 +430337 +430338 +430339 +430340 +430341 +430342 +430343 +430368 +430369 +430370 +430371 +430372 +430373 +430374 +430375 +430400 +430401 +430402 +430403 +430404 +430405 +430406 +430407 +430432 +430433 +430434 +430435 +430436 +430437 +430438 +430439 +430464 +430465 +430466 +430467 +430468 +430469 +430470 +430471 +430496 +430497 +430498 +430499 +430500 +430501 +430502 +430503 +430528 +430529 +430530 +430531 +430532 +430533 +430534 +430535 +430560 +430561 +430562 +430563 +430564 +430565 +430566 +430567 +430592 +430593 +430594 +430595 +430596 +430597 +430598 +430599 +430624 +430625 +430626 +430627 +430628 +430629 +430630 +430631 +430656 +430657 +430658 +430659 +430660 +430661 +430662 +430663 +430688 +430689 +430690 +430691 +430692 +430693 +430694 +430695 +430720 +430721 +430722 +430723 +430724 +430725 +430726 +430727 +430752 +430753 +430754 +430755 +430756 +430757 +430758 +430759 +430784 +430785 +430786 +430787 +430788 +430789 +430790 +430791 +430816 +430817 +430818 +430819 +430820 +430821 +430822 +430823 +430848 +430849 +430850 +430851 +430852 +430853 +430854 +430855 +430880 +430881 +430882 +430883 +430884 +430885 +430886 +430887 +430912 +430913 +430914 +430915 +430916 +430917 +430918 +430919 +430944 +430945 +430946 +430947 +430948 +430949 +430950 +430951 +430976 +430977 +430978 +430979 +430980 +430981 +430982 +430983 +431008 +431009 +431010 +431011 +431012 +431013 +431014 +431015 +431040 +431041 +431042 +431043 +431044 +431045 +431046 +431047 +431072 +431073 +431074 +431075 +431076 +431077 +431078 +431079 +431104 +431105 +431106 +431107 +431108 +431109 +431110 +431111 +431136 +431137 +431138 +431139 +431140 +431141 +431142 +431143 +431168 +431169 +431170 +431171 +431172 +431173 +431174 +431175 +431200 +431201 +431202 +431203 +431204 +431205 +431206 +431207 +431232 +431233 +431234 +431235 +431236 +431237 +431238 +431239 +431264 +431265 +431266 +431267 +431268 +431269 +431270 +431271 +431296 +431297 +431298 +431299 +431300 +431301 +431302 +431303 +431328 +431329 +431330 +431331 +431332 +431333 +431334 +431335 +431360 +431361 +431362 +431363 +431364 +431365 +431366 +431367 +431392 +431393 +431394 +431395 +431396 +431397 +431398 +431399 +431424 +431425 +431426 +431427 +431428 +431429 +431430 +431431 +431456 +431457 +431458 +431459 +431460 +431461 +431462 +431463 +431488 +431489 +431490 +431491 +431492 +431493 +431494 +431495 +431520 +431521 +431522 +431523 +431524 +431525 +431526 +431527 +431552 +431553 +431554 +431555 +431556 +431557 +431558 +431559 +431584 +431585 +431586 +431587 +431588 +431589 +431590 +431591 +431616 +431617 +431618 +431619 +431620 +431621 +431622 +431623 +431648 +431649 +431650 +431651 +431652 +431653 +431654 +431655 +431680 +431681 +431682 +431683 +431684 +431685 +431686 +431687 +431712 +431713 +431714 +431715 +431716 +431717 +431718 +431719 +431744 +431745 +431746 +431747 +431748 +431749 +431750 +431751 +431776 +431777 +431778 +431779 +431780 +431781 +431782 +431783 +431808 +431809 +431810 +431811 +431812 +431813 +431814 +431815 +431840 +431841 +431842 +431843 +431844 +431845 +431846 +431847 +431872 +431873 +431874 +431875 +431876 +431877 +431878 +431879 +431904 +431905 +431906 +431907 +431908 +431909 +431910 +431911 +431936 +431937 +431938 +431939 +431940 +431941 +431942 +431943 +431968 +431969 +431970 +431971 +431972 +431973 +431974 +431975 +432000 +432001 +432002 +432003 +432004 +432005 +432006 +432007 +432032 +432033 +432034 +432035 +432036 +432037 +432038 +432039 +432064 +432065 +432066 +432067 +432068 +432069 +432070 +432071 +432096 +432097 +432098 +432099 +432100 +432101 +432102 +432103 +432128 +432129 +432130 +432131 +432132 +432133 +432134 +432135 +432160 +432161 +432162 +432163 +432164 +432165 +432166 +432167 +432192 +432193 +432194 +432195 +432196 +432197 +432198 +432199 +432224 +432225 +432226 +432227 +432228 +432229 +432230 +432231 +432256 +432257 +432258 +432259 +432260 +432261 +432262 +432263 +432288 +432289 +432290 +432291 +432292 +432293 +432294 +432295 +432320 +432321 +432322 +432323 +432324 +432325 +432326 +432327 +432352 +432353 +432354 +432355 +432356 +432357 +432358 +432359 +432384 +432385 +432386 +432387 +432388 +432389 +432390 +432391 +432416 +432417 +432418 +432419 +432420 +432421 +432422 +432423 +432448 +432449 +432450 +432451 +432452 +432453 +432454 +432455 +432480 +432481 +432482 +432483 +432484 +432485 +432486 +432487 +432512 +432513 +432514 +432515 +432516 +432517 +432518 +432519 +432544 +432545 +432546 +432547 +432548 +432549 +432550 +432551 +432576 +432577 +432578 +432579 +432580 +432581 +432582 +432583 +432608 +432609 +432610 +432611 +432612 +432613 +432614 +432615 +432640 +432641 +432642 +432643 +432644 +432645 +432646 +432647 +432672 +432673 +432674 +432675 +432676 +432677 +432678 +432679 +432704 +432705 +432706 +432707 +432708 +432709 +432710 +432711 +432736 +432737 +432738 +432739 +432740 +432741 +432742 +432743 +432768 +432769 +432770 +432771 +432772 +432773 +432774 +432775 +432800 +432801 +432802 +432803 +432804 +432805 +432806 +432807 +432832 +432833 +432834 +432835 +432836 +432837 +432838 +432839 +432864 +432865 +432866 +432867 +432868 +432869 +432870 +432871 +432896 +432897 +432898 +432899 +432900 +432901 +432902 +432903 +432928 +432929 +432930 +432931 +432932 +432933 +432934 +432935 +432960 +432961 +432962 +432963 +432964 +432965 +432966 +432967 +432992 +432993 +432994 +432995 +432996 +432997 +432998 +432999 +433024 +433025 +433026 +433027 +433028 +433029 +433030 +433031 +433056 +433057 +433058 +433059 +433060 +433061 +433062 +433063 +433088 +433089 +433090 +433091 +433092 +433093 +433094 +433095 +433120 +433121 +433122 +433123 +433124 +433125 +433126 +433127 +433152 +433153 +433154 +433155 +433156 +433157 +433158 +433159 +433184 +433185 +433186 +433187 +433188 +433189 +433190 +433191 +433216 +433217 +433218 +433219 +433220 +433221 +433222 +433223 +433248 +433249 +433250 +433251 +433252 +433253 +433254 +433255 +433280 +433281 +433282 +433283 +433284 +433285 +433286 +433287 +433312 +433313 +433314 +433315 +433316 +433317 +433318 +433319 +433344 +433345 +433346 +433347 +433348 +433349 +433350 +433351 +433376 +433377 +433378 +433379 +433380 +433381 +433382 +433383 +433408 +433409 +433410 +433411 +433412 +433413 +433414 +433415 +433440 +433441 +433442 +433443 +433444 +433445 +433446 +433447 +433472 +433473 +433474 +433475 +433476 +433477 +433478 +433479 +433504 +433505 +433506 +433507 +433508 +433509 +433510 +433511 +433536 +433537 +433538 +433539 +433540 +433541 +433542 +433543 +433568 +433569 +433570 +433571 +433572 +433573 +433574 +433575 +433600 +433601 +433602 +433603 +433604 +433605 +433606 +433607 +433632 +433633 +433634 +433635 +433636 +433637 +433638 +433639 +433664 +433665 +433666 +433667 +433668 +433669 +433670 +433671 +433696 +433697 +433698 +433699 +433700 +433701 +433702 +433703 +433728 +433729 +433730 +433731 +433732 +433733 +433734 +433735 +433760 +433761 +433762 +433763 +433764 +433765 +433766 +433767 +433792 +433793 +433794 +433795 +433796 +433797 +433798 +433799 +433824 +433825 +433826 +433827 +433828 +433829 +433830 +433831 +433856 +433857 +433858 +433859 +433860 +433861 +433862 +433863 +433888 +433889 +433890 +433891 +433892 +433893 +433894 +433895 +433920 +433921 +433922 +433923 +433924 +433925 +433926 +433927 +433952 +433953 +433954 +433955 +433956 +433957 +433958 +433959 +433984 +433985 +433986 +433987 +433988 +433989 +433990 +433991 +434016 +434017 +434018 +434019 +434020 +434021 +434022 +434023 +434048 +434049 +434050 +434051 +434052 +434053 +434054 +434055 +434080 +434081 +434082 +434083 +434084 +434085 +434086 +434087 +434112 +434113 +434114 +434115 +434116 +434117 +434118 +434119 +434144 +434145 +434146 +434147 +434148 +434149 +434150 +434151 +434176 +434177 +434178 +434179 +434180 +434181 +434182 +434183 +434208 +434209 +434210 +434211 +434212 +434213 +434214 +434215 +434240 +434241 +434242 +434243 +434244 +434245 +434246 +434247 +434272 +434273 +434274 +434275 +434276 +434277 +434278 +434279 +434304 +434305 +434306 +434307 +434308 +434309 +434310 +434311 +434336 +434337 +434338 +434339 +434340 +434341 +434342 +434343 +434368 +434369 +434370 +434371 +434372 +434373 +434374 +434375 +434400 +434401 +434402 +434403 +434404 +434405 +434406 +434407 +434432 +434433 +434434 +434435 +434436 +434437 +434438 +434439 +434464 +434465 +434466 +434467 +434468 +434469 +434470 +434471 +434496 +434497 +434498 +434499 +434500 +434501 +434502 +434503 +434528 +434529 +434530 +434531 +434532 +434533 +434534 +434535 +434560 +434561 +434562 +434563 +434564 +434565 +434566 +434567 +434592 +434593 +434594 +434595 +434596 +434597 +434598 +434599 +434624 +434625 +434626 +434627 +434628 +434629 +434630 +434631 +434656 +434657 +434658 +434659 +434660 +434661 +434662 +434663 +434688 +434689 +434690 +434691 +434692 +434693 +434694 +434695 +434720 +434721 +434722 +434723 +434724 +434725 +434726 +434727 +434752 +434753 +434754 +434755 +434756 +434757 +434758 +434759 +434784 +434785 +434786 +434787 +434788 +434789 +434790 +434791 +434816 +434817 +434818 +434819 +434820 +434821 +434822 +434823 +434848 +434849 +434850 +434851 +434852 +434853 +434854 +434855 +434880 +434881 +434882 +434883 +434884 +434885 +434886 +434887 +434912 +434913 +434914 +434915 +434916 +434917 +434918 +434919 +434944 +434945 +434946 +434947 +434948 +434949 +434950 +434951 +434976 +434977 +434978 +434979 +434980 +434981 +434982 +434983 +435008 +435009 +435010 +435011 +435012 +435013 +435014 +435015 +435040 +435041 +435042 +435043 +435044 +435045 +435046 +435047 +435072 +435073 +435074 +435075 +435076 +435077 +435078 +435079 +435104 +435105 +435106 +435107 +435108 +435109 +435110 +435111 +435136 +435137 +435138 +435139 +435140 +435141 +435142 +435143 +435168 +435169 +435170 +435171 +435172 +435173 +435174 +435175 +435200 +435201 +435202 +435203 +435204 +435205 +435206 +435207 +435232 +435233 +435234 +435235 +435236 +435237 +435238 +435239 +435264 +435265 +435266 +435267 +435268 +435269 +435270 +435271 +435296 +435297 +435298 +435299 +435300 +435301 +435302 +435303 +435328 +435329 +435330 +435331 +435332 +435333 +435334 +435335 +435360 +435361 +435362 +435363 +435364 +435365 +435366 +435367 +435392 +435393 +435394 +435395 +435396 +435397 +435398 +435399 +435424 +435425 +435426 +435427 +435428 +435429 +435430 +435431 +435456 +435457 +435458 +435459 +435460 +435461 +435462 +435463 +435488 +435489 +435490 +435491 +435492 +435493 +435494 +435495 +435520 +435521 +435522 +435523 +435524 +435525 +435526 +435527 +435552 +435553 +435554 +435555 +435556 +435557 +435558 +435559 +435584 +435585 +435586 +435587 +435588 +435589 +435590 +435591 +435616 +435617 +435618 +435619 +435620 +435621 +435622 +435623 +435648 +435649 +435650 +435651 +435652 +435653 +435654 +435655 +435680 +435681 +435682 +435683 +435684 +435685 +435686 +435687 +435712 +435713 +435714 +435715 +435716 +435717 +435718 +435719 +435744 +435745 +435746 +435747 +435748 +435749 +435750 +435751 +435776 +435777 +435778 +435779 +435780 +435781 +435782 +435783 +435808 +435809 +435810 +435811 +435812 +435813 +435814 +435815 +435840 +435841 +435842 +435843 +435844 +435845 +435846 +435847 +435872 +435873 +435874 +435875 +435876 +435877 +435878 +435879 +435904 +435905 +435906 +435907 +435908 +435909 +435910 +435911 +435936 +435937 +435938 +435939 +435940 +435941 +435942 +435943 +435968 +435969 +435970 +435971 +435972 +435973 +435974 +435975 +436000 +436001 +436002 +436003 +436004 +436005 +436006 +436007 +436032 +436033 +436034 +436035 +436036 +436037 +436038 +436039 +436064 +436065 +436066 +436067 +436068 +436069 +436070 +436071 +436096 +436097 +436098 +436099 +436100 +436101 +436102 +436103 +436128 +436129 +436130 +436131 +436132 +436133 +436134 +436135 +436160 +436161 +436162 +436163 +436164 +436165 +436166 +436167 +436192 +436193 +436194 +436195 +436196 +436197 +436198 +436199 +436224 +436225 +436226 +436227 +436228 +436229 +436230 +436231 +436256 +436257 +436258 +436259 +436260 +436261 +436262 +436263 +436288 +436289 +436290 +436291 +436292 +436293 +436294 +436295 +436320 +436321 +436322 +436323 +436324 +436325 +436326 +436327 +436352 +436353 +436354 +436355 +436356 +436357 +436358 +436359 +436384 +436385 +436386 +436387 +436388 +436389 +436390 +436391 +436416 +436417 +436418 +436419 +436420 +436421 +436422 +436423 +436448 +436449 +436450 +436451 +436452 +436453 +436454 +436455 +436480 +436481 +436482 +436483 +436484 +436485 +436486 +436487 +436512 +436513 +436514 +436515 +436516 +436517 +436518 +436519 +436544 +436545 +436546 +436547 +436548 +436549 +436550 +436551 +436576 +436577 +436578 +436579 +436580 +436581 +436582 +436583 +436608 +436609 +436610 +436611 +436612 +436613 +436614 +436615 +436640 +436641 +436642 +436643 +436644 +436645 +436646 +436647 +436672 +436673 +436674 +436675 +436676 +436677 +436678 +436679 +436704 +436705 +436706 +436707 +436708 +436709 +436710 +436711 +436736 +436737 +436738 +436739 +436740 +436741 +436742 +436743 +436768 +436769 +436770 +436771 +436772 +436773 +436774 +436775 +436800 +436801 +436802 +436803 +436804 +436805 +436806 +436807 +436832 +436833 +436834 +436835 +436836 +436837 +436838 +436839 +436864 +436865 +436866 +436867 +436868 +436869 +436870 +436871 +436896 +436897 +436898 +436899 +436900 +436901 +436902 +436903 +436928 +436929 +436930 +436931 +436932 +436933 +436934 +436935 +436960 +436961 +436962 +436963 +436964 +436965 +436966 +436967 +436992 +436993 +436994 +436995 +436996 +436997 +436998 +436999 +437024 +437025 +437026 +437027 +437028 +437029 +437030 +437031 +437056 +437057 +437058 +437059 +437060 +437061 +437062 +437063 +437088 +437089 +437090 +437091 +437092 +437093 +437094 +437095 +437120 +437121 +437122 +437123 +437124 +437125 +437126 +437127 +437152 +437153 +437154 +437155 +437156 +437157 +437158 +437159 +437184 +437185 +437186 +437187 +437188 +437189 +437190 +437191 +437216 +437217 +437218 +437219 +437220 +437221 +437222 +437223 +437248 +437249 +437250 +437251 +437252 +437253 +437254 +437255 +437280 +437281 +437282 +437283 +437284 +437285 +437286 +437287 +437312 +437313 +437314 +437315 +437316 +437317 +437318 +437319 +437344 +437345 +437346 +437347 +437348 +437349 +437350 +437351 +437376 +437377 +437378 +437379 +437380 +437381 +437382 +437383 +437408 +437409 +437410 +437411 +437412 +437413 +437414 +437415 +437440 +437441 +437442 +437443 +437444 +437445 +437446 +437447 +437472 +437473 +437474 +437475 +437476 +437477 +437478 +437479 +437504 +437505 +437506 +437507 +437508 +437509 +437510 +437511 +437536 +437537 +437538 +437539 +437540 +437541 +437542 +437543 +437568 +437569 +437570 +437571 +437572 +437573 +437574 +437575 +437600 +437601 +437602 +437603 +437604 +437605 +437606 +437607 +437632 +437633 +437634 +437635 +437636 +437637 +437638 +437639 +437664 +437665 +437666 +437667 +437668 +437669 +437670 +437671 +437696 +437697 +437698 +437699 +437700 +437701 +437702 +437703 +437728 +437729 +437730 +437731 +437732 +437733 +437734 +437735 +437760 +437761 +437762 +437763 +437764 +437765 +437766 +437767 +437792 +437793 +437794 +437795 +437796 +437797 +437798 +437799 +437824 +437825 +437826 +437827 +437828 +437829 +437830 +437831 +437856 +437857 +437858 +437859 +437860 +437861 +437862 +437863 +437888 +437889 +437890 +437891 +437892 +437893 +437894 +437895 +437920 +437921 +437922 +437923 +437924 +437925 +437926 +437927 +437952 +437953 +437954 +437955 +437956 +437957 +437958 +437959 +437984 +437985 +437986 +437987 +437988 +437989 +437990 +437991 +438016 +438017 +438018 +438019 +438020 +438021 +438022 +438023 +438048 +438049 +438050 +438051 +438052 +438053 +438054 +438055 +438080 +438081 +438082 +438083 +438084 +438085 +438086 +438087 +438112 +438113 +438114 +438115 +438116 +438117 +438118 +438119 +438144 +438145 +438146 +438147 +438148 +438149 +438150 +438151 +438176 +438177 +438178 +438179 +438180 +438181 +438182 +438183 +438208 +438209 +438210 +438211 +438212 +438213 +438214 +438215 +438240 +438241 +438242 +438243 +438244 +438245 +438246 +438247 +438272 +438273 +438274 +438275 +438276 +438277 +438278 +438279 +438304 +438305 +438306 +438307 +438308 +438309 +438310 +438311 +438336 +438337 +438338 +438339 +438340 +438341 +438342 +438343 +438368 +438369 +438370 +438371 +438372 +438373 +438374 +438375 +438400 +438401 +438402 +438403 +438404 +438405 +438406 +438407 +438432 +438433 +438434 +438435 +438436 +438437 +438438 +438439 +438464 +438465 +438466 +438467 +438468 +438469 +438470 +438471 +438496 +438497 +438498 +438499 +438500 +438501 +438502 +438503 +438528 +438529 +438530 +438531 +438532 +438533 +438534 +438535 +438560 +438561 +438562 +438563 +438564 +438565 +438566 +438567 +438592 +438593 +438594 +438595 +438596 +438597 +438598 +438599 +438624 +438625 +438626 +438627 +438628 +438629 +438630 +438631 +438656 +438657 +438658 +438659 +438660 +438661 +438662 +438663 +438688 +438689 +438690 +438691 +438692 +438693 +438694 +438695 +438720 +438721 +438722 +438723 +438724 +438725 +438726 +438727 +438752 +438753 +438754 +438755 +438756 +438757 +438758 +438759 +438784 +438785 +438786 +438787 +438788 +438789 +438790 +438791 +438816 +438817 +438818 +438819 +438820 +438821 +438822 +438823 +438848 +438849 +438850 +438851 +438852 +438853 +438854 +438855 +438880 +438881 +438882 +438883 +438884 +438885 +438886 +438887 +438912 +438913 +438914 +438915 +438916 +438917 +438918 +438919 +438944 +438945 +438946 +438947 +438948 +438949 +438950 +438951 +438976 +438977 +438978 +438979 +438980 +438981 +438982 +438983 +439008 +439009 +439010 +439011 +439012 +439013 +439014 +439015 +439040 +439041 +439042 +439043 +439044 +439045 +439046 +439047 +439072 +439073 +439074 +439075 +439076 +439077 +439078 +439079 +439104 +439105 +439106 +439107 +439108 +439109 +439110 +439111 +439136 +439137 +439138 +439139 +439140 +439141 +439142 +439143 +439168 +439169 +439170 +439171 +439172 +439173 +439174 +439175 +439200 +439201 +439202 +439203 +439204 +439205 +439206 +439207 +439232 +439233 +439234 +439235 +439236 +439237 +439238 +439239 +439264 +439265 +439266 +439267 +439268 +439269 +439270 +439271 +439296 +439297 +439298 +439299 +439300 +439301 +439302 +439303 +439328 +439329 +439330 +439331 +439332 +439333 +439334 +439335 +439360 +439361 +439362 +439363 +439364 +439365 +439366 +439367 +439392 +439393 +439394 +439395 +439396 +439397 +439398 +439399 +439424 +439425 +439426 +439427 +439428 +439429 +439430 +439431 +439456 +439457 +439458 +439459 +439460 +439461 +439462 +439463 +439488 +439489 +439490 +439491 +439492 +439493 +439494 +439495 +439520 +439521 +439522 +439523 +439524 +439525 +439526 +439527 +439552 +439553 +439554 +439555 +439556 +439557 +439558 +439559 +439584 +439585 +439586 +439587 +439588 +439589 +439590 +439591 +439616 +439617 +439618 +439619 +439620 +439621 +439622 +439623 +439648 +439649 +439650 +439651 +439652 +439653 +439654 +439655 +439680 +439681 +439682 +439683 +439684 +439685 +439686 +439687 +439712 +439713 +439714 +439715 +439716 +439717 +439718 +439719 +439744 +439745 +439746 +439747 +439748 +439749 +439750 +439751 +439776 +439777 +439778 +439779 +439780 +439781 +439782 +439783 +439808 +439809 +439810 +439811 +439812 +439813 +439814 +439815 +439840 +439841 +439842 +439843 +439844 +439845 +439846 +439847 +439872 +439873 +439874 +439875 +439876 +439877 +439878 +439879 +439904 +439905 +439906 +439907 +439908 +439909 +439910 +439911 +439936 +439937 +439938 +439939 +439940 +439941 +439942 +439943 +439968 +439969 +439970 +439971 +439972 +439973 +439974 +439975 +440000 +440001 +440002 +440003 +440004 +440005 +440006 +440007 +440032 +440033 +440034 +440035 +440036 +440037 +440038 +440039 +440064 +440065 +440066 +440067 +440068 +440069 +440070 +440071 +440096 +440097 +440098 +440099 +440100 +440101 +440102 +440103 +440128 +440129 +440130 +440131 +440132 +440133 +440134 +440135 +440160 +440161 +440162 +440163 +440164 +440165 +440166 +440167 +440192 +440193 +440194 +440195 +440196 +440197 +440198 +440199 +440224 +440225 +440226 +440227 +440228 +440229 +440230 +440231 +440256 +440257 +440258 +440259 +440260 +440261 +440262 +440263 +440288 +440289 +440290 +440291 +440292 +440293 +440294 +440295 +440320 +440321 +440322 +440323 +440324 +440325 +440326 +440327 +440352 +440353 +440354 +440355 +440356 +440357 +440358 +440359 +440384 +440385 +440386 +440387 +440388 +440389 +440390 +440391 +440416 +440417 +440418 +440419 +440420 +440421 +440422 +440423 +440448 +440449 +440450 +440451 +440452 +440453 +440454 +440455 +440480 +440481 +440482 +440483 +440484 +440485 +440486 +440487 +440512 +440513 +440514 +440515 +440516 +440517 +440518 +440519 +440544 +440545 +440546 +440547 +440548 +440549 +440550 +440551 +440576 +440577 +440578 +440579 +440580 +440581 +440582 +440583 +440608 +440609 +440610 +440611 +440612 +440613 +440614 +440615 +440640 +440641 +440642 +440643 +440644 +440645 +440646 +440647 +440672 +440673 +440674 +440675 +440676 +440677 +440678 +440679 +440704 +440705 +440706 +440707 +440708 +440709 +440710 +440711 +440736 +440737 +440738 +440739 +440740 +440741 +440742 +440743 +440768 +440769 +440770 +440771 +440772 +440773 +440774 +440775 +440800 +440801 +440802 +440803 +440804 +440805 +440806 +440807 +440832 +440833 +440834 +440835 +440836 +440837 +440838 +440839 +440864 +440865 +440866 +440867 +440868 +440869 +440870 +440871 +440896 +440897 +440898 +440899 +440900 +440901 +440902 +440903 +440928 +440929 +440930 +440931 +440932 +440933 +440934 +440935 +440960 +440961 +440962 +440963 +440964 +440965 +440966 +440967 +440992 +440993 +440994 +440995 +440996 +440997 +440998 +440999 +441024 +441025 +441026 +441027 +441028 +441029 +441030 +441031 +441056 +441057 +441058 +441059 +441060 +441061 +441062 +441063 +441088 +441089 +441090 +441091 +441092 +441093 +441094 +441095 +441120 +441121 +441122 +441123 +441124 +441125 +441126 +441127 +441152 +441153 +441154 +441155 +441156 +441157 +441158 +441159 +441184 +441185 +441186 +441187 +441188 +441189 +441190 +441191 +441216 +441217 +441218 +441219 +441220 +441221 +441222 +441223 +441248 +441249 +441250 +441251 +441252 +441253 +441254 +441255 +441280 +441281 +441282 +441283 +441284 +441285 +441286 +441287 +441312 +441313 +441314 +441315 +441316 +441317 +441318 +441319 +441344 +441345 +441346 +441347 +441348 +441349 +441350 +441351 +441376 +441377 +441378 +441379 +441380 +441381 +441382 +441383 +441408 +441409 +441410 +441411 +441412 +441413 +441414 +441415 +441440 +441441 +441442 +441443 +441444 +441445 +441446 +441447 +441472 +441473 +441474 +441475 +441476 +441477 +441478 +441479 +441504 +441505 +441506 +441507 +441508 +441509 +441510 +441511 +441536 +441537 +441538 +441539 +441540 +441541 +441542 +441543 +441568 +441569 +441570 +441571 +441572 +441573 +441574 +441575 +441600 +441601 +441602 +441603 +441604 +441605 +441606 +441607 +441632 +441633 +441634 +441635 +441636 +441637 +441638 +441639 +441664 +441665 +441666 +441667 +441668 +441669 +441670 +441671 +441696 +441697 +441698 +441699 +441700 +441701 +441702 +441703 +441728 +441729 +441730 +441731 +441732 +441733 +441734 +441735 +441760 +441761 +441762 +441763 +441764 +441765 +441766 +441767 +441792 +441793 +441794 +441795 +441796 +441797 +441798 +441799 +441824 +441825 +441826 +441827 +441828 +441829 +441830 +441831 +441856 +441857 +441858 +441859 +441860 +441861 +441862 +441863 +441888 +441889 +441890 +441891 +441892 +441893 +441894 +441895 +441920 +441921 +441922 +441923 +441924 +441925 +441926 +441927 +441952 +441953 +441954 +441955 +441956 +441957 +441958 +441959 +441984 +441985 +441986 +441987 +441988 +441989 +441990 +441991 +442016 +442017 +442018 +442019 +442020 +442021 +442022 +442023 +442048 +442049 +442050 +442051 +442052 +442053 +442054 +442055 +442080 +442081 +442082 +442083 +442084 +442085 +442086 +442087 +442112 +442113 +442114 +442115 +442116 +442117 +442118 +442119 +442144 +442145 +442146 +442147 +442148 +442149 +442150 +442151 +442176 +442177 +442178 +442179 +442180 +442181 +442182 +442183 +442208 +442209 +442210 +442211 +442212 +442213 +442214 +442215 +442240 +442241 +442242 +442243 +442244 +442245 +442246 +442247 +442272 +442273 +442274 +442275 +442276 +442277 +442278 +442279 +442304 +442305 +442306 +442307 +442308 +442309 +442310 +442311 +442336 +442337 +442338 +442339 +442340 +442341 +442342 +442343 +442368 +442369 +442370 +442371 +442372 +442373 +442374 +442375 +442400 +442401 +442402 +442403 +442404 +442405 +442406 +442407 +442432 +442433 +442434 +442435 +442436 +442437 +442438 +442439 +442464 +442465 +442466 +442467 +442468 +442469 +442470 +442471 +442496 +442497 +442498 +442499 +442500 +442501 +442502 +442503 +442528 +442529 +442530 +442531 +442532 +442533 +442534 +442535 +442560 +442561 +442562 +442563 +442564 +442565 +442566 +442567 +442592 +442593 +442594 +442595 +442596 +442597 +442598 +442599 +442624 +442625 +442626 +442627 +442628 +442629 +442630 +442631 +442656 +442657 +442658 +442659 +442660 +442661 +442662 +442663 +442688 +442689 +442690 +442691 +442692 +442693 +442694 +442695 +442720 +442721 +442722 +442723 +442724 +442725 +442726 +442727 +442752 +442753 +442754 +442755 +442756 +442757 +442758 +442759 +442784 +442785 +442786 +442787 +442788 +442789 +442790 +442791 +442816 +442817 +442818 +442819 +442820 +442821 +442822 +442823 +442848 +442849 +442850 +442851 +442852 +442853 +442854 +442855 +442880 +442881 +442882 +442883 +442884 +442885 +442886 +442887 +442912 +442913 +442914 +442915 +442916 +442917 +442918 +442919 +442944 +442945 +442946 +442947 +442948 +442949 +442950 +442951 +442976 +442977 +442978 +442979 +442980 +442981 +442982 +442983 +443008 +443009 +443010 +443011 +443012 +443013 +443014 +443015 +443040 +443041 +443042 +443043 +443044 +443045 +443046 +443047 +443072 +443073 +443074 +443075 +443076 +443077 +443078 +443079 +443104 +443105 +443106 +443107 +443108 +443109 +443110 +443111 +443136 +443137 +443138 +443139 +443140 +443141 +443142 +443143 +443168 +443169 +443170 +443171 +443172 +443173 +443174 +443175 +443200 +443201 +443202 +443203 +443204 +443205 +443206 +443207 +443232 +443233 +443234 +443235 +443236 +443237 +443238 +443239 +443264 +443265 +443266 +443267 +443268 +443269 +443270 +443271 +443296 +443297 +443298 +443299 +443300 +443301 +443302 +443303 +443328 +443329 +443330 +443331 +443332 +443333 +443334 +443335 +443360 +443361 +443362 +443363 +443364 +443365 +443366 +443367 +443392 +443393 +443394 +443395 +443396 +443397 +443398 +443399 +443424 +443425 +443426 +443427 +443428 +443429 +443430 +443431 +443456 +443457 +443458 +443459 +443460 +443461 +443462 +443463 +443488 +443489 +443490 +443491 +443492 +443493 +443494 +443495 +443520 +443521 +443522 +443523 +443524 +443525 +443526 +443527 +443552 +443553 +443554 +443555 +443556 +443557 +443558 +443559 +443584 +443585 +443586 +443587 +443588 +443589 +443590 +443591 +443616 +443617 +443618 +443619 +443620 +443621 +443622 +443623 +443648 +443649 +443650 +443651 +443652 +443653 +443654 +443655 +443680 +443681 +443682 +443683 +443684 +443685 +443686 +443687 +443712 +443713 +443714 +443715 +443716 +443717 +443718 +443719 +443744 +443745 +443746 +443747 +443748 +443749 +443750 +443751 +443776 +443777 +443778 +443779 +443780 +443781 +443782 +443783 +443808 +443809 +443810 +443811 +443812 +443813 +443814 +443815 +443840 +443841 +443842 +443843 +443844 +443845 +443846 +443847 +443872 +443873 +443874 +443875 +443876 +443877 +443878 +443879 +443904 +443905 +443906 +443907 +443908 +443909 +443910 +443911 +443936 +443937 +443938 +443939 +443940 +443941 +443942 +443943 +443968 +443969 +443970 +443971 +443972 +443973 +443974 +443975 +444000 +444001 +444002 +444003 +444004 +444005 +444006 +444007 +444032 +444033 +444034 +444035 +444036 +444037 +444038 +444039 +444064 +444065 +444066 +444067 +444068 +444069 +444070 +444071 +444096 +444097 +444098 +444099 +444100 +444101 +444102 +444103 +444128 +444129 +444130 +444131 +444132 +444133 +444134 +444135 +444160 +444161 +444162 +444163 +444164 +444165 +444166 +444167 +444192 +444193 +444194 +444195 +444196 +444197 +444198 +444199 +444224 +444225 +444226 +444227 +444228 +444229 +444230 +444231 +444256 +444257 +444258 +444259 +444260 +444261 +444262 +444263 +444288 +444289 +444290 +444291 +444292 +444293 +444294 +444295 +444320 +444321 +444322 +444323 +444324 +444325 +444326 +444327 +444352 +444353 +444354 +444355 +444356 +444357 +444358 +444359 +444384 +444385 +444386 +444387 +444388 +444389 +444390 +444391 +444416 +444417 +444418 +444419 +444420 +444421 +444422 +444423 +444448 +444449 +444450 +444451 +444452 +444453 +444454 +444455 +444480 +444481 +444482 +444483 +444484 +444485 +444486 +444487 +444512 +444513 +444514 +444515 +444516 +444517 +444518 +444519 +444544 +444545 +444546 +444547 +444548 +444549 +444550 +444551 +444576 +444577 +444578 +444579 +444580 +444581 +444582 +444583 +444608 +444609 +444610 +444611 +444612 +444613 +444614 +444615 +444640 +444641 +444642 +444643 +444644 +444645 +444646 +444647 +444672 +444673 +444674 +444675 +444676 +444677 +444678 +444679 +444704 +444705 +444706 +444707 +444708 +444709 +444710 +444711 +444736 +444737 +444738 +444739 +444740 +444741 +444742 +444743 +444768 +444769 +444770 +444771 +444772 +444773 +444774 +444775 +444800 +444801 +444802 +444803 +444804 +444805 +444806 +444807 +444832 +444833 +444834 +444835 +444836 +444837 +444838 +444839 +444864 +444865 +444866 +444867 +444868 +444869 +444870 +444871 +444896 +444897 +444898 +444899 +444900 +444901 +444902 +444903 +444928 +444929 +444930 +444931 +444932 +444933 +444934 +444935 +444960 +444961 +444962 +444963 +444964 +444965 +444966 +444967 +444992 +444993 +444994 +444995 +444996 +444997 +444998 +444999 +445024 +445025 +445026 +445027 +445028 +445029 +445030 +445031 +445056 +445057 +445058 +445059 +445060 +445061 +445062 +445063 +445088 +445089 +445090 +445091 +445092 +445093 +445094 +445095 +445120 +445121 +445122 +445123 +445124 +445125 +445126 +445127 +445152 +445153 +445154 +445155 +445156 +445157 +445158 +445159 +445184 +445185 +445186 +445187 +445188 +445189 +445190 +445191 +445216 +445217 +445218 +445219 +445220 +445221 +445222 +445223 +445248 +445249 +445250 +445251 +445252 +445253 +445254 +445255 +445280 +445281 +445282 +445283 +445284 +445285 +445286 +445287 +445312 +445313 +445314 +445315 +445316 +445317 +445318 +445319 +445344 +445345 +445346 +445347 +445348 +445349 +445350 +445351 +445376 +445377 +445378 +445379 +445380 +445381 +445382 +445383 +445408 +445409 +445410 +445411 +445412 +445413 +445414 +445415 +445440 +445441 +445442 +445443 +445444 +445445 +445446 +445447 +445472 +445473 +445474 +445475 +445476 +445477 +445478 +445479 +445504 +445505 +445506 +445507 +445508 +445509 +445510 +445511 +445536 +445537 +445538 +445539 +445540 +445541 +445542 +445543 +445568 +445569 +445570 +445571 +445572 +445573 +445574 +445575 +445600 +445601 +445602 +445603 +445604 +445605 +445606 +445607 +445632 +445633 +445634 +445635 +445636 +445637 +445638 +445639 +445664 +445665 +445666 +445667 +445668 +445669 +445670 +445671 +445696 +445697 +445698 +445699 +445700 +445701 +445702 +445703 +445728 +445729 +445730 +445731 +445732 +445733 +445734 +445735 +445760 +445761 +445762 +445763 +445764 +445765 +445766 +445767 +445792 +445793 +445794 +445795 +445796 +445797 +445798 +445799 +445824 +445825 +445826 +445827 +445828 +445829 +445830 +445831 +445856 +445857 +445858 +445859 +445860 +445861 +445862 +445863 +445888 +445889 +445890 +445891 +445892 +445893 +445894 +445895 +445920 +445921 +445922 +445923 +445924 +445925 +445926 +445927 +445952 +445953 +445954 +445955 +445956 +445957 +445958 +445959 +445984 +445985 +445986 +445987 +445988 +445989 +445990 +445991 +446016 +446017 +446018 +446019 +446020 +446021 +446022 +446023 +446048 +446049 +446050 +446051 +446052 +446053 +446054 +446055 +446080 +446081 +446082 +446083 +446084 +446085 +446086 +446087 +446112 +446113 +446114 +446115 +446116 +446117 +446118 +446119 +446144 +446145 +446146 +446147 +446148 +446149 +446150 +446151 +446176 +446177 +446178 +446179 +446180 +446181 +446182 +446183 +446208 +446209 +446210 +446211 +446212 +446213 +446214 +446215 +446240 +446241 +446242 +446243 +446244 +446245 +446246 +446247 +446272 +446273 +446274 +446275 +446276 +446277 +446278 +446279 +446304 +446305 +446306 +446307 +446308 +446309 +446310 +446311 +446336 +446337 +446338 +446339 +446340 +446341 +446342 +446343 +446368 +446369 +446370 +446371 +446372 +446373 +446374 +446375 +446400 +446401 +446402 +446403 +446404 +446405 +446406 +446407 +446432 +446433 +446434 +446435 +446436 +446437 +446438 +446439 +446464 +446465 +446466 +446467 +446468 +446469 +446470 +446471 +446496 +446497 +446498 +446499 +446500 +446501 +446502 +446503 +446528 +446529 +446530 +446531 +446532 +446533 +446534 +446535 +446560 +446561 +446562 +446563 +446564 +446565 +446566 +446567 +446592 +446593 +446594 +446595 +446596 +446597 +446598 +446599 +446624 +446625 +446626 +446627 +446628 +446629 +446630 +446631 +446656 +446657 +446658 +446659 +446660 +446661 +446662 +446663 +446688 +446689 +446690 +446691 +446692 +446693 +446694 +446695 +446720 +446721 +446722 +446723 +446724 +446725 +446726 +446727 +446752 +446753 +446754 +446755 +446756 +446757 +446758 +446759 +446784 +446785 +446786 +446787 +446788 +446789 +446790 +446791 +446816 +446817 +446818 +446819 +446820 +446821 +446822 +446823 +446848 +446849 +446850 +446851 +446852 +446853 +446854 +446855 +446880 +446881 +446882 +446883 +446884 +446885 +446886 +446887 +446912 +446913 +446914 +446915 +446916 +446917 +446918 +446919 +446944 +446945 +446946 +446947 +446948 +446949 +446950 +446951 +446976 +446977 +446978 +446979 +446980 +446981 +446982 +446983 +447008 +447009 +447010 +447011 +447012 +447013 +447014 +447015 +447040 +447041 +447042 +447043 +447044 +447045 +447046 +447047 +447072 +447073 +447074 +447075 +447076 +447077 +447078 +447079 +447104 +447105 +447106 +447107 +447108 +447109 +447110 +447111 +447136 +447137 +447138 +447139 +447140 +447141 +447142 +447143 +447168 +447169 +447170 +447171 +447172 +447173 +447174 +447175 +447200 +447201 +447202 +447203 +447204 +447205 +447206 +447207 +447232 +447233 +447234 +447235 +447236 +447237 +447238 +447239 +447264 +447265 +447266 +447267 +447268 +447269 +447270 +447271 +447296 +447297 +447298 +447299 +447300 +447301 +447302 +447303 +447328 +447329 +447330 +447331 +447332 +447333 +447334 +447335 +447360 +447361 +447362 +447363 +447364 +447365 +447366 +447367 +447392 +447393 +447394 +447395 +447396 +447397 +447398 +447399 +447424 +447425 +447426 +447427 +447428 +447429 +447430 +447431 +447456 +447457 +447458 +447459 +447460 +447461 +447462 +447463 +447488 +447489 +447490 +447491 +447492 +447493 +447494 +447495 +447520 +447521 +447522 +447523 +447524 +447525 +447526 +447527 +447552 +447553 +447554 +447555 +447556 +447557 +447558 +447559 +447584 +447585 +447586 +447587 +447588 +447589 +447590 +447591 +447616 +447617 +447618 +447619 +447620 +447621 +447622 +447623 +447648 +447649 +447650 +447651 +447652 +447653 +447654 +447655 +447680 +447681 +447682 +447683 +447684 +447685 +447686 +447687 +447712 +447713 +447714 +447715 +447716 +447717 +447718 +447719 +447744 +447745 +447746 +447747 +447748 +447749 +447750 +447751 +447776 +447777 +447778 +447779 +447780 +447781 +447782 +447783 +447808 +447809 +447810 +447811 +447812 +447813 +447814 +447815 +447840 +447841 +447842 +447843 +447844 +447845 +447846 +447847 +447872 +447873 +447874 +447875 +447876 +447877 +447878 +447879 +447904 +447905 +447906 +447907 +447908 +447909 +447910 +447911 +447936 +447937 +447938 +447939 +447940 +447941 +447942 +447943 +447968 +447969 +447970 +447971 +447972 +447973 +447974 +447975 +448000 +448001 +448002 +448003 +448004 +448005 +448006 +448007 +448032 +448033 +448034 +448035 +448036 +448037 +448038 +448039 +448064 +448065 +448066 +448067 +448068 +448069 +448070 +448071 +448096 +448097 +448098 +448099 +448100 +448101 +448102 +448103 +448128 +448129 +448130 +448131 +448132 +448133 +448134 +448135 +448160 +448161 +448162 +448163 +448164 +448165 +448166 +448167 +448192 +448193 +448194 +448195 +448196 +448197 +448198 +448199 +448224 +448225 +448226 +448227 +448228 +448229 +448230 +448231 +448256 +448257 +448258 +448259 +448260 +448261 +448262 +448263 +448288 +448289 +448290 +448291 +448292 +448293 +448294 +448295 +448320 +448321 +448322 +448323 +448324 +448325 +448326 +448327 +448352 +448353 +448354 +448355 +448356 +448357 +448358 +448359 +448384 +448385 +448386 +448387 +448388 +448389 +448390 +448391 +448416 +448417 +448418 +448419 +448420 +448421 +448422 +448423 +448448 +448449 +448450 +448451 +448452 +448453 +448454 +448455 +448480 +448481 +448482 +448483 +448484 +448485 +448486 +448487 +448512 +448513 +448514 +448515 +448516 +448517 +448518 +448519 +448544 +448545 +448546 +448547 +448548 +448549 +448550 +448551 +448576 +448577 +448578 +448579 +448580 +448581 +448582 +448583 +448608 +448609 +448610 +448611 +448612 +448613 +448614 +448615 +448640 +448641 +448642 +448643 +448644 +448645 +448646 +448647 +448672 +448673 +448674 +448675 +448676 +448677 +448678 +448679 +448704 +448705 +448706 +448707 +448708 +448709 +448710 +448711 +448736 +448737 +448738 +448739 +448740 +448741 +448742 +448743 +448768 +448769 +448770 +448771 +448772 +448773 +448774 +448775 +448800 +448801 +448802 +448803 +448804 +448805 +448806 +448807 +448832 +448833 +448834 +448835 +448836 +448837 +448838 +448839 +448864 +448865 +448866 +448867 +448868 +448869 +448870 +448871 +448896 +448897 +448898 +448899 +448900 +448901 +448902 +448903 +448928 +448929 +448930 +448931 +448932 +448933 +448934 +448935 +448960 +448961 +448962 +448963 +448964 +448965 +448966 +448967 +448992 +448993 +448994 +448995 +448996 +448997 +448998 +448999 +449024 +449025 +449026 +449027 +449028 +449029 +449030 +449031 +449056 +449057 +449058 +449059 +449060 +449061 +449062 +449063 +449088 +449089 +449090 +449091 +449092 +449093 +449094 +449095 +449120 +449121 +449122 +449123 +449124 +449125 +449126 +449127 +449152 +449153 +449154 +449155 +449156 +449157 +449158 +449159 +449184 +449185 +449186 +449187 +449188 +449189 +449190 +449191 +449216 +449217 +449218 +449219 +449220 +449221 +449222 +449223 +449248 +449249 +449250 +449251 +449252 +449253 +449254 +449255 +449280 +449281 +449282 +449283 +449284 +449285 +449286 +449287 +449312 +449313 +449314 +449315 +449316 +449317 +449318 +449319 +449344 +449345 +449346 +449347 +449348 +449349 +449350 +449351 +449376 +449377 +449378 +449379 +449380 +449381 +449382 +449383 +449408 +449409 +449410 +449411 +449412 +449413 +449414 +449415 +449440 +449441 +449442 +449443 +449444 +449445 +449446 +449447 +449472 +449473 +449474 +449475 +449476 +449477 +449478 +449479 +449504 +449505 +449506 +449507 +449508 +449509 +449510 +449511 +449536 +449537 +449538 +449539 +449540 +449541 +449542 +449543 +449568 +449569 +449570 +449571 +449572 +449573 +449574 +449575 +449600 +449601 +449602 +449603 +449604 +449605 +449606 +449607 +449632 +449633 +449634 +449635 +449636 +449637 +449638 +449639 +449664 +449665 +449666 +449667 +449668 +449669 +449670 +449671 +449696 +449697 +449698 +449699 +449700 +449701 +449702 +449703 +449728 +449729 +449730 +449731 +449732 +449733 +449734 +449735 +449760 +449761 +449762 +449763 +449764 +449765 +449766 +449767 +449792 +449793 +449794 +449795 +449796 +449797 +449798 +449799 +449824 +449825 +449826 +449827 +449828 +449829 +449830 +449831 +449856 +449857 +449858 +449859 +449860 +449861 +449862 +449863 +449888 +449889 +449890 +449891 +449892 +449893 +449894 +449895 +449920 +449921 +449922 +449923 +449924 +449925 +449926 +449927 +449952 +449953 +449954 +449955 +449956 +449957 +449958 +449959 +449984 +449985 +449986 +449987 +449988 +449989 +449990 +449991 +450016 +450017 +450018 +450019 +450020 +450021 +450022 +450023 +450048 +450049 +450050 +450051 +450052 +450053 +450054 +450055 +450080 +450081 +450082 +450083 +450084 +450085 +450086 +450087 +450112 +450113 +450114 +450115 +450116 +450117 +450118 +450119 +450144 +450145 +450146 +450147 +450148 +450149 +450150 +450151 +450176 +450177 +450178 +450179 +450180 +450181 +450182 +450183 +450208 +450209 +450210 +450211 +450212 +450213 +450214 +450215 +450240 +450241 +450242 +450243 +450244 +450245 +450246 +450247 +450272 +450273 +450274 +450275 +450276 +450277 +450278 +450279 +450304 +450305 +450306 +450307 +450308 +450309 +450310 +450311 +450336 +450337 +450338 +450339 +450340 +450341 +450342 +450343 +450368 +450369 +450370 +450371 +450372 +450373 +450374 +450375 +450400 +450401 +450402 +450403 +450404 +450405 +450406 +450407 +450432 +450433 +450434 +450435 +450436 +450437 +450438 +450439 +450464 +450465 +450466 +450467 +450468 +450469 +450470 +450471 +450496 +450497 +450498 +450499 +450500 +450501 +450502 +450503 +450528 +450529 +450530 +450531 +450532 +450533 +450534 +450535 +450560 +450561 +450562 +450563 +450564 +450565 +450566 +450567 +450592 +450593 +450594 +450595 +450596 +450597 +450598 +450599 +450624 +450625 +450626 +450627 +450628 +450629 +450630 +450631 +450656 +450657 +450658 +450659 +450660 +450661 +450662 +450663 +450688 +450689 +450690 +450691 +450692 +450693 +450694 +450695 +450720 +450721 +450722 +450723 +450724 +450725 +450726 +450727 +450752 +450753 +450754 +450755 +450756 +450757 +450758 +450759 +450784 +450785 +450786 +450787 +450788 +450789 +450790 +450791 +450816 +450817 +450818 +450819 +450820 +450821 +450822 +450823 +450848 +450849 +450850 +450851 +450852 +450853 +450854 +450855 +450880 +450881 +450882 +450883 +450884 +450885 +450886 +450887 +450912 +450913 +450914 +450915 +450916 +450917 +450918 +450919 +450944 +450945 +450946 +450947 +450948 +450949 +450950 +450951 +450976 +450977 +450978 +450979 +450980 +450981 +450982 +450983 +451008 +451009 +451010 +451011 +451012 +451013 +451014 +451015 +451040 +451041 +451042 +451043 +451044 +451045 +451046 +451047 +451072 +451073 +451074 +451075 +451076 +451077 +451078 +451079 +451104 +451105 +451106 +451107 +451108 +451109 +451110 +451111 +451136 +451137 +451138 +451139 +451140 +451141 +451142 +451143 +451168 +451169 +451170 +451171 +451172 +451173 +451174 +451175 +451200 +451201 +451202 +451203 +451204 +451205 +451206 +451207 +451232 +451233 +451234 +451235 +451236 +451237 +451238 +451239 +451264 +451265 +451266 +451267 +451268 +451269 +451270 +451271 +451296 +451297 +451298 +451299 +451300 +451301 +451302 +451303 +451328 +451329 +451330 +451331 +451332 +451333 +451334 +451335 +451360 +451361 +451362 +451363 +451364 +451365 +451366 +451367 +451392 +451393 +451394 +451395 +451396 +451397 +451398 +451399 +451424 +451425 +451426 +451427 +451428 +451429 +451430 +451431 +451456 +451457 +451458 +451459 +451460 +451461 +451462 +451463 +451488 +451489 +451490 +451491 +451492 +451493 +451494 +451495 +451520 +451521 +451522 +451523 +451524 +451525 +451526 +451527 +451552 +451553 +451554 +451555 +451556 +451557 +451558 +451559 +451584 +451585 +451586 +451587 +451588 +451589 +451590 +451591 +451616 +451617 +451618 +451619 +451620 +451621 +451622 +451623 +451648 +451649 +451650 +451651 +451652 +451653 +451654 +451655 +451680 +451681 +451682 +451683 +451684 +451685 +451686 +451687 +451712 +451713 +451714 +451715 +451716 +451717 +451718 +451719 +451744 +451745 +451746 +451747 +451748 +451749 +451750 +451751 +451776 +451777 +451778 +451779 +451780 +451781 +451782 +451783 +451808 +451809 +451810 +451811 +451812 +451813 +451814 +451815 +451840 +451841 +451842 +451843 +451844 +451845 +451846 +451847 +451872 +451873 +451874 +451875 +451876 +451877 +451878 +451879 +451904 +451905 +451906 +451907 +451908 +451909 +451910 +451911 +451936 +451937 +451938 +451939 +451940 +451941 +451942 +451943 +451968 +451969 +451970 +451971 +451972 +451973 +451974 +451975 +452000 +452001 +452002 +452003 +452004 +452005 +452006 +452007 +452032 +452033 +452034 +452035 +452036 +452037 +452038 +452039 +452064 +452065 +452066 +452067 +452068 +452069 +452070 +452071 +452096 +452097 +452098 +452099 +452100 +452101 +452102 +452103 +452128 +452129 +452130 +452131 +452132 +452133 +452134 +452135 +452160 +452161 +452162 +452163 +452164 +452165 +452166 +452167 +452192 +452193 +452194 +452195 +452196 +452197 +452198 +452199 +452224 +452225 +452226 +452227 +452228 +452229 +452230 +452231 +452256 +452257 +452258 +452259 +452260 +452261 +452262 +452263 +452288 +452289 +452290 +452291 +452292 +452293 +452294 +452295 +452320 +452321 +452322 +452323 +452324 +452325 +452326 +452327 +452352 +452353 +452354 +452355 +452356 +452357 +452358 +452359 +452384 +452385 +452386 +452387 +452388 +452389 +452390 +452391 +452416 +452417 +452418 +452419 +452420 +452421 +452422 +452423 +452448 +452449 +452450 +452451 +452452 +452453 +452454 +452455 +452480 +452481 +452482 +452483 +452484 +452485 +452486 +452487 +452512 +452513 +452514 +452515 +452516 +452517 +452518 +452519 +452544 +452545 +452546 +452547 +452548 +452549 +452550 +452551 +452576 +452577 +452578 +452579 +452580 +452581 +452582 +452583 +452608 +452609 +452610 +452611 +452612 +452613 +452614 +452615 +452640 +452641 +452642 +452643 +452644 +452645 +452646 +452647 +452672 +452673 +452674 +452675 +452676 +452677 +452678 +452679 +452704 +452705 +452706 +452707 +452708 +452709 +452710 +452711 +452736 +452737 +452738 +452739 +452740 +452741 +452742 +452743 +452768 +452769 +452770 +452771 +452772 +452773 +452774 +452775 +452800 +452801 +452802 +452803 +452804 +452805 +452806 +452807 +452832 +452833 +452834 +452835 +452836 +452837 +452838 +452839 +452864 +452865 +452866 +452867 +452868 +452869 +452870 +452871 +452896 +452897 +452898 +452899 +452900 +452901 +452902 +452903 +452928 +452929 +452930 +452931 +452932 +452933 +452934 +452935 +452960 +452961 +452962 +452963 +452964 +452965 +452966 +452967 +452992 +452993 +452994 +452995 +452996 +452997 +452998 +452999 +453024 +453025 +453026 +453027 +453028 +453029 +453030 +453031 +453056 +453057 +453058 +453059 +453060 +453061 +453062 +453063 +453088 +453089 +453090 +453091 +453092 +453093 +453094 +453095 +453120 +453121 +453122 +453123 +453124 +453125 +453126 +453127 +453152 +453153 +453154 +453155 +453156 +453157 +453158 +453159 +453184 +453185 +453186 +453187 +453188 +453189 +453190 +453191 +453216 +453217 +453218 +453219 +453220 +453221 +453222 +453223 +453248 +453249 +453250 +453251 +453252 +453253 +453254 +453255 +453280 +453281 +453282 +453283 +453284 +453285 +453286 +453287 +453312 +453313 +453314 +453315 +453316 +453317 +453318 +453319 +453344 +453345 +453346 +453347 +453348 +453349 +453350 +453351 +453376 +453377 +453378 +453379 +453380 +453381 +453382 +453383 +453408 +453409 +453410 +453411 +453412 +453413 +453414 +453415 +453440 +453441 +453442 +453443 +453444 +453445 +453446 +453447 +453472 +453473 +453474 +453475 +453476 +453477 +453478 +453479 +453504 +453505 +453506 +453507 +453508 +453509 +453510 +453511 +453536 +453537 +453538 +453539 +453540 +453541 +453542 +453543 +453568 +453569 +453570 +453571 +453572 +453573 +453574 +453575 +453600 +453601 +453602 +453603 +453604 +453605 +453606 +453607 +453632 +453633 +453634 +453635 +453636 +453637 +453638 +453639 +453664 +453665 +453666 +453667 +453668 +453669 +453670 +453671 +453696 +453697 +453698 +453699 +453700 +453701 +453702 +453703 +453728 +453729 +453730 +453731 +453732 +453733 +453734 +453735 +453760 +453761 +453762 +453763 +453764 +453765 +453766 +453767 +453792 +453793 +453794 +453795 +453796 +453797 +453798 +453799 +453824 +453825 +453826 +453827 +453828 +453829 +453830 +453831 +453856 +453857 +453858 +453859 +453860 +453861 +453862 +453863 +453888 +453889 +453890 +453891 +453892 +453893 +453894 +453895 +453920 +453921 +453922 +453923 +453924 +453925 +453926 +453927 +453952 +453953 +453954 +453955 +453956 +453957 +453958 +453959 +453984 +453985 +453986 +453987 +453988 +453989 +453990 +453991 +454016 +454017 +454018 +454019 +454020 +454021 +454022 +454023 +454048 +454049 +454050 +454051 +454052 +454053 +454054 +454055 +454080 +454081 +454082 +454083 +454084 +454085 +454086 +454087 +454112 +454113 +454114 +454115 +454116 +454117 +454118 +454119 +454144 +454145 +454146 +454147 +454148 +454149 +454150 +454151 +454176 +454177 +454178 +454179 +454180 +454181 +454182 +454183 +454208 +454209 +454210 +454211 +454212 +454213 +454214 +454215 +454240 +454241 +454242 +454243 +454244 +454245 +454246 +454247 +454272 +454273 +454274 +454275 +454276 +454277 +454278 +454279 +454304 +454305 +454306 +454307 +454308 +454309 +454310 +454311 +454336 +454337 +454338 +454339 +454340 +454341 +454342 +454343 +454368 +454369 +454370 +454371 +454372 +454373 +454374 +454375 +454400 +454401 +454402 +454403 +454404 +454405 +454406 +454407 +454432 +454433 +454434 +454435 +454436 +454437 +454438 +454439 +454464 +454465 +454466 +454467 +454468 +454469 +454470 +454471 +454496 +454497 +454498 +454499 +454500 +454501 +454502 +454503 +454528 +454529 +454530 +454531 +454532 +454533 +454534 +454535 +454560 +454561 +454562 +454563 +454564 +454565 +454566 +454567 +454592 +454593 +454594 +454595 +454596 +454597 +454598 +454599 +454624 +454625 +454626 +454627 +454628 +454629 +454630 +454631 +454656 +454657 +454658 +454659 +454660 +454661 +454662 +454663 +454688 +454689 +454690 +454691 +454692 +454693 +454694 +454695 +454720 +454721 +454722 +454723 +454724 +454725 +454726 +454727 +454752 +454753 +454754 +454755 +454756 +454757 +454758 +454759 +454784 +454785 +454786 +454787 +454788 +454789 +454790 +454791 +454816 +454817 +454818 +454819 +454820 +454821 +454822 +454823 +454848 +454849 +454850 +454851 +454852 +454853 +454854 +454855 +454880 +454881 +454882 +454883 +454884 +454885 +454886 +454887 +454912 +454913 +454914 +454915 +454916 +454917 +454918 +454919 +454944 +454945 +454946 +454947 +454948 +454949 +454950 +454951 +454976 +454977 +454978 +454979 +454980 +454981 +454982 +454983 +455008 +455009 +455010 +455011 +455012 +455013 +455014 +455015 +455040 +455041 +455042 +455043 +455044 +455045 +455046 +455047 +455072 +455073 +455074 +455075 +455076 +455077 +455078 +455079 +455104 +455105 +455106 +455107 +455108 +455109 +455110 +455111 +455136 +455137 +455138 +455139 +455140 +455141 +455142 +455143 +455168 +455169 +455170 +455171 +455172 +455173 +455174 +455175 +455200 +455201 +455202 +455203 +455204 +455205 +455206 +455207 +455232 +455233 +455234 +455235 +455236 +455237 +455238 +455239 +455264 +455265 +455266 +455267 +455268 +455269 +455270 +455271 +455296 +455297 +455298 +455299 +455300 +455301 +455302 +455303 +455328 +455329 +455330 +455331 +455332 +455333 +455334 +455335 +455360 +455361 +455362 +455363 +455364 +455365 +455366 +455367 +455392 +455393 +455394 +455395 +455396 +455397 +455398 +455399 +455424 +455425 +455426 +455427 +455428 +455429 +455430 +455431 +455456 +455457 +455458 +455459 +455460 +455461 +455462 +455463 +455488 +455489 +455490 +455491 +455492 +455493 +455494 +455495 +455520 +455521 +455522 +455523 +455524 +455525 +455526 +455527 +455552 +455553 +455554 +455555 +455556 +455557 +455558 +455559 +455584 +455585 +455586 +455587 +455588 +455589 +455590 +455591 +455616 +455617 +455618 +455619 +455620 +455621 +455622 +455623 +455648 +455649 +455650 +455651 +455652 +455653 +455654 +455655 +455680 +455681 +455682 +455683 +455684 +455685 +455686 +455687 +455712 +455713 +455714 +455715 +455716 +455717 +455718 +455719 +455744 +455745 +455746 +455747 +455748 +455749 +455750 +455751 +455776 +455777 +455778 +455779 +455780 +455781 +455782 +455783 +455808 +455809 +455810 +455811 +455812 +455813 +455814 +455815 +455840 +455841 +455842 +455843 +455844 +455845 +455846 +455847 +455872 +455873 +455874 +455875 +455876 +455877 +455878 +455879 +455904 +455905 +455906 +455907 +455908 +455909 +455910 +455911 +455936 +455937 +455938 +455939 +455940 +455941 +455942 +455943 +455968 +455969 +455970 +455971 +455972 +455973 +455974 +455975 +456000 +456001 +456002 +456003 +456004 +456005 +456006 +456007 +456032 +456033 +456034 +456035 +456036 +456037 +456038 +456039 +456064 +456065 +456066 +456067 +456068 +456069 +456070 +456071 +456096 +456097 +456098 +456099 +456100 +456101 +456102 +456103 +456128 +456129 +456130 +456131 +456132 +456133 +456134 +456135 +456160 +456161 +456162 +456163 +456164 +456165 +456166 +456167 +456192 +456193 +456194 +456195 +456196 +456197 +456198 +456199 +456224 +456225 +456226 +456227 +456228 +456229 +456230 +456231 +456256 +456257 +456258 +456259 +456260 +456261 +456262 +456263 +456288 +456289 +456290 +456291 +456292 +456293 +456294 +456295 +456320 +456321 +456322 +456323 +456324 +456325 +456326 +456327 +456352 +456353 +456354 +456355 +456356 +456357 +456358 +456359 +456384 +456385 +456386 +456387 +456388 +456389 +456390 +456391 +456416 +456417 +456418 +456419 +456420 +456421 +456422 +456423 +456448 +456449 +456450 +456451 +456452 +456453 +456454 +456455 +456480 +456481 +456482 +456483 +456484 +456485 +456486 +456487 +456512 +456513 +456514 +456515 +456516 +456517 +456518 +456519 +456544 +456545 +456546 +456547 +456548 +456549 +456550 +456551 +456576 +456577 +456578 +456579 +456580 +456581 +456582 +456583 +456608 +456609 +456610 +456611 +456612 +456613 +456614 +456615 +456640 +456641 +456642 +456643 +456644 +456645 +456646 +456647 +456672 +456673 +456674 +456675 +456676 +456677 +456678 +456679 +456704 +456705 +456706 +456707 +456708 +456709 +456710 +456711 +456736 +456737 +456738 +456739 +456740 +456741 +456742 +456743 +456768 +456769 +456770 +456771 +456772 +456773 +456774 +456775 +456800 +456801 +456802 +456803 +456804 +456805 +456806 +456807 +456832 +456833 +456834 +456835 +456836 +456837 +456838 +456839 +456864 +456865 +456866 +456867 +456868 +456869 +456870 +456871 +456896 +456897 +456898 +456899 +456900 +456901 +456902 +456903 +456928 +456929 +456930 +456931 +456932 +456933 +456934 +456935 +456960 +456961 +456962 +456963 +456964 +456965 +456966 +456967 +456992 +456993 +456994 +456995 +456996 +456997 +456998 +456999 +457024 +457025 +457026 +457027 +457028 +457029 +457030 +457031 +457056 +457057 +457058 +457059 +457060 +457061 +457062 +457063 +457088 +457089 +457090 +457091 +457092 +457093 +457094 +457095 +457120 +457121 +457122 +457123 +457124 +457125 +457126 +457127 +457152 +457153 +457154 +457155 +457156 +457157 +457158 +457159 +457184 +457185 +457186 +457187 +457188 +457189 +457190 +457191 +457216 +457217 +457218 +457219 +457220 +457221 +457222 +457223 +457248 +457249 +457250 +457251 +457252 +457253 +457254 +457255 +457280 +457281 +457282 +457283 +457284 +457285 +457286 +457287 +457312 +457313 +457314 +457315 +457316 +457317 +457318 +457319 +457344 +457345 +457346 +457347 +457348 +457349 +457350 +457351 +457376 +457377 +457378 +457379 +457380 +457381 +457382 +457383 +457408 +457409 +457410 +457411 +457412 +457413 +457414 +457415 +457440 +457441 +457442 +457443 +457444 +457445 +457446 +457447 +457472 +457473 +457474 +457475 +457476 +457477 +457478 +457479 +457504 +457505 +457506 +457507 +457508 +457509 +457510 +457511 +457536 +457537 +457538 +457539 +457540 +457541 +457542 +457543 +457568 +457569 +457570 +457571 +457572 +457573 +457574 +457575 +457600 +457601 +457602 +457603 +457604 +457605 +457606 +457607 +457632 +457633 +457634 +457635 +457636 +457637 +457638 +457639 +457664 +457665 +457666 +457667 +457668 +457669 +457670 +457671 +457696 +457697 +457698 +457699 +457700 +457701 +457702 +457703 +457728 +457729 +457730 +457731 +457732 +457733 +457734 +457735 +457760 +457761 +457762 +457763 +457764 +457765 +457766 +457767 +457792 +457793 +457794 +457795 +457796 +457797 +457798 +457799 +457824 +457825 +457826 +457827 +457828 +457829 +457830 +457831 +457856 +457857 +457858 +457859 +457860 +457861 +457862 +457863 +457888 +457889 +457890 +457891 +457892 +457893 +457894 +457895 +457920 +457921 +457922 +457923 +457924 +457925 +457926 +457927 +457952 +457953 +457954 +457955 +457956 +457957 +457958 +457959 +457984 +457985 +457986 +457987 +457988 +457989 +457990 +457991 +458016 +458017 +458018 +458019 +458020 +458021 +458022 +458023 +458048 +458049 +458050 +458051 +458052 +458053 +458054 +458055 +458080 +458081 +458082 +458083 +458084 +458085 +458086 +458087 +458112 +458113 +458114 +458115 +458116 +458117 +458118 +458119 +458144 +458145 +458146 +458147 +458148 +458149 +458150 +458151 +458176 +458177 +458178 +458179 +458180 +458181 +458182 +458183 +458208 +458209 +458210 +458211 +458212 +458213 +458214 +458215 +458240 +458241 +458242 +458243 +458244 +458245 +458246 +458247 +458272 +458273 +458274 +458275 +458276 +458277 +458278 +458279 +458304 +458305 +458306 +458307 +458308 +458309 +458310 +458311 +458336 +458337 +458338 +458339 +458340 +458341 +458342 +458343 +458368 +458369 +458370 +458371 +458372 +458373 +458374 +458375 +458400 +458401 +458402 +458403 +458404 +458405 +458406 +458407 +458432 +458433 +458434 +458435 +458436 +458437 +458438 +458439 +458464 +458465 +458466 +458467 +458468 +458469 +458470 +458471 +458496 +458497 +458498 +458499 +458500 +458501 +458502 +458503 +458528 +458529 +458530 +458531 +458532 +458533 +458534 +458535 +458560 +458561 +458562 +458563 +458564 +458565 +458566 +458567 +458592 +458593 +458594 +458595 +458596 +458597 +458598 +458599 +458624 +458625 +458626 +458627 +458628 +458629 +458630 +458631 +458656 +458657 +458658 +458659 +458660 +458661 +458662 +458663 +458688 +458689 +458690 +458691 +458692 +458693 +458694 +458695 +458720 +458721 +458722 +458723 +458724 +458725 +458726 +458727 +458752 +458753 +458754 +458755 +458756 +458757 +458758 +458759 +458784 +458785 +458786 +458787 +458788 +458789 +458790 +458791 +458816 +458817 +458818 +458819 +458820 +458821 +458822 +458823 +458848 +458849 +458850 +458851 +458852 +458853 +458854 +458855 +458880 +458881 +458882 +458883 +458884 +458885 +458886 +458887 +458912 +458913 +458914 +458915 +458916 +458917 +458918 +458919 +458944 +458945 +458946 +458947 +458948 +458949 +458950 +458951 +458976 +458977 +458978 +458979 +458980 +458981 +458982 +458983 +459008 +459009 +459010 +459011 +459012 +459013 +459014 +459015 +459040 +459041 +459042 +459043 +459044 +459045 +459046 +459047 +459072 +459073 +459074 +459075 +459076 +459077 +459078 +459079 +459104 +459105 +459106 +459107 +459108 +459109 +459110 +459111 +459136 +459137 +459138 +459139 +459140 +459141 +459142 +459143 +459168 +459169 +459170 +459171 +459172 +459173 +459174 +459175 +459200 +459201 +459202 +459203 +459204 +459205 +459206 +459207 +459232 +459233 +459234 +459235 +459236 +459237 +459238 +459239 +459264 +459265 +459266 +459267 +459268 +459269 +459270 +459271 +459296 +459297 +459298 +459299 +459300 +459301 +459302 +459303 +459328 +459329 +459330 +459331 +459332 +459333 +459334 +459335 +459360 +459361 +459362 +459363 +459364 +459365 +459366 +459367 +459392 +459393 +459394 +459395 +459396 +459397 +459398 +459399 +459424 +459425 +459426 +459427 +459428 +459429 +459430 +459431 +459456 +459457 +459458 +459459 +459460 +459461 +459462 +459463 +459488 +459489 +459490 +459491 +459492 +459493 +459494 +459495 +459520 +459521 +459522 +459523 +459524 +459525 +459526 +459527 +459552 +459553 +459554 +459555 +459556 +459557 +459558 +459559 +459584 +459585 +459586 +459587 +459588 +459589 +459590 +459591 +459616 +459617 +459618 +459619 +459620 +459621 +459622 +459623 +459648 +459649 +459650 +459651 +459652 +459653 +459654 +459655 +459680 +459681 +459682 +459683 +459684 +459685 +459686 +459687 +459712 +459713 +459714 +459715 +459716 +459717 +459718 +459719 +459744 +459745 +459746 +459747 +459748 +459749 +459750 +459751 +459776 +459777 +459778 +459779 +459780 +459781 +459782 +459783 +459808 +459809 +459810 +459811 +459812 +459813 +459814 +459815 +459840 +459841 +459842 +459843 +459844 +459845 +459846 +459847 +459872 +459873 +459874 +459875 +459876 +459877 +459878 +459879 +459904 +459905 +459906 +459907 +459908 +459909 +459910 +459911 +459936 +459937 +459938 +459939 +459940 +459941 +459942 +459943 +459968 +459969 +459970 +459971 +459972 +459973 +459974 +459975 +460000 +460001 +460002 +460003 +460004 +460005 +460006 +460007 +460032 +460033 +460034 +460035 +460036 +460037 +460038 +460039 +460064 +460065 +460066 +460067 +460068 +460069 +460070 +460071 +460096 +460097 +460098 +460099 +460100 +460101 +460102 +460103 +460128 +460129 +460130 +460131 +460132 +460133 +460134 +460135 +460160 +460161 +460162 +460163 +460164 +460165 +460166 +460167 +460192 +460193 +460194 +460195 +460196 +460197 +460198 +460199 +460224 +460225 +460226 +460227 +460228 +460229 +460230 +460231 +460256 +460257 +460258 +460259 +460260 +460261 +460262 +460263 +460288 +460289 +460290 +460291 +460292 +460293 +460294 +460295 +460320 +460321 +460322 +460323 +460324 +460325 +460326 +460327 +460352 +460353 +460354 +460355 +460356 +460357 +460358 +460359 +460384 +460385 +460386 +460387 +460388 +460389 +460390 +460391 +460416 +460417 +460418 +460419 +460420 +460421 +460422 +460423 +460448 +460449 +460450 +460451 +460452 +460453 +460454 +460455 +460480 +460481 +460482 +460483 +460484 +460485 +460486 +460487 +460512 +460513 +460514 +460515 +460516 +460517 +460518 +460519 +460544 +460545 +460546 +460547 +460548 +460549 +460550 +460551 +460576 +460577 +460578 +460579 +460580 +460581 +460582 +460583 +460608 +460609 +460610 +460611 +460612 +460613 +460614 +460615 +460640 +460641 +460642 +460643 +460644 +460645 +460646 +460647 +460672 +460673 +460674 +460675 +460676 +460677 +460678 +460679 +460704 +460705 +460706 +460707 +460708 +460709 +460710 +460711 +460736 +460737 +460738 +460739 +460740 +460741 +460742 +460743 +460768 +460769 +460770 +460771 +460772 +460773 +460774 +460775 +460800 +460801 +460802 +460803 +460804 +460805 +460806 +460807 +460832 +460833 +460834 +460835 +460836 +460837 +460838 +460839 +460864 +460865 +460866 +460867 +460868 +460869 +460870 +460871 +460896 +460897 +460898 +460899 +460900 +460901 +460902 +460903 +460928 +460929 +460930 +460931 +460932 +460933 +460934 +460935 +460960 +460961 +460962 +460963 +460964 +460965 +460966 +460967 +460992 +460993 +460994 +460995 +460996 +460997 +460998 +460999 +461024 +461025 +461026 +461027 +461028 +461029 +461030 +461031 +461056 +461057 +461058 +461059 +461060 +461061 +461062 +461063 +461088 +461089 +461090 +461091 +461092 +461093 +461094 +461095 +461120 +461121 +461122 +461123 +461124 +461125 +461126 +461127 +461152 +461153 +461154 +461155 +461156 +461157 +461158 +461159 +461184 +461185 +461186 +461187 +461188 +461189 +461190 +461191 +461216 +461217 +461218 +461219 +461220 +461221 +461222 +461223 +461248 +461249 +461250 +461251 +461252 +461253 +461254 +461255 +461280 +461281 +461282 +461283 +461284 +461285 +461286 +461287 +461312 +461313 +461314 +461315 +461316 +461317 +461318 +461319 +461344 +461345 +461346 +461347 +461348 +461349 +461350 +461351 +461376 +461377 +461378 +461379 +461380 +461381 +461382 +461383 +461408 +461409 +461410 +461411 +461412 +461413 +461414 +461415 +461440 +461441 +461442 +461443 +461444 +461445 +461446 +461447 +461472 +461473 +461474 +461475 +461476 +461477 +461478 +461479 +461504 +461505 +461506 +461507 +461508 +461509 +461510 +461511 +461536 +461537 +461538 +461539 +461540 +461541 +461542 +461543 +461568 +461569 +461570 +461571 +461572 +461573 +461574 +461575 +461600 +461601 +461602 +461603 +461604 +461605 +461606 +461607 +461632 +461633 +461634 +461635 +461636 +461637 +461638 +461639 +461664 +461665 +461666 +461667 +461668 +461669 +461670 +461671 +461696 +461697 +461698 +461699 +461700 +461701 +461702 +461703 +461728 +461729 +461730 +461731 +461732 +461733 +461734 +461735 +461760 +461761 +461762 +461763 +461764 +461765 +461766 +461767 +461792 +461793 +461794 +461795 +461796 +461797 +461798 +461799 +461824 +461825 +461826 +461827 +461828 +461829 +461830 +461831 +461856 +461857 +461858 +461859 +461860 +461861 +461862 +461863 +461888 +461889 +461890 +461891 +461892 +461893 +461894 +461895 +461920 +461921 +461922 +461923 +461924 +461925 +461926 +461927 +461952 +461953 +461954 +461955 +461956 +461957 +461958 +461959 +461984 +461985 +461986 +461987 +461988 +461989 +461990 +461991 +462016 +462017 +462018 +462019 +462020 +462021 +462022 +462023 +462048 +462049 +462050 +462051 +462052 +462053 +462054 +462055 +462080 +462081 +462082 +462083 +462084 +462085 +462086 +462087 +462112 +462113 +462114 +462115 +462116 +462117 +462118 +462119 +462144 +462145 +462146 +462147 +462148 +462149 +462150 +462151 +462176 +462177 +462178 +462179 +462180 +462181 +462182 +462183 +462208 +462209 +462210 +462211 +462212 +462213 +462214 +462215 +462240 +462241 +462242 +462243 +462244 +462245 +462246 +462247 +462272 +462273 +462274 +462275 +462276 +462277 +462278 +462279 +462304 +462305 +462306 +462307 +462308 +462309 +462310 +462311 +462336 +462337 +462338 +462339 +462340 +462341 +462342 +462343 +462368 +462369 +462370 +462371 +462372 +462373 +462374 +462375 +462400 +462401 +462402 +462403 +462404 +462405 +462406 +462407 +462432 +462433 +462434 +462435 +462436 +462437 +462438 +462439 +462464 +462465 +462466 +462467 +462468 +462469 +462470 +462471 +462496 +462497 +462498 +462499 +462500 +462501 +462502 +462503 +462528 +462529 +462530 +462531 +462532 +462533 +462534 +462535 +462560 +462561 +462562 +462563 +462564 +462565 +462566 +462567 +462592 +462593 +462594 +462595 +462596 +462597 +462598 +462599 +462624 +462625 +462626 +462627 +462628 +462629 +462630 +462631 +462656 +462657 +462658 +462659 +462660 +462661 +462662 +462663 +462688 +462689 +462690 +462691 +462692 +462693 +462694 +462695 +462720 +462721 +462722 +462723 +462724 +462725 +462726 +462727 +462752 +462753 +462754 +462755 +462756 +462757 +462758 +462759 +462784 +462785 +462786 +462787 +462788 +462789 +462790 +462791 +462816 +462817 +462818 +462819 +462820 +462821 +462822 +462823 +462848 +462849 +462850 +462851 +462852 +462853 +462854 +462855 +462880 +462881 +462882 +462883 +462884 +462885 +462886 +462887 +462912 +462913 +462914 +462915 +462916 +462917 +462918 +462919 +462944 +462945 +462946 +462947 +462948 +462949 +462950 +462951 +462976 +462977 +462978 +462979 +462980 +462981 +462982 +462983 +463008 +463009 +463010 +463011 +463012 +463013 +463014 +463015 +463040 +463041 +463042 +463043 +463044 +463045 +463046 +463047 +463072 +463073 +463074 +463075 +463076 +463077 +463078 +463079 +463104 +463105 +463106 +463107 +463108 +463109 +463110 +463111 +463136 +463137 +463138 +463139 +463140 +463141 +463142 +463143 +463168 +463169 +463170 +463171 +463172 +463173 +463174 +463175 +463200 +463201 +463202 +463203 +463204 +463205 +463206 +463207 +463232 +463233 +463234 +463235 +463236 +463237 +463238 +463239 +463264 +463265 +463266 +463267 +463268 +463269 +463270 +463271 +463296 +463297 +463298 +463299 +463300 +463301 +463302 +463303 +463328 +463329 +463330 +463331 +463332 +463333 +463334 +463335 +463360 +463361 +463362 +463363 +463364 +463365 +463366 +463367 +463392 +463393 +463394 +463395 +463396 +463397 +463398 +463399 +463424 +463425 +463426 +463427 +463428 +463429 +463430 +463431 +463456 +463457 +463458 +463459 +463460 +463461 +463462 +463463 +463488 +463489 +463490 +463491 +463492 +463493 +463494 +463495 +463520 +463521 +463522 +463523 +463524 +463525 +463526 +463527 +463552 +463553 +463554 +463555 +463556 +463557 +463558 +463559 +463584 +463585 +463586 +463587 +463588 +463589 +463590 +463591 +463616 +463617 +463618 +463619 +463620 +463621 +463622 +463623 +463648 +463649 +463650 +463651 +463652 +463653 +463654 +463655 +463680 +463681 +463682 +463683 +463684 +463685 +463686 +463687 +463712 +463713 +463714 +463715 +463716 +463717 +463718 +463719 +463744 +463745 +463746 +463747 +463748 +463749 +463750 +463751 +463776 +463777 +463778 +463779 +463780 +463781 +463782 +463783 +463808 +463809 +463810 +463811 +463812 +463813 +463814 +463815 +463840 +463841 +463842 +463843 +463844 +463845 +463846 +463847 +463872 +463873 +463874 +463875 +463876 +463877 +463878 +463879 +463904 +463905 +463906 +463907 +463908 +463909 +463910 +463911 +463936 +463937 +463938 +463939 +463940 +463941 +463942 +463943 +463968 +463969 +463970 +463971 +463972 +463973 +463974 +463975 +464000 +464001 +464002 +464003 +464004 +464005 +464006 +464007 +464032 +464033 +464034 +464035 +464036 +464037 +464038 +464039 +464064 +464065 +464066 +464067 +464068 +464069 +464070 +464071 +464096 +464097 +464098 +464099 +464100 +464101 +464102 +464103 +464128 +464129 +464130 +464131 +464132 +464133 +464134 +464135 +464160 +464161 +464162 +464163 +464164 +464165 +464166 +464167 +464192 +464193 +464194 +464195 +464196 +464197 +464198 +464199 +464224 +464225 +464226 +464227 +464228 +464229 +464230 +464231 +464256 +464257 +464258 +464259 +464260 +464261 +464262 +464263 +464288 +464289 +464290 +464291 +464292 +464293 +464294 +464295 +464320 +464321 +464322 +464323 +464324 +464325 +464326 +464327 +464352 +464353 +464354 +464355 +464356 +464357 +464358 +464359 +464384 +464385 +464386 +464387 +464388 +464389 +464390 +464391 +464416 +464417 +464418 +464419 +464420 +464421 +464422 +464423 +464448 +464449 +464450 +464451 +464452 +464453 +464454 +464455 +464480 +464481 +464482 +464483 +464484 +464485 +464486 +464487 +464512 +464513 +464514 +464515 +464516 +464517 +464518 +464519 +464544 +464545 +464546 +464547 +464548 +464549 +464550 +464551 +464576 +464577 +464578 +464579 +464580 +464581 +464582 +464583 +464608 +464609 +464610 +464611 +464612 +464613 +464614 +464615 +464640 +464641 +464642 +464643 +464644 +464645 +464646 +464647 +464672 +464673 +464674 +464675 +464676 +464677 +464678 +464679 +464704 +464705 +464706 +464707 +464708 +464709 +464710 +464711 +464736 +464737 +464738 +464739 +464740 +464741 +464742 +464743 +464768 +464769 +464770 +464771 +464772 +464773 +464774 +464775 +464800 +464801 +464802 +464803 +464804 +464805 +464806 +464807 +464832 +464833 +464834 +464835 +464836 +464837 +464838 +464839 +464864 +464865 +464866 +464867 +464868 +464869 +464870 +464871 +464896 +464897 +464898 +464899 +464900 +464901 +464902 +464903 +464928 +464929 +464930 +464931 +464932 +464933 +464934 +464935 +464960 +464961 +464962 +464963 +464964 +464965 +464966 +464967 +464992 +464993 +464994 +464995 +464996 +464997 +464998 +464999 +465024 +465025 +465026 +465027 +465028 +465029 +465030 +465031 +465056 +465057 +465058 +465059 +465060 +465061 +465062 +465063 +465088 +465089 +465090 +465091 +465092 +465093 +465094 +465095 +465120 +465121 +465122 +465123 +465124 +465125 +465126 +465127 +465152 +465153 +465154 +465155 +465156 +465157 +465158 +465159 +465184 +465185 +465186 +465187 +465188 +465189 +465190 +465191 +465216 +465217 +465218 +465219 +465220 +465221 +465222 +465223 +465248 +465249 +465250 +465251 +465252 +465253 +465254 +465255 +465280 +465281 +465282 +465283 +465284 +465285 +465286 +465287 +465312 +465313 +465314 +465315 +465316 +465317 +465318 +465319 +465344 +465345 +465346 +465347 +465348 +465349 +465350 +465351 +465376 +465377 +465378 +465379 +465380 +465381 +465382 +465383 +465408 +465409 +465410 +465411 +465412 +465413 +465414 +465415 +465440 +465441 +465442 +465443 +465444 +465445 +465446 +465447 +465472 +465473 +465474 +465475 +465476 +465477 +465478 +465479 +465504 +465505 +465506 +465507 +465508 +465509 +465510 +465511 +465536 +465537 +465538 +465539 +465540 +465541 +465542 +465543 +465568 +465569 +465570 +465571 +465572 +465573 +465574 +465575 +465600 +465601 +465602 +465603 +465604 +465605 +465606 +465607 +465632 +465633 +465634 +465635 +465636 +465637 +465638 +465639 +465664 +465665 +465666 +465667 +465668 +465669 +465670 +465671 +465696 +465697 +465698 +465699 +465700 +465701 +465702 +465703 +465728 +465729 +465730 +465731 +465732 +465733 +465734 +465735 +465760 +465761 +465762 +465763 +465764 +465765 +465766 +465767 +465792 +465793 +465794 +465795 +465796 +465797 +465798 +465799 +465824 +465825 +465826 +465827 +465828 +465829 +465830 +465831 +465856 +465857 +465858 +465859 +465860 +465861 +465862 +465863 +465888 +465889 +465890 +465891 +465892 +465893 +465894 +465895 +465920 +465921 +465922 +465923 +465924 +465925 +465926 +465927 +465952 +465953 +465954 +465955 +465956 +465957 +465958 +465959 +465984 +465985 +465986 +465987 +465988 +465989 +465990 +465991 +466016 +466017 +466018 +466019 +466020 +466021 +466022 +466023 +466048 +466049 +466050 +466051 +466052 +466053 +466054 +466055 +466080 +466081 +466082 +466083 +466084 +466085 +466086 +466087 +466112 +466113 +466114 +466115 +466116 +466117 +466118 +466119 +466144 +466145 +466146 +466147 +466148 +466149 +466150 +466151 +466176 +466177 +466178 +466179 +466180 +466181 +466182 +466183 +466208 +466209 +466210 +466211 +466212 +466213 +466214 +466215 +466240 +466241 +466242 +466243 +466244 +466245 +466246 +466247 +466272 +466273 +466274 +466275 +466276 +466277 +466278 +466279 +466304 +466305 +466306 +466307 +466308 +466309 +466310 +466311 +466336 +466337 +466338 +466339 +466340 +466341 +466342 +466343 +466368 +466369 +466370 +466371 +466372 +466373 +466374 +466375 +466400 +466401 +466402 +466403 +466404 +466405 +466406 +466407 +466432 +466433 +466434 +466435 +466436 +466437 +466438 +466439 +466464 +466465 +466466 +466467 +466468 +466469 +466470 +466471 +466496 +466497 +466498 +466499 +466500 +466501 +466502 +466503 +466528 +466529 +466530 +466531 +466532 +466533 +466534 +466535 +466560 +466561 +466562 +466563 +466564 +466565 +466566 +466567 +466592 +466593 +466594 +466595 +466596 +466597 +466598 +466599 +466624 +466625 +466626 +466627 +466628 +466629 +466630 +466631 +466656 +466657 +466658 +466659 +466660 +466661 +466662 +466663 +466688 +466689 +466690 +466691 +466692 +466693 +466694 +466695 +466720 +466721 +466722 +466723 +466724 +466725 +466726 +466727 +466752 +466753 +466754 +466755 +466756 +466757 +466758 +466759 +466784 +466785 +466786 +466787 +466788 +466789 +466790 +466791 +466816 +466817 +466818 +466819 +466820 +466821 +466822 +466823 +466848 +466849 +466850 +466851 +466852 +466853 +466854 +466855 +466880 +466881 +466882 +466883 +466884 +466885 +466886 +466887 +466912 +466913 +466914 +466915 +466916 +466917 +466918 +466919 +466944 +466945 +466946 +466947 +466948 +466949 +466950 +466951 +466976 +466977 +466978 +466979 +466980 +466981 +466982 +466983 +467008 +467009 +467010 +467011 +467012 +467013 +467014 +467015 +467040 +467041 +467042 +467043 +467044 +467045 +467046 +467047 +467072 +467073 +467074 +467075 +467076 +467077 +467078 +467079 +467104 +467105 +467106 +467107 +467108 +467109 +467110 +467111 +467136 +467137 +467138 +467139 +467140 +467141 +467142 +467143 +467168 +467169 +467170 +467171 +467172 +467173 +467174 +467175 +467200 +467201 +467202 +467203 +467204 +467205 +467206 +467207 +467232 +467233 +467234 +467235 +467236 +467237 +467238 +467239 +467264 +467265 +467266 +467267 +467268 +467269 +467270 +467271 +467296 +467297 +467298 +467299 +467300 +467301 +467302 +467303 +467328 +467329 +467330 +467331 +467332 +467333 +467334 +467335 +467360 +467361 +467362 +467363 +467364 +467365 +467366 +467367 +467392 +467393 +467394 +467395 +467396 +467397 +467398 +467399 +467424 +467425 +467426 +467427 +467428 +467429 +467430 +467431 +467456 +467457 +467458 +467459 +467460 +467461 +467462 +467463 +467488 +467489 +467490 +467491 +467492 +467493 +467494 +467495 +467520 +467521 +467522 +467523 +467524 +467525 +467526 +467527 +467552 +467553 +467554 +467555 +467556 +467557 +467558 +467559 +467584 +467585 +467586 +467587 +467588 +467589 +467590 +467591 +467616 +467617 +467618 +467619 +467620 +467621 +467622 +467623 +467648 +467649 +467650 +467651 +467652 +467653 +467654 +467655 +467680 +467681 +467682 +467683 +467684 +467685 +467686 +467687 +467712 +467713 +467714 +467715 +467716 +467717 +467718 +467719 +467744 +467745 +467746 +467747 +467748 +467749 +467750 +467751 +467776 +467777 +467778 +467779 +467780 +467781 +467782 +467783 +467808 +467809 +467810 +467811 +467812 +467813 +467814 +467815 +467840 +467841 +467842 +467843 +467844 +467845 +467846 +467847 +467872 +467873 +467874 +467875 +467876 +467877 +467878 +467879 +467904 +467905 +467906 +467907 +467908 +467909 +467910 +467911 +467936 +467937 +467938 +467939 +467940 +467941 +467942 +467943 +467968 +467969 +467970 +467971 +467972 +467973 +467974 +467975 +468000 +468001 +468002 +468003 +468004 +468005 +468006 +468007 +468032 +468033 +468034 +468035 +468036 +468037 +468038 +468039 +468064 +468065 +468066 +468067 +468068 +468069 +468070 +468071 +468096 +468097 +468098 +468099 +468100 +468101 +468102 +468103 +468128 +468129 +468130 +468131 +468132 +468133 +468134 +468135 +468160 +468161 +468162 +468163 +468164 +468165 +468166 +468167 +468192 +468193 +468194 +468195 +468196 +468197 +468198 +468199 +468224 +468225 +468226 +468227 +468228 +468229 +468230 +468231 +468256 +468257 +468258 +468259 +468260 +468261 +468262 +468263 +468288 +468289 +468290 +468291 +468292 +468293 +468294 +468295 +468320 +468321 +468322 +468323 +468324 +468325 +468326 +468327 +468352 +468353 +468354 +468355 +468356 +468357 +468358 +468359 +468384 +468385 +468386 +468387 +468388 +468389 +468390 +468391 +468416 +468417 +468418 +468419 +468420 +468421 +468422 +468423 +468448 +468449 +468450 +468451 +468452 +468453 +468454 +468455 +468480 +468481 +468482 +468483 +468484 +468485 +468486 +468487 +468512 +468513 +468514 +468515 +468516 +468517 +468518 +468519 +468544 +468545 +468546 +468547 +468548 +468549 +468550 +468551 +468576 +468577 +468578 +468579 +468580 +468581 +468582 +468583 +468608 +468609 +468610 +468611 +468612 +468613 +468614 +468615 +468640 +468641 +468642 +468643 +468644 +468645 +468646 +468647 +468672 +468673 +468674 +468675 +468676 +468677 +468678 +468679 +468704 +468705 +468706 +468707 +468708 +468709 +468710 +468711 +468736 +468737 +468738 +468739 +468740 +468741 +468742 +468743 +468768 +468769 +468770 +468771 +468772 +468773 +468774 +468775 +468800 +468801 +468802 +468803 +468804 +468805 +468806 +468807 +468832 +468833 +468834 +468835 +468836 +468837 +468838 +468839 +468864 +468865 +468866 +468867 +468868 +468869 +468870 +468871 +468896 +468897 +468898 +468899 +468900 +468901 +468902 +468903 +468928 +468929 +468930 +468931 +468932 +468933 +468934 +468935 +468960 +468961 +468962 +468963 +468964 +468965 +468966 +468967 +468992 +468993 +468994 +468995 +468996 +468997 +468998 +468999 +469024 +469025 +469026 +469027 +469028 +469029 +469030 +469031 +469056 +469057 +469058 +469059 +469060 +469061 +469062 +469063 +469088 +469089 +469090 +469091 +469092 +469093 +469094 +469095 +469120 +469121 +469122 +469123 +469124 +469125 +469126 +469127 +469152 +469153 +469154 +469155 +469156 +469157 +469158 +469159 +469184 +469185 +469186 +469187 +469188 +469189 +469190 +469191 +469216 +469217 +469218 +469219 +469220 +469221 +469222 +469223 +469248 +469249 +469250 +469251 +469252 +469253 +469254 +469255 +469280 +469281 +469282 +469283 +469284 +469285 +469286 +469287 +469312 +469313 +469314 +469315 +469316 +469317 +469318 +469319 +469344 +469345 +469346 +469347 +469348 +469349 +469350 +469351 +469376 +469377 +469378 +469379 +469380 +469381 +469382 +469383 +469408 +469409 +469410 +469411 +469412 +469413 +469414 +469415 +469440 +469441 +469442 +469443 +469444 +469445 +469446 +469447 +469472 +469473 +469474 +469475 +469476 +469477 +469478 +469479 +469504 +469505 +469506 +469507 +469508 +469509 +469510 +469511 +469536 +469537 +469538 +469539 +469540 +469541 +469542 +469543 +469568 +469569 +469570 +469571 +469572 +469573 +469574 +469575 +469600 +469601 +469602 +469603 +469604 +469605 +469606 +469607 +469632 +469633 +469634 +469635 +469636 +469637 +469638 +469639 +469664 +469665 +469666 +469667 +469668 +469669 +469670 +469671 +469696 +469697 +469698 +469699 +469700 +469701 +469702 +469703 +469728 +469729 +469730 +469731 +469732 +469733 +469734 +469735 +469760 +469761 +469762 +469763 +469764 +469765 +469766 +469767 +469792 +469793 +469794 +469795 +469796 +469797 +469798 +469799 +469824 +469825 +469826 +469827 +469828 +469829 +469830 +469831 +469856 +469857 +469858 +469859 +469860 +469861 +469862 +469863 +469888 +469889 +469890 +469891 +469892 +469893 +469894 +469895 +469920 +469921 +469922 +469923 +469924 +469925 +469926 +469927 +469952 +469953 +469954 +469955 +469956 +469957 +469958 +469959 +469984 +469985 +469986 +469987 +469988 +469989 +469990 +469991 +470016 +470017 +470018 +470019 +470020 +470021 +470022 +470023 +470048 +470049 +470050 +470051 +470052 +470053 +470054 +470055 +470080 +470081 +470082 +470083 +470084 +470085 +470086 +470087 +470112 +470113 +470114 +470115 +470116 +470117 +470118 +470119 +470144 +470145 +470146 +470147 +470148 +470149 +470150 +470151 +470176 +470177 +470178 +470179 +470180 +470181 +470182 +470183 +470208 +470209 +470210 +470211 +470212 +470213 +470214 +470215 +470240 +470241 +470242 +470243 +470244 +470245 +470246 +470247 +470272 +470273 +470274 +470275 +470276 +470277 +470278 +470279 +470304 +470305 +470306 +470307 +470308 +470309 +470310 +470311 +470336 +470337 +470338 +470339 +470340 +470341 +470342 +470343 +470368 +470369 +470370 +470371 +470372 +470373 +470374 +470375 +470400 +470401 +470402 +470403 +470404 +470405 +470406 +470407 +470432 +470433 +470434 +470435 +470436 +470437 +470438 +470439 +470464 +470465 +470466 +470467 +470468 +470469 +470470 +470471 +470496 +470497 +470498 +470499 +470500 +470501 +470502 +470503 +470528 +470529 +470530 +470531 +470532 +470533 +470534 +470535 +470560 +470561 +470562 +470563 +470564 +470565 +470566 +470567 +470592 +470593 +470594 +470595 +470596 +470597 +470598 +470599 +470624 +470625 +470626 +470627 +470628 +470629 +470630 +470631 +470656 +470657 +470658 +470659 +470660 +470661 +470662 +470663 +470688 +470689 +470690 +470691 +470692 +470693 +470694 +470695 +470720 +470721 +470722 +470723 +470724 +470725 +470726 +470727 +470752 +470753 +470754 +470755 +470756 +470757 +470758 +470759 +470784 +470785 +470786 +470787 +470788 +470789 +470790 +470791 +470816 +470817 +470818 +470819 +470820 +470821 +470822 +470823 +470848 +470849 +470850 +470851 +470852 +470853 +470854 +470855 +470880 +470881 +470882 +470883 +470884 +470885 +470886 +470887 +470912 +470913 +470914 +470915 +470916 +470917 +470918 +470919 +470944 +470945 +470946 +470947 +470948 +470949 +470950 +470951 +470976 +470977 +470978 +470979 +470980 +470981 +470982 +470983 +471008 +471009 +471010 +471011 +471012 +471013 +471014 +471015 +471040 +471041 +471042 +471043 +471044 +471045 +471046 +471047 +471072 +471073 +471074 +471075 +471076 +471077 +471078 +471079 +471104 +471105 +471106 +471107 +471108 +471109 +471110 +471111 +471136 +471137 +471138 +471139 +471140 +471141 +471142 +471143 +471168 +471169 +471170 +471171 +471172 +471173 +471174 +471175 +471200 +471201 +471202 +471203 +471204 +471205 +471206 +471207 +471232 +471233 +471234 +471235 +471236 +471237 +471238 +471239 +471264 +471265 +471266 +471267 +471268 +471269 +471270 +471271 +471296 +471297 +471298 +471299 +471300 +471301 +471302 +471303 +471328 +471329 +471330 +471331 +471332 +471333 +471334 +471335 +471360 +471361 +471362 +471363 +471364 +471365 +471366 +471367 +471392 +471393 +471394 +471395 +471396 +471397 +471398 +471399 +471424 +471425 +471426 +471427 +471428 +471429 +471430 +471431 +471456 +471457 +471458 +471459 +471460 +471461 +471462 +471463 +471488 +471489 +471490 +471491 +471492 +471493 +471494 +471495 +471520 +471521 +471522 +471523 +471524 +471525 +471526 +471527 +471552 +471553 +471554 +471555 +471556 +471557 +471558 +471559 +471584 +471585 +471586 +471587 +471588 +471589 +471590 +471591 +471616 +471617 +471618 +471619 +471620 +471621 +471622 +471623 +471648 +471649 +471650 +471651 +471652 +471653 +471654 +471655 +471680 +471681 +471682 +471683 +471684 +471685 +471686 +471687 +471712 +471713 +471714 +471715 +471716 +471717 +471718 +471719 +471744 +471745 +471746 +471747 +471748 +471749 +471750 +471751 +471776 +471777 +471778 +471779 +471780 +471781 +471782 +471783 +471808 +471809 +471810 +471811 +471812 +471813 +471814 +471815 +471840 +471841 +471842 +471843 +471844 +471845 +471846 +471847 +471872 +471873 +471874 +471875 +471876 +471877 +471878 +471879 +471904 +471905 +471906 +471907 +471908 +471909 +471910 +471911 +471936 +471937 +471938 +471939 +471940 +471941 +471942 +471943 +471968 +471969 +471970 +471971 +471972 +471973 +471974 +471975 +472000 +472001 +472002 +472003 +472004 +472005 +472006 +472007 +472032 +472033 +472034 +472035 +472036 +472037 +472038 +472039 +472064 +472065 +472066 +472067 +472068 +472069 +472070 +472071 +472096 +472097 +472098 +472099 +472100 +472101 +472102 +472103 +472128 +472129 +472130 +472131 +472132 +472133 +472134 +472135 +472160 +472161 +472162 +472163 +472164 +472165 +472166 +472167 +472192 +472193 +472194 +472195 +472196 +472197 +472198 +472199 +472224 +472225 +472226 +472227 +472228 +472229 +472230 +472231 +472256 +472257 +472258 +472259 +472260 +472261 +472262 +472263 +472288 +472289 +472290 +472291 +472292 +472293 +472294 +472295 +472320 +472321 +472322 +472323 +472324 +472325 +472326 +472327 +472352 +472353 +472354 +472355 +472356 +472357 +472358 +472359 +472384 +472385 +472386 +472387 +472388 +472389 +472390 +472391 +472416 +472417 +472418 +472419 +472420 +472421 +472422 +472423 +472448 +472449 +472450 +472451 +472452 +472453 +472454 +472455 +472480 +472481 +472482 +472483 +472484 +472485 +472486 +472487 +472512 +472513 +472514 +472515 +472516 +472517 +472518 +472519 +472544 +472545 +472546 +472547 +472548 +472549 +472550 +472551 +472576 +472577 +472578 +472579 +472580 +472581 +472582 +472583 +472608 +472609 +472610 +472611 +472612 +472613 +472614 +472615 +472640 +472641 +472642 +472643 +472644 +472645 +472646 +472647 +472672 +472673 +472674 +472675 +472676 +472677 +472678 +472679 +472704 +472705 +472706 +472707 +472708 +472709 +472710 +472711 +472736 +472737 +472738 +472739 +472740 +472741 +472742 +472743 +472768 +472769 +472770 +472771 +472772 +472773 +472774 +472775 +472800 +472801 +472802 +472803 +472804 +472805 +472806 +472807 +472832 +472833 +472834 +472835 +472836 +472837 +472838 +472839 +472864 +472865 +472866 +472867 +472868 +472869 +472870 +472871 +472896 +472897 +472898 +472899 +472900 +472901 +472902 +472903 +472928 +472929 +472930 +472931 +472932 +472933 +472934 +472935 +472960 +472961 +472962 +472963 +472964 +472965 +472966 +472967 +472992 +472993 +472994 +472995 +472996 +472997 +472998 +472999 +473024 +473025 +473026 +473027 +473028 +473029 +473030 +473031 +473056 +473057 +473058 +473059 +473060 +473061 +473062 +473063 +473088 +473089 +473090 +473091 +473092 +473093 +473094 +473095 +473120 +473121 +473122 +473123 +473124 +473125 +473126 +473127 +473152 +473153 +473154 +473155 +473156 +473157 +473158 +473159 +473184 +473185 +473186 +473187 +473188 +473189 +473190 +473191 +473216 +473217 +473218 +473219 +473220 +473221 +473222 +473223 +473248 +473249 +473250 +473251 +473252 +473253 +473254 +473255 +473280 +473281 +473282 +473283 +473284 +473285 +473286 +473287 +473312 +473313 +473314 +473315 +473316 +473317 +473318 +473319 +473344 +473345 +473346 +473347 +473348 +473349 +473350 +473351 +473376 +473377 +473378 +473379 +473380 +473381 +473382 +473383 +473408 +473409 +473410 +473411 +473412 +473413 +473414 +473415 +473440 +473441 +473442 +473443 +473444 +473445 +473446 +473447 +473472 +473473 +473474 +473475 +473476 +473477 +473478 +473479 +473504 +473505 +473506 +473507 +473508 +473509 +473510 +473511 +473536 +473537 +473538 +473539 +473540 +473541 +473542 +473543 +473568 +473569 +473570 +473571 +473572 +473573 +473574 +473575 +473600 +473601 +473602 +473603 +473604 +473605 +473606 +473607 +473632 +473633 +473634 +473635 +473636 +473637 +473638 +473639 +473664 +473665 +473666 +473667 +473668 +473669 +473670 +473671 +473696 +473697 +473698 +473699 +473700 +473701 +473702 +473703 +473728 +473729 +473730 +473731 +473732 +473733 +473734 +473735 +473760 +473761 +473762 +473763 +473764 +473765 +473766 +473767 +473792 +473793 +473794 +473795 +473796 +473797 +473798 +473799 +473824 +473825 +473826 +473827 +473828 +473829 +473830 +473831 +473856 +473857 +473858 +473859 +473860 +473861 +473862 +473863 +473888 +473889 +473890 +473891 +473892 +473893 +473894 +473895 +473920 +473921 +473922 +473923 +473924 +473925 +473926 +473927 +473952 +473953 +473954 +473955 +473956 +473957 +473958 +473959 +473984 +473985 +473986 +473987 +473988 +473989 +473990 +473991 +474016 +474017 +474018 +474019 +474020 +474021 +474022 +474023 +474048 +474049 +474050 +474051 +474052 +474053 +474054 +474055 +474080 +474081 +474082 +474083 +474084 +474085 +474086 +474087 +474112 +474113 +474114 +474115 +474116 +474117 +474118 +474119 +474144 +474145 +474146 +474147 +474148 +474149 +474150 +474151 +474176 +474177 +474178 +474179 +474180 +474181 +474182 +474183 +474208 +474209 +474210 +474211 +474212 +474213 +474214 +474215 +474240 +474241 +474242 +474243 +474244 +474245 +474246 +474247 +474272 +474273 +474274 +474275 +474276 +474277 +474278 +474279 +474304 +474305 +474306 +474307 +474308 +474309 +474310 +474311 +474336 +474337 +474338 +474339 +474340 +474341 +474342 +474343 +474368 +474369 +474370 +474371 +474372 +474373 +474374 +474375 +474400 +474401 +474402 +474403 +474404 +474405 +474406 +474407 +474432 +474433 +474434 +474435 +474436 +474437 +474438 +474439 +474464 +474465 +474466 +474467 +474468 +474469 +474470 +474471 +474496 +474497 +474498 +474499 +474500 +474501 +474502 +474503 +474528 +474529 +474530 +474531 +474532 +474533 +474534 +474535 +474560 +474561 +474562 +474563 +474564 +474565 +474566 +474567 +474592 +474593 +474594 +474595 +474596 +474597 +474598 +474599 +474624 +474625 +474626 +474627 +474628 +474629 +474630 +474631 +474656 +474657 +474658 +474659 +474660 +474661 +474662 +474663 +474688 +474689 +474690 +474691 +474692 +474693 +474694 +474695 +474720 +474721 +474722 +474723 +474724 +474725 +474726 +474727 +474752 +474753 +474754 +474755 +474756 +474757 +474758 +474759 +474784 +474785 +474786 +474787 +474788 +474789 +474790 +474791 +474816 +474817 +474818 +474819 +474820 +474821 +474822 +474823 +474848 +474849 +474850 +474851 +474852 +474853 +474854 +474855 +474880 +474881 +474882 +474883 +474884 +474885 +474886 +474887 +474912 +474913 +474914 +474915 +474916 +474917 +474918 +474919 +474944 +474945 +474946 +474947 +474948 +474949 +474950 +474951 +474976 +474977 +474978 +474979 +474980 +474981 +474982 +474983 +475008 +475009 +475010 +475011 +475012 +475013 +475014 +475015 +475040 +475041 +475042 +475043 +475044 +475045 +475046 +475047 +475072 +475073 +475074 +475075 +475076 +475077 +475078 +475079 +475104 +475105 +475106 +475107 +475108 +475109 +475110 +475111 +475136 +475137 +475138 +475139 +475140 +475141 +475142 +475143 +475168 +475169 +475170 +475171 +475172 +475173 +475174 +475175 +475200 +475201 +475202 +475203 +475204 +475205 +475206 +475207 +475232 +475233 +475234 +475235 +475236 +475237 +475238 +475239 +475264 +475265 +475266 +475267 +475268 +475269 +475270 +475271 +475296 +475297 +475298 +475299 +475300 +475301 +475302 +475303 +475328 +475329 +475330 +475331 +475332 +475333 +475334 +475335 +475360 +475361 +475362 +475363 +475364 +475365 +475366 +475367 +475392 +475393 +475394 +475395 +475396 +475397 +475398 +475399 +475424 +475425 +475426 +475427 +475428 +475429 +475430 +475431 +475456 +475457 +475458 +475459 +475460 +475461 +475462 +475463 +475488 +475489 +475490 +475491 +475492 +475493 +475494 +475495 +475520 +475521 +475522 +475523 +475524 +475525 +475526 +475527 +475552 +475553 +475554 +475555 +475556 +475557 +475558 +475559 +475584 +475585 +475586 +475587 +475588 +475589 +475590 +475591 +475616 +475617 +475618 +475619 +475620 +475621 +475622 +475623 +475648 +475649 +475650 +475651 +475652 +475653 +475654 +475655 +475680 +475681 +475682 +475683 +475684 +475685 +475686 +475687 +475712 +475713 +475714 +475715 +475716 +475717 +475718 +475719 +475744 +475745 +475746 +475747 +475748 +475749 +475750 +475751 +475776 +475777 +475778 +475779 +475780 +475781 +475782 +475783 +475808 +475809 +475810 +475811 +475812 +475813 +475814 +475815 +475840 +475841 +475842 +475843 +475844 +475845 +475846 +475847 +475872 +475873 +475874 +475875 +475876 +475877 +475878 +475879 +475904 +475905 +475906 +475907 +475908 +475909 +475910 +475911 +475936 +475937 +475938 +475939 +475940 +475941 +475942 +475943 +475968 +475969 +475970 +475971 +475972 +475973 +475974 +475975 +476000 +476001 +476002 +476003 +476004 +476005 +476006 +476007 +476032 +476033 +476034 +476035 +476036 +476037 +476038 +476039 +476064 +476065 +476066 +476067 +476068 +476069 +476070 +476071 +476096 +476097 +476098 +476099 +476100 +476101 +476102 +476103 +476128 +476129 +476130 +476131 +476132 +476133 +476134 +476135 +476160 +476161 +476162 +476163 +476164 +476165 +476166 +476167 +476192 +476193 +476194 +476195 +476196 +476197 +476198 +476199 +476224 +476225 +476226 +476227 +476228 +476229 +476230 +476231 +476256 +476257 +476258 +476259 +476260 +476261 +476262 +476263 +476288 +476289 +476290 +476291 +476292 +476293 +476294 +476295 +476320 +476321 +476322 +476323 +476324 +476325 +476326 +476327 +476352 +476353 +476354 +476355 +476356 +476357 +476358 +476359 +476384 +476385 +476386 +476387 +476388 +476389 +476390 +476391 +476416 +476417 +476418 +476419 +476420 +476421 +476422 +476423 +476448 +476449 +476450 +476451 +476452 +476453 +476454 +476455 +476480 +476481 +476482 +476483 +476484 +476485 +476486 +476487 +476512 +476513 +476514 +476515 +476516 +476517 +476518 +476519 +476544 +476545 +476546 +476547 +476548 +476549 +476550 +476551 +476576 +476577 +476578 +476579 +476580 +476581 +476582 +476583 +476608 +476609 +476610 +476611 +476612 +476613 +476614 +476615 +476640 +476641 +476642 +476643 +476644 +476645 +476646 +476647 +476672 +476673 +476674 +476675 +476676 +476677 +476678 +476679 +476704 +476705 +476706 +476707 +476708 +476709 +476710 +476711 +476736 +476737 +476738 +476739 +476740 +476741 +476742 +476743 +476768 +476769 +476770 +476771 +476772 +476773 +476774 +476775 +476800 +476801 +476802 +476803 +476804 +476805 +476806 +476807 +476832 +476833 +476834 +476835 +476836 +476837 +476838 +476839 +476864 +476865 +476866 +476867 +476868 +476869 +476870 +476871 +476896 +476897 +476898 +476899 +476900 +476901 +476902 +476903 +476928 +476929 +476930 +476931 +476932 +476933 +476934 +476935 +476960 +476961 +476962 +476963 +476964 +476965 +476966 +476967 +476992 +476993 +476994 +476995 +476996 +476997 +476998 +476999 +477024 +477025 +477026 +477027 +477028 +477029 +477030 +477031 +477056 +477057 +477058 +477059 +477060 +477061 +477062 +477063 +477088 +477089 +477090 +477091 +477092 +477093 +477094 +477095 +477120 +477121 +477122 +477123 +477124 +477125 +477126 +477127 +477152 +477153 +477154 +477155 +477156 +477157 +477158 +477159 +477184 +477185 +477186 +477187 +477188 +477189 +477190 +477191 +477216 +477217 +477218 +477219 +477220 +477221 +477222 +477223 +477248 +477249 +477250 +477251 +477252 +477253 +477254 +477255 +477280 +477281 +477282 +477283 +477284 +477285 +477286 +477287 +477312 +477313 +477314 +477315 +477316 +477317 +477318 +477319 +477344 +477345 +477346 +477347 +477348 +477349 +477350 +477351 +477376 +477377 +477378 +477379 +477380 +477381 +477382 +477383 +477408 +477409 +477410 +477411 +477412 +477413 +477414 +477415 +477440 +477441 +477442 +477443 +477444 +477445 +477446 +477447 +477472 +477473 +477474 +477475 +477476 +477477 +477478 +477479 +477504 +477505 +477506 +477507 +477508 +477509 +477510 +477511 +477536 +477537 +477538 +477539 +477540 +477541 +477542 +477543 +477568 +477569 +477570 +477571 +477572 +477573 +477574 +477575 +477600 +477601 +477602 +477603 +477604 +477605 +477606 +477607 +477632 +477633 +477634 +477635 +477636 +477637 +477638 +477639 +477664 +477665 +477666 +477667 +477668 +477669 +477670 +477671 +477696 +477697 +477698 +477699 +477700 +477701 +477702 +477703 +477728 +477729 +477730 +477731 +477732 +477733 +477734 +477735 +477760 +477761 +477762 +477763 +477764 +477765 +477766 +477767 +477792 +477793 +477794 +477795 +477796 +477797 +477798 +477799 +477824 +477825 +477826 +477827 +477828 +477829 +477830 +477831 +477856 +477857 +477858 +477859 +477860 +477861 +477862 +477863 +477888 +477889 +477890 +477891 +477892 +477893 +477894 +477895 +477920 +477921 +477922 +477923 +477924 +477925 +477926 +477927 +477952 +477953 +477954 +477955 +477956 +477957 +477958 +477959 +477984 +477985 +477986 +477987 +477988 +477989 +477990 +477991 +478016 +478017 +478018 +478019 +478020 +478021 +478022 +478023 +478048 +478049 +478050 +478051 +478052 +478053 +478054 +478055 +478080 +478081 +478082 +478083 +478084 +478085 +478086 +478087 +478112 +478113 +478114 +478115 +478116 +478117 +478118 +478119 +478144 +478145 +478146 +478147 +478148 +478149 +478150 +478151 +478176 +478177 +478178 +478179 +478180 +478181 +478182 +478183 +478208 +478209 +478210 +478211 +478212 +478213 +478214 +478215 +478240 +478241 +478242 +478243 +478244 +478245 +478246 +478247 +478272 +478273 +478274 +478275 +478276 +478277 +478278 +478279 +478304 +478305 +478306 +478307 +478308 +478309 +478310 +478311 +478336 +478337 +478338 +478339 +478340 +478341 +478342 +478343 +478368 +478369 +478370 +478371 +478372 +478373 +478374 +478375 +478400 +478401 +478402 +478403 +478404 +478405 +478406 +478407 +478432 +478433 +478434 +478435 +478436 +478437 +478438 +478439 +478464 +478465 +478466 +478467 +478468 +478469 +478470 +478471 +478496 +478497 +478498 +478499 +478500 +478501 +478502 +478503 +478528 +478529 +478530 +478531 +478532 +478533 +478534 +478535 +478560 +478561 +478562 +478563 +478564 +478565 +478566 +478567 +478592 +478593 +478594 +478595 +478596 +478597 +478598 +478599 +478624 +478625 +478626 +478627 +478628 +478629 +478630 +478631 +478656 +478657 +478658 +478659 +478660 +478661 +478662 +478663 +478688 +478689 +478690 +478691 +478692 +478693 +478694 +478695 +478720 +478721 +478722 +478723 +478724 +478725 +478726 +478727 +478752 +478753 +478754 +478755 +478756 +478757 +478758 +478759 +478784 +478785 +478786 +478787 +478788 +478789 +478790 +478791 +478816 +478817 +478818 +478819 +478820 +478821 +478822 +478823 +478848 +478849 +478850 +478851 +478852 +478853 +478854 +478855 +478880 +478881 +478882 +478883 +478884 +478885 +478886 +478887 +478912 +478913 +478914 +478915 +478916 +478917 +478918 +478919 +478944 +478945 +478946 +478947 +478948 +478949 +478950 +478951 +478976 +478977 +478978 +478979 +478980 +478981 +478982 +478983 +479008 +479009 +479010 +479011 +479012 +479013 +479014 +479015 +479040 +479041 +479042 +479043 +479044 +479045 +479046 +479047 +479072 +479073 +479074 +479075 +479076 +479077 +479078 +479079 +479104 +479105 +479106 +479107 +479108 +479109 +479110 +479111 +479136 +479137 +479138 +479139 +479140 +479141 +479142 +479143 +479168 +479169 +479170 +479171 +479172 +479173 +479174 +479175 +479200 +479201 +479202 +479203 +479204 +479205 +479206 +479207 +479232 +479233 +479234 +479235 +479236 +479237 +479238 +479239 +479264 +479265 +479266 +479267 +479268 +479269 +479270 +479271 +479296 +479297 +479298 +479299 +479300 +479301 +479302 +479303 +479328 +479329 +479330 +479331 +479332 +479333 +479334 +479335 +479360 +479361 +479362 +479363 +479364 +479365 +479366 +479367 +479392 +479393 +479394 +479395 +479396 +479397 +479398 +479399 +479424 +479425 +479426 +479427 +479428 +479429 +479430 +479431 +479456 +479457 +479458 +479459 +479460 +479461 +479462 +479463 +479488 +479489 +479490 +479491 +479492 +479493 +479494 +479495 +479520 +479521 +479522 +479523 +479524 +479525 +479526 +479527 +479552 +479553 +479554 +479555 +479556 +479557 +479558 +479559 +479584 +479585 +479586 +479587 +479588 +479589 +479590 +479591 +479616 +479617 +479618 +479619 +479620 +479621 +479622 +479623 +479648 +479649 +479650 +479651 +479652 +479653 +479654 +479655 +479680 +479681 +479682 +479683 +479684 +479685 +479686 +479687 +479712 +479713 +479714 +479715 +479716 +479717 +479718 +479719 +479744 +479745 +479746 +479747 +479748 +479749 +479750 +479751 +479776 +479777 +479778 +479779 +479780 +479781 +479782 +479783 +479808 +479809 +479810 +479811 +479812 +479813 +479814 +479815 +479840 +479841 +479842 +479843 +479844 +479845 +479846 +479847 +479872 +479873 +479874 +479875 +479876 +479877 +479878 +479879 +479904 +479905 +479906 +479907 +479908 +479909 +479910 +479911 +479936 +479937 +479938 +479939 +479940 +479941 +479942 +479943 +479968 +479969 +479970 +479971 +479972 +479973 +479974 +479975 +480000 +480001 +480002 +480003 +480004 +480005 +480006 +480007 +480032 +480033 +480034 +480035 +480036 +480037 +480038 +480039 +480064 +480065 +480066 +480067 +480068 +480069 +480070 +480071 +480096 +480097 +480098 +480099 +480100 +480101 +480102 +480103 +480128 +480129 +480130 +480131 +480132 +480133 +480134 +480135 +480160 +480161 +480162 +480163 +480164 +480165 +480166 +480167 +480192 +480193 +480194 +480195 +480196 +480197 +480198 +480199 +480224 +480225 +480226 +480227 +480228 +480229 +480230 +480231 +480256 +480257 +480258 +480259 +480260 +480261 +480262 +480263 +480288 +480289 +480290 +480291 +480292 +480293 +480294 +480295 +480320 +480321 +480322 +480323 +480324 +480325 +480326 +480327 +480352 +480353 +480354 +480355 +480356 +480357 +480358 +480359 +480384 +480385 +480386 +480387 +480388 +480389 +480390 +480391 +480416 +480417 +480418 +480419 +480420 +480421 +480422 +480423 +480448 +480449 +480450 +480451 +480452 +480453 +480454 +480455 +480480 +480481 +480482 +480483 +480484 +480485 +480486 +480487 +480512 +480513 +480514 +480515 +480516 +480517 +480518 +480519 +480544 +480545 +480546 +480547 +480548 +480549 +480550 +480551 +480576 +480577 +480578 +480579 +480580 +480581 +480582 +480583 +480608 +480609 +480610 +480611 +480612 +480613 +480614 +480615 +480640 +480641 +480642 +480643 +480644 +480645 +480646 +480647 +480672 +480673 +480674 +480675 +480676 +480677 +480678 +480679 +480704 +480705 +480706 +480707 +480708 +480709 +480710 +480711 +480736 +480737 +480738 +480739 +480740 +480741 +480742 +480743 +480768 +480769 +480770 +480771 +480772 +480773 +480774 +480775 +480800 +480801 +480802 +480803 +480804 +480805 +480806 +480807 +480832 +480833 +480834 +480835 +480836 +480837 +480838 +480839 +480864 +480865 +480866 +480867 +480868 +480869 +480870 +480871 +480896 +480897 +480898 +480899 +480900 +480901 +480902 +480903 +480928 +480929 +480930 +480931 +480932 +480933 +480934 +480935 +480960 +480961 +480962 +480963 +480964 +480965 +480966 +480967 +480992 +480993 +480994 +480995 +480996 +480997 +480998 +480999 +481024 +481025 +481026 +481027 +481028 +481029 +481030 +481031 +481056 +481057 +481058 +481059 +481060 +481061 +481062 +481063 +481088 +481089 +481090 +481091 +481092 +481093 +481094 +481095 +481120 +481121 +481122 +481123 +481124 +481125 +481126 +481127 +481152 +481153 +481154 +481155 +481156 +481157 +481158 +481159 +481184 +481185 +481186 +481187 +481188 +481189 +481190 +481191 +481216 +481217 +481218 +481219 +481220 +481221 +481222 +481223 +481248 +481249 +481250 +481251 +481252 +481253 +481254 +481255 +481280 +481281 +481282 +481283 +481284 +481285 +481286 +481287 +481312 +481313 +481314 +481315 +481316 +481317 +481318 +481319 +481344 +481345 +481346 +481347 +481348 +481349 +481350 +481351 +481376 +481377 +481378 +481379 +481380 +481381 +481382 +481383 +481408 +481409 +481410 +481411 +481412 +481413 +481414 +481415 +481440 +481441 +481442 +481443 +481444 +481445 +481446 +481447 +481472 +481473 +481474 +481475 +481476 +481477 +481478 +481479 +481504 +481505 +481506 +481507 +481508 +481509 +481510 +481511 +481536 +481537 +481538 +481539 +481540 +481541 +481542 +481543 +481568 +481569 +481570 +481571 +481572 +481573 +481574 +481575 +481600 +481601 +481602 +481603 +481604 +481605 +481606 +481607 +481632 +481633 +481634 +481635 +481636 +481637 +481638 +481639 +481664 +481665 +481666 +481667 +481668 +481669 +481670 +481671 +481696 +481697 +481698 +481699 +481700 +481701 +481702 +481703 +481728 +481729 +481730 +481731 +481732 +481733 +481734 +481735 +481760 +481761 +481762 +481763 +481764 +481765 +481766 +481767 +481792 +481793 +481794 +481795 +481796 +481797 +481798 +481799 +481824 +481825 +481826 +481827 +481828 +481829 +481830 +481831 +481856 +481857 +481858 +481859 +481860 +481861 +481862 +481863 +481888 +481889 +481890 +481891 +481892 +481893 +481894 +481895 +481920 +481921 +481922 +481923 +481924 +481925 +481926 +481927 +481952 +481953 +481954 +481955 +481956 +481957 +481958 +481959 +481984 +481985 +481986 +481987 +481988 +481989 +481990 +481991 +482016 +482017 +482018 +482019 +482020 +482021 +482022 +482023 +482048 +482049 +482050 +482051 +482052 +482053 +482054 +482055 +482080 +482081 +482082 +482083 +482084 +482085 +482086 +482087 +482112 +482113 +482114 +482115 +482116 +482117 +482118 +482119 +482144 +482145 +482146 +482147 +482148 +482149 +482150 +482151 +482176 +482177 +482178 +482179 +482180 +482181 +482182 +482183 +482208 +482209 +482210 +482211 +482212 +482213 +482214 +482215 +482240 +482241 +482242 +482243 +482244 +482245 +482246 +482247 +482272 +482273 +482274 +482275 +482276 +482277 +482278 +482279 +482304 +482305 +482306 +482307 +482308 +482309 +482310 +482311 +482336 +482337 +482338 +482339 +482340 +482341 +482342 +482343 +482368 +482369 +482370 +482371 +482372 +482373 +482374 +482375 +482400 +482401 +482402 +482403 +482404 +482405 +482406 +482407 +482432 +482433 +482434 +482435 +482436 +482437 +482438 +482439 +482464 +482465 +482466 +482467 +482468 +482469 +482470 +482471 +482496 +482497 +482498 +482499 +482500 +482501 +482502 +482503 +482528 +482529 +482530 +482531 +482532 +482533 +482534 +482535 +482560 +482561 +482562 +482563 +482564 +482565 +482566 +482567 +482592 +482593 +482594 +482595 +482596 +482597 +482598 +482599 +482624 +482625 +482626 +482627 +482628 +482629 +482630 +482631 +482656 +482657 +482658 +482659 +482660 +482661 +482662 +482663 +482688 +482689 +482690 +482691 +482692 +482693 +482694 +482695 +482720 +482721 +482722 +482723 +482724 +482725 +482726 +482727 +482752 +482753 +482754 +482755 +482756 +482757 +482758 +482759 +482784 +482785 +482786 +482787 +482788 +482789 +482790 +482791 +482816 +482817 +482818 +482819 +482820 +482821 +482822 +482823 +482848 +482849 +482850 +482851 +482852 +482853 +482854 +482855 +482880 +482881 +482882 +482883 +482884 +482885 +482886 +482887 +482912 +482913 +482914 +482915 +482916 +482917 +482918 +482919 +482944 +482945 +482946 +482947 +482948 +482949 +482950 +482951 +482976 +482977 +482978 +482979 +482980 +482981 +482982 +482983 +483008 +483009 +483010 +483011 +483012 +483013 +483014 +483015 +483040 +483041 +483042 +483043 +483044 +483045 +483046 +483047 +483072 +483073 +483074 +483075 +483076 +483077 +483078 +483079 +483104 +483105 +483106 +483107 +483108 +483109 +483110 +483111 +483136 +483137 +483138 +483139 +483140 +483141 +483142 +483143 +483168 +483169 +483170 +483171 +483172 +483173 +483174 +483175 +483200 +483201 +483202 +483203 +483204 +483205 +483206 +483207 +483232 +483233 +483234 +483235 +483236 +483237 +483238 +483239 +483264 +483265 +483266 +483267 +483268 +483269 +483270 +483271 +483296 +483297 +483298 +483299 +483300 +483301 +483302 +483303 +483328 +483329 +483330 +483331 +483332 +483333 +483334 +483335 +483360 +483361 +483362 +483363 +483364 +483365 +483366 +483367 +483392 +483393 +483394 +483395 +483396 +483397 +483398 +483399 +483424 +483425 +483426 +483427 +483428 +483429 +483430 +483431 +483456 +483457 +483458 +483459 +483460 +483461 +483462 +483463 +483488 +483489 +483490 +483491 +483492 +483493 +483494 +483495 +483520 +483521 +483522 +483523 +483524 +483525 +483526 +483527 +483552 +483553 +483554 +483555 +483556 +483557 +483558 +483559 +483584 +483585 +483586 +483587 +483588 +483589 +483590 +483591 +483616 +483617 +483618 +483619 +483620 +483621 +483622 +483623 +483648 +483649 +483650 +483651 +483652 +483653 +483654 +483655 +483680 +483681 +483682 +483683 +483684 +483685 +483686 +483687 +483712 +483713 +483714 +483715 +483716 +483717 +483718 +483719 +483744 +483745 +483746 +483747 +483748 +483749 +483750 +483751 +483776 +483777 +483778 +483779 +483780 +483781 +483782 +483783 +483808 +483809 +483810 +483811 +483812 +483813 +483814 +483815 +483840 +483841 +483842 +483843 +483844 +483845 +483846 +483847 +483872 +483873 +483874 +483875 +483876 +483877 +483878 +483879 +483904 +483905 +483906 +483907 +483908 +483909 +483910 +483911 +483936 +483937 +483938 +483939 +483940 +483941 +483942 +483943 +483968 +483969 +483970 +483971 +483972 +483973 +483974 +483975 +484000 +484001 +484002 +484003 +484004 +484005 +484006 +484007 +484032 +484033 +484034 +484035 +484036 +484037 +484038 +484039 +484064 +484065 +484066 +484067 +484068 +484069 +484070 +484071 +484096 +484097 +484098 +484099 +484100 +484101 +484102 +484103 +484128 +484129 +484130 +484131 +484132 +484133 +484134 +484135 +484160 +484161 +484162 +484163 +484164 +484165 +484166 +484167 +484192 +484193 +484194 +484195 +484196 +484197 +484198 +484199 +484224 +484225 +484226 +484227 +484228 +484229 +484230 +484231 +484256 +484257 +484258 +484259 +484260 +484261 +484262 +484263 +484288 +484289 +484290 +484291 +484292 +484293 +484294 +484295 +484320 +484321 +484322 +484323 +484324 +484325 +484326 +484327 +484352 +484353 +484354 +484355 +484356 +484357 +484358 +484359 +484384 +484385 +484386 +484387 +484388 +484389 +484390 +484391 +484416 +484417 +484418 +484419 +484420 +484421 +484422 +484423 +484448 +484449 +484450 +484451 +484452 +484453 +484454 +484455 +484480 +484481 +484482 +484483 +484484 +484485 +484486 +484487 +484512 +484513 +484514 +484515 +484516 +484517 +484518 +484519 +484544 +484545 +484546 +484547 +484548 +484549 +484550 +484551 +484576 +484577 +484578 +484579 +484580 +484581 +484582 +484583 +484608 +484609 +484610 +484611 +484612 +484613 +484614 +484615 +484640 +484641 +484642 +484643 +484644 +484645 +484646 +484647 +484672 +484673 +484674 +484675 +484676 +484677 +484678 +484679 +484704 +484705 +484706 +484707 +484708 +484709 +484710 +484711 +484736 +484737 +484738 +484739 +484740 +484741 +484742 +484743 +484768 +484769 +484770 +484771 +484772 +484773 +484774 +484775 +484800 +484801 +484802 +484803 +484804 +484805 +484806 +484807 +484832 +484833 +484834 +484835 +484836 +484837 +484838 +484839 +484864 +484865 +484866 +484867 +484868 +484869 +484870 +484871 +484896 +484897 +484898 +484899 +484900 +484901 +484902 +484903 +484928 +484929 +484930 +484931 +484932 +484933 +484934 +484935 +484960 +484961 +484962 +484963 +484964 +484965 +484966 +484967 +484992 +484993 +484994 +484995 +484996 +484997 +484998 +484999 +485024 +485025 +485026 +485027 +485028 +485029 +485030 +485031 +485056 +485057 +485058 +485059 +485060 +485061 +485062 +485063 +485088 +485089 +485090 +485091 +485092 +485093 +485094 +485095 +485120 +485121 +485122 +485123 +485124 +485125 +485126 +485127 +485152 +485153 +485154 +485155 +485156 +485157 +485158 +485159 +485184 +485185 +485186 +485187 +485188 +485189 +485190 +485191 +485216 +485217 +485218 +485219 +485220 +485221 +485222 +485223 +485248 +485249 +485250 +485251 +485252 +485253 +485254 +485255 +485280 +485281 +485282 +485283 +485284 +485285 +485286 +485287 +485312 +485313 +485314 +485315 +485316 +485317 +485318 +485319 +485344 +485345 +485346 +485347 +485348 +485349 +485350 +485351 +485376 +485377 +485378 +485379 +485380 +485381 +485382 +485383 +485408 +485409 +485410 +485411 +485412 +485413 +485414 +485415 +485440 +485441 +485442 +485443 +485444 +485445 +485446 +485447 +485472 +485473 +485474 +485475 +485476 +485477 +485478 +485479 +485504 +485505 +485506 +485507 +485508 +485509 +485510 +485511 +485536 +485537 +485538 +485539 +485540 +485541 +485542 +485543 +485568 +485569 +485570 +485571 +485572 +485573 +485574 +485575 +485600 +485601 +485602 +485603 +485604 +485605 +485606 +485607 +485632 +485633 +485634 +485635 +485636 +485637 +485638 +485639 +485664 +485665 +485666 +485667 +485668 +485669 +485670 +485671 +485696 +485697 +485698 +485699 +485700 +485701 +485702 +485703 +485728 +485729 +485730 +485731 +485732 +485733 +485734 +485735 +485760 +485761 +485762 +485763 +485764 +485765 +485766 +485767 +485792 +485793 +485794 +485795 +485796 +485797 +485798 +485799 +485824 +485825 +485826 +485827 +485828 +485829 +485830 +485831 +485856 +485857 +485858 +485859 +485860 +485861 +485862 +485863 +485888 +485889 +485890 +485891 +485892 +485893 +485894 +485895 +485920 +485921 +485922 +485923 +485924 +485925 +485926 +485927 +485952 +485953 +485954 +485955 +485956 +485957 +485958 +485959 +485984 +485985 +485986 +485987 +485988 +485989 +485990 +485991 +486016 +486017 +486018 +486019 +486020 +486021 +486022 +486023 +486048 +486049 +486050 +486051 +486052 +486053 +486054 +486055 +486080 +486081 +486082 +486083 +486084 +486085 +486086 +486087 +486112 +486113 +486114 +486115 +486116 +486117 +486118 +486119 +486144 +486145 +486146 +486147 +486148 +486149 +486150 +486151 +486176 +486177 +486178 +486179 +486180 +486181 +486182 +486183 +486208 +486209 +486210 +486211 +486212 +486213 +486214 +486215 +486240 +486241 +486242 +486243 +486244 +486245 +486246 +486247 +486272 +486273 +486274 +486275 +486276 +486277 +486278 +486279 +486304 +486305 +486306 +486307 +486308 +486309 +486310 +486311 +486336 +486337 +486338 +486339 +486340 +486341 +486342 +486343 +486368 +486369 +486370 +486371 +486372 +486373 +486374 +486375 +486400 +486401 +486402 +486403 +486404 +486405 +486406 +486407 +486432 +486433 +486434 +486435 +486436 +486437 +486438 +486439 +486464 +486465 +486466 +486467 +486468 +486469 +486470 +486471 +486496 +486497 +486498 +486499 +486500 +486501 +486502 +486503 +486528 +486529 +486530 +486531 +486532 +486533 +486534 +486535 +486560 +486561 +486562 +486563 +486564 +486565 +486566 +486567 +486592 +486593 +486594 +486595 +486596 +486597 +486598 +486599 +486624 +486625 +486626 +486627 +486628 +486629 +486630 +486631 +486656 +486657 +486658 +486659 +486660 +486661 +486662 +486663 +486688 +486689 +486690 +486691 +486692 +486693 +486694 +486695 +486720 +486721 +486722 +486723 +486724 +486725 +486726 +486727 +486752 +486753 +486754 +486755 +486756 +486757 +486758 +486759 +486784 +486785 +486786 +486787 +486788 +486789 +486790 +486791 +486816 +486817 +486818 +486819 +486820 +486821 +486822 +486823 +486848 +486849 +486850 +486851 +486852 +486853 +486854 +486855 +486880 +486881 +486882 +486883 +486884 +486885 +486886 +486887 +486912 +486913 +486914 +486915 +486916 +486917 +486918 +486919 +486944 +486945 +486946 +486947 +486948 +486949 +486950 +486951 +486976 +486977 +486978 +486979 +486980 +486981 +486982 +486983 +487008 +487009 +487010 +487011 +487012 +487013 +487014 +487015 +487040 +487041 +487042 +487043 +487044 +487045 +487046 +487047 +487072 +487073 +487074 +487075 +487076 +487077 +487078 +487079 +487104 +487105 +487106 +487107 +487108 +487109 +487110 +487111 +487136 +487137 +487138 +487139 +487140 +487141 +487142 +487143 +487168 +487169 +487170 +487171 +487172 +487173 +487174 +487175 +487200 +487201 +487202 +487203 +487204 +487205 +487206 +487207 +487232 +487233 +487234 +487235 +487236 +487237 +487238 +487239 +487264 +487265 +487266 +487267 +487268 +487269 +487270 +487271 +487296 +487297 +487298 +487299 +487300 +487301 +487302 +487303 +487328 +487329 +487330 +487331 +487332 +487333 +487334 +487335 +487360 +487361 +487362 +487363 +487364 +487365 +487366 +487367 +487392 +487393 +487394 +487395 +487396 +487397 +487398 +487399 +487424 +487425 +487426 +487427 +487428 +487429 +487430 +487431 +487456 +487457 +487458 +487459 +487460 +487461 +487462 +487463 +487488 +487489 +487490 +487491 +487492 +487493 +487494 +487495 +487520 +487521 +487522 +487523 +487524 +487525 +487526 +487527 +487552 +487553 +487554 +487555 +487556 +487557 +487558 +487559 +487584 +487585 +487586 +487587 +487588 +487589 +487590 +487591 +487616 +487617 +487618 +487619 +487620 +487621 +487622 +487623 +487648 +487649 +487650 +487651 +487652 +487653 +487654 +487655 +487680 +487681 +487682 +487683 +487684 +487685 +487686 +487687 +487712 +487713 +487714 +487715 +487716 +487717 +487718 +487719 +487744 +487745 +487746 +487747 +487748 +487749 +487750 +487751 +487776 +487777 +487778 +487779 +487780 +487781 +487782 +487783 +487808 +487809 +487810 +487811 +487812 +487813 +487814 +487815 +487840 +487841 +487842 +487843 +487844 +487845 +487846 +487847 +487872 +487873 +487874 +487875 +487876 +487877 +487878 +487879 +487904 +487905 +487906 +487907 +487908 +487909 +487910 +487911 +487936 +487937 +487938 +487939 +487940 +487941 +487942 +487943 +487968 +487969 +487970 +487971 +487972 +487973 +487974 +487975 +488000 +488001 +488002 +488003 +488004 +488005 +488006 +488007 +488032 +488033 +488034 +488035 +488036 +488037 +488038 +488039 +488064 +488065 +488066 +488067 +488068 +488069 +488070 +488071 +488096 +488097 +488098 +488099 +488100 +488101 +488102 +488103 +488128 +488129 +488130 +488131 +488132 +488133 +488134 +488135 +488160 +488161 +488162 +488163 +488164 +488165 +488166 +488167 +488192 +488193 +488194 +488195 +488196 +488197 +488198 +488199 +488224 +488225 +488226 +488227 +488228 +488229 +488230 +488231 +488256 +488257 +488258 +488259 +488260 +488261 +488262 +488263 +488288 +488289 +488290 +488291 +488292 +488293 +488294 +488295 +488320 +488321 +488322 +488323 +488324 +488325 +488326 +488327 +488352 +488353 +488354 +488355 +488356 +488357 +488358 +488359 +488384 +488385 +488386 +488387 +488388 +488389 +488390 +488391 +488416 +488417 +488418 +488419 +488420 +488421 +488422 +488423 +488448 +488449 +488450 +488451 +488452 +488453 +488454 +488455 +488480 +488481 +488482 +488483 +488484 +488485 +488486 +488487 +488512 +488513 +488514 +488515 +488516 +488517 +488518 +488519 +488544 +488545 +488546 +488547 +488548 +488549 +488550 +488551 +488576 +488577 +488578 +488579 +488580 +488581 +488582 +488583 +488608 +488609 +488610 +488611 +488612 +488613 +488614 +488615 +488640 +488641 +488642 +488643 +488644 +488645 +488646 +488647 +488672 +488673 +488674 +488675 +488676 +488677 +488678 +488679 +488704 +488705 +488706 +488707 +488708 +488709 +488710 +488711 +488736 +488737 +488738 +488739 +488740 +488741 +488742 +488743 +488768 +488769 +488770 +488771 +488772 +488773 +488774 +488775 +488800 +488801 +488802 +488803 +488804 +488805 +488806 +488807 +488832 +488833 +488834 +488835 +488836 +488837 +488838 +488839 +488864 +488865 +488866 +488867 +488868 +488869 +488870 +488871 +488896 +488897 +488898 +488899 +488900 +488901 +488902 +488903 +488928 +488929 +488930 +488931 +488932 +488933 +488934 +488935 +488960 +488961 +488962 +488963 +488964 +488965 +488966 +488967 +488992 +488993 +488994 +488995 +488996 +488997 +488998 +488999 +489024 +489025 +489026 +489027 +489028 +489029 +489030 +489031 +489056 +489057 +489058 +489059 +489060 +489061 +489062 +489063 +489088 +489089 +489090 +489091 +489092 +489093 +489094 +489095 +489120 +489121 +489122 +489123 +489124 +489125 +489126 +489127 +489152 +489153 +489154 +489155 +489156 +489157 +489158 +489159 +489184 +489185 +489186 +489187 +489188 +489189 +489190 +489191 +489216 +489217 +489218 +489219 +489220 +489221 +489222 +489223 +489248 +489249 +489250 +489251 +489252 +489253 +489254 +489255 +489280 +489281 +489282 +489283 +489284 +489285 +489286 +489287 +489312 +489313 +489314 +489315 +489316 +489317 +489318 +489319 +489344 +489345 +489346 +489347 +489348 +489349 +489350 +489351 +489376 +489377 +489378 +489379 +489380 +489381 +489382 +489383 +489408 +489409 +489410 +489411 +489412 +489413 +489414 +489415 +489440 +489441 +489442 +489443 +489444 +489445 +489446 +489447 +489472 +489473 +489474 +489475 +489476 +489477 +489478 +489479 +489504 +489505 +489506 +489507 +489508 +489509 +489510 +489511 +489536 +489537 +489538 +489539 +489540 +489541 +489542 +489543 +489568 +489569 +489570 +489571 +489572 +489573 +489574 +489575 +489600 +489601 +489602 +489603 +489604 +489605 +489606 +489607 +489632 +489633 +489634 +489635 +489636 +489637 +489638 +489639 +489664 +489665 +489666 +489667 +489668 +489669 +489670 +489671 +489696 +489697 +489698 +489699 +489700 +489701 +489702 +489703 +489728 +489729 +489730 +489731 +489732 +489733 +489734 +489735 +489760 +489761 +489762 +489763 +489764 +489765 +489766 +489767 +489792 +489793 +489794 +489795 +489796 +489797 +489798 +489799 +489824 +489825 +489826 +489827 +489828 +489829 +489830 +489831 +489856 +489857 +489858 +489859 +489860 +489861 +489862 +489863 +489888 +489889 +489890 +489891 +489892 +489893 +489894 +489895 +489920 +489921 +489922 +489923 +489924 +489925 +489926 +489927 +489952 +489953 +489954 +489955 +489956 +489957 +489958 +489959 +489984 +489985 +489986 +489987 +489988 +489989 +489990 +489991 +490016 +490017 +490018 +490019 +490020 +490021 +490022 +490023 +490048 +490049 +490050 +490051 +490052 +490053 +490054 +490055 +490080 +490081 +490082 +490083 +490084 +490085 +490086 +490087 +490112 +490113 +490114 +490115 +490116 +490117 +490118 +490119 +490144 +490145 +490146 +490147 +490148 +490149 +490150 +490151 +490176 +490177 +490178 +490179 +490180 +490181 +490182 +490183 +490208 +490209 +490210 +490211 +490212 +490213 +490214 +490215 +490240 +490241 +490242 +490243 +490244 +490245 +490246 +490247 +490272 +490273 +490274 +490275 +490276 +490277 +490278 +490279 +490304 +490305 +490306 +490307 +490308 +490309 +490310 +490311 +490336 +490337 +490338 +490339 +490340 +490341 +490342 +490343 +490368 +490369 +490370 +490371 +490372 +490373 +490374 +490375 +490400 +490401 +490402 +490403 +490404 +490405 +490406 +490407 +490432 +490433 +490434 +490435 +490436 +490437 +490438 +490439 +490464 +490465 +490466 +490467 +490468 +490469 +490470 +490471 +490496 +490497 +490498 +490499 +490500 +490501 +490502 +490503 +490528 +490529 +490530 +490531 +490532 +490533 +490534 +490535 +490560 +490561 +490562 +490563 +490564 +490565 +490566 +490567 +490592 +490593 +490594 +490595 +490596 +490597 +490598 +490599 +490624 +490625 +490626 +490627 +490628 +490629 +490630 +490631 +490656 +490657 +490658 +490659 +490660 +490661 +490662 +490663 +490688 +490689 +490690 +490691 +490692 +490693 +490694 +490695 +490720 +490721 +490722 +490723 +490724 +490725 +490726 +490727 +490752 +490753 +490754 +490755 +490756 +490757 +490758 +490759 +490784 +490785 +490786 +490787 +490788 +490789 +490790 +490791 +490816 +490817 +490818 +490819 +490820 +490821 +490822 +490823 +490848 +490849 +490850 +490851 +490852 +490853 +490854 +490855 +490880 +490881 +490882 +490883 +490884 +490885 +490886 +490887 +490912 +490913 +490914 +490915 +490916 +490917 +490918 +490919 +490944 +490945 +490946 +490947 +490948 +490949 +490950 +490951 +490976 +490977 +490978 +490979 +490980 +490981 +490982 +490983 +491008 +491009 +491010 +491011 +491012 +491013 +491014 +491015 +491040 +491041 +491042 +491043 +491044 +491045 +491046 +491047 +491072 +491073 +491074 +491075 +491076 +491077 +491078 +491079 +491104 +491105 +491106 +491107 +491108 +491109 +491110 +491111 +491136 +491137 +491138 +491139 +491140 +491141 +491142 +491143 +491168 +491169 +491170 +491171 +491172 +491173 +491174 +491175 +491200 +491201 +491202 +491203 +491204 +491205 +491206 +491207 +491232 +491233 +491234 +491235 +491236 +491237 +491238 +491239 +491264 +491265 +491266 +491267 +491268 +491269 +491270 +491271 +491296 +491297 +491298 +491299 +491300 +491301 +491302 +491303 +491328 +491329 +491330 +491331 +491332 +491333 +491334 +491335 +491360 +491361 +491362 +491363 +491364 +491365 +491366 +491367 +491392 +491393 +491394 +491395 +491396 +491397 +491398 +491399 +491424 +491425 +491426 +491427 +491428 +491429 +491430 +491431 +491456 +491457 +491458 +491459 +491460 +491461 +491462 +491463 +491488 +491489 +491490 +491491 +491492 +491493 +491494 +491495 +491520 +491521 +491522 +491523 +491524 +491525 +491526 +491527 +491552 +491553 +491554 +491555 +491556 +491557 +491558 +491559 +491584 +491585 +491586 +491587 +491588 +491589 +491590 +491591 +491616 +491617 +491618 +491619 +491620 +491621 +491622 +491623 +491648 +491649 +491650 +491651 +491652 +491653 +491654 +491655 +491680 +491681 +491682 +491683 +491684 +491685 +491686 +491687 +491712 +491713 +491714 +491715 +491716 +491717 +491718 +491719 +491744 +491745 +491746 +491747 +491748 +491749 +491750 +491751 +491776 +491777 +491778 +491779 +491780 +491781 +491782 +491783 +491808 +491809 +491810 +491811 +491812 +491813 +491814 +491815 +491840 +491841 +491842 +491843 +491844 +491845 +491846 +491847 +491872 +491873 +491874 +491875 +491876 +491877 +491878 +491879 +491904 +491905 +491906 +491907 +491908 +491909 +491910 +491911 +491936 +491937 +491938 +491939 +491940 +491941 +491942 +491943 +491968 +491969 +491970 +491971 +491972 +491973 +491974 +491975 +492000 +492001 +492002 +492003 +492004 +492005 +492006 +492007 +492032 +492033 +492034 +492035 +492036 +492037 +492038 +492039 +492064 +492065 +492066 +492067 +492068 +492069 +492070 +492071 +492096 +492097 +492098 +492099 +492100 +492101 +492102 +492103 +492128 +492129 +492130 +492131 +492132 +492133 +492134 +492135 +492160 +492161 +492162 +492163 +492164 +492165 +492166 +492167 +492192 +492193 +492194 +492195 +492196 +492197 +492198 +492199 +492224 +492225 +492226 +492227 +492228 +492229 +492230 +492231 +492256 +492257 +492258 +492259 +492260 +492261 +492262 +492263 +492288 +492289 +492290 +492291 +492292 +492293 +492294 +492295 +492320 +492321 +492322 +492323 +492324 +492325 +492326 +492327 +492352 +492353 +492354 +492355 +492356 +492357 +492358 +492359 +492384 +492385 +492386 +492387 +492388 +492389 +492390 +492391 +492416 +492417 +492418 +492419 +492420 +492421 +492422 +492423 +492448 +492449 +492450 +492451 +492452 +492453 +492454 +492455 +492480 +492481 +492482 +492483 +492484 +492485 +492486 +492487 +492512 +492513 +492514 +492515 +492516 +492517 +492518 +492519 +492544 +492545 +492546 +492547 +492548 +492549 +492550 +492551 +492576 +492577 +492578 +492579 +492580 +492581 +492582 +492583 +492608 +492609 +492610 +492611 +492612 +492613 +492614 +492615 +492640 +492641 +492642 +492643 +492644 +492645 +492646 +492647 +492672 +492673 +492674 +492675 +492676 +492677 +492678 +492679 +492704 +492705 +492706 +492707 +492708 +492709 +492710 +492711 +492736 +492737 +492738 +492739 +492740 +492741 +492742 +492743 +492768 +492769 +492770 +492771 +492772 +492773 +492774 +492775 +492800 +492801 +492802 +492803 +492804 +492805 +492806 +492807 +492832 +492833 +492834 +492835 +492836 +492837 +492838 +492839 +492864 +492865 +492866 +492867 +492868 +492869 +492870 +492871 +492896 +492897 +492898 +492899 +492900 +492901 +492902 +492903 +492928 +492929 +492930 +492931 +492932 +492933 +492934 +492935 +492960 +492961 +492962 +492963 +492964 +492965 +492966 +492967 +492992 +492993 +492994 +492995 +492996 +492997 +492998 +492999 +493024 +493025 +493026 +493027 +493028 +493029 +493030 +493031 +493056 +493057 +493058 +493059 +493060 +493061 +493062 +493063 +493088 +493089 +493090 +493091 +493092 +493093 +493094 +493095 +493120 +493121 +493122 +493123 +493124 +493125 +493126 +493127 +493152 +493153 +493154 +493155 +493156 +493157 +493158 +493159 +493184 +493185 +493186 +493187 +493188 +493189 +493190 +493191 +493216 +493217 +493218 +493219 +493220 +493221 +493222 +493223 +493248 +493249 +493250 +493251 +493252 +493253 +493254 +493255 +493280 +493281 +493282 +493283 +493284 +493285 +493286 +493287 +493312 +493313 +493314 +493315 +493316 +493317 +493318 +493319 +493344 +493345 +493346 +493347 +493348 +493349 +493350 +493351 +493376 +493377 +493378 +493379 +493380 +493381 +493382 +493383 +493408 +493409 +493410 +493411 +493412 +493413 +493414 +493415 +493440 +493441 +493442 +493443 +493444 +493445 +493446 +493447 +493472 +493473 +493474 +493475 +493476 +493477 +493478 +493479 +493504 +493505 +493506 +493507 +493508 +493509 +493510 +493511 +493536 +493537 +493538 +493539 +493540 +493541 +493542 +493543 +493568 +493569 +493570 +493571 +493572 +493573 +493574 +493575 +493600 +493601 +493602 +493603 +493604 +493605 +493606 +493607 +493632 +493633 +493634 +493635 +493636 +493637 +493638 +493639 +493664 +493665 +493666 +493667 +493668 +493669 +493670 +493671 +493696 +493697 +493698 +493699 +493700 +493701 +493702 +493703 +493728 +493729 +493730 +493731 +493732 +493733 +493734 +493735 +493760 +493761 +493762 +493763 +493764 +493765 +493766 +493767 +493792 +493793 +493794 +493795 +493796 +493797 +493798 +493799 +493824 +493825 +493826 +493827 +493828 +493829 +493830 +493831 +493856 +493857 +493858 +493859 +493860 +493861 +493862 +493863 +493888 +493889 +493890 +493891 +493892 +493893 +493894 +493895 +493920 +493921 +493922 +493923 +493924 +493925 +493926 +493927 +493952 +493953 +493954 +493955 +493956 +493957 +493958 +493959 +493984 +493985 +493986 +493987 +493988 +493989 +493990 +493991 +494016 +494017 +494018 +494019 +494020 +494021 +494022 +494023 +494048 +494049 +494050 +494051 +494052 +494053 +494054 +494055 +494080 +494081 +494082 +494083 +494084 +494085 +494086 +494087 +494112 +494113 +494114 +494115 +494116 +494117 +494118 +494119 +494144 +494145 +494146 +494147 +494148 +494149 +494150 +494151 +494176 +494177 +494178 +494179 +494180 +494181 +494182 +494183 +494208 +494209 +494210 +494211 +494212 +494213 +494214 +494215 +494240 +494241 +494242 +494243 +494244 +494245 +494246 +494247 +494272 +494273 +494274 +494275 +494276 +494277 +494278 +494279 +494304 +494305 +494306 +494307 +494308 +494309 +494310 +494311 +494336 +494337 +494338 +494339 +494340 +494341 +494342 +494343 +494368 +494369 +494370 +494371 +494372 +494373 +494374 +494375 +494400 +494401 +494402 +494403 +494404 +494405 +494406 +494407 +494432 +494433 +494434 +494435 +494436 +494437 +494438 +494439 +494464 +494465 +494466 +494467 +494468 +494469 +494470 +494471 +494496 +494497 +494498 +494499 +494500 +494501 +494502 +494503 +494528 +494529 +494530 +494531 +494532 +494533 +494534 +494535 +494560 +494561 +494562 +494563 +494564 +494565 +494566 +494567 +494592 +494593 +494594 +494595 +494596 +494597 +494598 +494599 +494624 +494625 +494626 +494627 +494628 +494629 +494630 +494631 +494656 +494657 +494658 +494659 +494660 +494661 +494662 +494663 +494688 +494689 +494690 +494691 +494692 +494693 +494694 +494695 +494720 +494721 +494722 +494723 +494724 +494725 +494726 +494727 +494752 +494753 +494754 +494755 +494756 +494757 +494758 +494759 +494784 +494785 +494786 +494787 +494788 +494789 +494790 +494791 +494816 +494817 +494818 +494819 +494820 +494821 +494822 +494823 +494848 +494849 +494850 +494851 +494852 +494853 +494854 +494855 +494880 +494881 +494882 +494883 +494884 +494885 +494886 +494887 +494912 +494913 +494914 +494915 +494916 +494917 +494918 +494919 +494944 +494945 +494946 +494947 +494948 +494949 +494950 +494951 +494976 +494977 +494978 +494979 +494980 +494981 +494982 +494983 +495008 +495009 +495010 +495011 +495012 +495013 +495014 +495015 +495040 +495041 +495042 +495043 +495044 +495045 +495046 +495047 +495072 +495073 +495074 +495075 +495076 +495077 +495078 +495079 +495104 +495105 +495106 +495107 +495108 +495109 +495110 +495111 +495136 +495137 +495138 +495139 +495140 +495141 +495142 +495143 +495168 +495169 +495170 +495171 +495172 +495173 +495174 +495175 +495200 +495201 +495202 +495203 +495204 +495205 +495206 +495207 +495232 +495233 +495234 +495235 +495236 +495237 +495238 +495239 +495264 +495265 +495266 +495267 +495268 +495269 +495270 +495271 +495296 +495297 +495298 +495299 +495300 +495301 +495302 +495303 +495328 +495329 +495330 +495331 +495332 +495333 +495334 +495335 +495360 +495361 +495362 +495363 +495364 +495365 +495366 +495367 +495392 +495393 +495394 +495395 +495396 +495397 +495398 +495399 +495424 +495425 +495426 +495427 +495428 +495429 +495430 +495431 +495456 +495457 +495458 +495459 +495460 +495461 +495462 +495463 +495488 +495489 +495490 +495491 +495492 +495493 +495494 +495495 +495520 +495521 +495522 +495523 +495524 +495525 +495526 +495527 +495552 +495553 +495554 +495555 +495556 +495557 +495558 +495559 +495584 +495585 +495586 +495587 +495588 +495589 +495590 +495591 +495616 +495617 +495618 +495619 +495620 +495621 +495622 +495623 +495648 +495649 +495650 +495651 +495652 +495653 +495654 +495655 +495680 +495681 +495682 +495683 +495684 +495685 +495686 +495687 +495712 +495713 +495714 +495715 +495716 +495717 +495718 +495719 +495744 +495745 +495746 +495747 +495748 +495749 +495750 +495751 +495776 +495777 +495778 +495779 +495780 +495781 +495782 +495783 +495808 +495809 +495810 +495811 +495812 +495813 +495814 +495815 +495840 +495841 +495842 +495843 +495844 +495845 +495846 +495847 +495872 +495873 +495874 +495875 +495876 +495877 +495878 +495879 +495904 +495905 +495906 +495907 +495908 +495909 +495910 +495911 +495936 +495937 +495938 +495939 +495940 +495941 +495942 +495943 +495968 +495969 +495970 +495971 +495972 +495973 +495974 +495975 +496000 +496001 +496002 +496003 +496004 +496005 +496006 +496007 +496032 +496033 +496034 +496035 +496036 +496037 +496038 +496039 +496064 +496065 +496066 +496067 +496068 +496069 +496070 +496071 +496096 +496097 +496098 +496099 +496100 +496101 +496102 +496103 +496128 +496129 +496130 +496131 +496132 +496133 +496134 +496135 +496160 +496161 +496162 +496163 +496164 +496165 +496166 +496167 +496192 +496193 +496194 +496195 +496196 +496197 +496198 +496199 +496224 +496225 +496226 +496227 +496228 +496229 +496230 +496231 +496256 +496257 +496258 +496259 +496260 +496261 +496262 +496263 +496288 +496289 +496290 +496291 +496292 +496293 +496294 +496295 +496320 +496321 +496322 +496323 +496324 +496325 +496326 +496327 +496352 +496353 +496354 +496355 +496356 +496357 +496358 +496359 +496384 +496385 +496386 +496387 +496388 +496389 +496390 +496391 +496416 +496417 +496418 +496419 +496420 +496421 +496422 +496423 +496448 +496449 +496450 +496451 +496452 +496453 +496454 +496455 +496480 +496481 +496482 +496483 +496484 +496485 +496486 +496487 +496512 +496513 +496514 +496515 +496516 +496517 +496518 +496519 +496544 +496545 +496546 +496547 +496548 +496549 +496550 +496551 +496576 +496577 +496578 +496579 +496580 +496581 +496582 +496583 +496608 +496609 +496610 +496611 +496612 +496613 +496614 +496615 +496640 +496641 +496642 +496643 +496644 +496645 +496646 +496647 +496672 +496673 +496674 +496675 +496676 +496677 +496678 +496679 +496704 +496705 +496706 +496707 +496708 +496709 +496710 +496711 +496736 +496737 +496738 +496739 +496740 +496741 +496742 +496743 +496768 +496769 +496770 +496771 +496772 +496773 +496774 +496775 +496800 +496801 +496802 +496803 +496804 +496805 +496806 +496807 +496832 +496833 +496834 +496835 +496836 +496837 +496838 +496839 +496864 +496865 +496866 +496867 +496868 +496869 +496870 +496871 +496896 +496897 +496898 +496899 +496900 +496901 +496902 +496903 +496928 +496929 +496930 +496931 +496932 +496933 +496934 +496935 +496960 +496961 +496962 +496963 +496964 +496965 +496966 +496967 +496992 +496993 +496994 +496995 +496996 +496997 +496998 +496999 +497024 +497025 +497026 +497027 +497028 +497029 +497030 +497031 +497056 +497057 +497058 +497059 +497060 +497061 +497062 +497063 +497088 +497089 +497090 +497091 +497092 +497093 +497094 +497095 +497120 +497121 +497122 +497123 +497124 +497125 +497126 +497127 +497152 +497153 +497154 +497155 +497156 +497157 +497158 +497159 +497184 +497185 +497186 +497187 +497188 +497189 +497190 +497191 +497216 +497217 +497218 +497219 +497220 +497221 +497222 +497223 +497248 +497249 +497250 +497251 +497252 +497253 +497254 +497255 +497280 +497281 +497282 +497283 +497284 +497285 +497286 +497287 +497312 +497313 +497314 +497315 +497316 +497317 +497318 +497319 +497344 +497345 +497346 +497347 +497348 +497349 +497350 +497351 +497376 +497377 +497378 +497379 +497380 +497381 +497382 +497383 +497408 +497409 +497410 +497411 +497412 +497413 +497414 +497415 +497440 +497441 +497442 +497443 +497444 +497445 +497446 +497447 +497472 +497473 +497474 +497475 +497476 +497477 +497478 +497479 +497504 +497505 +497506 +497507 +497508 +497509 +497510 +497511 +497536 +497537 +497538 +497539 +497540 +497541 +497542 +497543 +497568 +497569 +497570 +497571 +497572 +497573 +497574 +497575 +497600 +497601 +497602 +497603 +497604 +497605 +497606 +497607 +497632 +497633 +497634 +497635 +497636 +497637 +497638 +497639 +497664 +497665 +497666 +497667 +497668 +497669 +497670 +497671 +497696 +497697 +497698 +497699 +497700 +497701 +497702 +497703 +497728 +497729 +497730 +497731 +497732 +497733 +497734 +497735 +497760 +497761 +497762 +497763 +497764 +497765 +497766 +497767 +497792 +497793 +497794 +497795 +497796 +497797 +497798 +497799 +497824 +497825 +497826 +497827 +497828 +497829 +497830 +497831 +497856 +497857 +497858 +497859 +497860 +497861 +497862 +497863 +497888 +497889 +497890 +497891 +497892 +497893 +497894 +497895 +497920 +497921 +497922 +497923 +497924 +497925 +497926 +497927 +497952 +497953 +497954 +497955 +497956 +497957 +497958 +497959 +497984 +497985 +497986 +497987 +497988 +497989 +497990 +497991 +498016 +498017 +498018 +498019 +498020 +498021 +498022 +498023 +498048 +498049 +498050 +498051 +498052 +498053 +498054 +498055 +498080 +498081 +498082 +498083 +498084 +498085 +498086 +498087 +498112 +498113 +498114 +498115 +498116 +498117 +498118 +498119 +498144 +498145 +498146 +498147 +498148 +498149 +498150 +498151 +498176 +498177 +498178 +498179 +498180 +498181 +498182 +498183 +498208 +498209 +498210 +498211 +498212 +498213 +498214 +498215 +498240 +498241 +498242 +498243 +498244 +498245 +498246 +498247 +498272 +498273 +498274 +498275 +498276 +498277 +498278 +498279 +498304 +498305 +498306 +498307 +498308 +498309 +498310 +498311 +498336 +498337 +498338 +498339 +498340 +498341 +498342 +498343 +498368 +498369 +498370 +498371 +498372 +498373 +498374 +498375 +498400 +498401 +498402 +498403 +498404 +498405 +498406 +498407 +498432 +498433 +498434 +498435 +498436 +498437 +498438 +498439 +498464 +498465 +498466 +498467 +498468 +498469 +498470 +498471 +498496 +498497 +498498 +498499 +498500 +498501 +498502 +498503 +498528 +498529 +498530 +498531 +498532 +498533 +498534 +498535 +498560 +498561 +498562 +498563 +498564 +498565 +498566 +498567 +498592 +498593 +498594 +498595 +498596 +498597 +498598 +498599 +498624 +498625 +498626 +498627 +498628 +498629 +498630 +498631 +498656 +498657 +498658 +498659 +498660 +498661 +498662 +498663 +498688 +498689 +498690 +498691 +498692 +498693 +498694 +498695 +498720 +498721 +498722 +498723 +498724 +498725 +498726 +498727 +498752 +498753 +498754 +498755 +498756 +498757 +498758 +498759 +498784 +498785 +498786 +498787 +498788 +498789 +498790 +498791 +498816 +498817 +498818 +498819 +498820 +498821 +498822 +498823 +498848 +498849 +498850 +498851 +498852 +498853 +498854 +498855 +498880 +498881 +498882 +498883 +498884 +498885 +498886 +498887 +498912 +498913 +498914 +498915 +498916 +498917 +498918 +498919 +498944 +498945 +498946 +498947 +498948 +498949 +498950 +498951 +498976 +498977 +498978 +498979 +498980 +498981 +498982 +498983 +499008 +499009 +499010 +499011 +499012 +499013 +499014 +499015 +499040 +499041 +499042 +499043 +499044 +499045 +499046 +499047 +499072 +499073 +499074 +499075 +499076 +499077 +499078 +499079 +499104 +499105 +499106 +499107 +499108 +499109 +499110 +499111 +499136 +499137 +499138 +499139 +499140 +499141 +499142 +499143 +499168 +499169 +499170 +499171 +499172 +499173 +499174 +499175 +499200 +499201 +499202 +499203 +499204 +499205 +499206 +499207 +499232 +499233 +499234 +499235 +499236 +499237 +499238 +499239 +499264 +499265 +499266 +499267 +499268 +499269 +499270 +499271 +499296 +499297 +499298 +499299 +499300 +499301 +499302 +499303 +499328 +499329 +499330 +499331 +499332 +499333 +499334 +499335 +499360 +499361 +499362 +499363 +499364 +499365 +499366 +499367 +499392 +499393 +499394 +499395 +499396 +499397 +499398 +499399 +499424 +499425 +499426 +499427 +499428 +499429 +499430 +499431 +499456 +499457 +499458 +499459 +499460 +499461 +499462 +499463 +499488 +499489 +499490 +499491 +499492 +499493 +499494 +499495 +499520 +499521 +499522 +499523 +499524 +499525 +499526 +499527 +499552 +499553 +499554 +499555 +499556 +499557 +499558 +499559 +499584 +499585 +499586 +499587 +499588 +499589 +499590 +499591 +499616 +499617 +499618 +499619 +499620 +499621 +499622 +499623 +499648 +499649 +499650 +499651 +499652 +499653 +499654 +499655 +499680 +499681 +499682 +499683 +499684 +499685 +499686 +499687 +499712 +499713 +499714 +499715 +499716 +499717 +499718 +499719 +499744 +499745 +499746 +499747 +499748 +499749 +499750 +499751 +499776 +499777 +499778 +499779 +499780 +499781 +499782 +499783 +499808 +499809 +499810 +499811 +499812 +499813 +499814 +499815 +499840 +499841 +499842 +499843 +499844 +499845 +499846 +499847 +499872 +499873 +499874 +499875 +499876 +499877 +499878 +499879 +499904 +499905 +499906 +499907 +499908 +499909 +499910 +499911 +499936 +499937 +499938 +499939 +499940 +499941 +499942 +499943 +499968 +499969 +499970 +499971 +499972 +499973 +499974 +499975 +500000 +500001 +500002 +500003 +500004 +500005 +500006 +500007 +500032 +500033 +500034 +500035 +500036 +500037 +500038 +500039 +500064 +500065 +500066 +500067 +500068 +500069 +500070 +500071 +500096 +500097 +500098 +500099 +500100 +500101 +500102 +500103 +500128 +500129 +500130 +500131 +500132 +500133 +500134 +500135 +500160 +500161 +500162 +500163 +500164 +500165 +500166 +500167 +500192 +500193 +500194 +500195 +500196 +500197 +500198 +500199 +500224 +500225 +500226 +500227 +500228 +500229 +500230 +500231 +500256 +500257 +500258 +500259 +500260 +500261 +500262 +500263 +500288 +500289 +500290 +500291 +500292 +500293 +500294 +500295 +500320 +500321 +500322 +500323 +500324 +500325 +500326 +500327 +500352 +500353 +500354 +500355 +500356 +500357 +500358 +500359 +500384 +500385 +500386 +500387 +500388 +500389 +500390 +500391 +500416 +500417 +500418 +500419 +500420 +500421 +500422 +500423 +500448 +500449 +500450 +500451 +500452 +500453 +500454 +500455 +500480 +500481 +500482 +500483 +500484 +500485 +500486 +500487 +500512 +500513 +500514 +500515 +500516 +500517 +500518 +500519 +500544 +500545 +500546 +500547 +500548 +500549 +500550 +500551 +500576 +500577 +500578 +500579 +500580 +500581 +500582 +500583 +500608 +500609 +500610 +500611 +500612 +500613 +500614 +500615 +500640 +500641 +500642 +500643 +500644 +500645 +500646 +500647 +500672 +500673 +500674 +500675 +500676 +500677 +500678 +500679 +500704 +500705 +500706 +500707 +500708 +500709 +500710 +500711 +500736 +500737 +500738 +500739 +500740 +500741 +500742 +500743 +500768 +500769 +500770 +500771 +500772 +500773 +500774 +500775 +500800 +500801 +500802 +500803 +500804 +500805 +500806 +500807 +500832 +500833 +500834 +500835 +500836 +500837 +500838 +500839 +500864 +500865 +500866 +500867 +500868 +500869 +500870 +500871 +500896 +500897 +500898 +500899 +500900 +500901 +500902 +500903 +500928 +500929 +500930 +500931 +500932 +500933 +500934 +500935 +500960 +500961 +500962 +500963 +500964 +500965 +500966 +500967 +500992 +500993 +500994 +500995 +500996 +500997 +500998 +500999 +501024 +501025 +501026 +501027 +501028 +501029 +501030 +501031 +501056 +501057 +501058 +501059 +501060 +501061 +501062 +501063 +501088 +501089 +501090 +501091 +501092 +501093 +501094 +501095 +501120 +501121 +501122 +501123 +501124 +501125 +501126 +501127 +501152 +501153 +501154 +501155 +501156 +501157 +501158 +501159 +501184 +501185 +501186 +501187 +501188 +501189 +501190 +501191 +501216 +501217 +501218 +501219 +501220 +501221 +501222 +501223 +501248 +501249 +501250 +501251 +501252 +501253 +501254 +501255 +501280 +501281 +501282 +501283 +501284 +501285 +501286 +501287 +501312 +501313 +501314 +501315 +501316 +501317 +501318 +501319 +501344 +501345 +501346 +501347 +501348 +501349 +501350 +501351 +501376 +501377 +501378 +501379 +501380 +501381 +501382 +501383 +501408 +501409 +501410 +501411 +501412 +501413 +501414 +501415 +501440 +501441 +501442 +501443 +501444 +501445 +501446 +501447 +501472 +501473 +501474 +501475 +501476 +501477 +501478 +501479 +501504 +501505 +501506 +501507 +501508 +501509 +501510 +501511 +501536 +501537 +501538 +501539 +501540 +501541 +501542 +501543 +501568 +501569 +501570 +501571 +501572 +501573 +501574 +501575 +501600 +501601 +501602 +501603 +501604 +501605 +501606 +501607 +501632 +501633 +501634 +501635 +501636 +501637 +501638 +501639 +501664 +501665 +501666 +501667 +501668 +501669 +501670 +501671 +501696 +501697 +501698 +501699 +501700 +501701 +501702 +501703 +501728 +501729 +501730 +501731 +501732 +501733 +501734 +501735 +501760 +501761 +501762 +501763 +501764 +501765 +501766 +501767 +501792 +501793 +501794 +501795 +501796 +501797 +501798 +501799 +501824 +501825 +501826 +501827 +501828 +501829 +501830 +501831 +501856 +501857 +501858 +501859 +501860 +501861 +501862 +501863 +501888 +501889 +501890 +501891 +501892 +501893 +501894 +501895 +501920 +501921 +501922 +501923 +501924 +501925 +501926 +501927 +501952 +501953 +501954 +501955 +501956 +501957 +501958 +501959 +501984 +501985 +501986 +501987 +501988 +501989 +501990 +501991 +502016 +502017 +502018 +502019 +502020 +502021 +502022 +502023 +502048 +502049 +502050 +502051 +502052 +502053 +502054 +502055 +502080 +502081 +502082 +502083 +502084 +502085 +502086 +502087 +502112 +502113 +502114 +502115 +502116 +502117 +502118 +502119 +502144 +502145 +502146 +502147 +502148 +502149 +502150 +502151 +502176 +502177 +502178 +502179 +502180 +502181 +502182 +502183 +502208 +502209 +502210 +502211 +502212 +502213 +502214 +502215 +502240 +502241 +502242 +502243 +502244 +502245 +502246 +502247 +502272 +502273 +502274 +502275 +502276 +502277 +502278 +502279 +502304 +502305 +502306 +502307 +502308 +502309 +502310 +502311 +502336 +502337 +502338 +502339 +502340 +502341 +502342 +502343 +502368 +502369 +502370 +502371 +502372 +502373 +502374 +502375 +502400 +502401 +502402 +502403 +502404 +502405 +502406 +502407 +502432 +502433 +502434 +502435 +502436 +502437 +502438 +502439 +502464 +502465 +502466 +502467 +502468 +502469 +502470 +502471 +502496 +502497 +502498 +502499 +502500 +502501 +502502 +502503 +502528 +502529 +502530 +502531 +502532 +502533 +502534 +502535 +502560 +502561 +502562 +502563 +502564 +502565 +502566 +502567 +502592 +502593 +502594 +502595 +502596 +502597 +502598 +502599 +502624 +502625 +502626 +502627 +502628 +502629 +502630 +502631 +502656 +502657 +502658 +502659 +502660 +502661 +502662 +502663 +502688 +502689 +502690 +502691 +502692 +502693 +502694 +502695 +502720 +502721 +502722 +502723 +502724 +502725 +502726 +502727 +502752 +502753 +502754 +502755 +502756 +502757 +502758 +502759 +502784 +502785 +502786 +502787 +502788 +502789 +502790 +502791 +502816 +502817 +502818 +502819 +502820 +502821 +502822 +502823 +502848 +502849 +502850 +502851 +502852 +502853 +502854 +502855 +502880 +502881 +502882 +502883 +502884 +502885 +502886 +502887 +502912 +502913 +502914 +502915 +502916 +502917 +502918 +502919 +502944 +502945 +502946 +502947 +502948 +502949 +502950 +502951 +502976 +502977 +502978 +502979 +502980 +502981 +502982 +502983 +503008 +503009 +503010 +503011 +503012 +503013 +503014 +503015 +503040 +503041 +503042 +503043 +503044 +503045 +503046 +503047 +503072 +503073 +503074 +503075 +503076 +503077 +503078 +503079 +503104 +503105 +503106 +503107 +503108 +503109 +503110 +503111 +503136 +503137 +503138 +503139 +503140 +503141 +503142 +503143 +503168 +503169 +503170 +503171 +503172 +503173 +503174 +503175 +503200 +503201 +503202 +503203 +503204 +503205 +503206 +503207 +503232 +503233 +503234 +503235 +503236 +503237 +503238 +503239 +503264 +503265 +503266 +503267 +503268 +503269 +503270 +503271 +503296 +503297 +503298 +503299 +503300 +503301 +503302 +503303 +503328 +503329 +503330 +503331 +503332 +503333 +503334 +503335 +503360 +503361 +503362 +503363 +503364 +503365 +503366 +503367 +503392 +503393 +503394 +503395 +503396 +503397 +503398 +503399 +503424 +503425 +503426 +503427 +503428 +503429 +503430 +503431 +503456 +503457 +503458 +503459 +503460 +503461 +503462 +503463 +503488 +503489 +503490 +503491 +503492 +503493 +503494 +503495 +503520 +503521 +503522 +503523 +503524 +503525 +503526 +503527 +503552 +503553 +503554 +503555 +503556 +503557 +503558 +503559 +503584 +503585 +503586 +503587 +503588 +503589 +503590 +503591 +503616 +503617 +503618 +503619 +503620 +503621 +503622 +503623 +503648 +503649 +503650 +503651 +503652 +503653 +503654 +503655 +503680 +503681 +503682 +503683 +503684 +503685 +503686 +503687 +503712 +503713 +503714 +503715 +503716 +503717 +503718 +503719 +503744 +503745 +503746 +503747 +503748 +503749 +503750 +503751 +503776 +503777 +503778 +503779 +503780 +503781 +503782 +503783 +503808 +503809 +503810 +503811 +503812 +503813 +503814 +503815 +503840 +503841 +503842 +503843 +503844 +503845 +503846 +503847 +503872 +503873 +503874 +503875 +503876 +503877 +503878 +503879 +503904 +503905 +503906 +503907 +503908 +503909 +503910 +503911 +503936 +503937 +503938 +503939 +503940 +503941 +503942 +503943 +503968 +503969 +503970 +503971 +503972 +503973 +503974 +503975 +504000 +504001 +504002 +504003 +504004 +504005 +504006 +504007 +504032 +504033 +504034 +504035 +504036 +504037 +504038 +504039 +504064 +504065 +504066 +504067 +504068 +504069 +504070 +504071 +504096 +504097 +504098 +504099 +504100 +504101 +504102 +504103 +504128 +504129 +504130 +504131 +504132 +504133 +504134 +504135 +504160 +504161 +504162 +504163 +504164 +504165 +504166 +504167 +504192 +504193 +504194 +504195 +504196 +504197 +504198 +504199 +504224 +504225 +504226 +504227 +504228 +504229 +504230 +504231 +504256 +504257 +504258 +504259 +504260 +504261 +504262 +504263 +504288 +504289 +504290 +504291 +504292 +504293 +504294 +504295 +504320 +504321 +504322 +504323 +504324 +504325 +504326 +504327 +504352 +504353 +504354 +504355 +504356 +504357 +504358 +504359 +504384 +504385 +504386 +504387 +504388 +504389 +504390 +504391 +504416 +504417 +504418 +504419 +504420 +504421 +504422 +504423 +504448 +504449 +504450 +504451 +504452 +504453 +504454 +504455 +504480 +504481 +504482 +504483 +504484 +504485 +504486 +504487 +504512 +504513 +504514 +504515 +504516 +504517 +504518 +504519 +504544 +504545 +504546 +504547 +504548 +504549 +504550 +504551 +504576 +504577 +504578 +504579 +504580 +504581 +504582 +504583 +504608 +504609 +504610 +504611 +504612 +504613 +504614 +504615 +504640 +504641 +504642 +504643 +504644 +504645 +504646 +504647 +504672 +504673 +504674 +504675 +504676 +504677 +504678 +504679 +504704 +504705 +504706 +504707 +504708 +504709 +504710 +504711 +504736 +504737 +504738 +504739 +504740 +504741 +504742 +504743 +504768 +504769 +504770 +504771 +504772 +504773 +504774 +504775 +504800 +504801 +504802 +504803 +504804 +504805 +504806 +504807 +504832 +504833 +504834 +504835 +504836 +504837 +504838 +504839 +504864 +504865 +504866 +504867 +504868 +504869 +504870 +504871 +504896 +504897 +504898 +504899 +504900 +504901 +504902 +504903 +504928 +504929 +504930 +504931 +504932 +504933 +504934 +504935 +504960 +504961 +504962 +504963 +504964 +504965 +504966 +504967 +504992 +504993 +504994 +504995 +504996 +504997 +504998 +504999 +505024 +505025 +505026 +505027 +505028 +505029 +505030 +505031 +505056 +505057 +505058 +505059 +505060 +505061 +505062 +505063 +505088 +505089 +505090 +505091 +505092 +505093 +505094 +505095 +505120 +505121 +505122 +505123 +505124 +505125 +505126 +505127 +505152 +505153 +505154 +505155 +505156 +505157 +505158 +505159 +505184 +505185 +505186 +505187 +505188 +505189 +505190 +505191 +505216 +505217 +505218 +505219 +505220 +505221 +505222 +505223 +505248 +505249 +505250 +505251 +505252 +505253 +505254 +505255 +505280 +505281 +505282 +505283 +505284 +505285 +505286 +505287 +505312 +505313 +505314 +505315 +505316 +505317 +505318 +505319 +505344 +505345 +505346 +505347 +505348 +505349 +505350 +505351 +505376 +505377 +505378 +505379 +505380 +505381 +505382 +505383 +505408 +505409 +505410 +505411 +505412 +505413 +505414 +505415 +505440 +505441 +505442 +505443 +505444 +505445 +505446 +505447 +505472 +505473 +505474 +505475 +505476 +505477 +505478 +505479 +505504 +505505 +505506 +505507 +505508 +505509 +505510 +505511 +505536 +505537 +505538 +505539 +505540 +505541 +505542 +505543 +505568 +505569 +505570 +505571 +505572 +505573 +505574 +505575 +505600 +505601 +505602 +505603 +505604 +505605 +505606 +505607 +505632 +505633 +505634 +505635 +505636 +505637 +505638 +505639 +505664 +505665 +505666 +505667 +505668 +505669 +505670 +505671 +505696 +505697 +505698 +505699 +505700 +505701 +505702 +505703 +505728 +505729 +505730 +505731 +505732 +505733 +505734 +505735 +505760 +505761 +505762 +505763 +505764 +505765 +505766 +505767 +505792 +505793 +505794 +505795 +505796 +505797 +505798 +505799 +505824 +505825 +505826 +505827 +505828 +505829 +505830 +505831 +505856 +505857 +505858 +505859 +505860 +505861 +505862 +505863 +505888 +505889 +505890 +505891 +505892 +505893 +505894 +505895 +505920 +505921 +505922 +505923 +505924 +505925 +505926 +505927 +505952 +505953 +505954 +505955 +505956 +505957 +505958 +505959 +505984 +505985 +505986 +505987 +505988 +505989 +505990 +505991 +506016 +506017 +506018 +506019 +506020 +506021 +506022 +506023 +506048 +506049 +506050 +506051 +506052 +506053 +506054 +506055 +506080 +506081 +506082 +506083 +506084 +506085 +506086 +506087 +506112 +506113 +506114 +506115 +506116 +506117 +506118 +506119 +506144 +506145 +506146 +506147 +506148 +506149 +506150 +506151 +506176 +506177 +506178 +506179 +506180 +506181 +506182 +506183 +506208 +506209 +506210 +506211 +506212 +506213 +506214 +506215 +506240 +506241 +506242 +506243 +506244 +506245 +506246 +506247 +506272 +506273 +506274 +506275 +506276 +506277 +506278 +506279 +506304 +506305 +506306 +506307 +506308 +506309 +506310 +506311 +506336 +506337 +506338 +506339 +506340 +506341 +506342 +506343 +506368 +506369 +506370 +506371 +506372 +506373 +506374 +506375 +506400 +506401 +506402 +506403 +506404 +506405 +506406 +506407 +506432 +506433 +506434 +506435 +506436 +506437 +506438 +506439 +506464 +506465 +506466 +506467 +506468 +506469 +506470 +506471 +506496 +506497 +506498 +506499 +506500 +506501 +506502 +506503 +506528 +506529 +506530 +506531 +506532 +506533 +506534 +506535 +506560 +506561 +506562 +506563 +506564 +506565 +506566 +506567 +506592 +506593 +506594 +506595 +506596 +506597 +506598 +506599 +506624 +506625 +506626 +506627 +506628 +506629 +506630 +506631 +506656 +506657 +506658 +506659 +506660 +506661 +506662 +506663 +506688 +506689 +506690 +506691 +506692 +506693 +506694 +506695 +506720 +506721 +506722 +506723 +506724 +506725 +506726 +506727 +506752 +506753 +506754 +506755 +506756 +506757 +506758 +506759 +506784 +506785 +506786 +506787 +506788 +506789 +506790 +506791 +506816 +506817 +506818 +506819 +506820 +506821 +506822 +506823 +506848 +506849 +506850 +506851 +506852 +506853 +506854 +506855 +506880 +506881 +506882 +506883 +506884 +506885 +506886 +506887 +506912 +506913 +506914 +506915 +506916 +506917 +506918 +506919 +506944 +506945 +506946 +506947 +506948 +506949 +506950 +506951 +506976 +506977 +506978 +506979 +506980 +506981 +506982 +506983 +507008 +507009 +507010 +507011 +507012 +507013 +507014 +507015 +507040 +507041 +507042 +507043 +507044 +507045 +507046 +507047 +507072 +507073 +507074 +507075 +507076 +507077 +507078 +507079 +507104 +507105 +507106 +507107 +507108 +507109 +507110 +507111 +507136 +507137 +507138 +507139 +507140 +507141 +507142 +507143 +507168 +507169 +507170 +507171 +507172 +507173 +507174 +507175 +507200 +507201 +507202 +507203 +507204 +507205 +507206 +507207 +507232 +507233 +507234 +507235 +507236 +507237 +507238 +507239 +507264 +507265 +507266 +507267 +507268 +507269 +507270 +507271 +507296 +507297 +507298 +507299 +507300 +507301 +507302 +507303 +507328 +507329 +507330 +507331 +507332 +507333 +507334 +507335 +507360 +507361 +507362 +507363 +507364 +507365 +507366 +507367 +507392 +507393 +507394 +507395 +507396 +507397 +507398 +507399 +507424 +507425 +507426 +507427 +507428 +507429 +507430 +507431 +507456 +507457 +507458 +507459 +507460 +507461 +507462 +507463 +507488 +507489 +507490 +507491 +507492 +507493 +507494 +507495 +507520 +507521 +507522 +507523 +507524 +507525 +507526 +507527 +507552 +507553 +507554 +507555 +507556 +507557 +507558 +507559 +507584 +507585 +507586 +507587 +507588 +507589 +507590 +507591 +507616 +507617 +507618 +507619 +507620 +507621 +507622 +507623 +507648 +507649 +507650 +507651 +507652 +507653 +507654 +507655 +507680 +507681 +507682 +507683 +507684 +507685 +507686 +507687 +507712 +507713 +507714 +507715 +507716 +507717 +507718 +507719 +507744 +507745 +507746 +507747 +507748 +507749 +507750 +507751 +507776 +507777 +507778 +507779 +507780 +507781 +507782 +507783 +507808 +507809 +507810 +507811 +507812 +507813 +507814 +507815 +507840 +507841 +507842 +507843 +507844 +507845 +507846 +507847 +507872 +507873 +507874 +507875 +507876 +507877 +507878 +507879 +507904 +507905 +507906 +507907 +507908 +507909 +507910 +507911 +507936 +507937 +507938 +507939 +507940 +507941 +507942 +507943 +507968 +507969 +507970 +507971 +507972 +507973 +507974 +507975 +508000 +508001 +508002 +508003 +508004 +508005 +508006 +508007 +508032 +508033 +508034 +508035 +508036 +508037 +508038 +508039 +508064 +508065 +508066 +508067 +508068 +508069 +508070 +508071 +508096 +508097 +508098 +508099 +508100 +508101 +508102 +508103 +508128 +508129 +508130 +508131 +508132 +508133 +508134 +508135 +508160 +508161 +508162 +508163 +508164 +508165 +508166 +508167 +508192 +508193 +508194 +508195 +508196 +508197 +508198 +508199 +508224 +508225 +508226 +508227 +508228 +508229 +508230 +508231 +508256 +508257 +508258 +508259 +508260 +508261 +508262 +508263 +508288 +508289 +508290 +508291 +508292 +508293 +508294 +508295 +508320 +508321 +508322 +508323 +508324 +508325 +508326 +508327 +508352 +508353 +508354 +508355 +508356 +508357 +508358 +508359 +508384 +508385 +508386 +508387 +508388 +508389 +508390 +508391 +508416 +508417 +508418 +508419 +508420 +508421 +508422 +508423 +508448 +508449 +508450 +508451 +508452 +508453 +508454 +508455 +508480 +508481 +508482 +508483 +508484 +508485 +508486 +508487 +508512 +508513 +508514 +508515 +508516 +508517 +508518 +508519 +508544 +508545 +508546 +508547 +508548 +508549 +508550 +508551 +508576 +508577 +508578 +508579 +508580 +508581 +508582 +508583 +508608 +508609 +508610 +508611 +508612 +508613 +508614 +508615 +508640 +508641 +508642 +508643 +508644 +508645 +508646 +508647 +508672 +508673 +508674 +508675 +508676 +508677 +508678 +508679 +508704 +508705 +508706 +508707 +508708 +508709 +508710 +508711 +508736 +508737 +508738 +508739 +508740 +508741 +508742 +508743 +508768 +508769 +508770 +508771 +508772 +508773 +508774 +508775 +508800 +508801 +508802 +508803 +508804 +508805 +508806 +508807 +508832 +508833 +508834 +508835 +508836 +508837 +508838 +508839 +508864 +508865 +508866 +508867 +508868 +508869 +508870 +508871 +508896 +508897 +508898 +508899 +508900 +508901 +508902 +508903 +508928 +508929 +508930 +508931 +508932 +508933 +508934 +508935 +508960 +508961 +508962 +508963 +508964 +508965 +508966 +508967 +508992 +508993 +508994 +508995 +508996 +508997 +508998 +508999 +509024 +509025 +509026 +509027 +509028 +509029 +509030 +509031 +509056 +509057 +509058 +509059 +509060 +509061 +509062 +509063 +509088 +509089 +509090 +509091 +509092 +509093 +509094 +509095 +509120 +509121 +509122 +509123 +509124 +509125 +509126 +509127 +509152 +509153 +509154 +509155 +509156 +509157 +509158 +509159 +509184 +509185 +509186 +509187 +509188 +509189 +509190 +509191 +509216 +509217 +509218 +509219 +509220 +509221 +509222 +509223 +509248 +509249 +509250 +509251 +509252 +509253 +509254 +509255 +509280 +509281 +509282 +509283 +509284 +509285 +509286 +509287 +509312 +509313 +509314 +509315 +509316 +509317 +509318 +509319 +509344 +509345 +509346 +509347 +509348 +509349 +509350 +509351 +509376 +509377 +509378 +509379 +509380 +509381 +509382 +509383 +509408 +509409 +509410 +509411 +509412 +509413 +509414 +509415 +509440 +509441 +509442 +509443 +509444 +509445 +509446 +509447 +509472 +509473 +509474 +509475 +509476 +509477 +509478 +509479 +509504 +509505 +509506 +509507 +509508 +509509 +509510 +509511 +509536 +509537 +509538 +509539 +509540 +509541 +509542 +509543 +509568 +509569 +509570 +509571 +509572 +509573 +509574 +509575 +509600 +509601 +509602 +509603 +509604 +509605 +509606 +509607 +509632 +509633 +509634 +509635 +509636 +509637 +509638 +509639 +509664 +509665 +509666 +509667 +509668 +509669 +509670 +509671 +509696 +509697 +509698 +509699 +509700 +509701 +509702 +509703 +509728 +509729 +509730 +509731 +509732 +509733 +509734 +509735 +509760 +509761 +509762 +509763 +509764 +509765 +509766 +509767 +509792 +509793 +509794 +509795 +509796 +509797 +509798 +509799 +509824 +509825 +509826 +509827 +509828 +509829 +509830 +509831 +509856 +509857 +509858 +509859 +509860 +509861 +509862 +509863 +509888 +509889 +509890 +509891 +509892 +509893 +509894 +509895 +509920 +509921 +509922 +509923 +509924 +509925 +509926 +509927 +509952 +509953 +509954 +509955 +509956 +509957 +509958 +509959 +509984 +509985 +509986 +509987 +509988 +509989 +509990 +509991 +510016 +510017 +510018 +510019 +510020 +510021 +510022 +510023 +510048 +510049 +510050 +510051 +510052 +510053 +510054 +510055 +510080 +510081 +510082 +510083 +510084 +510085 +510086 +510087 +510112 +510113 +510114 +510115 +510116 +510117 +510118 +510119 +510144 +510145 +510146 +510147 +510148 +510149 +510150 +510151 +510176 +510177 +510178 +510179 +510180 +510181 +510182 +510183 +510208 +510209 +510210 +510211 +510212 +510213 +510214 +510215 +510240 +510241 +510242 +510243 +510244 +510245 +510246 +510247 +510272 +510273 +510274 +510275 +510276 +510277 +510278 +510279 +510304 +510305 +510306 +510307 +510308 +510309 +510310 +510311 +510336 +510337 +510338 +510339 +510340 +510341 +510342 +510343 +510368 +510369 +510370 +510371 +510372 +510373 +510374 +510375 +510400 +510401 +510402 +510403 +510404 +510405 +510406 +510407 +510432 +510433 +510434 +510435 +510436 +510437 +510438 +510439 +510464 +510465 +510466 +510467 +510468 +510469 +510470 +510471 +510496 +510497 +510498 +510499 +510500 +510501 +510502 +510503 +510528 +510529 +510530 +510531 +510532 +510533 +510534 +510535 +510560 +510561 +510562 +510563 +510564 +510565 +510566 +510567 +510592 +510593 +510594 +510595 +510596 +510597 +510598 +510599 +510624 +510625 +510626 +510627 +510628 +510629 +510630 +510631 +510656 +510657 +510658 +510659 +510660 +510661 +510662 +510663 +510688 +510689 +510690 +510691 +510692 +510693 +510694 +510695 +510720 +510721 +510722 +510723 +510724 +510725 +510726 +510727 +510752 +510753 +510754 +510755 +510756 +510757 +510758 +510759 +510784 +510785 +510786 +510787 +510788 +510789 +510790 +510791 +510816 +510817 +510818 +510819 +510820 +510821 +510822 +510823 +510848 +510849 +510850 +510851 +510852 +510853 +510854 +510855 +510880 +510881 +510882 +510883 +510884 +510885 +510886 +510887 +510912 +510913 +510914 +510915 +510916 +510917 +510918 +510919 +510944 +510945 +510946 +510947 +510948 +510949 +510950 +510951 +510976 +510977 +510978 +510979 +510980 +510981 +510982 +510983 +511008 +511009 +511010 +511011 +511012 +511013 +511014 +511015 +511040 +511041 +511042 +511043 +511044 +511045 +511046 +511047 +511072 +511073 +511074 +511075 +511076 +511077 +511078 +511079 +511104 +511105 +511106 +511107 +511108 +511109 +511110 +511111 +511136 +511137 +511138 +511139 +511140 +511141 +511142 +511143 +511168 +511169 +511170 +511171 +511172 +511173 +511174 +511175 +511200 +511201 +511202 +511203 +511204 +511205 +511206 +511207 +511232 +511233 +511234 +511235 +511236 +511237 +511238 +511239 +511264 +511265 +511266 +511267 +511268 +511269 +511270 +511271 +511296 +511297 +511298 +511299 +511300 +511301 +511302 +511303 +511328 +511329 +511330 +511331 +511332 +511333 +511334 +511335 +511360 +511361 +511362 +511363 +511364 +511365 +511366 +511367 +511392 +511393 +511394 +511395 +511396 +511397 +511398 +511399 +511424 +511425 +511426 +511427 +511428 +511429 +511430 +511431 +511456 +511457 +511458 +511459 +511460 +511461 +511462 +511463 +511488 +511489 +511490 +511491 +511492 +511493 +511494 +511495 +511520 +511521 +511522 +511523 +511524 +511525 +511526 +511527 +511552 +511553 +511554 +511555 +511556 +511557 +511558 +511559 +511584 +511585 +511586 +511587 +511588 +511589 +511590 +511591 +511616 +511617 +511618 +511619 +511620 +511621 +511622 +511623 +511648 +511649 +511650 +511651 +511652 +511653 +511654 +511655 +511680 +511681 +511682 +511683 +511684 +511685 +511686 +511687 +511712 +511713 +511714 +511715 +511716 +511717 +511718 +511719 +511744 +511745 +511746 +511747 +511748 +511749 +511750 +511751 +511776 +511777 +511778 +511779 +511780 +511781 +511782 +511783 +511808 +511809 +511810 +511811 +511812 +511813 +511814 +511815 +511840 +511841 +511842 +511843 +511844 +511845 +511846 +511847 +511872 +511873 +511874 +511875 +511876 +511877 +511878 +511879 +511904 +511905 +511906 +511907 +511908 +511909 +511910 +511911 +511936 +511937 +511938 +511939 +511940 +511941 +511942 +511943 +511968 +511969 +511970 +511971 +511972 +511973 +511974 +511975 +512000 +512001 +512002 +512003 +512004 +512005 +512006 +512007 +512032 +512033 +512034 +512035 +512036 +512037 +512038 +512039 +512064 +512065 +512066 +512067 +512068 +512069 +512070 +512071 +512096 +512097 +512098 +512099 +512100 +512101 +512102 +512103 +512128 +512129 +512130 +512131 +512132 +512133 +512134 +512135 +512160 +512161 +512162 +512163 +512164 +512165 +512166 +512167 +512192 +512193 +512194 +512195 +512196 +512197 +512198 +512199 +512224 +512225 +512226 +512227 +512228 +512229 +512230 +512231 +512256 +512257 +512258 +512259 +512260 +512261 +512262 +512263 +512288 +512289 +512290 +512291 +512292 +512293 +512294 +512295 +512320 +512321 +512322 +512323 +512324 +512325 +512326 +512327 +512352 +512353 +512354 +512355 +512356 +512357 +512358 +512359 +512384 +512385 +512386 +512387 +512388 +512389 +512390 +512391 +512416 +512417 +512418 +512419 +512420 +512421 +512422 +512423 +512448 +512449 +512450 +512451 +512452 +512453 +512454 +512455 +512480 +512481 +512482 +512483 +512484 +512485 +512486 +512487 +512512 +512513 +512514 +512515 +512516 +512517 +512518 +512519 +512544 +512545 +512546 +512547 +512548 +512549 +512550 +512551 +512576 +512577 +512578 +512579 +512580 +512581 +512582 +512583 +512608 +512609 +512610 +512611 +512612 +512613 +512614 +512615 +512640 +512641 +512642 +512643 +512644 +512645 +512646 +512647 +512672 +512673 +512674 +512675 +512676 +512677 +512678 +512679 +512704 +512705 +512706 +512707 +512708 +512709 +512710 +512711 +512736 +512737 +512738 +512739 +512740 +512741 +512742 +512743 +512768 +512769 +512770 +512771 +512772 +512773 +512774 +512775 +512800 +512801 +512802 +512803 +512804 +512805 +512806 +512807 +512832 +512833 +512834 +512835 +512836 +512837 +512838 +512839 +512864 +512865 +512866 +512867 +512868 +512869 +512870 +512871 +512896 +512897 +512898 +512899 +512900 +512901 +512902 +512903 +512928 +512929 +512930 +512931 +512932 +512933 +512934 +512935 +512960 +512961 +512962 +512963 +512964 +512965 +512966 +512967 +512992 +512993 +512994 +512995 +512996 +512997 +512998 +512999 +513024 +513025 +513026 +513027 +513028 +513029 +513030 +513031 +513056 +513057 +513058 +513059 +513060 +513061 +513062 +513063 +513088 +513089 +513090 +513091 +513092 +513093 +513094 +513095 +513120 +513121 +513122 +513123 +513124 +513125 +513126 +513127 +513152 +513153 +513154 +513155 +513156 +513157 +513158 +513159 +513184 +513185 +513186 +513187 +513188 +513189 +513190 +513191 +513216 +513217 +513218 +513219 +513220 +513221 +513222 +513223 +513248 +513249 +513250 +513251 +513252 +513253 +513254 +513255 +513280 +513281 +513282 +513283 +513284 +513285 +513286 +513287 +513312 +513313 +513314 +513315 +513316 +513317 +513318 +513319 +513344 +513345 +513346 +513347 +513348 +513349 +513350 +513351 +513376 +513377 +513378 +513379 +513380 +513381 +513382 +513383 +513408 +513409 +513410 +513411 +513412 +513413 +513414 +513415 +513440 +513441 +513442 +513443 +513444 +513445 +513446 +513447 +513472 +513473 +513474 +513475 +513476 +513477 +513478 +513479 +513504 +513505 +513506 +513507 +513508 +513509 +513510 +513511 +513536 +513537 +513538 +513539 +513540 +513541 +513542 +513543 +513568 +513569 +513570 +513571 +513572 +513573 +513574 +513575 +513600 +513601 +513602 +513603 +513604 +513605 +513606 +513607 +513632 +513633 +513634 +513635 +513636 +513637 +513638 +513639 +513664 +513665 +513666 +513667 +513668 +513669 +513670 +513671 +513696 +513697 +513698 +513699 +513700 +513701 +513702 +513703 +513728 +513729 +513730 +513731 +513732 +513733 +513734 +513735 +513760 +513761 +513762 +513763 +513764 +513765 +513766 +513767 +513792 +513793 +513794 +513795 +513796 +513797 +513798 +513799 +513824 +513825 +513826 +513827 +513828 +513829 +513830 +513831 +513856 +513857 +513858 +513859 +513860 +513861 +513862 +513863 +513888 +513889 +513890 +513891 +513892 +513893 +513894 +513895 +513920 +513921 +513922 +513923 +513924 +513925 +513926 +513927 +513952 +513953 +513954 +513955 +513956 +513957 +513958 +513959 +513984 +513985 +513986 +513987 +513988 +513989 +513990 +513991 +514016 +514017 +514018 +514019 +514020 +514021 +514022 +514023 +514048 +514049 +514050 +514051 +514052 +514053 +514054 +514055 +514080 +514081 +514082 +514083 +514084 +514085 +514086 +514087 +514112 +514113 +514114 +514115 +514116 +514117 +514118 +514119 +514144 +514145 +514146 +514147 +514148 +514149 +514150 +514151 +514176 +514177 +514178 +514179 +514180 +514181 +514182 +514183 +514208 +514209 +514210 +514211 +514212 +514213 +514214 +514215 +514240 +514241 +514242 +514243 +514244 +514245 +514246 +514247 +514272 +514273 +514274 +514275 +514276 +514277 +514278 +514279 +514304 +514305 +514306 +514307 +514308 +514309 +514310 +514311 +514336 +514337 +514338 +514339 +514340 +514341 +514342 +514343 +514368 +514369 +514370 +514371 +514372 +514373 +514374 +514375 +514400 +514401 +514402 +514403 +514404 +514405 +514406 +514407 +514432 +514433 +514434 +514435 +514436 +514437 +514438 +514439 +514464 +514465 +514466 +514467 +514468 +514469 +514470 +514471 +514496 +514497 +514498 +514499 +514500 +514501 +514502 +514503 +514528 +514529 +514530 +514531 +514532 +514533 +514534 +514535 +514560 +514561 +514562 +514563 +514564 +514565 +514566 +514567 +514592 +514593 +514594 +514595 +514596 +514597 +514598 +514599 +514624 +514625 +514626 +514627 +514628 +514629 +514630 +514631 +514656 +514657 +514658 +514659 +514660 +514661 +514662 +514663 +514688 +514689 +514690 +514691 +514692 +514693 +514694 +514695 +514720 +514721 +514722 +514723 +514724 +514725 +514726 +514727 +514752 +514753 +514754 +514755 +514756 +514757 +514758 +514759 +514784 +514785 +514786 +514787 +514788 +514789 +514790 +514791 +514816 +514817 +514818 +514819 +514820 +514821 +514822 +514823 +514848 +514849 +514850 +514851 +514852 +514853 +514854 +514855 +514880 +514881 +514882 +514883 +514884 +514885 +514886 +514887 +514912 +514913 +514914 +514915 +514916 +514917 +514918 +514919 +514944 +514945 +514946 +514947 +514948 +514949 +514950 +514951 +514976 +514977 +514978 +514979 +514980 +514981 +514982 +514983 +515008 +515009 +515010 +515011 +515012 +515013 +515014 +515015 +515040 +515041 +515042 +515043 +515044 +515045 +515046 +515047 +515072 +515073 +515074 +515075 +515076 +515077 +515078 +515079 +515104 +515105 +515106 +515107 +515108 +515109 +515110 +515111 +515136 +515137 +515138 +515139 +515140 +515141 +515142 +515143 +515168 +515169 +515170 +515171 +515172 +515173 +515174 +515175 +515200 +515201 +515202 +515203 +515204 +515205 +515206 +515207 +515232 +515233 +515234 +515235 +515236 +515237 +515238 +515239 +515264 +515265 +515266 +515267 +515268 +515269 +515270 +515271 +515296 +515297 +515298 +515299 +515300 +515301 +515302 +515303 +515328 +515329 +515330 +515331 +515332 +515333 +515334 +515335 +515360 +515361 +515362 +515363 +515364 +515365 +515366 +515367 +515392 +515393 +515394 +515395 +515396 +515397 +515398 +515399 +515424 +515425 +515426 +515427 +515428 +515429 +515430 +515431 +515456 +515457 +515458 +515459 +515460 +515461 +515462 +515463 +515488 +515489 +515490 +515491 +515492 +515493 +515494 +515495 +515520 +515521 +515522 +515523 +515524 +515525 +515526 +515527 +515552 +515553 +515554 +515555 +515556 +515557 +515558 +515559 +515584 +515585 +515586 +515587 +515588 +515589 +515590 +515591 +515616 +515617 +515618 +515619 +515620 +515621 +515622 +515623 +515648 +515649 +515650 +515651 +515652 +515653 +515654 +515655 +515680 +515681 +515682 +515683 +515684 +515685 +515686 +515687 +515712 +515713 +515714 +515715 +515716 +515717 +515718 +515719 +515744 +515745 +515746 +515747 +515748 +515749 +515750 +515751 +515776 +515777 +515778 +515779 +515780 +515781 +515782 +515783 +515808 +515809 +515810 +515811 +515812 +515813 +515814 +515815 +515840 +515841 +515842 +515843 +515844 +515845 +515846 +515847 +515872 +515873 +515874 +515875 +515876 +515877 +515878 +515879 +515904 +515905 +515906 +515907 +515908 +515909 +515910 +515911 +515936 +515937 +515938 +515939 +515940 +515941 +515942 +515943 +515968 +515969 +515970 +515971 +515972 +515973 +515974 +515975 +516000 +516001 +516002 +516003 +516004 +516005 +516006 +516007 +516032 +516033 +516034 +516035 +516036 +516037 +516038 +516039 +516064 +516065 +516066 +516067 +516068 +516069 +516070 +516071 +516096 +516097 +516098 +516099 +516100 +516101 +516102 +516103 +516128 +516129 +516130 +516131 +516132 +516133 +516134 +516135 +516160 +516161 +516162 +516163 +516164 +516165 +516166 +516167 +516192 +516193 +516194 +516195 +516196 +516197 +516198 +516199 +516224 +516225 +516226 +516227 +516228 +516229 +516230 +516231 +516256 +516257 +516258 +516259 +516260 +516261 +516262 +516263 +516288 +516289 +516290 +516291 +516292 +516293 +516294 +516295 +516320 +516321 +516322 +516323 +516324 +516325 +516326 +516327 +516352 +516353 +516354 +516355 +516356 +516357 +516358 +516359 +516384 +516385 +516386 +516387 +516388 +516389 +516390 +516391 +516416 +516417 +516418 +516419 +516420 +516421 +516422 +516423 +516448 +516449 +516450 +516451 +516452 +516453 +516454 +516455 +516480 +516481 +516482 +516483 +516484 +516485 +516486 +516487 +516512 +516513 +516514 +516515 +516516 +516517 +516518 +516519 +516544 +516545 +516546 +516547 +516548 +516549 +516550 +516551 +516576 +516577 +516578 +516579 +516580 +516581 +516582 +516583 +516608 +516609 +516610 +516611 +516612 +516613 +516614 +516615 +516640 +516641 +516642 +516643 +516644 +516645 +516646 +516647 +516672 +516673 +516674 +516675 +516676 +516677 +516678 +516679 +516704 +516705 +516706 +516707 +516708 +516709 +516710 +516711 +516736 +516737 +516738 +516739 +516740 +516741 +516742 +516743 +516768 +516769 +516770 +516771 +516772 +516773 +516774 +516775 +516800 +516801 +516802 +516803 +516804 +516805 +516806 +516807 +516832 +516833 +516834 +516835 +516836 +516837 +516838 +516839 +516864 +516865 +516866 +516867 +516868 +516869 +516870 +516871 +516896 +516897 +516898 +516899 +516900 +516901 +516902 +516903 +516928 +516929 +516930 +516931 +516932 +516933 +516934 +516935 +516960 +516961 +516962 +516963 +516964 +516965 +516966 +516967 +516992 +516993 +516994 +516995 +516996 +516997 +516998 +516999 +517024 +517025 +517026 +517027 +517028 +517029 +517030 +517031 +517056 +517057 +517058 +517059 +517060 +517061 +517062 +517063 +517088 +517089 +517090 +517091 +517092 +517093 +517094 +517095 +517120 +517121 +517122 +517123 +517124 +517125 +517126 +517127 +517152 +517153 +517154 +517155 +517156 +517157 +517158 +517159 +517184 +517185 +517186 +517187 +517188 +517189 +517190 +517191 +517216 +517217 +517218 +517219 +517220 +517221 +517222 +517223 +517248 +517249 +517250 +517251 +517252 +517253 +517254 +517255 +517280 +517281 +517282 +517283 +517284 +517285 +517286 +517287 +517312 +517313 +517314 +517315 +517316 +517317 +517318 +517319 +517344 +517345 +517346 +517347 +517348 +517349 +517350 +517351 +517376 +517377 +517378 +517379 +517380 +517381 +517382 +517383 +517408 +517409 +517410 +517411 +517412 +517413 +517414 +517415 +517440 +517441 +517442 +517443 +517444 +517445 +517446 +517447 +517472 +517473 +517474 +517475 +517476 +517477 +517478 +517479 +517504 +517505 +517506 +517507 +517508 +517509 +517510 +517511 +517536 +517537 +517538 +517539 +517540 +517541 +517542 +517543 +517568 +517569 +517570 +517571 +517572 +517573 +517574 +517575 +517600 +517601 +517602 +517603 +517604 +517605 +517606 +517607 +517632 +517633 +517634 +517635 +517636 +517637 +517638 +517639 +517664 +517665 +517666 +517667 +517668 +517669 +517670 +517671 +517696 +517697 +517698 +517699 +517700 +517701 +517702 +517703 +517728 +517729 +517730 +517731 +517732 +517733 +517734 +517735 +517760 +517761 +517762 +517763 +517764 +517765 +517766 +517767 +517792 +517793 +517794 +517795 +517796 +517797 +517798 +517799 +517824 +517825 +517826 +517827 +517828 +517829 +517830 +517831 +517856 +517857 +517858 +517859 +517860 +517861 +517862 +517863 +517888 +517889 +517890 +517891 +517892 +517893 +517894 +517895 +517920 +517921 +517922 +517923 +517924 +517925 +517926 +517927 +517952 +517953 +517954 +517955 +517956 +517957 +517958 +517959 +517984 +517985 +517986 +517987 +517988 +517989 +517990 +517991 +518016 +518017 +518018 +518019 +518020 +518021 +518022 +518023 +518048 +518049 +518050 +518051 +518052 +518053 +518054 +518055 +518080 +518081 +518082 +518083 +518084 +518085 +518086 +518087 +518112 +518113 +518114 +518115 +518116 +518117 +518118 +518119 +518144 +518145 +518146 +518147 +518148 +518149 +518150 +518151 +518176 +518177 +518178 +518179 +518180 +518181 +518182 +518183 +518208 +518209 +518210 +518211 +518212 +518213 +518214 +518215 +518240 +518241 +518242 +518243 +518244 +518245 +518246 +518247 +518272 +518273 +518274 +518275 +518276 +518277 +518278 +518279 +518304 +518305 +518306 +518307 +518308 +518309 +518310 +518311 +518336 +518337 +518338 +518339 +518340 +518341 +518342 +518343 +518368 +518369 +518370 +518371 +518372 +518373 +518374 +518375 +518400 +518401 +518402 +518403 +518404 +518405 +518406 +518407 +518432 +518433 +518434 +518435 +518436 +518437 +518438 +518439 +518464 +518465 +518466 +518467 +518468 +518469 +518470 +518471 +518496 +518497 +518498 +518499 +518500 +518501 +518502 +518503 +518528 +518529 +518530 +518531 +518532 +518533 +518534 +518535 +518560 +518561 +518562 +518563 +518564 +518565 +518566 +518567 +518592 +518593 +518594 +518595 +518596 +518597 +518598 +518599 +518624 +518625 +518626 +518627 +518628 +518629 +518630 +518631 +518656 +518657 +518658 +518659 +518660 +518661 +518662 +518663 +518688 +518689 +518690 +518691 +518692 +518693 +518694 +518695 +518720 +518721 +518722 +518723 +518724 +518725 +518726 +518727 +518752 +518753 +518754 +518755 +518756 +518757 +518758 +518759 +518784 +518785 +518786 +518787 +518788 +518789 +518790 +518791 +518816 +518817 +518818 +518819 +518820 +518821 +518822 +518823 +518848 +518849 +518850 +518851 +518852 +518853 +518854 +518855 +518880 +518881 +518882 +518883 +518884 +518885 +518886 +518887 +518912 +518913 +518914 +518915 +518916 +518917 +518918 +518919 +518944 +518945 +518946 +518947 +518948 +518949 +518950 +518951 +518976 +518977 +518978 +518979 +518980 +518981 +518982 +518983 +519008 +519009 +519010 +519011 +519012 +519013 +519014 +519015 +519040 +519041 +519042 +519043 +519044 +519045 +519046 +519047 +519072 +519073 +519074 +519075 +519076 +519077 +519078 +519079 +519104 +519105 +519106 +519107 +519108 +519109 +519110 +519111 +519136 +519137 +519138 +519139 +519140 +519141 +519142 +519143 +519168 +519169 +519170 +519171 +519172 +519173 +519174 +519175 +519200 +519201 +519202 +519203 +519204 +519205 +519206 +519207 +519232 +519233 +519234 +519235 +519236 +519237 +519238 +519239 +519264 +519265 +519266 +519267 +519268 +519269 +519270 +519271 +519296 +519297 +519298 +519299 +519300 +519301 +519302 +519303 +519328 +519329 +519330 +519331 +519332 +519333 +519334 +519335 +519360 +519361 +519362 +519363 +519364 +519365 +519366 +519367 +519392 +519393 +519394 +519395 +519396 +519397 +519398 +519399 +519424 +519425 +519426 +519427 +519428 +519429 +519430 +519431 +519456 +519457 +519458 +519459 +519460 +519461 +519462 +519463 +519488 +519489 +519490 +519491 +519492 +519493 +519494 +519495 +519520 +519521 +519522 +519523 +519524 +519525 +519526 +519527 +519552 +519553 +519554 +519555 +519556 +519557 +519558 +519559 +519584 +519585 +519586 +519587 +519588 +519589 +519590 +519591 +519616 +519617 +519618 +519619 +519620 +519621 +519622 +519623 +519648 +519649 +519650 +519651 +519652 +519653 +519654 +519655 +519680 +519681 +519682 +519683 +519684 +519685 +519686 +519687 +519712 +519713 +519714 +519715 +519716 +519717 +519718 +519719 +519744 +519745 +519746 +519747 +519748 +519749 +519750 +519751 +519776 +519777 +519778 +519779 +519780 +519781 +519782 +519783 +519808 +519809 +519810 +519811 +519812 +519813 +519814 +519815 +519840 +519841 +519842 +519843 +519844 +519845 +519846 +519847 +519872 +519873 +519874 +519875 +519876 +519877 +519878 +519879 +519904 +519905 +519906 +519907 +519908 +519909 +519910 +519911 +519936 +519937 +519938 +519939 +519940 +519941 +519942 +519943 +519968 +519969 +519970 +519971 +519972 +519973 +519974 +519975 +520000 +520001 +520002 +520003 +520004 +520005 +520006 +520007 +520032 +520033 +520034 +520035 +520036 +520037 +520038 +520039 +520064 +520065 +520066 +520067 +520068 +520069 +520070 +520071 +520096 +520097 +520098 +520099 +520100 +520101 +520102 +520103 +520128 +520129 +520130 +520131 +520132 +520133 +520134 +520135 +520160 +520161 +520162 +520163 +520164 +520165 +520166 +520167 +520192 +520193 +520194 +520195 +520196 +520197 +520198 +520199 +520224 +520225 +520226 +520227 +520228 +520229 +520230 +520231 +520256 +520257 +520258 +520259 +520260 +520261 +520262 +520263 +520288 +520289 +520290 +520291 +520292 +520293 +520294 +520295 +520320 +520321 +520322 +520323 +520324 +520325 +520326 +520327 +520352 +520353 +520354 +520355 +520356 +520357 +520358 +520359 +520384 +520385 +520386 +520387 +520388 +520389 +520390 +520391 +520416 +520417 +520418 +520419 +520420 +520421 +520422 +520423 +520448 +520449 +520450 +520451 +520452 +520453 +520454 +520455 +520480 +520481 +520482 +520483 +520484 +520485 +520486 +520487 +520512 +520513 +520514 +520515 +520516 +520517 +520518 +520519 +520544 +520545 +520546 +520547 +520548 +520549 +520550 +520551 +520576 +520577 +520578 +520579 +520580 +520581 +520582 +520583 +520608 +520609 +520610 +520611 +520612 +520613 +520614 +520615 +520640 +520641 +520642 +520643 +520644 +520645 +520646 +520647 +520672 +520673 +520674 +520675 +520676 +520677 +520678 +520679 +520704 +520705 +520706 +520707 +520708 +520709 +520710 +520711 +520736 +520737 +520738 +520739 +520740 +520741 +520742 +520743 +520768 +520769 +520770 +520771 +520772 +520773 +520774 +520775 +520800 +520801 +520802 +520803 +520804 +520805 +520806 +520807 +520832 +520833 +520834 +520835 +520836 +520837 +520838 +520839 +520864 +520865 +520866 +520867 +520868 +520869 +520870 +520871 +520896 +520897 +520898 +520899 +520900 +520901 +520902 +520903 +520928 +520929 +520930 +520931 +520932 +520933 +520934 +520935 +520960 +520961 +520962 +520963 +520964 +520965 +520966 +520967 +520992 +520993 +520994 +520995 +520996 +520997 +520998 +520999 +521024 +521025 +521026 +521027 +521028 +521029 +521030 +521031 +521056 +521057 +521058 +521059 +521060 +521061 +521062 +521063 +521088 +521089 +521090 +521091 +521092 +521093 +521094 +521095 +521120 +521121 +521122 +521123 +521124 +521125 +521126 +521127 +521152 +521153 +521154 +521155 +521156 +521157 +521158 +521159 +521184 +521185 +521186 +521187 +521188 +521189 +521190 +521191 +521216 +521217 +521218 +521219 +521220 +521221 +521222 +521223 +521248 +521249 +521250 +521251 +521252 +521253 +521254 +521255 +521280 +521281 +521282 +521283 +521284 +521285 +521286 +521287 +521312 +521313 +521314 +521315 +521316 +521317 +521318 +521319 +521344 +521345 +521346 +521347 +521348 +521349 +521350 +521351 +521376 +521377 +521378 +521379 +521380 +521381 +521382 +521383 +521408 +521409 +521410 +521411 +521412 +521413 +521414 +521415 +521440 +521441 +521442 +521443 +521444 +521445 +521446 +521447 +521472 +521473 +521474 +521475 +521476 +521477 +521478 +521479 +521504 +521505 +521506 +521507 +521508 +521509 +521510 +521511 +521536 +521537 +521538 +521539 +521540 +521541 +521542 +521543 +521568 +521569 +521570 +521571 +521572 +521573 +521574 +521575 +521600 +521601 +521602 +521603 +521604 +521605 +521606 +521607 +521632 +521633 +521634 +521635 +521636 +521637 +521638 +521639 +521664 +521665 +521666 +521667 +521668 +521669 +521670 +521671 +521696 +521697 +521698 +521699 +521700 +521701 +521702 +521703 +521728 +521729 +521730 +521731 +521732 +521733 +521734 +521735 +521760 +521761 +521762 +521763 +521764 +521765 +521766 +521767 +521792 +521793 +521794 +521795 +521796 +521797 +521798 +521799 +521824 +521825 +521826 +521827 +521828 +521829 +521830 +521831 +521856 +521857 +521858 +521859 +521860 +521861 +521862 +521863 +521888 +521889 +521890 +521891 +521892 +521893 +521894 +521895 +521920 +521921 +521922 +521923 +521924 +521925 +521926 +521927 +521952 +521953 +521954 +521955 +521956 +521957 +521958 +521959 +521984 +521985 +521986 +521987 +521988 +521989 +521990 +521991 +522016 +522017 +522018 +522019 +522020 +522021 +522022 +522023 +522048 +522049 +522050 +522051 +522052 +522053 +522054 +522055 +522080 +522081 +522082 +522083 +522084 +522085 +522086 +522087 +522112 +522113 +522114 +522115 +522116 +522117 +522118 +522119 +522144 +522145 +522146 +522147 +522148 +522149 +522150 +522151 +522176 +522177 +522178 +522179 +522180 +522181 +522182 +522183 +522208 +522209 +522210 +522211 +522212 +522213 +522214 +522215 +522240 +522241 +522242 +522243 +522244 +522245 +522246 +522247 +522272 +522273 +522274 +522275 +522276 +522277 +522278 +522279 +522304 +522305 +522306 +522307 +522308 +522309 +522310 +522311 +522336 +522337 +522338 +522339 +522340 +522341 +522342 +522343 +522368 +522369 +522370 +522371 +522372 +522373 +522374 +522375 +522400 +522401 +522402 +522403 +522404 +522405 +522406 +522407 +522432 +522433 +522434 +522435 +522436 +522437 +522438 +522439 +522464 +522465 +522466 +522467 +522468 +522469 +522470 +522471 +522496 +522497 +522498 +522499 +522500 +522501 +522502 +522503 +522528 +522529 +522530 +522531 +522532 +522533 +522534 +522535 +522560 +522561 +522562 +522563 +522564 +522565 +522566 +522567 +522592 +522593 +522594 +522595 +522596 +522597 +522598 +522599 +522624 +522625 +522626 +522627 +522628 +522629 +522630 +522631 +522656 +522657 +522658 +522659 +522660 +522661 +522662 +522663 +522688 +522689 +522690 +522691 +522692 +522693 +522694 +522695 +522720 +522721 +522722 +522723 +522724 +522725 +522726 +522727 +522752 +522753 +522754 +522755 +522756 +522757 +522758 +522759 +522784 +522785 +522786 +522787 +522788 +522789 +522790 +522791 +522816 +522817 +522818 +522819 +522820 +522821 +522822 +522823 +522848 +522849 +522850 +522851 +522852 +522853 +522854 +522855 +522880 +522881 +522882 +522883 +522884 +522885 +522886 +522887 +522912 +522913 +522914 +522915 +522916 +522917 +522918 +522919 +522944 +522945 +522946 +522947 +522948 +522949 +522950 +522951 +522976 +522977 +522978 +522979 +522980 +522981 +522982 +522983 +523008 +523009 +523010 +523011 +523012 +523013 +523014 +523015 +523040 +523041 +523042 +523043 +523044 +523045 +523046 +523047 +523072 +523073 +523074 +523075 +523076 +523077 +523078 +523079 +523104 +523105 +523106 +523107 +523108 +523109 +523110 +523111 +523136 +523137 +523138 +523139 +523140 +523141 +523142 +523143 +523168 +523169 +523170 +523171 +523172 +523173 +523174 +523175 +523200 +523201 +523202 +523203 +523204 +523205 +523206 +523207 +523232 +523233 +523234 +523235 +523236 +523237 +523238 +523239 +523264 +523265 +523266 +523267 +523268 +523269 +523270 +523271 +523296 +523297 +523298 +523299 +523300 +523301 +523302 +523303 +523328 +523329 +523330 +523331 +523332 +523333 +523334 +523335 +523360 +523361 +523362 +523363 +523364 +523365 +523366 +523367 +523392 +523393 +523394 +523395 +523396 +523397 +523398 +523399 +523424 +523425 +523426 +523427 +523428 +523429 +523430 +523431 +523456 +523457 +523458 +523459 +523460 +523461 +523462 +523463 +523488 +523489 +523490 +523491 +523492 +523493 +523494 +523495 +523520 +523521 +523522 +523523 +523524 +523525 +523526 +523527 +523552 +523553 +523554 +523555 +523556 +523557 +523558 +523559 +523584 +523585 +523586 +523587 +523588 +523589 +523590 +523591 +523616 +523617 +523618 +523619 +523620 +523621 +523622 +523623 +523648 +523649 +523650 +523651 +523652 +523653 +523654 +523655 +523680 +523681 +523682 +523683 +523684 +523685 +523686 +523687 +523712 +523713 +523714 +523715 +523716 +523717 +523718 +523719 +523744 +523745 +523746 +523747 +523748 +523749 +523750 +523751 +523776 +523777 +523778 +523779 +523780 +523781 +523782 +523783 +523808 +523809 +523810 +523811 +523812 +523813 +523814 +523815 +523840 +523841 +523842 +523843 +523844 +523845 +523846 +523847 +523872 +523873 +523874 +523875 +523876 +523877 +523878 +523879 +523904 +523905 +523906 +523907 +523908 +523909 +523910 +523911 +523936 +523937 +523938 +523939 +523940 +523941 +523942 +523943 +523968 +523969 +523970 +523971 +523972 +523973 +523974 +523975 +524000 +524001 +524002 +524003 +524004 +524005 +524006 +524007 +524032 +524033 +524034 +524035 +524036 +524037 +524038 +524039 +524064 +524065 +524066 +524067 +524068 +524069 +524070 +524071 +524096 +524097 +524098 +524099 +524100 +524101 +524102 +524103 +524128 +524129 +524130 +524131 +524132 +524133 +524134 +524135 +524160 +524161 +524162 +524163 +524164 +524165 +524166 +524167 +524192 +524193 +524194 +524195 +524196 +524197 +524198 +524199 +524224 +524225 +524226 +524227 +524228 +524229 +524230 +524231 +524256 +524257 +524258 +524259 +524260 +524261 +524262 +524263 +524288 +524289 +524290 +524291 +524292 +524293 +524294 +524295 +524320 +524321 +524322 +524323 +524324 +524325 +524326 +524327 +524352 +524353 +524354 +524355 +524356 +524357 +524358 +524359 +524384 +524385 +524386 +524387 +524388 +524389 +524390 +524391 +524416 +524417 +524418 +524419 +524420 +524421 +524422 +524423 +524448 +524449 +524450 +524451 +524452 +524453 +524454 +524455 +524480 +524481 +524482 +524483 +524484 +524485 +524486 +524487 +524512 +524513 +524514 +524515 +524516 +524517 +524518 +524519 +524544 +524545 +524546 +524547 +524548 +524549 +524550 +524551 +524576 +524577 +524578 +524579 +524580 +524581 +524582 +524583 +524608 +524609 +524610 +524611 +524612 +524613 +524614 +524615 +524640 +524641 +524642 +524643 +524644 +524645 +524646 +524647 +524672 +524673 +524674 +524675 +524676 +524677 +524678 +524679 +524704 +524705 +524706 +524707 +524708 +524709 +524710 +524711 +524736 +524737 +524738 +524739 +524740 +524741 +524742 +524743 +524768 +524769 +524770 +524771 +524772 +524773 +524774 +524775 +524800 +524801 +524802 +524803 +524804 +524805 +524806 +524807 +524832 +524833 +524834 +524835 +524836 +524837 +524838 +524839 +524864 +524865 +524866 +524867 +524868 +524869 +524870 +524871 +524896 +524897 +524898 +524899 +524900 +524901 +524902 +524903 +524928 +524929 +524930 +524931 +524932 +524933 +524934 +524935 +524960 +524961 +524962 +524963 +524964 +524965 +524966 +524967 +524992 +524993 +524994 +524995 +524996 +524997 +524998 +524999 +525024 +525025 +525026 +525027 +525028 +525029 +525030 +525031 +525056 +525057 +525058 +525059 +525060 +525061 +525062 +525063 +525088 +525089 +525090 +525091 +525092 +525093 +525094 +525095 +525120 +525121 +525122 +525123 +525124 +525125 +525126 +525127 +525152 +525153 +525154 +525155 +525156 +525157 +525158 +525159 +525184 +525185 +525186 +525187 +525188 +525189 +525190 +525191 +525216 +525217 +525218 +525219 +525220 +525221 +525222 +525223 +525248 +525249 +525250 +525251 +525252 +525253 +525254 +525255 +525280 +525281 +525282 +525283 +525284 +525285 +525286 +525287 +525312 +525313 +525314 +525315 +525316 +525317 +525318 +525319 +525344 +525345 +525346 +525347 +525348 +525349 +525350 +525351 +525376 +525377 +525378 +525379 +525380 +525381 +525382 +525383 +525408 +525409 +525410 +525411 +525412 +525413 +525414 +525415 +525440 +525441 +525442 +525443 +525444 +525445 +525446 +525447 +525472 +525473 +525474 +525475 +525476 +525477 +525478 +525479 +525504 +525505 +525506 +525507 +525508 +525509 +525510 +525511 +525536 +525537 +525538 +525539 +525540 +525541 +525542 +525543 +525568 +525569 +525570 +525571 +525572 +525573 +525574 +525575 +525600 +525601 +525602 +525603 +525604 +525605 +525606 +525607 +525632 +525633 +525634 +525635 +525636 +525637 +525638 +525639 +525664 +525665 +525666 +525667 +525668 +525669 +525670 +525671 +525696 +525697 +525698 +525699 +525700 +525701 +525702 +525703 +525728 +525729 +525730 +525731 +525732 +525733 +525734 +525735 +525760 +525761 +525762 +525763 +525764 +525765 +525766 +525767 +525792 +525793 +525794 +525795 +525796 +525797 +525798 +525799 +525824 +525825 +525826 +525827 +525828 +525829 +525830 +525831 +525856 +525857 +525858 +525859 +525860 +525861 +525862 +525863 +525888 +525889 +525890 +525891 +525892 +525893 +525894 +525895 +525920 +525921 +525922 +525923 +525924 +525925 +525926 +525927 +525952 +525953 +525954 +525955 +525956 +525957 +525958 +525959 +525984 +525985 +525986 +525987 +525988 +525989 +525990 +525991 +526016 +526017 +526018 +526019 +526020 +526021 +526022 +526023 +526048 +526049 +526050 +526051 +526052 +526053 +526054 +526055 +526080 +526081 +526082 +526083 +526084 +526085 +526086 +526087 +526112 +526113 +526114 +526115 +526116 +526117 +526118 +526119 +526144 +526145 +526146 +526147 +526148 +526149 +526150 +526151 +526176 +526177 +526178 +526179 +526180 +526181 +526182 +526183 +526208 +526209 +526210 +526211 +526212 +526213 +526214 +526215 +526240 +526241 +526242 +526243 +526244 +526245 +526246 +526247 +526272 +526273 +526274 +526275 +526276 +526277 +526278 +526279 +526304 +526305 +526306 +526307 +526308 +526309 +526310 +526311 +526336 +526337 +526338 +526339 +526340 +526341 +526342 +526343 +526368 +526369 +526370 +526371 +526372 +526373 +526374 +526375 +526400 +526401 +526402 +526403 +526404 +526405 +526406 +526407 +526432 +526433 +526434 +526435 +526436 +526437 +526438 +526439 +526464 +526465 +526466 +526467 +526468 +526469 +526470 +526471 +526496 +526497 +526498 +526499 +526500 +526501 +526502 +526503 +526528 +526529 +526530 +526531 +526532 +526533 +526534 +526535 +526560 +526561 +526562 +526563 +526564 +526565 +526566 +526567 +526592 +526593 +526594 +526595 +526596 +526597 +526598 +526599 +526624 +526625 +526626 +526627 +526628 +526629 +526630 +526631 +526656 +526657 +526658 +526659 +526660 +526661 +526662 +526663 +526688 +526689 +526690 +526691 +526692 +526693 +526694 +526695 +526720 +526721 +526722 +526723 +526724 +526725 +526726 +526727 +526752 +526753 +526754 +526755 +526756 +526757 +526758 +526759 +526784 +526785 +526786 +526787 +526788 +526789 +526790 +526791 +526816 +526817 +526818 +526819 +526820 +526821 +526822 +526823 +526848 +526849 +526850 +526851 +526852 +526853 +526854 +526855 +526880 +526881 +526882 +526883 +526884 +526885 +526886 +526887 +526912 +526913 +526914 +526915 +526916 +526917 +526918 +526919 +526944 +526945 +526946 +526947 +526948 +526949 +526950 +526951 +526976 +526977 +526978 +526979 +526980 +526981 +526982 +526983 +527008 +527009 +527010 +527011 +527012 +527013 +527014 +527015 +527040 +527041 +527042 +527043 +527044 +527045 +527046 +527047 +527072 +527073 +527074 +527075 +527076 +527077 +527078 +527079 +527104 +527105 +527106 +527107 +527108 +527109 +527110 +527111 +527136 +527137 +527138 +527139 +527140 +527141 +527142 +527143 +527168 +527169 +527170 +527171 +527172 +527173 +527174 +527175 +527200 +527201 +527202 +527203 +527204 +527205 +527206 +527207 +527232 +527233 +527234 +527235 +527236 +527237 +527238 +527239 +527264 +527265 +527266 +527267 +527268 +527269 +527270 +527271 +527296 +527297 +527298 +527299 +527300 +527301 +527302 +527303 +527328 +527329 +527330 +527331 +527332 +527333 +527334 +527335 +527360 +527361 +527362 +527363 +527364 +527365 +527366 +527367 +527392 +527393 +527394 +527395 +527396 +527397 +527398 +527399 +527424 +527425 +527426 +527427 +527428 +527429 +527430 +527431 +527456 +527457 +527458 +527459 +527460 +527461 +527462 +527463 +527488 +527489 +527490 +527491 +527492 +527493 +527494 +527495 +527520 +527521 +527522 +527523 +527524 +527525 +527526 +527527 +527552 +527553 +527554 +527555 +527556 +527557 +527558 +527559 +527584 +527585 +527586 +527587 +527588 +527589 +527590 +527591 +527616 +527617 +527618 +527619 +527620 +527621 +527622 +527623 +527648 +527649 +527650 +527651 +527652 +527653 +527654 +527655 +527680 +527681 +527682 +527683 +527684 +527685 +527686 +527687 +527712 +527713 +527714 +527715 +527716 +527717 +527718 +527719 +527744 +527745 +527746 +527747 +527748 +527749 +527750 +527751 +527776 +527777 +527778 +527779 +527780 +527781 +527782 +527783 +527808 +527809 +527810 +527811 +527812 +527813 +527814 +527815 +527840 +527841 +527842 +527843 +527844 +527845 +527846 +527847 +527872 +527873 +527874 +527875 +527876 +527877 +527878 +527879 +527904 +527905 +527906 +527907 +527908 +527909 +527910 +527911 +527936 +527937 +527938 +527939 +527940 +527941 +527942 +527943 +527968 +527969 +527970 +527971 +527972 +527973 +527974 +527975 +528000 +528001 +528002 +528003 +528004 +528005 +528006 +528007 +528032 +528033 +528034 +528035 +528036 +528037 +528038 +528039 +528064 +528065 +528066 +528067 +528068 +528069 +528070 +528071 +528096 +528097 +528098 +528099 +528100 +528101 +528102 +528103 +528128 +528129 +528130 +528131 +528132 +528133 +528134 +528135 +528160 +528161 +528162 +528163 +528164 +528165 +528166 +528167 +528192 +528193 +528194 +528195 +528196 +528197 +528198 +528199 +528224 +528225 +528226 +528227 +528228 +528229 +528230 +528231 +528256 +528257 +528258 +528259 +528260 +528261 +528262 +528263 +528288 +528289 +528290 +528291 +528292 +528293 +528294 +528295 +528320 +528321 +528322 +528323 +528324 +528325 +528326 +528327 +528352 +528353 +528354 +528355 +528356 +528357 +528358 +528359 +528384 +528385 +528386 +528387 +528388 +528389 +528390 +528391 +528416 +528417 +528418 +528419 +528420 +528421 +528422 +528423 +528448 +528449 +528450 +528451 +528452 +528453 +528454 +528455 +528480 +528481 +528482 +528483 +528484 +528485 +528486 +528487 +528512 +528513 +528514 +528515 +528516 +528517 +528518 +528519 +528544 +528545 +528546 +528547 +528548 +528549 +528550 +528551 +528576 +528577 +528578 +528579 +528580 +528581 +528582 +528583 +528608 +528609 +528610 +528611 +528612 +528613 +528614 +528615 +528640 +528641 +528642 +528643 +528644 +528645 +528646 +528647 +528672 +528673 +528674 +528675 +528676 +528677 +528678 +528679 +528704 +528705 +528706 +528707 +528708 +528709 +528710 +528711 +528736 +528737 +528738 +528739 +528740 +528741 +528742 +528743 +528768 +528769 +528770 +528771 +528772 +528773 +528774 +528775 +528800 +528801 +528802 +528803 +528804 +528805 +528806 +528807 +528832 +528833 +528834 +528835 +528836 +528837 +528838 +528839 +528864 +528865 +528866 +528867 +528868 +528869 +528870 +528871 +528896 +528897 +528898 +528899 +528900 +528901 +528902 +528903 +528928 +528929 +528930 +528931 +528932 +528933 +528934 +528935 +528960 +528961 +528962 +528963 +528964 +528965 +528966 +528967 +528992 +528993 +528994 +528995 +528996 +528997 +528998 +528999 +529024 +529025 +529026 +529027 +529028 +529029 +529030 +529031 +529056 +529057 +529058 +529059 +529060 +529061 +529062 +529063 +529088 +529089 +529090 +529091 +529092 +529093 +529094 +529095 +529120 +529121 +529122 +529123 +529124 +529125 +529126 +529127 +529152 +529153 +529154 +529155 +529156 +529157 +529158 +529159 +529184 +529185 +529186 +529187 +529188 +529189 +529190 +529191 +529216 +529217 +529218 +529219 +529220 +529221 +529222 +529223 +529248 +529249 +529250 +529251 +529252 +529253 +529254 +529255 +529280 +529281 +529282 +529283 +529284 +529285 +529286 +529287 +529312 +529313 +529314 +529315 +529316 +529317 +529318 +529319 +529344 +529345 +529346 +529347 +529348 +529349 +529350 +529351 +529376 +529377 +529378 +529379 +529380 +529381 +529382 +529383 +529408 +529409 +529410 +529411 +529412 +529413 +529414 +529415 +529440 +529441 +529442 +529443 +529444 +529445 +529446 +529447 +529472 +529473 +529474 +529475 +529476 +529477 +529478 +529479 +529504 +529505 +529506 +529507 +529508 +529509 +529510 +529511 +529536 +529537 +529538 +529539 +529540 +529541 +529542 +529543 +529568 +529569 +529570 +529571 +529572 +529573 +529574 +529575 +529600 +529601 +529602 +529603 +529604 +529605 +529606 +529607 +529632 +529633 +529634 +529635 +529636 +529637 +529638 +529639 +529664 +529665 +529666 +529667 +529668 +529669 +529670 +529671 +529696 +529697 +529698 +529699 +529700 +529701 +529702 +529703 +529728 +529729 +529730 +529731 +529732 +529733 +529734 +529735 +529760 +529761 +529762 +529763 +529764 +529765 +529766 +529767 +529792 +529793 +529794 +529795 +529796 +529797 +529798 +529799 +529824 +529825 +529826 +529827 +529828 +529829 +529830 +529831 +529856 +529857 +529858 +529859 +529860 +529861 +529862 +529863 +529888 +529889 +529890 +529891 +529892 +529893 +529894 +529895 +529920 +529921 +529922 +529923 +529924 +529925 +529926 +529927 +529952 +529953 +529954 +529955 +529956 +529957 +529958 +529959 +529984 +529985 +529986 +529987 +529988 +529989 +529990 +529991 +530016 +530017 +530018 +530019 +530020 +530021 +530022 +530023 +530048 +530049 +530050 +530051 +530052 +530053 +530054 +530055 +530080 +530081 +530082 +530083 +530084 +530085 +530086 +530087 +530112 +530113 +530114 +530115 +530116 +530117 +530118 +530119 +530144 +530145 +530146 +530147 +530148 +530149 +530150 +530151 +530176 +530177 +530178 +530179 +530180 +530181 +530182 +530183 +530208 +530209 +530210 +530211 +530212 +530213 +530214 +530215 +530240 +530241 +530242 +530243 +530244 +530245 +530246 +530247 +530272 +530273 +530274 +530275 +530276 +530277 +530278 +530279 +530304 +530305 +530306 +530307 +530308 +530309 +530310 +530311 +530336 +530337 +530338 +530339 +530340 +530341 +530342 +530343 +530368 +530369 +530370 +530371 +530372 +530373 +530374 +530375 +530400 +530401 +530402 +530403 +530404 +530405 +530406 +530407 +530432 +530433 +530434 +530435 +530436 +530437 +530438 +530439 +530464 +530465 +530466 +530467 +530468 +530469 +530470 +530471 +530496 +530497 +530498 +530499 +530500 +530501 +530502 +530503 +530528 +530529 +530530 +530531 +530532 +530533 +530534 +530535 +530560 +530561 +530562 +530563 +530564 +530565 +530566 +530567 +530592 +530593 +530594 +530595 +530596 +530597 +530598 +530599 +530624 +530625 +530626 +530627 +530628 +530629 +530630 +530631 +530656 +530657 +530658 +530659 +530660 +530661 +530662 +530663 +530688 +530689 +530690 +530691 +530692 +530693 +530694 +530695 +530720 +530721 +530722 +530723 +530724 +530725 +530726 +530727 +530752 +530753 +530754 +530755 +530756 +530757 +530758 +530759 +530784 +530785 +530786 +530787 +530788 +530789 +530790 +530791 +530816 +530817 +530818 +530819 +530820 +530821 +530822 +530823 +530848 +530849 +530850 +530851 +530852 +530853 +530854 +530855 +530880 +530881 +530882 +530883 +530884 +530885 +530886 +530887 +530912 +530913 +530914 +530915 +530916 +530917 +530918 +530919 +530944 +530945 +530946 +530947 +530948 +530949 +530950 +530951 +530976 +530977 +530978 +530979 +530980 +530981 +530982 +530983 +531008 +531009 +531010 +531011 +531012 +531013 +531014 +531015 +531040 +531041 +531042 +531043 +531044 +531045 +531046 +531047 +531072 +531073 +531074 +531075 +531076 +531077 +531078 +531079 +531104 +531105 +531106 +531107 +531108 +531109 +531110 +531111 +531136 +531137 +531138 +531139 +531140 +531141 +531142 +531143 +531168 +531169 +531170 +531171 +531172 +531173 +531174 +531175 +531200 +531201 +531202 +531203 +531204 +531205 +531206 +531207 +531232 +531233 +531234 +531235 +531236 +531237 +531238 +531239 +531264 +531265 +531266 +531267 +531268 +531269 +531270 +531271 +531296 +531297 +531298 +531299 +531300 +531301 +531302 +531303 +531328 +531329 +531330 +531331 +531332 +531333 +531334 +531335 +531360 +531361 +531362 +531363 +531364 +531365 +531366 +531367 +531392 +531393 +531394 +531395 +531396 +531397 +531398 +531399 +531424 +531425 +531426 +531427 +531428 +531429 +531430 +531431 +531456 +531457 +531458 +531459 +531460 +531461 +531462 +531463 +531488 +531489 +531490 +531491 +531492 +531493 +531494 +531495 +531520 +531521 +531522 +531523 +531524 +531525 +531526 +531527 +531552 +531553 +531554 +531555 +531556 +531557 +531558 +531559 +531584 +531585 +531586 +531587 +531588 +531589 +531590 +531591 +531616 +531617 +531618 +531619 +531620 +531621 +531622 +531623 +531648 +531649 +531650 +531651 +531652 +531653 +531654 +531655 +531680 +531681 +531682 +531683 +531684 +531685 +531686 +531687 +531712 +531713 +531714 +531715 +531716 +531717 +531718 +531719 +531744 +531745 +531746 +531747 +531748 +531749 +531750 +531751 +531776 +531777 +531778 +531779 +531780 +531781 +531782 +531783 +531808 +531809 +531810 +531811 +531812 +531813 +531814 +531815 +531840 +531841 +531842 +531843 +531844 +531845 +531846 +531847 +531872 +531873 +531874 +531875 +531876 +531877 +531878 +531879 +531904 +531905 +531906 +531907 +531908 +531909 +531910 +531911 +531936 +531937 +531938 +531939 +531940 +531941 +531942 +531943 +531968 +531969 +531970 +531971 +531972 +531973 +531974 +531975 +532000 +532001 +532002 +532003 +532004 +532005 +532006 +532007 +532032 +532033 +532034 +532035 +532036 +532037 +532038 +532039 +532064 +532065 +532066 +532067 +532068 +532069 +532070 +532071 +532096 +532097 +532098 +532099 +532100 +532101 +532102 +532103 +532128 +532129 +532130 +532131 +532132 +532133 +532134 +532135 +532160 +532161 +532162 +532163 +532164 +532165 +532166 +532167 +532192 +532193 +532194 +532195 +532196 +532197 +532198 +532199 +532224 +532225 +532226 +532227 +532228 +532229 +532230 +532231 +532256 +532257 +532258 +532259 +532260 +532261 +532262 +532263 +532288 +532289 +532290 +532291 +532292 +532293 +532294 +532295 +532320 +532321 +532322 +532323 +532324 +532325 +532326 +532327 +532352 +532353 +532354 +532355 +532356 +532357 +532358 +532359 +532384 +532385 +532386 +532387 +532388 +532389 +532390 +532391 +532416 +532417 +532418 +532419 +532420 +532421 +532422 +532423 +532448 +532449 +532450 +532451 +532452 +532453 +532454 +532455 +532480 +532481 +532482 +532483 +532484 +532485 +532486 +532487 +532512 +532513 +532514 +532515 +532516 +532517 +532518 +532519 +532544 +532545 +532546 +532547 +532548 +532549 +532550 +532551 +532576 +532577 +532578 +532579 +532580 +532581 +532582 +532583 +532608 +532609 +532610 +532611 +532612 +532613 +532614 +532615 +532640 +532641 +532642 +532643 +532644 +532645 +532646 +532647 +532672 +532673 +532674 +532675 +532676 +532677 +532678 +532679 +532704 +532705 +532706 +532707 +532708 +532709 +532710 +532711 +532736 +532737 +532738 +532739 +532740 +532741 +532742 +532743 +532768 +532769 +532770 +532771 +532772 +532773 +532774 +532775 +532800 +532801 +532802 +532803 +532804 +532805 +532806 +532807 +532832 +532833 +532834 +532835 +532836 +532837 +532838 +532839 +532864 +532865 +532866 +532867 +532868 +532869 +532870 +532871 +532896 +532897 +532898 +532899 +532900 +532901 +532902 +532903 +532928 +532929 +532930 +532931 +532932 +532933 +532934 +532935 +532960 +532961 +532962 +532963 +532964 +532965 +532966 +532967 +532992 +532993 +532994 +532995 +532996 +532997 +532998 +532999 +533024 +533025 +533026 +533027 +533028 +533029 +533030 +533031 +533056 +533057 +533058 +533059 +533060 +533061 +533062 +533063 +533088 +533089 +533090 +533091 +533092 +533093 +533094 +533095 +533120 +533121 +533122 +533123 +533124 +533125 +533126 +533127 +533152 +533153 +533154 +533155 +533156 +533157 +533158 +533159 +533184 +533185 +533186 +533187 +533188 +533189 +533190 +533191 +533216 +533217 +533218 +533219 +533220 +533221 +533222 +533223 +533248 +533249 +533250 +533251 +533252 +533253 +533254 +533255 +533280 +533281 +533282 +533283 +533284 +533285 +533286 +533287 +533312 +533313 +533314 +533315 +533316 +533317 +533318 +533319 +533344 +533345 +533346 +533347 +533348 +533349 +533350 +533351 +533376 +533377 +533378 +533379 +533380 +533381 +533382 +533383 +533408 +533409 +533410 +533411 +533412 +533413 +533414 +533415 +533440 +533441 +533442 +533443 +533444 +533445 +533446 +533447 +533472 +533473 +533474 +533475 +533476 +533477 +533478 +533479 +533504 +533505 +533506 +533507 +533508 +533509 +533510 +533511 +533536 +533537 +533538 +533539 +533540 +533541 +533542 +533543 +533568 +533569 +533570 +533571 +533572 +533573 +533574 +533575 +533600 +533601 +533602 +533603 +533604 +533605 +533606 +533607 +533632 +533633 +533634 +533635 +533636 +533637 +533638 +533639 +533664 +533665 +533666 +533667 +533668 +533669 +533670 +533671 +533696 +533697 +533698 +533699 +533700 +533701 +533702 +533703 +533728 +533729 +533730 +533731 +533732 +533733 +533734 +533735 +533760 +533761 +533762 +533763 +533764 +533765 +533766 +533767 +533792 +533793 +533794 +533795 +533796 +533797 +533798 +533799 +533824 +533825 +533826 +533827 +533828 +533829 +533830 +533831 +533856 +533857 +533858 +533859 +533860 +533861 +533862 +533863 +533888 +533889 +533890 +533891 +533892 +533893 +533894 +533895 +533920 +533921 +533922 +533923 +533924 +533925 +533926 +533927 +533952 +533953 +533954 +533955 +533956 +533957 +533958 +533959 +533984 +533985 +533986 +533987 +533988 +533989 +533990 +533991 +534016 +534017 +534018 +534019 +534020 +534021 +534022 +534023 +534048 +534049 +534050 +534051 +534052 +534053 +534054 +534055 +534080 +534081 +534082 +534083 +534084 +534085 +534086 +534087 +534112 +534113 +534114 +534115 +534116 +534117 +534118 +534119 +534144 +534145 +534146 +534147 +534148 +534149 +534150 +534151 +534176 +534177 +534178 +534179 +534180 +534181 +534182 +534183 +534208 +534209 +534210 +534211 +534212 +534213 +534214 +534215 +534240 +534241 +534242 +534243 +534244 +534245 +534246 +534247 +534272 +534273 +534274 +534275 +534276 +534277 +534278 +534279 +534304 +534305 +534306 +534307 +534308 +534309 +534310 +534311 +534336 +534337 +534338 +534339 +534340 +534341 +534342 +534343 +534368 +534369 +534370 +534371 +534372 +534373 +534374 +534375 +534400 +534401 +534402 +534403 +534404 +534405 +534406 +534407 +534432 +534433 +534434 +534435 +534436 +534437 +534438 +534439 +534464 +534465 +534466 +534467 +534468 +534469 +534470 +534471 +534496 +534497 +534498 +534499 +534500 +534501 +534502 +534503 +534528 +534529 +534530 +534531 +534532 +534533 +534534 +534535 +534560 +534561 +534562 +534563 +534564 +534565 +534566 +534567 +534592 +534593 +534594 +534595 +534596 +534597 +534598 +534599 +534624 +534625 +534626 +534627 +534628 +534629 +534630 +534631 +534656 +534657 +534658 +534659 +534660 +534661 +534662 +534663 +534688 +534689 +534690 +534691 +534692 +534693 +534694 +534695 +534720 +534721 +534722 +534723 +534724 +534725 +534726 +534727 +534752 +534753 +534754 +534755 +534756 +534757 +534758 +534759 +534784 +534785 +534786 +534787 +534788 +534789 +534790 +534791 +534816 +534817 +534818 +534819 +534820 +534821 +534822 +534823 +534848 +534849 +534850 +534851 +534852 +534853 +534854 +534855 +534880 +534881 +534882 +534883 +534884 +534885 +534886 +534887 +534912 +534913 +534914 +534915 +534916 +534917 +534918 +534919 +534944 +534945 +534946 +534947 +534948 +534949 +534950 +534951 +534976 +534977 +534978 +534979 +534980 +534981 +534982 +534983 +535008 +535009 +535010 +535011 +535012 +535013 +535014 +535015 +535040 +535041 +535042 +535043 +535044 +535045 +535046 +535047 +535072 +535073 +535074 +535075 +535076 +535077 +535078 +535079 +535104 +535105 +535106 +535107 +535108 +535109 +535110 +535111 +535136 +535137 +535138 +535139 +535140 +535141 +535142 +535143 +535168 +535169 +535170 +535171 +535172 +535173 +535174 +535175 +535200 +535201 +535202 +535203 +535204 +535205 +535206 +535207 +535232 +535233 +535234 +535235 +535236 +535237 +535238 +535239 +535264 +535265 +535266 +535267 +535268 +535269 +535270 +535271 +535296 +535297 +535298 +535299 +535300 +535301 +535302 +535303 +535328 +535329 +535330 +535331 +535332 +535333 +535334 +535335 +535360 +535361 +535362 +535363 +535364 +535365 +535366 +535367 +535392 +535393 +535394 +535395 +535396 +535397 +535398 +535399 +535424 +535425 +535426 +535427 +535428 +535429 +535430 +535431 +535456 +535457 +535458 +535459 +535460 +535461 +535462 +535463 +535488 +535489 +535490 +535491 +535492 +535493 +535494 +535495 +535520 +535521 +535522 +535523 +535524 +535525 +535526 +535527 +535552 +535553 +535554 +535555 +535556 +535557 +535558 +535559 +535584 +535585 +535586 +535587 +535588 +535589 +535590 +535591 +535616 +535617 +535618 +535619 +535620 +535621 +535622 +535623 +535648 +535649 +535650 +535651 +535652 +535653 +535654 +535655 +535680 +535681 +535682 +535683 +535684 +535685 +535686 +535687 +535712 +535713 +535714 +535715 +535716 +535717 +535718 +535719 +535744 +535745 +535746 +535747 +535748 +535749 +535750 +535751 +535776 +535777 +535778 +535779 +535780 +535781 +535782 +535783 +535808 +535809 +535810 +535811 +535812 +535813 +535814 +535815 +535840 +535841 +535842 +535843 +535844 +535845 +535846 +535847 +535872 +535873 +535874 +535875 +535876 +535877 +535878 +535879 +535904 +535905 +535906 +535907 +535908 +535909 +535910 +535911 +535936 +535937 +535938 +535939 +535940 +535941 +535942 +535943 +535968 +535969 +535970 +535971 +535972 +535973 +535974 +535975 +536000 +536001 +536002 +536003 +536004 +536005 +536006 +536007 +536032 +536033 +536034 +536035 +536036 +536037 +536038 +536039 +536064 +536065 +536066 +536067 +536068 +536069 +536070 +536071 +536096 +536097 +536098 +536099 +536100 +536101 +536102 +536103 +536128 +536129 +536130 +536131 +536132 +536133 +536134 +536135 +536160 +536161 +536162 +536163 +536164 +536165 +536166 +536167 +536192 +536193 +536194 +536195 +536196 +536197 +536198 +536199 +536224 +536225 +536226 +536227 +536228 +536229 +536230 +536231 +536256 +536257 +536258 +536259 +536260 +536261 +536262 +536263 +536288 +536289 +536290 +536291 +536292 +536293 +536294 +536295 +536320 +536321 +536322 +536323 +536324 +536325 +536326 +536327 +536352 +536353 +536354 +536355 +536356 +536357 +536358 +536359 +536384 +536385 +536386 +536387 +536388 +536389 +536390 +536391 +536416 +536417 +536418 +536419 +536420 +536421 +536422 +536423 +536448 +536449 +536450 +536451 +536452 +536453 +536454 +536455 +536480 +536481 +536482 +536483 +536484 +536485 +536486 +536487 +536512 +536513 +536514 +536515 +536516 +536517 +536518 +536519 +536544 +536545 +536546 +536547 +536548 +536549 +536550 +536551 +536576 +536577 +536578 +536579 +536580 +536581 +536582 +536583 +536608 +536609 +536610 +536611 +536612 +536613 +536614 +536615 +536640 +536641 +536642 +536643 +536644 +536645 +536646 +536647 +536672 +536673 +536674 +536675 +536676 +536677 +536678 +536679 +536704 +536705 +536706 +536707 +536708 +536709 +536710 +536711 +536736 +536737 +536738 +536739 +536740 +536741 +536742 +536743 +536768 +536769 +536770 +536771 +536772 +536773 +536774 +536775 +536800 +536801 +536802 +536803 +536804 +536805 +536806 +536807 +536832 +536833 +536834 +536835 +536836 +536837 +536838 +536839 +536864 +536865 +536866 +536867 +536868 +536869 +536870 +536871 +536896 +536897 +536898 +536899 +536900 +536901 +536902 +536903 +536928 +536929 +536930 +536931 +536932 +536933 +536934 +536935 +536960 +536961 +536962 +536963 +536964 +536965 +536966 +536967 +536992 +536993 +536994 +536995 +536996 +536997 +536998 +536999 +537024 +537025 +537026 +537027 +537028 +537029 +537030 +537031 +537056 +537057 +537058 +537059 +537060 +537061 +537062 +537063 +537088 +537089 +537090 +537091 +537092 +537093 +537094 +537095 +537120 +537121 +537122 +537123 +537124 +537125 +537126 +537127 +537152 +537153 +537154 +537155 +537156 +537157 +537158 +537159 +537184 +537185 +537186 +537187 +537188 +537189 +537190 +537191 +537216 +537217 +537218 +537219 +537220 +537221 +537222 +537223 +537248 +537249 +537250 +537251 +537252 +537253 +537254 +537255 +537280 +537281 +537282 +537283 +537284 +537285 +537286 +537287 +537312 +537313 +537314 +537315 +537316 +537317 +537318 +537319 +537344 +537345 +537346 +537347 +537348 +537349 +537350 +537351 +537376 +537377 +537378 +537379 +537380 +537381 +537382 +537383 +537408 +537409 +537410 +537411 +537412 +537413 +537414 +537415 +537440 +537441 +537442 +537443 +537444 +537445 +537446 +537447 +537472 +537473 +537474 +537475 +537476 +537477 +537478 +537479 +537504 +537505 +537506 +537507 +537508 +537509 +537510 +537511 +537536 +537537 +537538 +537539 +537540 +537541 +537542 +537543 +537568 +537569 +537570 +537571 +537572 +537573 +537574 +537575 +537600 +537601 +537602 +537603 +537604 +537605 +537606 +537607 +537632 +537633 +537634 +537635 +537636 +537637 +537638 +537639 +537664 +537665 +537666 +537667 +537668 +537669 +537670 +537671 +537696 +537697 +537698 +537699 +537700 +537701 +537702 +537703 +537728 +537729 +537730 +537731 +537732 +537733 +537734 +537735 +537760 +537761 +537762 +537763 +537764 +537765 +537766 +537767 +537792 +537793 +537794 +537795 +537796 +537797 +537798 +537799 +537824 +537825 +537826 +537827 +537828 +537829 +537830 +537831 +537856 +537857 +537858 +537859 +537860 +537861 +537862 +537863 +537888 +537889 +537890 +537891 +537892 +537893 +537894 +537895 +537920 +537921 +537922 +537923 +537924 +537925 +537926 +537927 +537952 +537953 +537954 +537955 +537956 +537957 +537958 +537959 +537984 +537985 +537986 +537987 +537988 +537989 +537990 +537991 +538016 +538017 +538018 +538019 +538020 +538021 +538022 +538023 +538048 +538049 +538050 +538051 +538052 +538053 +538054 +538055 +538080 +538081 +538082 +538083 +538084 +538085 +538086 +538087 +538112 +538113 +538114 +538115 +538116 +538117 +538118 +538119 +538144 +538145 +538146 +538147 +538148 +538149 +538150 +538151 +538176 +538177 +538178 +538179 +538180 +538181 +538182 +538183 +538208 +538209 +538210 +538211 +538212 +538213 +538214 +538215 +538240 +538241 +538242 +538243 +538244 +538245 +538246 +538247 +538272 +538273 +538274 +538275 +538276 +538277 +538278 +538279 +538304 +538305 +538306 +538307 +538308 +538309 +538310 +538311 +538336 +538337 +538338 +538339 +538340 +538341 +538342 +538343 +538368 +538369 +538370 +538371 +538372 +538373 +538374 +538375 +538400 +538401 +538402 +538403 +538404 +538405 +538406 +538407 +538432 +538433 +538434 +538435 +538436 +538437 +538438 +538439 +538464 +538465 +538466 +538467 +538468 +538469 +538470 +538471 +538496 +538497 +538498 +538499 +538500 +538501 +538502 +538503 +538528 +538529 +538530 +538531 +538532 +538533 +538534 +538535 +538560 +538561 +538562 +538563 +538564 +538565 +538566 +538567 +538592 +538593 +538594 +538595 +538596 +538597 +538598 +538599 +538624 +538625 +538626 +538627 +538628 +538629 +538630 +538631 +538656 +538657 +538658 +538659 +538660 +538661 +538662 +538663 +538688 +538689 +538690 +538691 +538692 +538693 +538694 +538695 +538720 +538721 +538722 +538723 +538724 +538725 +538726 +538727 +538752 +538753 +538754 +538755 +538756 +538757 +538758 +538759 +538784 +538785 +538786 +538787 +538788 +538789 +538790 +538791 +538816 +538817 +538818 +538819 +538820 +538821 +538822 +538823 +538848 +538849 +538850 +538851 +538852 +538853 +538854 +538855 +538880 +538881 +538882 +538883 +538884 +538885 +538886 +538887 +538912 +538913 +538914 +538915 +538916 +538917 +538918 +538919 +538944 +538945 +538946 +538947 +538948 +538949 +538950 +538951 +538976 +538977 +538978 +538979 +538980 +538981 +538982 +538983 +539008 +539009 +539010 +539011 +539012 +539013 +539014 +539015 +539040 +539041 +539042 +539043 +539044 +539045 +539046 +539047 +539072 +539073 +539074 +539075 +539076 +539077 +539078 +539079 +539104 +539105 +539106 +539107 +539108 +539109 +539110 +539111 +539136 +539137 +539138 +539139 +539140 +539141 +539142 +539143 +539168 +539169 +539170 +539171 +539172 +539173 +539174 +539175 +539200 +539201 +539202 +539203 +539204 +539205 +539206 +539207 +539232 +539233 +539234 +539235 +539236 +539237 +539238 +539239 +539264 +539265 +539266 +539267 +539268 +539269 +539270 +539271 +539296 +539297 +539298 +539299 +539300 +539301 +539302 +539303 +539328 +539329 +539330 +539331 +539332 +539333 +539334 +539335 +539360 +539361 +539362 +539363 +539364 +539365 +539366 +539367 +539392 +539393 +539394 +539395 +539396 +539397 +539398 +539399 +539424 +539425 +539426 +539427 +539428 +539429 +539430 +539431 +539456 +539457 +539458 +539459 +539460 +539461 +539462 +539463 +539488 +539489 +539490 +539491 +539492 +539493 +539494 +539495 +539520 +539521 +539522 +539523 +539524 +539525 +539526 +539527 +539552 +539553 +539554 +539555 +539556 +539557 +539558 +539559 +539584 +539585 +539586 +539587 +539588 +539589 +539590 +539591 +539616 +539617 +539618 +539619 +539620 +539621 +539622 +539623 +539648 +539649 +539650 +539651 +539652 +539653 +539654 +539655 +539680 +539681 +539682 +539683 +539684 +539685 +539686 +539687 +539712 +539713 +539714 +539715 +539716 +539717 +539718 +539719 +539744 +539745 +539746 +539747 +539748 +539749 +539750 +539751 +539776 +539777 +539778 +539779 +539780 +539781 +539782 +539783 +539808 +539809 +539810 +539811 +539812 +539813 +539814 +539815 +539840 +539841 +539842 +539843 +539844 +539845 +539846 +539847 +539872 +539873 +539874 +539875 +539876 +539877 +539878 +539879 +539904 +539905 +539906 +539907 +539908 +539909 +539910 +539911 +539936 +539937 +539938 +539939 +539940 +539941 +539942 +539943 +539968 +539969 +539970 +539971 +539972 +539973 +539974 +539975 +540000 +540001 +540002 +540003 +540004 +540005 +540006 +540007 +540032 +540033 +540034 +540035 +540036 +540037 +540038 +540039 +540064 +540065 +540066 +540067 +540068 +540069 +540070 +540071 +540096 +540097 +540098 +540099 +540100 +540101 +540102 +540103 +540128 +540129 +540130 +540131 +540132 +540133 +540134 +540135 +540160 +540161 +540162 +540163 +540164 +540165 +540166 +540167 +540192 +540193 +540194 +540195 +540196 +540197 +540198 +540199 +540224 +540225 +540226 +540227 +540228 +540229 +540230 +540231 +540256 +540257 +540258 +540259 +540260 +540261 +540262 +540263 +540288 +540289 +540290 +540291 +540292 +540293 +540294 +540295 +540320 +540321 +540322 +540323 +540324 +540325 +540326 +540327 +540352 +540353 +540354 +540355 +540356 +540357 +540358 +540359 +540384 +540385 +540386 +540387 +540388 +540389 +540390 +540391 +540416 +540417 +540418 +540419 +540420 +540421 +540422 +540423 +540448 +540449 +540450 +540451 +540452 +540453 +540454 +540455 +540480 +540481 +540482 +540483 +540484 +540485 +540486 +540487 +540512 +540513 +540514 +540515 +540516 +540517 +540518 +540519 +540544 +540545 +540546 +540547 +540548 +540549 +540550 +540551 +540576 +540577 +540578 +540579 +540580 +540581 +540582 +540583 +540608 +540609 +540610 +540611 +540612 +540613 +540614 +540615 +540640 +540641 +540642 +540643 +540644 +540645 +540646 +540647 +540672 +540673 +540674 +540675 +540676 +540677 +540678 +540679 +540704 +540705 +540706 +540707 +540708 +540709 +540710 +540711 +540736 +540737 +540738 +540739 +540740 +540741 +540742 +540743 +540768 +540769 +540770 +540771 +540772 +540773 +540774 +540775 +540800 +540801 +540802 +540803 +540804 +540805 +540806 +540807 +540832 +540833 +540834 +540835 +540836 +540837 +540838 +540839 +540864 +540865 +540866 +540867 +540868 +540869 +540870 +540871 +540896 +540897 +540898 +540899 +540900 +540901 +540902 +540903 +540928 +540929 +540930 +540931 +540932 +540933 +540934 +540935 +540960 +540961 +540962 +540963 +540964 +540965 +540966 +540967 +540992 +540993 +540994 +540995 +540996 +540997 +540998 +540999 +541024 +541025 +541026 +541027 +541028 +541029 +541030 +541031 +541056 +541057 +541058 +541059 +541060 +541061 +541062 +541063 +541088 +541089 +541090 +541091 +541092 +541093 +541094 +541095 +541120 +541121 +541122 +541123 +541124 +541125 +541126 +541127 +541152 +541153 +541154 +541155 +541156 +541157 +541158 +541159 +541184 +541185 +541186 +541187 +541188 +541189 +541190 +541191 +541216 +541217 +541218 +541219 +541220 +541221 +541222 +541223 +541248 +541249 +541250 +541251 +541252 +541253 +541254 +541255 +541280 +541281 +541282 +541283 +541284 +541285 +541286 +541287 +541312 +541313 +541314 +541315 +541316 +541317 +541318 +541319 +541344 +541345 +541346 +541347 +541348 +541349 +541350 +541351 +541376 +541377 +541378 +541379 +541380 +541381 +541382 +541383 +541408 +541409 +541410 +541411 +541412 +541413 +541414 +541415 +541440 +541441 +541442 +541443 +541444 +541445 +541446 +541447 +541472 +541473 +541474 +541475 +541476 +541477 +541478 +541479 +541504 +541505 +541506 +541507 +541508 +541509 +541510 +541511 +541536 +541537 +541538 +541539 +541540 +541541 +541542 +541543 +541568 +541569 +541570 +541571 +541572 +541573 +541574 +541575 +541600 +541601 +541602 +541603 +541604 +541605 +541606 +541607 +541632 +541633 +541634 +541635 +541636 +541637 +541638 +541639 +541664 +541665 +541666 +541667 +541668 +541669 +541670 +541671 +541696 +541697 +541698 +541699 +541700 +541701 +541702 +541703 +541728 +541729 +541730 +541731 +541732 +541733 +541734 +541735 +541760 +541761 +541762 +541763 +541764 +541765 +541766 +541767 +541792 +541793 +541794 +541795 +541796 +541797 +541798 +541799 +541824 +541825 +541826 +541827 +541828 +541829 +541830 +541831 +541856 +541857 +541858 +541859 +541860 +541861 +541862 +541863 +541888 +541889 +541890 +541891 +541892 +541893 +541894 +541895 +541920 +541921 +541922 +541923 +541924 +541925 +541926 +541927 +541952 +541953 +541954 +541955 +541956 +541957 +541958 +541959 +541984 +541985 +541986 +541987 +541988 +541989 +541990 +541991 +542016 +542017 +542018 +542019 +542020 +542021 +542022 +542023 +542048 +542049 +542050 +542051 +542052 +542053 +542054 +542055 +542080 +542081 +542082 +542083 +542084 +542085 +542086 +542087 +542112 +542113 +542114 +542115 +542116 +542117 +542118 +542119 +542144 +542145 +542146 +542147 +542148 +542149 +542150 +542151 +542176 +542177 +542178 +542179 +542180 +542181 +542182 +542183 +542208 +542209 +542210 +542211 +542212 +542213 +542214 +542215 +542240 +542241 +542242 +542243 +542244 +542245 +542246 +542247 +542272 +542273 +542274 +542275 +542276 +542277 +542278 +542279 +542304 +542305 +542306 +542307 +542308 +542309 +542310 +542311 +542336 +542337 +542338 +542339 +542340 +542341 +542342 +542343 +542368 +542369 +542370 +542371 +542372 +542373 +542374 +542375 +542400 +542401 +542402 +542403 +542404 +542405 +542406 +542407 +542432 +542433 +542434 +542435 +542436 +542437 +542438 +542439 +542464 +542465 +542466 +542467 +542468 +542469 +542470 +542471 +542496 +542497 +542498 +542499 +542500 +542501 +542502 +542503 +542528 +542529 +542530 +542531 +542532 +542533 +542534 +542535 +542560 +542561 +542562 +542563 +542564 +542565 +542566 +542567 +542592 +542593 +542594 +542595 +542596 +542597 +542598 +542599 +542624 +542625 +542626 +542627 +542628 +542629 +542630 +542631 +542656 +542657 +542658 +542659 +542660 +542661 +542662 +542663 +542688 +542689 +542690 +542691 +542692 +542693 +542694 +542695 +542720 +542721 +542722 +542723 +542724 +542725 +542726 +542727 +542752 +542753 +542754 +542755 +542756 +542757 +542758 +542759 +542784 +542785 +542786 +542787 +542788 +542789 +542790 +542791 +542816 +542817 +542818 +542819 +542820 +542821 +542822 +542823 +542848 +542849 +542850 +542851 +542852 +542853 +542854 +542855 +542880 +542881 +542882 +542883 +542884 +542885 +542886 +542887 +542912 +542913 +542914 +542915 +542916 +542917 +542918 +542919 +542944 +542945 +542946 +542947 +542948 +542949 +542950 +542951 +542976 +542977 +542978 +542979 +542980 +542981 +542982 +542983 +543008 +543009 +543010 +543011 +543012 +543013 +543014 +543015 +543040 +543041 +543042 +543043 +543044 +543045 +543046 +543047 +543072 +543073 +543074 +543075 +543076 +543077 +543078 +543079 +543104 +543105 +543106 +543107 +543108 +543109 +543110 +543111 +543136 +543137 +543138 +543139 +543140 +543141 +543142 +543143 +543168 +543169 +543170 +543171 +543172 +543173 +543174 +543175 +543200 +543201 +543202 +543203 +543204 +543205 +543206 +543207 +543232 +543233 +543234 +543235 +543236 +543237 +543238 +543239 +543264 +543265 +543266 +543267 +543268 +543269 +543270 +543271 +543296 +543297 +543298 +543299 +543300 +543301 +543302 +543303 +543328 +543329 +543330 +543331 +543332 +543333 +543334 +543335 +543360 +543361 +543362 +543363 +543364 +543365 +543366 +543367 +543392 +543393 +543394 +543395 +543396 +543397 +543398 +543399 +543424 +543425 +543426 +543427 +543428 +543429 +543430 +543431 +543456 +543457 +543458 +543459 +543460 +543461 +543462 +543463 +543488 +543489 +543490 +543491 +543492 +543493 +543494 +543495 +543520 +543521 +543522 +543523 +543524 +543525 +543526 +543527 +543552 +543553 +543554 +543555 +543556 +543557 +543558 +543559 +543584 +543585 +543586 +543587 +543588 +543589 +543590 +543591 +543616 +543617 +543618 +543619 +543620 +543621 +543622 +543623 +543648 +543649 +543650 +543651 +543652 +543653 +543654 +543655 +543680 +543681 +543682 +543683 +543684 +543685 +543686 +543687 +543712 +543713 +543714 +543715 +543716 +543717 +543718 +543719 +543744 +543745 +543746 +543747 +543748 +543749 +543750 +543751 +543776 +543777 +543778 +543779 +543780 +543781 +543782 +543783 +543808 +543809 +543810 +543811 +543812 +543813 +543814 +543815 +543840 +543841 +543842 +543843 +543844 +543845 +543846 +543847 +543872 +543873 +543874 +543875 +543876 +543877 +543878 +543879 +543904 +543905 +543906 +543907 +543908 +543909 +543910 +543911 +543936 +543937 +543938 +543939 +543940 +543941 +543942 +543943 +543968 +543969 +543970 +543971 +543972 +543973 +543974 +543975 +544000 +544001 +544002 +544003 +544004 +544005 +544006 +544007 +544032 +544033 +544034 +544035 +544036 +544037 +544038 +544039 +544064 +544065 +544066 +544067 +544068 +544069 +544070 +544071 +544096 +544097 +544098 +544099 +544100 +544101 +544102 +544103 +544128 +544129 +544130 +544131 +544132 +544133 +544134 +544135 +544160 +544161 +544162 +544163 +544164 +544165 +544166 +544167 +544192 +544193 +544194 +544195 +544196 +544197 +544198 +544199 +544224 +544225 +544226 +544227 +544228 +544229 +544230 +544231 +544256 +544257 +544258 +544259 +544260 +544261 +544262 +544263 +544288 +544289 +544290 +544291 +544292 +544293 +544294 +544295 +544320 +544321 +544322 +544323 +544324 +544325 +544326 +544327 +544352 +544353 +544354 +544355 +544356 +544357 +544358 +544359 +544384 +544385 +544386 +544387 +544388 +544389 +544390 +544391 +544416 +544417 +544418 +544419 +544420 +544421 +544422 +544423 +544448 +544449 +544450 +544451 +544452 +544453 +544454 +544455 +544480 +544481 +544482 +544483 +544484 +544485 +544486 +544487 +544512 +544513 +544514 +544515 +544516 +544517 +544518 +544519 +544544 +544545 +544546 +544547 +544548 +544549 +544550 +544551 +544576 +544577 +544578 +544579 +544580 +544581 +544582 +544583 +544608 +544609 +544610 +544611 +544612 +544613 +544614 +544615 +544640 +544641 +544642 +544643 +544644 +544645 +544646 +544647 +544672 +544673 +544674 +544675 +544676 +544677 +544678 +544679 +544704 +544705 +544706 +544707 +544708 +544709 +544710 +544711 +544736 +544737 +544738 +544739 +544740 +544741 +544742 +544743 +544768 +544769 +544770 +544771 +544772 +544773 +544774 +544775 +544800 +544801 +544802 +544803 +544804 +544805 +544806 +544807 +544832 +544833 +544834 +544835 +544836 +544837 +544838 +544839 +544864 +544865 +544866 +544867 +544868 +544869 +544870 +544871 +544896 +544897 +544898 +544899 +544900 +544901 +544902 +544903 +544928 +544929 +544930 +544931 +544932 +544933 +544934 +544935 +544960 +544961 +544962 +544963 +544964 +544965 +544966 +544967 +544992 +544993 +544994 +544995 +544996 +544997 +544998 +544999 +545024 +545025 +545026 +545027 +545028 +545029 +545030 +545031 +545056 +545057 +545058 +545059 +545060 +545061 +545062 +545063 +545088 +545089 +545090 +545091 +545092 +545093 +545094 +545095 +545120 +545121 +545122 +545123 +545124 +545125 +545126 +545127 +545152 +545153 +545154 +545155 +545156 +545157 +545158 +545159 +545184 +545185 +545186 +545187 +545188 +545189 +545190 +545191 +545216 +545217 +545218 +545219 +545220 +545221 +545222 +545223 +545248 +545249 +545250 +545251 +545252 +545253 +545254 +545255 +545280 +545281 +545282 +545283 +545284 +545285 +545286 +545287 +545312 +545313 +545314 +545315 +545316 +545317 +545318 +545319 +545344 +545345 +545346 +545347 +545348 +545349 +545350 +545351 +545376 +545377 +545378 +545379 +545380 +545381 +545382 +545383 +545408 +545409 +545410 +545411 +545412 +545413 +545414 +545415 +545440 +545441 +545442 +545443 +545444 +545445 +545446 +545447 +545472 +545473 +545474 +545475 +545476 +545477 +545478 +545479 +545504 +545505 +545506 +545507 +545508 +545509 +545510 +545511 +545536 +545537 +545538 +545539 +545540 +545541 +545542 +545543 +545568 +545569 +545570 +545571 +545572 +545573 +545574 +545575 +545600 +545601 +545602 +545603 +545604 +545605 +545606 +545607 +545632 +545633 +545634 +545635 +545636 +545637 +545638 +545639 +545664 +545665 +545666 +545667 +545668 +545669 +545670 +545671 +545696 +545697 +545698 +545699 +545700 +545701 +545702 +545703 +545728 +545729 +545730 +545731 +545732 +545733 +545734 +545735 +545760 +545761 +545762 +545763 +545764 +545765 +545766 +545767 +545792 +545793 +545794 +545795 +545796 +545797 +545798 +545799 +545824 +545825 +545826 +545827 +545828 +545829 +545830 +545831 +545856 +545857 +545858 +545859 +545860 +545861 +545862 +545863 +545888 +545889 +545890 +545891 +545892 +545893 +545894 +545895 +545920 +545921 +545922 +545923 +545924 +545925 +545926 +545927 +545952 +545953 +545954 +545955 +545956 +545957 +545958 +545959 +545984 +545985 +545986 +545987 +545988 +545989 +545990 +545991 +546016 +546017 +546018 +546019 +546020 +546021 +546022 +546023 +546048 +546049 +546050 +546051 +546052 +546053 +546054 +546055 +546080 +546081 +546082 +546083 +546084 +546085 +546086 +546087 +546112 +546113 +546114 +546115 +546116 +546117 +546118 +546119 +546144 +546145 +546146 +546147 +546148 +546149 +546150 +546151 +546176 +546177 +546178 +546179 +546180 +546181 +546182 +546183 +546208 +546209 +546210 +546211 +546212 +546213 +546214 +546215 +546240 +546241 +546242 +546243 +546244 +546245 +546246 +546247 +546272 +546273 +546274 +546275 +546276 +546277 +546278 +546279 +546304 +546305 +546306 +546307 +546308 +546309 +546310 +546311 +546336 +546337 +546338 +546339 +546340 +546341 +546342 +546343 +546368 +546369 +546370 +546371 +546372 +546373 +546374 +546375 +546400 +546401 +546402 +546403 +546404 +546405 +546406 +546407 +546432 +546433 +546434 +546435 +546436 +546437 +546438 +546439 +546464 +546465 +546466 +546467 +546468 +546469 +546470 +546471 +546496 +546497 +546498 +546499 +546500 +546501 +546502 +546503 +546528 +546529 +546530 +546531 +546532 +546533 +546534 +546535 +546560 +546561 +546562 +546563 +546564 +546565 +546566 +546567 +546592 +546593 +546594 +546595 +546596 +546597 +546598 +546599 +546624 +546625 +546626 +546627 +546628 +546629 +546630 +546631 +546656 +546657 +546658 +546659 +546660 +546661 +546662 +546663 +546688 +546689 +546690 +546691 +546692 +546693 +546694 +546695 +546720 +546721 +546722 +546723 +546724 +546725 +546726 +546727 +546752 +546753 +546754 +546755 +546756 +546757 +546758 +546759 +546784 +546785 +546786 +546787 +546788 +546789 +546790 +546791 +546816 +546817 +546818 +546819 +546820 +546821 +546822 +546823 +546848 +546849 +546850 +546851 +546852 +546853 +546854 +546855 +546880 +546881 +546882 +546883 +546884 +546885 +546886 +546887 +546912 +546913 +546914 +546915 +546916 +546917 +546918 +546919 +546944 +546945 +546946 +546947 +546948 +546949 +546950 +546951 +546976 +546977 +546978 +546979 +546980 +546981 +546982 +546983 +547008 +547009 +547010 +547011 +547012 +547013 +547014 +547015 +547040 +547041 +547042 +547043 +547044 +547045 +547046 +547047 +547072 +547073 +547074 +547075 +547076 +547077 +547078 +547079 +547104 +547105 +547106 +547107 +547108 +547109 +547110 +547111 +547136 +547137 +547138 +547139 +547140 +547141 +547142 +547143 +547168 +547169 +547170 +547171 +547172 +547173 +547174 +547175 +547200 +547201 +547202 +547203 +547204 +547205 +547206 +547207 +547232 +547233 +547234 +547235 +547236 +547237 +547238 +547239 +547264 +547265 +547266 +547267 +547268 +547269 +547270 +547271 +547296 +547297 +547298 +547299 +547300 +547301 +547302 +547303 +547328 +547329 +547330 +547331 +547332 +547333 +547334 +547335 +547360 +547361 +547362 +547363 +547364 +547365 +547366 +547367 +547392 +547393 +547394 +547395 +547396 +547397 +547398 +547399 +547424 +547425 +547426 +547427 +547428 +547429 +547430 +547431 +547456 +547457 +547458 +547459 +547460 +547461 +547462 +547463 +547488 +547489 +547490 +547491 +547492 +547493 +547494 +547495 +547520 +547521 +547522 +547523 +547524 +547525 +547526 +547527 +547552 +547553 +547554 +547555 +547556 +547557 +547558 +547559 +547584 +547585 +547586 +547587 +547588 +547589 +547590 +547591 +547616 +547617 +547618 +547619 +547620 +547621 +547622 +547623 +547648 +547649 +547650 +547651 +547652 +547653 +547654 +547655 +547680 +547681 +547682 +547683 +547684 +547685 +547686 +547687 +547712 +547713 +547714 +547715 +547716 +547717 +547718 +547719 +547744 +547745 +547746 +547747 +547748 +547749 +547750 +547751 +547776 +547777 +547778 +547779 +547780 +547781 +547782 +547783 +547808 +547809 +547810 +547811 +547812 +547813 +547814 +547815 +547840 +547841 +547842 +547843 +547844 +547845 +547846 +547847 +547872 +547873 +547874 +547875 +547876 +547877 +547878 +547879 +547904 +547905 +547906 +547907 +547908 +547909 +547910 +547911 +547936 +547937 +547938 +547939 +547940 +547941 +547942 +547943 +547968 +547969 +547970 +547971 +547972 +547973 +547974 +547975 +548000 +548001 +548002 +548003 +548004 +548005 +548006 +548007 +548032 +548033 +548034 +548035 +548036 +548037 +548038 +548039 +548064 +548065 +548066 +548067 +548068 +548069 +548070 +548071 +548096 +548097 +548098 +548099 +548100 +548101 +548102 +548103 +548128 +548129 +548130 +548131 +548132 +548133 +548134 +548135 +548160 +548161 +548162 +548163 +548164 +548165 +548166 +548167 +548192 +548193 +548194 +548195 +548196 +548197 +548198 +548199 +548224 +548225 +548226 +548227 +548228 +548229 +548230 +548231 +548256 +548257 +548258 +548259 +548260 +548261 +548262 +548263 +548288 +548289 +548290 +548291 +548292 +548293 +548294 +548295 +548320 +548321 +548322 +548323 +548324 +548325 +548326 +548327 +548352 +548353 +548354 +548355 +548356 +548357 +548358 +548359 +548384 +548385 +548386 +548387 +548388 +548389 +548390 +548391 +548416 +548417 +548418 +548419 +548420 +548421 +548422 +548423 +548448 +548449 +548450 +548451 +548452 +548453 +548454 +548455 +548480 +548481 +548482 +548483 +548484 +548485 +548486 +548487 +548512 +548513 +548514 +548515 +548516 +548517 +548518 +548519 +548544 +548545 +548546 +548547 +548548 +548549 +548550 +548551 +548576 +548577 +548578 +548579 +548580 +548581 +548582 +548583 +548608 +548609 +548610 +548611 +548612 +548613 +548614 +548615 +548640 +548641 +548642 +548643 +548644 +548645 +548646 +548647 +548672 +548673 +548674 +548675 +548676 +548677 +548678 +548679 +548704 +548705 +548706 +548707 +548708 +548709 +548710 +548711 +548736 +548737 +548738 +548739 +548740 +548741 +548742 +548743 +548768 +548769 +548770 +548771 +548772 +548773 +548774 +548775 +548800 +548801 +548802 +548803 +548804 +548805 +548806 +548807 +548832 +548833 +548834 +548835 +548836 +548837 +548838 +548839 +548864 +548865 +548866 +548867 +548868 +548869 +548870 +548871 +548896 +548897 +548898 +548899 +548900 +548901 +548902 +548903 +548928 +548929 +548930 +548931 +548932 +548933 +548934 +548935 +548960 +548961 +548962 +548963 +548964 +548965 +548966 +548967 +548992 +548993 +548994 +548995 +548996 +548997 +548998 +548999 +549024 +549025 +549026 +549027 +549028 +549029 +549030 +549031 +549056 +549057 +549058 +549059 +549060 +549061 +549062 +549063 +549088 +549089 +549090 +549091 +549092 +549093 +549094 +549095 +549120 +549121 +549122 +549123 +549124 +549125 +549126 +549127 +549152 +549153 +549154 +549155 +549156 +549157 +549158 +549159 +549184 +549185 +549186 +549187 +549188 +549189 +549190 +549191 +549216 +549217 +549218 +549219 +549220 +549221 +549222 +549223 +549248 +549249 +549250 +549251 +549252 +549253 +549254 +549255 +549280 +549281 +549282 +549283 +549284 +549285 +549286 +549287 +549312 +549313 +549314 +549315 +549316 +549317 +549318 +549319 +549344 +549345 +549346 +549347 +549348 +549349 +549350 +549351 +549376 +549377 +549378 +549379 +549380 +549381 +549382 +549383 +549408 +549409 +549410 +549411 +549412 +549413 +549414 +549415 +549440 +549441 +549442 +549443 +549444 +549445 +549446 +549447 +549472 +549473 +549474 +549475 +549476 +549477 +549478 +549479 +549504 +549505 +549506 +549507 +549508 +549509 +549510 +549511 +549536 +549537 +549538 +549539 +549540 +549541 +549542 +549543 +549568 +549569 +549570 +549571 +549572 +549573 +549574 +549575 +549600 +549601 +549602 +549603 +549604 +549605 +549606 +549607 +549632 +549633 +549634 +549635 +549636 +549637 +549638 +549639 +549664 +549665 +549666 +549667 +549668 +549669 +549670 +549671 +549696 +549697 +549698 +549699 +549700 +549701 +549702 +549703 +549728 +549729 +549730 +549731 +549732 +549733 +549734 +549735 +549760 +549761 +549762 +549763 +549764 +549765 +549766 +549767 +549792 +549793 +549794 +549795 +549796 +549797 +549798 +549799 +549824 +549825 +549826 +549827 +549828 +549829 +549830 +549831 +549856 +549857 +549858 +549859 +549860 +549861 +549862 +549863 +549888 +549889 +549890 +549891 +549892 +549893 +549894 +549895 +549920 +549921 +549922 +549923 +549924 +549925 +549926 +549927 +549952 +549953 +549954 +549955 +549956 +549957 +549958 +549959 +549984 +549985 +549986 +549987 +549988 +549989 +549990 +549991 +550016 +550017 +550018 +550019 +550020 +550021 +550022 +550023 +550048 +550049 +550050 +550051 +550052 +550053 +550054 +550055 +550080 +550081 +550082 +550083 +550084 +550085 +550086 +550087 +550112 +550113 +550114 +550115 +550116 +550117 +550118 +550119 +550144 +550145 +550146 +550147 +550148 +550149 +550150 +550151 +550176 +550177 +550178 +550179 +550180 +550181 +550182 +550183 +550208 +550209 +550210 +550211 +550212 +550213 +550214 +550215 +550240 +550241 +550242 +550243 +550244 +550245 +550246 +550247 +550272 +550273 +550274 +550275 +550276 +550277 +550278 +550279 +550304 +550305 +550306 +550307 +550308 +550309 +550310 +550311 +550336 +550337 +550338 +550339 +550340 +550341 +550342 +550343 +550368 +550369 +550370 +550371 +550372 +550373 +550374 +550375 +550400 +550401 +550402 +550403 +550404 +550405 +550406 +550407 +550432 +550433 +550434 +550435 +550436 +550437 +550438 +550439 +550464 +550465 +550466 +550467 +550468 +550469 +550470 +550471 +550496 +550497 +550498 +550499 +550500 +550501 +550502 +550503 +550528 +550529 +550530 +550531 +550532 +550533 +550534 +550535 +550560 +550561 +550562 +550563 +550564 +550565 +550566 +550567 +550592 +550593 +550594 +550595 +550596 +550597 +550598 +550599 +550624 +550625 +550626 +550627 +550628 +550629 +550630 +550631 +550656 +550657 +550658 +550659 +550660 +550661 +550662 +550663 +550688 +550689 +550690 +550691 +550692 +550693 +550694 +550695 +550720 +550721 +550722 +550723 +550724 +550725 +550726 +550727 +550752 +550753 +550754 +550755 +550756 +550757 +550758 +550759 +550784 +550785 +550786 +550787 +550788 +550789 +550790 +550791 +550816 +550817 +550818 +550819 +550820 +550821 +550822 +550823 +550848 +550849 +550850 +550851 +550852 +550853 +550854 +550855 +550880 +550881 +550882 +550883 +550884 +550885 +550886 +550887 +550912 +550913 +550914 +550915 +550916 +550917 +550918 +550919 +550944 +550945 +550946 +550947 +550948 +550949 +550950 +550951 +550976 +550977 +550978 +550979 +550980 +550981 +550982 +550983 +551008 +551009 +551010 +551011 +551012 +551013 +551014 +551015 +551040 +551041 +551042 +551043 +551044 +551045 +551046 +551047 +551072 +551073 +551074 +551075 +551076 +551077 +551078 +551079 +551104 +551105 +551106 +551107 +551108 +551109 +551110 +551111 +551136 +551137 +551138 +551139 +551140 +551141 +551142 +551143 +551168 +551169 +551170 +551171 +551172 +551173 +551174 +551175 +551200 +551201 +551202 +551203 +551204 +551205 +551206 +551207 +551232 +551233 +551234 +551235 +551236 +551237 +551238 +551239 +551264 +551265 +551266 +551267 +551268 +551269 +551270 +551271 +551296 +551297 +551298 +551299 +551300 +551301 +551302 +551303 +551328 +551329 +551330 +551331 +551332 +551333 +551334 +551335 +551360 +551361 +551362 +551363 +551364 +551365 +551366 +551367 +551392 +551393 +551394 +551395 +551396 +551397 +551398 +551399 +551424 +551425 +551426 +551427 +551428 +551429 +551430 +551431 +551456 +551457 +551458 +551459 +551460 +551461 +551462 +551463 +551488 +551489 +551490 +551491 +551492 +551493 +551494 +551495 +551520 +551521 +551522 +551523 +551524 +551525 +551526 +551527 +551552 +551553 +551554 +551555 +551556 +551557 +551558 +551559 +551584 +551585 +551586 +551587 +551588 +551589 +551590 +551591 +551616 +551617 +551618 +551619 +551620 +551621 +551622 +551623 +551648 +551649 +551650 +551651 +551652 +551653 +551654 +551655 +551680 +551681 +551682 +551683 +551684 +551685 +551686 +551687 +551712 +551713 +551714 +551715 +551716 +551717 +551718 +551719 +551744 +551745 +551746 +551747 +551748 +551749 +551750 +551751 +551776 +551777 +551778 +551779 +551780 +551781 +551782 +551783 +551808 +551809 +551810 +551811 +551812 +551813 +551814 +551815 +551840 +551841 +551842 +551843 +551844 +551845 +551846 +551847 +551872 +551873 +551874 +551875 +551876 +551877 +551878 +551879 +551904 +551905 +551906 +551907 +551908 +551909 +551910 +551911 +551936 +551937 +551938 +551939 +551940 +551941 +551942 +551943 +551968 +551969 +551970 +551971 +551972 +551973 +551974 +551975 +552000 +552001 +552002 +552003 +552004 +552005 +552006 +552007 +552032 +552033 +552034 +552035 +552036 +552037 +552038 +552039 +552064 +552065 +552066 +552067 +552068 +552069 +552070 +552071 +552096 +552097 +552098 +552099 +552100 +552101 +552102 +552103 +552128 +552129 +552130 +552131 +552132 +552133 +552134 +552135 +552160 +552161 +552162 +552163 +552164 +552165 +552166 +552167 +552192 +552193 +552194 +552195 +552196 +552197 +552198 +552199 +552224 +552225 +552226 +552227 +552228 +552229 +552230 +552231 +552256 +552257 +552258 +552259 +552260 +552261 +552262 +552263 +552288 +552289 +552290 +552291 +552292 +552293 +552294 +552295 +552320 +552321 +552322 +552323 +552324 +552325 +552326 +552327 +552352 +552353 +552354 +552355 +552356 +552357 +552358 +552359 +552384 +552385 +552386 +552387 +552388 +552389 +552390 +552391 +552416 +552417 +552418 +552419 +552420 +552421 +552422 +552423 +552448 +552449 +552450 +552451 +552452 +552453 +552454 +552455 +552480 +552481 +552482 +552483 +552484 +552485 +552486 +552487 +552512 +552513 +552514 +552515 +552516 +552517 +552518 +552519 +552544 +552545 +552546 +552547 +552548 +552549 +552550 +552551 +552576 +552577 +552578 +552579 +552580 +552581 +552582 +552583 +552608 +552609 +552610 +552611 +552612 +552613 +552614 +552615 +552640 +552641 +552642 +552643 +552644 +552645 +552646 +552647 +552672 +552673 +552674 +552675 +552676 +552677 +552678 +552679 +552704 +552705 +552706 +552707 +552708 +552709 +552710 +552711 +552736 +552737 +552738 +552739 +552740 +552741 +552742 +552743 +552768 +552769 +552770 +552771 +552772 +552773 +552774 +552775 +552800 +552801 +552802 +552803 +552804 +552805 +552806 +552807 +552832 +552833 +552834 +552835 +552836 +552837 +552838 +552839 +552864 +552865 +552866 +552867 +552868 +552869 +552870 +552871 +552896 +552897 +552898 +552899 +552900 +552901 +552902 +552903 +552928 +552929 +552930 +552931 +552932 +552933 +552934 +552935 +552960 +552961 +552962 +552963 +552964 +552965 +552966 +552967 +552992 +552993 +552994 +552995 +552996 +552997 +552998 +552999 +553024 +553025 +553026 +553027 +553028 +553029 +553030 +553031 +553056 +553057 +553058 +553059 +553060 +553061 +553062 +553063 +553088 +553089 +553090 +553091 +553092 +553093 +553094 +553095 +553120 +553121 +553122 +553123 +553124 +553125 +553126 +553127 +553152 +553153 +553154 +553155 +553156 +553157 +553158 +553159 +553184 +553185 +553186 +553187 +553188 +553189 +553190 +553191 +553216 +553217 +553218 +553219 +553220 +553221 +553222 +553223 +553248 +553249 +553250 +553251 +553252 +553253 +553254 +553255 +553280 +553281 +553282 +553283 +553284 +553285 +553286 +553287 +553312 +553313 +553314 +553315 +553316 +553317 +553318 +553319 +553344 +553345 +553346 +553347 +553348 +553349 +553350 +553351 +553376 +553377 +553378 +553379 +553380 +553381 +553382 +553383 +553408 +553409 +553410 +553411 +553412 +553413 +553414 +553415 +553440 +553441 +553442 +553443 +553444 +553445 +553446 +553447 +553472 +553473 +553474 +553475 +553476 +553477 +553478 +553479 +553504 +553505 +553506 +553507 +553508 +553509 +553510 +553511 +553536 +553537 +553538 +553539 +553540 +553541 +553542 +553543 +553568 +553569 +553570 +553571 +553572 +553573 +553574 +553575 +553600 +553601 +553602 +553603 +553604 +553605 +553606 +553607 +553632 +553633 +553634 +553635 +553636 +553637 +553638 +553639 +553664 +553665 +553666 +553667 +553668 +553669 +553670 +553671 +553696 +553697 +553698 +553699 +553700 +553701 +553702 +553703 +553728 +553729 +553730 +553731 +553732 +553733 +553734 +553735 +553760 +553761 +553762 +553763 +553764 +553765 +553766 +553767 +553792 +553793 +553794 +553795 +553796 +553797 +553798 +553799 +553824 +553825 +553826 +553827 +553828 +553829 +553830 +553831 +553856 +553857 +553858 +553859 +553860 +553861 +553862 +553863 +553888 +553889 +553890 +553891 +553892 +553893 +553894 +553895 +553920 +553921 +553922 +553923 +553924 +553925 +553926 +553927 +553952 +553953 +553954 +553955 +553956 +553957 +553958 +553959 +553984 +553985 +553986 +553987 +553988 +553989 +553990 +553991 +554016 +554017 +554018 +554019 +554020 +554021 +554022 +554023 +554048 +554049 +554050 +554051 +554052 +554053 +554054 +554055 +554080 +554081 +554082 +554083 +554084 +554085 +554086 +554087 +554112 +554113 +554114 +554115 +554116 +554117 +554118 +554119 +554144 +554145 +554146 +554147 +554148 +554149 +554150 +554151 +554176 +554177 +554178 +554179 +554180 +554181 +554182 +554183 +554208 +554209 +554210 +554211 +554212 +554213 +554214 +554215 +554240 +554241 +554242 +554243 +554244 +554245 +554246 +554247 +554272 +554273 +554274 +554275 +554276 +554277 +554278 +554279 +554304 +554305 +554306 +554307 +554308 +554309 +554310 +554311 +554336 +554337 +554338 +554339 +554340 +554341 +554342 +554343 +554368 +554369 +554370 +554371 +554372 +554373 +554374 +554375 +554400 +554401 +554402 +554403 +554404 +554405 +554406 +554407 +554432 +554433 +554434 +554435 +554436 +554437 +554438 +554439 +554464 +554465 +554466 +554467 +554468 +554469 +554470 +554471 +554496 +554497 +554498 +554499 +554500 +554501 +554502 +554503 +554528 +554529 +554530 +554531 +554532 +554533 +554534 +554535 +554560 +554561 +554562 +554563 +554564 +554565 +554566 +554567 +554592 +554593 +554594 +554595 +554596 +554597 +554598 +554599 +554624 +554625 +554626 +554627 +554628 +554629 +554630 +554631 +554656 +554657 +554658 +554659 +554660 +554661 +554662 +554663 +554688 +554689 +554690 +554691 +554692 +554693 +554694 +554695 +554720 +554721 +554722 +554723 +554724 +554725 +554726 +554727 +554752 +554753 +554754 +554755 +554756 +554757 +554758 +554759 +554784 +554785 +554786 +554787 +554788 +554789 +554790 +554791 +554816 +554817 +554818 +554819 +554820 +554821 +554822 +554823 +554848 +554849 +554850 +554851 +554852 +554853 +554854 +554855 +554880 +554881 +554882 +554883 +554884 +554885 +554886 +554887 +554912 +554913 +554914 +554915 +554916 +554917 +554918 +554919 +554944 +554945 +554946 +554947 +554948 +554949 +554950 +554951 +554976 +554977 +554978 +554979 +554980 +554981 +554982 +554983 +555008 +555009 +555010 +555011 +555012 +555013 +555014 +555015 +555040 +555041 +555042 +555043 +555044 +555045 +555046 +555047 +555072 +555073 +555074 +555075 +555076 +555077 +555078 +555079 +555104 +555105 +555106 +555107 +555108 +555109 +555110 +555111 +555136 +555137 +555138 +555139 +555140 +555141 +555142 +555143 +555168 +555169 +555170 +555171 +555172 +555173 +555174 +555175 +555200 +555201 +555202 +555203 +555204 +555205 +555206 +555207 +555232 +555233 +555234 +555235 +555236 +555237 +555238 +555239 +555264 +555265 +555266 +555267 +555268 +555269 +555270 +555271 +555296 +555297 +555298 +555299 +555300 +555301 +555302 +555303 +555328 +555329 +555330 +555331 +555332 +555333 +555334 +555335 +555360 +555361 +555362 +555363 +555364 +555365 +555366 +555367 +555392 +555393 +555394 +555395 +555396 +555397 +555398 +555399 +555424 +555425 +555426 +555427 +555428 +555429 +555430 +555431 +555456 +555457 +555458 +555459 +555460 +555461 +555462 +555463 +555488 +555489 +555490 +555491 +555492 +555493 +555494 +555495 +555520 +555521 +555522 +555523 +555524 +555525 +555526 +555527 +555552 +555553 +555554 +555555 +555556 +555557 +555558 +555559 +555584 +555585 +555586 +555587 +555588 +555589 +555590 +555591 +555616 +555617 +555618 +555619 +555620 +555621 +555622 +555623 +555648 +555649 +555650 +555651 +555652 +555653 +555654 +555655 +555680 +555681 +555682 +555683 +555684 +555685 +555686 +555687 +555712 +555713 +555714 +555715 +555716 +555717 +555718 +555719 +555744 +555745 +555746 +555747 +555748 +555749 +555750 +555751 +555776 +555777 +555778 +555779 +555780 +555781 +555782 +555783 +555808 +555809 +555810 +555811 +555812 +555813 +555814 +555815 +555840 +555841 +555842 +555843 +555844 +555845 +555846 +555847 +555872 +555873 +555874 +555875 +555876 +555877 +555878 +555879 +555904 +555905 +555906 +555907 +555908 +555909 +555910 +555911 +555936 +555937 +555938 +555939 +555940 +555941 +555942 +555943 +555968 +555969 +555970 +555971 +555972 +555973 +555974 +555975 +556000 +556001 +556002 +556003 +556004 +556005 +556006 +556007 +556032 +556033 +556034 +556035 +556036 +556037 +556038 +556039 +556064 +556065 +556066 +556067 +556068 +556069 +556070 +556071 +556096 +556097 +556098 +556099 +556100 +556101 +556102 +556103 +556128 +556129 +556130 +556131 +556132 +556133 +556134 +556135 +556160 +556161 +556162 +556163 +556164 +556165 +556166 +556167 +556192 +556193 +556194 +556195 +556196 +556197 +556198 +556199 +556224 +556225 +556226 +556227 +556228 +556229 +556230 +556231 +556256 +556257 +556258 +556259 +556260 +556261 +556262 +556263 +556288 +556289 +556290 +556291 +556292 +556293 +556294 +556295 +556320 +556321 +556322 +556323 +556324 +556325 +556326 +556327 +556352 +556353 +556354 +556355 +556356 +556357 +556358 +556359 +556384 +556385 +556386 +556387 +556388 +556389 +556390 +556391 +556416 +556417 +556418 +556419 +556420 +556421 +556422 +556423 +556448 +556449 +556450 +556451 +556452 +556453 +556454 +556455 +556480 +556481 +556482 +556483 +556484 +556485 +556486 +556487 +556512 +556513 +556514 +556515 +556516 +556517 +556518 +556519 +556544 +556545 +556546 +556547 +556548 +556549 +556550 +556551 +556576 +556577 +556578 +556579 +556580 +556581 +556582 +556583 +556608 +556609 +556610 +556611 +556612 +556613 +556614 +556615 +556640 +556641 +556642 +556643 +556644 +556645 +556646 +556647 +556672 +556673 +556674 +556675 +556676 +556677 +556678 +556679 +556704 +556705 +556706 +556707 +556708 +556709 +556710 +556711 +556736 +556737 +556738 +556739 +556740 +556741 +556742 +556743 +556768 +556769 +556770 +556771 +556772 +556773 +556774 +556775 +556800 +556801 +556802 +556803 +556804 +556805 +556806 +556807 +556832 +556833 +556834 +556835 +556836 +556837 +556838 +556839 +556864 +556865 +556866 +556867 +556868 +556869 +556870 +556871 +556896 +556897 +556898 +556899 +556900 +556901 +556902 +556903 +556928 +556929 +556930 +556931 +556932 +556933 +556934 +556935 +556960 +556961 +556962 +556963 +556964 +556965 +556966 +556967 +556992 +556993 +556994 +556995 +556996 +556997 +556998 +556999 +557024 +557025 +557026 +557027 +557028 +557029 +557030 +557031 +557056 +557057 +557058 +557059 +557060 +557061 +557062 +557063 +557088 +557089 +557090 +557091 +557092 +557093 +557094 +557095 +557120 +557121 +557122 +557123 +557124 +557125 +557126 +557127 +557152 +557153 +557154 +557155 +557156 +557157 +557158 +557159 +557184 +557185 +557186 +557187 +557188 +557189 +557190 +557191 +557216 +557217 +557218 +557219 +557220 +557221 +557222 +557223 +557248 +557249 +557250 +557251 +557252 +557253 +557254 +557255 +557280 +557281 +557282 +557283 +557284 +557285 +557286 +557287 +557312 +557313 +557314 +557315 +557316 +557317 +557318 +557319 +557344 +557345 +557346 +557347 +557348 +557349 +557350 +557351 +557376 +557377 +557378 +557379 +557380 +557381 +557382 +557383 +557408 +557409 +557410 +557411 +557412 +557413 +557414 +557415 +557440 +557441 +557442 +557443 +557444 +557445 +557446 +557447 +557472 +557473 +557474 +557475 +557476 +557477 +557478 +557479 +557504 +557505 +557506 +557507 +557508 +557509 +557510 +557511 +557536 +557537 +557538 +557539 +557540 +557541 +557542 +557543 +557568 +557569 +557570 +557571 +557572 +557573 +557574 +557575 +557600 +557601 +557602 +557603 +557604 +557605 +557606 +557607 +557632 +557633 +557634 +557635 +557636 +557637 +557638 +557639 +557664 +557665 +557666 +557667 +557668 +557669 +557670 +557671 +557696 +557697 +557698 +557699 +557700 +557701 +557702 +557703 +557728 +557729 +557730 +557731 +557732 +557733 +557734 +557735 +557760 +557761 +557762 +557763 +557764 +557765 +557766 +557767 +557792 +557793 +557794 +557795 +557796 +557797 +557798 +557799 +557824 +557825 +557826 +557827 +557828 +557829 +557830 +557831 +557856 +557857 +557858 +557859 +557860 +557861 +557862 +557863 +557888 +557889 +557890 +557891 +557892 +557893 +557894 +557895 +557920 +557921 +557922 +557923 +557924 +557925 +557926 +557927 +557952 +557953 +557954 +557955 +557956 +557957 +557958 +557959 +557984 +557985 +557986 +557987 +557988 +557989 +557990 +557991 +558016 +558017 +558018 +558019 +558020 +558021 +558022 +558023 +558048 +558049 +558050 +558051 +558052 +558053 +558054 +558055 +558080 +558081 +558082 +558083 +558084 +558085 +558086 +558087 +558112 +558113 +558114 +558115 +558116 +558117 +558118 +558119 +558144 +558145 +558146 +558147 +558148 +558149 +558150 +558151 +558176 +558177 +558178 +558179 +558180 +558181 +558182 +558183 +558208 +558209 +558210 +558211 +558212 +558213 +558214 +558215 +558240 +558241 +558242 +558243 +558244 +558245 +558246 +558247 +558272 +558273 +558274 +558275 +558276 +558277 +558278 +558279 +558304 +558305 +558306 +558307 +558308 +558309 +558310 +558311 +558336 +558337 +558338 +558339 +558340 +558341 +558342 +558343 +558368 +558369 +558370 +558371 +558372 +558373 +558374 +558375 +558400 +558401 +558402 +558403 +558404 +558405 +558406 +558407 +558432 +558433 +558434 +558435 +558436 +558437 +558438 +558439 +558464 +558465 +558466 +558467 +558468 +558469 +558470 +558471 +558496 +558497 +558498 +558499 +558500 +558501 +558502 +558503 +558528 +558529 +558530 +558531 +558532 +558533 +558534 +558535 +558560 +558561 +558562 +558563 +558564 +558565 +558566 +558567 +558592 +558593 +558594 +558595 +558596 +558597 +558598 +558599 +558624 +558625 +558626 +558627 +558628 +558629 +558630 +558631 +558656 +558657 +558658 +558659 +558660 +558661 +558662 +558663 +558688 +558689 +558690 +558691 +558692 +558693 +558694 +558695 +558720 +558721 +558722 +558723 +558724 +558725 +558726 +558727 +558752 +558753 +558754 +558755 +558756 +558757 +558758 +558759 +558784 +558785 +558786 +558787 +558788 +558789 +558790 +558791 +558816 +558817 +558818 +558819 +558820 +558821 +558822 +558823 +558848 +558849 +558850 +558851 +558852 +558853 +558854 +558855 +558880 +558881 +558882 +558883 +558884 +558885 +558886 +558887 +558912 +558913 +558914 +558915 +558916 +558917 +558918 +558919 +558944 +558945 +558946 +558947 +558948 +558949 +558950 +558951 +558976 +558977 +558978 +558979 +558980 +558981 +558982 +558983 +559008 +559009 +559010 +559011 +559012 +559013 +559014 +559015 +559040 +559041 +559042 +559043 +559044 +559045 +559046 +559047 +559072 +559073 +559074 +559075 +559076 +559077 +559078 +559079 +559104 +559105 +559106 +559107 +559108 +559109 +559110 +559111 +559136 +559137 +559138 +559139 +559140 +559141 +559142 +559143 +559168 +559169 +559170 +559171 +559172 +559173 +559174 +559175 +559200 +559201 +559202 +559203 +559204 +559205 +559206 +559207 +559232 +559233 +559234 +559235 +559236 +559237 +559238 +559239 +559264 +559265 +559266 +559267 +559268 +559269 +559270 +559271 +559296 +559297 +559298 +559299 +559300 +559301 +559302 +559303 +559328 +559329 +559330 +559331 +559332 +559333 +559334 +559335 +559360 +559361 +559362 +559363 +559364 +559365 +559366 +559367 +559392 +559393 +559394 +559395 +559396 +559397 +559398 +559399 +559424 +559425 +559426 +559427 +559428 +559429 +559430 +559431 +559456 +559457 +559458 +559459 +559460 +559461 +559462 +559463 +559488 +559489 +559490 +559491 +559492 +559493 +559494 +559495 +559520 +559521 +559522 +559523 +559524 +559525 +559526 +559527 +559552 +559553 +559554 +559555 +559556 +559557 +559558 +559559 +559584 +559585 +559586 +559587 +559588 +559589 +559590 +559591 +559616 +559617 +559618 +559619 +559620 +559621 +559622 +559623 +559648 +559649 +559650 +559651 +559652 +559653 +559654 +559655 +559680 +559681 +559682 +559683 +559684 +559685 +559686 +559687 +559712 +559713 +559714 +559715 +559716 +559717 +559718 +559719 +559744 +559745 +559746 +559747 +559748 +559749 +559750 +559751 +559776 +559777 +559778 +559779 +559780 +559781 +559782 +559783 +559808 +559809 +559810 +559811 +559812 +559813 +559814 +559815 +559840 +559841 +559842 +559843 +559844 +559845 +559846 +559847 +559872 +559873 +559874 +559875 +559876 +559877 +559878 +559879 +559904 +559905 +559906 +559907 +559908 +559909 +559910 +559911 +559936 +559937 +559938 +559939 +559940 +559941 +559942 +559943 +559968 +559969 +559970 +559971 +559972 +559973 +559974 +559975 +560000 +560001 +560002 +560003 +560004 +560005 +560006 +560007 +560032 +560033 +560034 +560035 +560036 +560037 +560038 +560039 +560064 +560065 +560066 +560067 +560068 +560069 +560070 +560071 +560096 +560097 +560098 +560099 +560100 +560101 +560102 +560103 +560128 +560129 +560130 +560131 +560132 +560133 +560134 +560135 +560160 +560161 +560162 +560163 +560164 +560165 +560166 +560167 +560192 +560193 +560194 +560195 +560196 +560197 +560198 +560199 +560224 +560225 +560226 +560227 +560228 +560229 +560230 +560231 +560256 +560257 +560258 +560259 +560260 +560261 +560262 +560263 +560288 +560289 +560290 +560291 +560292 +560293 +560294 +560295 +560320 +560321 +560322 +560323 +560324 +560325 +560326 +560327 +560352 +560353 +560354 +560355 +560356 +560357 +560358 +560359 +560384 +560385 +560386 +560387 +560388 +560389 +560390 +560391 +560416 +560417 +560418 +560419 +560420 +560421 +560422 +560423 +560448 +560449 +560450 +560451 +560452 +560453 +560454 +560455 +560480 +560481 +560482 +560483 +560484 +560485 +560486 +560487 +560512 +560513 +560514 +560515 +560516 +560517 +560518 +560519 +560544 +560545 +560546 +560547 +560548 +560549 +560550 +560551 +560576 +560577 +560578 +560579 +560580 +560581 +560582 +560583 +560608 +560609 +560610 +560611 +560612 +560613 +560614 +560615 +560640 +560641 +560642 +560643 +560644 +560645 +560646 +560647 +560672 +560673 +560674 +560675 +560676 +560677 +560678 +560679 +560704 +560705 +560706 +560707 +560708 +560709 +560710 +560711 +560736 +560737 +560738 +560739 +560740 +560741 +560742 +560743 +560768 +560769 +560770 +560771 +560772 +560773 +560774 +560775 +560800 +560801 +560802 +560803 +560804 +560805 +560806 +560807 +560832 +560833 +560834 +560835 +560836 +560837 +560838 +560839 +560864 +560865 +560866 +560867 +560868 +560869 +560870 +560871 +560896 +560897 +560898 +560899 +560900 +560901 +560902 +560903 +560928 +560929 +560930 +560931 +560932 +560933 +560934 +560935 +560960 +560961 +560962 +560963 +560964 +560965 +560966 +560967 +560992 +560993 +560994 +560995 +560996 +560997 +560998 +560999 +561024 +561025 +561026 +561027 +561028 +561029 +561030 +561031 +561056 +561057 +561058 +561059 +561060 +561061 +561062 +561063 +561088 +561089 +561090 +561091 +561092 +561093 +561094 +561095 +561120 +561121 +561122 +561123 +561124 +561125 +561126 +561127 +561152 +561153 +561154 +561155 +561156 +561157 +561158 +561159 +561184 +561185 +561186 +561187 +561188 +561189 +561190 +561191 +561216 +561217 +561218 +561219 +561220 +561221 +561222 +561223 +561248 +561249 +561250 +561251 +561252 +561253 +561254 +561255 +561280 +561281 +561282 +561283 +561284 +561285 +561286 +561287 +561312 +561313 +561314 +561315 +561316 +561317 +561318 +561319 +561344 +561345 +561346 +561347 +561348 +561349 +561350 +561351 +561376 +561377 +561378 +561379 +561380 +561381 +561382 +561383 +561408 +561409 +561410 +561411 +561412 +561413 +561414 +561415 +561440 +561441 +561442 +561443 +561444 +561445 +561446 +561447 +561472 +561473 +561474 +561475 +561476 +561477 +561478 +561479 +561504 +561505 +561506 +561507 +561508 +561509 +561510 +561511 +561536 +561537 +561538 +561539 +561540 +561541 +561542 +561543 +561568 +561569 +561570 +561571 +561572 +561573 +561574 +561575 +561600 +561601 +561602 +561603 +561604 +561605 +561606 +561607 +561632 +561633 +561634 +561635 +561636 +561637 +561638 +561639 +561664 +561665 +561666 +561667 +561668 +561669 +561670 +561671 +561696 +561697 +561698 +561699 +561700 +561701 +561702 +561703 +561728 +561729 +561730 +561731 +561732 +561733 +561734 +561735 +561760 +561761 +561762 +561763 +561764 +561765 +561766 +561767 +561792 +561793 +561794 +561795 +561796 +561797 +561798 +561799 +561824 +561825 +561826 +561827 +561828 +561829 +561830 +561831 +561856 +561857 +561858 +561859 +561860 +561861 +561862 +561863 +561888 +561889 +561890 +561891 +561892 +561893 +561894 +561895 +561920 +561921 +561922 +561923 +561924 +561925 +561926 +561927 +561952 +561953 +561954 +561955 +561956 +561957 +561958 +561959 +561984 +561985 +561986 +561987 +561988 +561989 +561990 +561991 +562016 +562017 +562018 +562019 +562020 +562021 +562022 +562023 +562048 +562049 +562050 +562051 +562052 +562053 +562054 +562055 +562080 +562081 +562082 +562083 +562084 +562085 +562086 +562087 +562112 +562113 +562114 +562115 +562116 +562117 +562118 +562119 +562144 +562145 +562146 +562147 +562148 +562149 +562150 +562151 +562176 +562177 +562178 +562179 +562180 +562181 +562182 +562183 +562208 +562209 +562210 +562211 +562212 +562213 +562214 +562215 +562240 +562241 +562242 +562243 +562244 +562245 +562246 +562247 +562272 +562273 +562274 +562275 +562276 +562277 +562278 +562279 +562304 +562305 +562306 +562307 +562308 +562309 +562310 +562311 +562336 +562337 +562338 +562339 +562340 +562341 +562342 +562343 +562368 +562369 +562370 +562371 +562372 +562373 +562374 +562375 +562400 +562401 +562402 +562403 +562404 +562405 +562406 +562407 +562432 +562433 +562434 +562435 +562436 +562437 +562438 +562439 +562464 +562465 +562466 +562467 +562468 +562469 +562470 +562471 +562496 +562497 +562498 +562499 +562500 +562501 +562502 +562503 +562528 +562529 +562530 +562531 +562532 +562533 +562534 +562535 +562560 +562561 +562562 +562563 +562564 +562565 +562566 +562567 +562592 +562593 +562594 +562595 +562596 +562597 +562598 +562599 +562624 +562625 +562626 +562627 +562628 +562629 +562630 +562631 +562656 +562657 +562658 +562659 +562660 +562661 +562662 +562663 +562688 +562689 +562690 +562691 +562692 +562693 +562694 +562695 +562720 +562721 +562722 +562723 +562724 +562725 +562726 +562727 +562752 +562753 +562754 +562755 +562756 +562757 +562758 +562759 +562784 +562785 +562786 +562787 +562788 +562789 +562790 +562791 +562816 +562817 +562818 +562819 +562820 +562821 +562822 +562823 +562848 +562849 +562850 +562851 +562852 +562853 +562854 +562855 +562880 +562881 +562882 +562883 +562884 +562885 +562886 +562887 +562912 +562913 +562914 +562915 +562916 +562917 +562918 +562919 +562944 +562945 +562946 +562947 +562948 +562949 +562950 +562951 +562976 +562977 +562978 +562979 +562980 +562981 +562982 +562983 +563008 +563009 +563010 +563011 +563012 +563013 +563014 +563015 +563040 +563041 +563042 +563043 +563044 +563045 +563046 +563047 +563072 +563073 +563074 +563075 +563076 +563077 +563078 +563079 +563104 +563105 +563106 +563107 +563108 +563109 +563110 +563111 +563136 +563137 +563138 +563139 +563140 +563141 +563142 +563143 +563168 +563169 +563170 +563171 +563172 +563173 +563174 +563175 +563200 +563201 +563202 +563203 +563204 +563205 +563206 +563207 +563232 +563233 +563234 +563235 +563236 +563237 +563238 +563239 +563264 +563265 +563266 +563267 +563268 +563269 +563270 +563271 +563296 +563297 +563298 +563299 +563300 +563301 +563302 +563303 +563328 +563329 +563330 +563331 +563332 +563333 +563334 +563335 +563360 +563361 +563362 +563363 +563364 +563365 +563366 +563367 +563392 +563393 +563394 +563395 +563396 +563397 +563398 +563399 +563424 +563425 +563426 +563427 +563428 +563429 +563430 +563431 +563456 +563457 +563458 +563459 +563460 +563461 +563462 +563463 +563488 +563489 +563490 +563491 +563492 +563493 +563494 +563495 +563520 +563521 +563522 +563523 +563524 +563525 +563526 +563527 +563552 +563553 +563554 +563555 +563556 +563557 +563558 +563559 +563584 +563585 +563586 +563587 +563588 +563589 +563590 +563591 +563616 +563617 +563618 +563619 +563620 +563621 +563622 +563623 +563648 +563649 +563650 +563651 +563652 +563653 +563654 +563655 +563680 +563681 +563682 +563683 +563684 +563685 +563686 +563687 +563712 +563713 +563714 +563715 +563716 +563717 +563718 +563719 +563744 +563745 +563746 +563747 +563748 +563749 +563750 +563751 +563776 +563777 +563778 +563779 +563780 +563781 +563782 +563783 +563808 +563809 +563810 +563811 +563812 +563813 +563814 +563815 +563840 +563841 +563842 +563843 +563844 +563845 +563846 +563847 +563872 +563873 +563874 +563875 +563876 +563877 +563878 +563879 +563904 +563905 +563906 +563907 +563908 +563909 +563910 +563911 +563936 +563937 +563938 +563939 +563940 +563941 +563942 +563943 +563968 +563969 +563970 +563971 +563972 +563973 +563974 +563975 +564000 +564001 +564002 +564003 +564004 +564005 +564006 +564007 +564032 +564033 +564034 +564035 +564036 +564037 +564038 +564039 +564064 +564065 +564066 +564067 +564068 +564069 +564070 +564071 +564096 +564097 +564098 +564099 +564100 +564101 +564102 +564103 +564128 +564129 +564130 +564131 +564132 +564133 +564134 +564135 +564160 +564161 +564162 +564163 +564164 +564165 +564166 +564167 +564192 +564193 +564194 +564195 +564196 +564197 +564198 +564199 +564224 +564225 +564226 +564227 +564228 +564229 +564230 +564231 +564256 +564257 +564258 +564259 +564260 +564261 +564262 +564263 +564288 +564289 +564290 +564291 +564292 +564293 +564294 +564295 +564320 +564321 +564322 +564323 +564324 +564325 +564326 +564327 +564352 +564353 +564354 +564355 +564356 +564357 +564358 +564359 +564384 +564385 +564386 +564387 +564388 +564389 +564390 +564391 +564416 +564417 +564418 +564419 +564420 +564421 +564422 +564423 +564448 +564449 +564450 +564451 +564452 +564453 +564454 +564455 +564480 +564481 +564482 +564483 +564484 +564485 +564486 +564487 +564512 +564513 +564514 +564515 +564516 +564517 +564518 +564519 +564544 +564545 +564546 +564547 +564548 +564549 +564550 +564551 +564576 +564577 +564578 +564579 +564580 +564581 +564582 +564583 +564608 +564609 +564610 +564611 +564612 +564613 +564614 +564615 +564640 +564641 +564642 +564643 +564644 +564645 +564646 +564647 +564672 +564673 +564674 +564675 +564676 +564677 +564678 +564679 +564704 +564705 +564706 +564707 +564708 +564709 +564710 +564711 +564736 +564737 +564738 +564739 +564740 +564741 +564742 +564743 +564768 +564769 +564770 +564771 +564772 +564773 +564774 +564775 +564800 +564801 +564802 +564803 +564804 +564805 +564806 +564807 +564832 +564833 +564834 +564835 +564836 +564837 +564838 +564839 +564864 +564865 +564866 +564867 +564868 +564869 +564870 +564871 +564896 +564897 +564898 +564899 +564900 +564901 +564902 +564903 +564928 +564929 +564930 +564931 +564932 +564933 +564934 +564935 +564960 +564961 +564962 +564963 +564964 +564965 +564966 +564967 +564992 +564993 +564994 +564995 +564996 +564997 +564998 +564999 +565024 +565025 +565026 +565027 +565028 +565029 +565030 +565031 +565056 +565057 +565058 +565059 +565060 +565061 +565062 +565063 +565088 +565089 +565090 +565091 +565092 +565093 +565094 +565095 +565120 +565121 +565122 +565123 +565124 +565125 +565126 +565127 +565152 +565153 +565154 +565155 +565156 +565157 +565158 +565159 +565184 +565185 +565186 +565187 +565188 +565189 +565190 +565191 +565216 +565217 +565218 +565219 +565220 +565221 +565222 +565223 +565248 +565249 +565250 +565251 +565252 +565253 +565254 +565255 +565280 +565281 +565282 +565283 +565284 +565285 +565286 +565287 +565312 +565313 +565314 +565315 +565316 +565317 +565318 +565319 +565344 +565345 +565346 +565347 +565348 +565349 +565350 +565351 +565376 +565377 +565378 +565379 +565380 +565381 +565382 +565383 +565408 +565409 +565410 +565411 +565412 +565413 +565414 +565415 +565440 +565441 +565442 +565443 +565444 +565445 +565446 +565447 +565472 +565473 +565474 +565475 +565476 +565477 +565478 +565479 +565504 +565505 +565506 +565507 +565508 +565509 +565510 +565511 +565536 +565537 +565538 +565539 +565540 +565541 +565542 +565543 +565568 +565569 +565570 +565571 +565572 +565573 +565574 +565575 +565600 +565601 +565602 +565603 +565604 +565605 +565606 +565607 +565632 +565633 +565634 +565635 +565636 +565637 +565638 +565639 +565664 +565665 +565666 +565667 +565668 +565669 +565670 +565671 +565696 +565697 +565698 +565699 +565700 +565701 +565702 +565703 +565728 +565729 +565730 +565731 +565732 +565733 +565734 +565735 +565760 +565761 +565762 +565763 +565764 +565765 +565766 +565767 +565792 +565793 +565794 +565795 +565796 +565797 +565798 +565799 +565824 +565825 +565826 +565827 +565828 +565829 +565830 +565831 +565856 +565857 +565858 +565859 +565860 +565861 +565862 +565863 +565888 +565889 +565890 +565891 +565892 +565893 +565894 +565895 +565920 +565921 +565922 +565923 +565924 +565925 +565926 +565927 +565952 +565953 +565954 +565955 +565956 +565957 +565958 +565959 +565984 +565985 +565986 +565987 +565988 +565989 +565990 +565991 +566016 +566017 +566018 +566019 +566020 +566021 +566022 +566023 +566048 +566049 +566050 +566051 +566052 +566053 +566054 +566055 +566080 +566081 +566082 +566083 +566084 +566085 +566086 +566087 +566112 +566113 +566114 +566115 +566116 +566117 +566118 +566119 +566144 +566145 +566146 +566147 +566148 +566149 +566150 +566151 +566176 +566177 +566178 +566179 +566180 +566181 +566182 +566183 +566208 +566209 +566210 +566211 +566212 +566213 +566214 +566215 +566240 +566241 +566242 +566243 +566244 +566245 +566246 +566247 +566272 +566273 +566274 +566275 +566276 +566277 +566278 +566279 +566304 +566305 +566306 +566307 +566308 +566309 +566310 +566311 +566336 +566337 +566338 +566339 +566340 +566341 +566342 +566343 +566368 +566369 +566370 +566371 +566372 +566373 +566374 +566375 +566400 +566401 +566402 +566403 +566404 +566405 +566406 +566407 +566432 +566433 +566434 +566435 +566436 +566437 +566438 +566439 +566464 +566465 +566466 +566467 +566468 +566469 +566470 +566471 +566496 +566497 +566498 +566499 +566500 +566501 +566502 +566503 +566528 +566529 +566530 +566531 +566532 +566533 +566534 +566535 +566560 +566561 +566562 +566563 +566564 +566565 +566566 +566567 +566592 +566593 +566594 +566595 +566596 +566597 +566598 +566599 +566624 +566625 +566626 +566627 +566628 +566629 +566630 +566631 +566656 +566657 +566658 +566659 +566660 +566661 +566662 +566663 +566688 +566689 +566690 +566691 +566692 +566693 +566694 +566695 +566720 +566721 +566722 +566723 +566724 +566725 +566726 +566727 +566752 +566753 +566754 +566755 +566756 +566757 +566758 +566759 +566784 +566785 +566786 +566787 +566788 +566789 +566790 +566791 +566816 +566817 +566818 +566819 +566820 +566821 +566822 +566823 +566848 +566849 +566850 +566851 +566852 +566853 +566854 +566855 +566880 +566881 +566882 +566883 +566884 +566885 +566886 +566887 +566912 +566913 +566914 +566915 +566916 +566917 +566918 +566919 +566944 +566945 +566946 +566947 +566948 +566949 +566950 +566951 +566976 +566977 +566978 +566979 +566980 +566981 +566982 +566983 +567008 +567009 +567010 +567011 +567012 +567013 +567014 +567015 +567040 +567041 +567042 +567043 +567044 +567045 +567046 +567047 +567072 +567073 +567074 +567075 +567076 +567077 +567078 +567079 +567104 +567105 +567106 +567107 +567108 +567109 +567110 +567111 +567136 +567137 +567138 +567139 +567140 +567141 +567142 +567143 +567168 +567169 +567170 +567171 +567172 +567173 +567174 +567175 +567200 +567201 +567202 +567203 +567204 +567205 +567206 +567207 +567232 +567233 +567234 +567235 +567236 +567237 +567238 +567239 +567264 +567265 +567266 +567267 +567268 +567269 +567270 +567271 +567296 +567297 +567298 +567299 +567300 +567301 +567302 +567303 +567328 +567329 +567330 +567331 +567332 +567333 +567334 +567335 +567360 +567361 +567362 +567363 +567364 +567365 +567366 +567367 +567392 +567393 +567394 +567395 +567396 +567397 +567398 +567399 +567424 +567425 +567426 +567427 +567428 +567429 +567430 +567431 +567456 +567457 +567458 +567459 +567460 +567461 +567462 +567463 +567488 +567489 +567490 +567491 +567492 +567493 +567494 +567495 +567520 +567521 +567522 +567523 +567524 +567525 +567526 +567527 +567552 +567553 +567554 +567555 +567556 +567557 +567558 +567559 +567584 +567585 +567586 +567587 +567588 +567589 +567590 +567591 +567616 +567617 +567618 +567619 +567620 +567621 +567622 +567623 +567648 +567649 +567650 +567651 +567652 +567653 +567654 +567655 +567680 +567681 +567682 +567683 +567684 +567685 +567686 +567687 +567712 +567713 +567714 +567715 +567716 +567717 +567718 +567719 +567744 +567745 +567746 +567747 +567748 +567749 +567750 +567751 +567776 +567777 +567778 +567779 +567780 +567781 +567782 +567783 +567808 +567809 +567810 +567811 +567812 +567813 +567814 +567815 +567840 +567841 +567842 +567843 +567844 +567845 +567846 +567847 +567872 +567873 +567874 +567875 +567876 +567877 +567878 +567879 +567904 +567905 +567906 +567907 +567908 +567909 +567910 +567911 +567936 +567937 +567938 +567939 +567940 +567941 +567942 +567943 +567968 +567969 +567970 +567971 +567972 +567973 +567974 +567975 +568000 +568001 +568002 +568003 +568004 +568005 +568006 +568007 +568032 +568033 +568034 +568035 +568036 +568037 +568038 +568039 +568064 +568065 +568066 +568067 +568068 +568069 +568070 +568071 +568096 +568097 +568098 +568099 +568100 +568101 +568102 +568103 +568128 +568129 +568130 +568131 +568132 +568133 +568134 +568135 +568160 +568161 +568162 +568163 +568164 +568165 +568166 +568167 +568192 +568193 +568194 +568195 +568196 +568197 +568198 +568199 +568224 +568225 +568226 +568227 +568228 +568229 +568230 +568231 +568256 +568257 +568258 +568259 +568260 +568261 +568262 +568263 +568288 +568289 +568290 +568291 +568292 +568293 +568294 +568295 +568320 +568321 +568322 +568323 +568324 +568325 +568326 +568327 +568352 +568353 +568354 +568355 +568356 +568357 +568358 +568359 +568384 +568385 +568386 +568387 +568388 +568389 +568390 +568391 +568416 +568417 +568418 +568419 +568420 +568421 +568422 +568423 +568448 +568449 +568450 +568451 +568452 +568453 +568454 +568455 +568480 +568481 +568482 +568483 +568484 +568485 +568486 +568487 +568512 +568513 +568514 +568515 +568516 +568517 +568518 +568519 +568544 +568545 +568546 +568547 +568548 +568549 +568550 +568551 +568576 +568577 +568578 +568579 +568580 +568581 +568582 +568583 +568608 +568609 +568610 +568611 +568612 +568613 +568614 +568615 +568640 +568641 +568642 +568643 +568644 +568645 +568646 +568647 +568672 +568673 +568674 +568675 +568676 +568677 +568678 +568679 +568704 +568705 +568706 +568707 +568708 +568709 +568710 +568711 +568736 +568737 +568738 +568739 +568740 +568741 +568742 +568743 +568768 +568769 +568770 +568771 +568772 +568773 +568774 +568775 +568800 +568801 +568802 +568803 +568804 +568805 +568806 +568807 +568832 +568833 +568834 +568835 +568836 +568837 +568838 +568839 +568864 +568865 +568866 +568867 +568868 +568869 +568870 +568871 +568896 +568897 +568898 +568899 +568900 +568901 +568902 +568903 +568928 +568929 +568930 +568931 +568932 +568933 +568934 +568935 +568960 +568961 +568962 +568963 +568964 +568965 +568966 +568967 +568992 +568993 +568994 +568995 +568996 +568997 +568998 +568999 +569024 +569025 +569026 +569027 +569028 +569029 +569030 +569031 +569056 +569057 +569058 +569059 +569060 +569061 +569062 +569063 +569088 +569089 +569090 +569091 +569092 +569093 +569094 +569095 +569120 +569121 +569122 +569123 +569124 +569125 +569126 +569127 +569152 +569153 +569154 +569155 +569156 +569157 +569158 +569159 +569184 +569185 +569186 +569187 +569188 +569189 +569190 +569191 +569216 +569217 +569218 +569219 +569220 +569221 +569222 +569223 +569248 +569249 +569250 +569251 +569252 +569253 +569254 +569255 +569280 +569281 +569282 +569283 +569284 +569285 +569286 +569287 +569312 +569313 +569314 +569315 +569316 +569317 +569318 +569319 +569344 +569345 +569346 +569347 +569348 +569349 +569350 +569351 +569376 +569377 +569378 +569379 +569380 +569381 +569382 +569383 +569408 +569409 +569410 +569411 +569412 +569413 +569414 +569415 +569440 +569441 +569442 +569443 +569444 +569445 +569446 +569447 +569472 +569473 +569474 +569475 +569476 +569477 +569478 +569479 +569504 +569505 +569506 +569507 +569508 +569509 +569510 +569511 +569536 +569537 +569538 +569539 +569540 +569541 +569542 +569543 +569568 +569569 +569570 +569571 +569572 +569573 +569574 +569575 +569600 +569601 +569602 +569603 +569604 +569605 +569606 +569607 +569632 +569633 +569634 +569635 +569636 +569637 +569638 +569639 +569664 +569665 +569666 +569667 +569668 +569669 +569670 +569671 +569696 +569697 +569698 +569699 +569700 +569701 +569702 +569703 +569728 +569729 +569730 +569731 +569732 +569733 +569734 +569735 +569760 +569761 +569762 +569763 +569764 +569765 +569766 +569767 +569792 +569793 +569794 +569795 +569796 +569797 +569798 +569799 +569824 +569825 +569826 +569827 +569828 +569829 +569830 +569831 +569856 +569857 +569858 +569859 +569860 +569861 +569862 +569863 +569888 +569889 +569890 +569891 +569892 +569893 +569894 +569895 +569920 +569921 +569922 +569923 +569924 +569925 +569926 +569927 +569952 +569953 +569954 +569955 +569956 +569957 +569958 +569959 +569984 +569985 +569986 +569987 +569988 +569989 +569990 +569991 +570016 +570017 +570018 +570019 +570020 +570021 +570022 +570023 +570048 +570049 +570050 +570051 +570052 +570053 +570054 +570055 +570080 +570081 +570082 +570083 +570084 +570085 +570086 +570087 +570112 +570113 +570114 +570115 +570116 +570117 +570118 +570119 +570144 +570145 +570146 +570147 +570148 +570149 +570150 +570151 +570176 +570177 +570178 +570179 +570180 +570181 +570182 +570183 +570208 +570209 +570210 +570211 +570212 +570213 +570214 +570215 +570240 +570241 +570242 +570243 +570244 +570245 +570246 +570247 +570272 +570273 +570274 +570275 +570276 +570277 +570278 +570279 +570304 +570305 +570306 +570307 +570308 +570309 +570310 +570311 +570336 +570337 +570338 +570339 +570340 +570341 +570342 +570343 +570368 +570369 +570370 +570371 +570372 +570373 +570374 +570375 +570400 +570401 +570402 +570403 +570404 +570405 +570406 +570407 +570432 +570433 +570434 +570435 +570436 +570437 +570438 +570439 +570464 +570465 +570466 +570467 +570468 +570469 +570470 +570471 +570496 +570497 +570498 +570499 +570500 +570501 +570502 +570503 +570528 +570529 +570530 +570531 +570532 +570533 +570534 +570535 +570560 +570561 +570562 +570563 +570564 +570565 +570566 +570567 +570592 +570593 +570594 +570595 +570596 +570597 +570598 +570599 +570624 +570625 +570626 +570627 +570628 +570629 +570630 +570631 +570656 +570657 +570658 +570659 +570660 +570661 +570662 +570663 +570688 +570689 +570690 +570691 +570692 +570693 +570694 +570695 +570720 +570721 +570722 +570723 +570724 +570725 +570726 +570727 +570752 +570753 +570754 +570755 +570756 +570757 +570758 +570759 +570784 +570785 +570786 +570787 +570788 +570789 +570790 +570791 +570816 +570817 +570818 +570819 +570820 +570821 +570822 +570823 +570848 +570849 +570850 +570851 +570852 +570853 +570854 +570855 +570880 +570881 +570882 +570883 +570884 +570885 +570886 +570887 +570912 +570913 +570914 +570915 +570916 +570917 +570918 +570919 +570944 +570945 +570946 +570947 +570948 +570949 +570950 +570951 +570976 +570977 +570978 +570979 +570980 +570981 +570982 +570983 +571008 +571009 +571010 +571011 +571012 +571013 +571014 +571015 +571040 +571041 +571042 +571043 +571044 +571045 +571046 +571047 +571072 +571073 +571074 +571075 +571076 +571077 +571078 +571079 +571104 +571105 +571106 +571107 +571108 +571109 +571110 +571111 +571136 +571137 +571138 +571139 +571140 +571141 +571142 +571143 +571168 +571169 +571170 +571171 +571172 +571173 +571174 +571175 +571200 +571201 +571202 +571203 +571204 +571205 +571206 +571207 +571232 +571233 +571234 +571235 +571236 +571237 +571238 +571239 +571264 +571265 +571266 +571267 +571268 +571269 +571270 +571271 +571296 +571297 +571298 +571299 +571300 +571301 +571302 +571303 +571328 +571329 +571330 +571331 +571332 +571333 +571334 +571335 +571360 +571361 +571362 +571363 +571364 +571365 +571366 +571367 +571392 +571393 +571394 +571395 +571396 +571397 +571398 +571399 +571424 +571425 +571426 +571427 +571428 +571429 +571430 +571431 +571456 +571457 +571458 +571459 +571460 +571461 +571462 +571463 +571488 +571489 +571490 +571491 +571492 +571493 +571494 +571495 +571520 +571521 +571522 +571523 +571524 +571525 +571526 +571527 +571552 +571553 +571554 +571555 +571556 +571557 +571558 +571559 +571584 +571585 +571586 +571587 +571588 +571589 +571590 +571591 +571616 +571617 +571618 +571619 +571620 +571621 +571622 +571623 +571648 +571649 +571650 +571651 +571652 +571653 +571654 +571655 +571680 +571681 +571682 +571683 +571684 +571685 +571686 +571687 +571712 +571713 +571714 +571715 +571716 +571717 +571718 +571719 +571744 +571745 +571746 +571747 +571748 +571749 +571750 +571751 +571776 +571777 +571778 +571779 +571780 +571781 +571782 +571783 +571808 +571809 +571810 +571811 +571812 +571813 +571814 +571815 +571840 +571841 +571842 +571843 +571844 +571845 +571846 +571847 +571872 +571873 +571874 +571875 +571876 +571877 +571878 +571879 +571904 +571905 +571906 +571907 +571908 +571909 +571910 +571911 +571936 +571937 +571938 +571939 +571940 +571941 +571942 +571943 +571968 +571969 +571970 +571971 +571972 +571973 +571974 +571975 +572000 +572001 +572002 +572003 +572004 +572005 +572006 +572007 +572032 +572033 +572034 +572035 +572036 +572037 +572038 +572039 +572064 +572065 +572066 +572067 +572068 +572069 +572070 +572071 +572096 +572097 +572098 +572099 +572100 +572101 +572102 +572103 +572128 +572129 +572130 +572131 +572132 +572133 +572134 +572135 +572160 +572161 +572162 +572163 +572164 +572165 +572166 +572167 +572192 +572193 +572194 +572195 +572196 +572197 +572198 +572199 +572224 +572225 +572226 +572227 +572228 +572229 +572230 +572231 +572256 +572257 +572258 +572259 +572260 +572261 +572262 +572263 +572288 +572289 +572290 +572291 +572292 +572293 +572294 +572295 +572320 +572321 +572322 +572323 +572324 +572325 +572326 +572327 +572352 +572353 +572354 +572355 +572356 +572357 +572358 +572359 +572384 +572385 +572386 +572387 +572388 +572389 +572390 +572391 +572416 +572417 +572418 +572419 +572420 +572421 +572422 +572423 +572448 +572449 +572450 +572451 +572452 +572453 +572454 +572455 +572480 +572481 +572482 +572483 +572484 +572485 +572486 +572487 +572512 +572513 +572514 +572515 +572516 +572517 +572518 +572519 +572544 +572545 +572546 +572547 +572548 +572549 +572550 +572551 +572576 +572577 +572578 +572579 +572580 +572581 +572582 +572583 +572608 +572609 +572610 +572611 +572612 +572613 +572614 +572615 +572640 +572641 +572642 +572643 +572644 +572645 +572646 +572647 +572672 +572673 +572674 +572675 +572676 +572677 +572678 +572679 +572704 +572705 +572706 +572707 +572708 +572709 +572710 +572711 +572736 +572737 +572738 +572739 +572740 +572741 +572742 +572743 +572768 +572769 +572770 +572771 +572772 +572773 +572774 +572775 +572800 +572801 +572802 +572803 +572804 +572805 +572806 +572807 +572832 +572833 +572834 +572835 +572836 +572837 +572838 +572839 +572864 +572865 +572866 +572867 +572868 +572869 +572870 +572871 +572896 +572897 +572898 +572899 +572900 +572901 +572902 +572903 +572928 +572929 +572930 +572931 +572932 +572933 +572934 +572935 +572960 +572961 +572962 +572963 +572964 +572965 +572966 +572967 +572992 +572993 +572994 +572995 +572996 +572997 +572998 +572999 +573024 +573025 +573026 +573027 +573028 +573029 +573030 +573031 +573056 +573057 +573058 +573059 +573060 +573061 +573062 +573063 +573088 +573089 +573090 +573091 +573092 +573093 +573094 +573095 +573120 +573121 +573122 +573123 +573124 +573125 +573126 +573127 +573152 +573153 +573154 +573155 +573156 +573157 +573158 +573159 +573184 +573185 +573186 +573187 +573188 +573189 +573190 +573191 +573216 +573217 +573218 +573219 +573220 +573221 +573222 +573223 +573248 +573249 +573250 +573251 +573252 +573253 +573254 +573255 +573280 +573281 +573282 +573283 +573284 +573285 +573286 +573287 +573312 +573313 +573314 +573315 +573316 +573317 +573318 +573319 +573344 +573345 +573346 +573347 +573348 +573349 +573350 +573351 +573376 +573377 +573378 +573379 +573380 +573381 +573382 +573383 +573408 +573409 +573410 +573411 +573412 +573413 +573414 +573415 +573440 +573441 +573442 +573443 +573444 +573445 +573446 +573447 +573472 +573473 +573474 +573475 +573476 +573477 +573478 +573479 +573504 +573505 +573506 +573507 +573508 +573509 +573510 +573511 +573536 +573537 +573538 +573539 +573540 +573541 +573542 +573543 +573568 +573569 +573570 +573571 +573572 +573573 +573574 +573575 +573600 +573601 +573602 +573603 +573604 +573605 +573606 +573607 +573632 +573633 +573634 +573635 +573636 +573637 +573638 +573639 +573664 +573665 +573666 +573667 +573668 +573669 +573670 +573671 +573696 +573697 +573698 +573699 +573700 +573701 +573702 +573703 +573728 +573729 +573730 +573731 +573732 +573733 +573734 +573735 +573760 +573761 +573762 +573763 +573764 +573765 +573766 +573767 +573792 +573793 +573794 +573795 +573796 +573797 +573798 +573799 +573824 +573825 +573826 +573827 +573828 +573829 +573830 +573831 +573856 +573857 +573858 +573859 +573860 +573861 +573862 +573863 +573888 +573889 +573890 +573891 +573892 +573893 +573894 +573895 +573920 +573921 +573922 +573923 +573924 +573925 +573926 +573927 +573952 +573953 +573954 +573955 +573956 +573957 +573958 +573959 +573984 +573985 +573986 +573987 +573988 +573989 +573990 +573991 +574016 +574017 +574018 +574019 +574020 +574021 +574022 +574023 +574048 +574049 +574050 +574051 +574052 +574053 +574054 +574055 +574080 +574081 +574082 +574083 +574084 +574085 +574086 +574087 +574112 +574113 +574114 +574115 +574116 +574117 +574118 +574119 +574144 +574145 +574146 +574147 +574148 +574149 +574150 +574151 +574176 +574177 +574178 +574179 +574180 +574181 +574182 +574183 +574208 +574209 +574210 +574211 +574212 +574213 +574214 +574215 +574240 +574241 +574242 +574243 +574244 +574245 +574246 +574247 +574272 +574273 +574274 +574275 +574276 +574277 +574278 +574279 +574304 +574305 +574306 +574307 +574308 +574309 +574310 +574311 +574336 +574337 +574338 +574339 +574340 +574341 +574342 +574343 +574368 +574369 +574370 +574371 +574372 +574373 +574374 +574375 +574400 +574401 +574402 +574403 +574404 +574405 +574406 +574407 +574432 +574433 +574434 +574435 +574436 +574437 +574438 +574439 +574464 +574465 +574466 +574467 +574468 +574469 +574470 +574471 +574496 +574497 +574498 +574499 +574500 +574501 +574502 +574503 +574528 +574529 +574530 +574531 +574532 +574533 +574534 +574535 +574560 +574561 +574562 +574563 +574564 +574565 +574566 +574567 +574592 +574593 +574594 +574595 +574596 +574597 +574598 +574599 +574624 +574625 +574626 +574627 +574628 +574629 +574630 +574631 +574656 +574657 +574658 +574659 +574660 +574661 +574662 +574663 +574688 +574689 +574690 +574691 +574692 +574693 +574694 +574695 +574720 +574721 +574722 +574723 +574724 +574725 +574726 +574727 +574752 +574753 +574754 +574755 +574756 +574757 +574758 +574759 +574784 +574785 +574786 +574787 +574788 +574789 +574790 +574791 +574816 +574817 +574818 +574819 +574820 +574821 +574822 +574823 +574848 +574849 +574850 +574851 +574852 +574853 +574854 +574855 +574880 +574881 +574882 +574883 +574884 +574885 +574886 +574887 +574912 +574913 +574914 +574915 +574916 +574917 +574918 +574919 +574944 +574945 +574946 +574947 +574948 +574949 +574950 +574951 +574976 +574977 +574978 +574979 +574980 +574981 +574982 +574983 +575008 +575009 +575010 +575011 +575012 +575013 +575014 +575015 +575040 +575041 +575042 +575043 +575044 +575045 +575046 +575047 +575072 +575073 +575074 +575075 +575076 +575077 +575078 +575079 +575104 +575105 +575106 +575107 +575108 +575109 +575110 +575111 +575136 +575137 +575138 +575139 +575140 +575141 +575142 +575143 +575168 +575169 +575170 +575171 +575172 +575173 +575174 +575175 +575200 +575201 +575202 +575203 +575204 +575205 +575206 +575207 +575232 +575233 +575234 +575235 +575236 +575237 +575238 +575239 +575264 +575265 +575266 +575267 +575268 +575269 +575270 +575271 +575296 +575297 +575298 +575299 +575300 +575301 +575302 +575303 +575328 +575329 +575330 +575331 +575332 +575333 +575334 +575335 +575360 +575361 +575362 +575363 +575364 +575365 +575366 +575367 +575392 +575393 +575394 +575395 +575396 +575397 +575398 +575399 +575424 +575425 +575426 +575427 +575428 +575429 +575430 +575431 +575456 +575457 +575458 +575459 +575460 +575461 +575462 +575463 +575488 +575489 +575490 +575491 +575492 +575493 +575494 +575495 +575520 +575521 +575522 +575523 +575524 +575525 +575526 +575527 +575552 +575553 +575554 +575555 +575556 +575557 +575558 +575559 +575584 +575585 +575586 +575587 +575588 +575589 +575590 +575591 +575616 +575617 +575618 +575619 +575620 +575621 +575622 +575623 +575648 +575649 +575650 +575651 +575652 +575653 +575654 +575655 +575680 +575681 +575682 +575683 +575684 +575685 +575686 +575687 +575712 +575713 +575714 +575715 +575716 +575717 +575718 +575719 +575744 +575745 +575746 +575747 +575748 +575749 +575750 +575751 +575776 +575777 +575778 +575779 +575780 +575781 +575782 +575783 +575808 +575809 +575810 +575811 +575812 +575813 +575814 +575815 +575840 +575841 +575842 +575843 +575844 +575845 +575846 +575847 +575872 +575873 +575874 +575875 +575876 +575877 +575878 +575879 +575904 +575905 +575906 +575907 +575908 +575909 +575910 +575911 +575936 +575937 +575938 +575939 +575940 +575941 +575942 +575943 +575968 +575969 +575970 +575971 +575972 +575973 +575974 +575975 +576000 +576001 +576002 +576003 +576004 +576005 +576006 +576007 +576032 +576033 +576034 +576035 +576036 +576037 +576038 +576039 +576064 +576065 +576066 +576067 +576068 +576069 +576070 +576071 +576096 +576097 +576098 +576099 +576100 +576101 +576102 +576103 +576128 +576129 +576130 +576131 +576132 +576133 +576134 +576135 +576160 +576161 +576162 +576163 +576164 +576165 +576166 +576167 +576192 +576193 +576194 +576195 +576196 +576197 +576198 +576199 +576224 +576225 +576226 +576227 +576228 +576229 +576230 +576231 +576256 +576257 +576258 +576259 +576260 +576261 +576262 +576263 +576288 +576289 +576290 +576291 +576292 +576293 +576294 +576295 +576320 +576321 +576322 +576323 +576324 +576325 +576326 +576327 +576352 +576353 +576354 +576355 +576356 +576357 +576358 +576359 +576384 +576385 +576386 +576387 +576388 +576389 +576390 +576391 +576416 +576417 +576418 +576419 +576420 +576421 +576422 +576423 +576448 +576449 +576450 +576451 +576452 +576453 +576454 +576455 +576480 +576481 +576482 +576483 +576484 +576485 +576486 +576487 +576512 +576513 +576514 +576515 +576516 +576517 +576518 +576519 +576544 +576545 +576546 +576547 +576548 +576549 +576550 +576551 +576576 +576577 +576578 +576579 +576580 +576581 +576582 +576583 +576608 +576609 +576610 +576611 +576612 +576613 +576614 +576615 +576640 +576641 +576642 +576643 +576644 +576645 +576646 +576647 +576672 +576673 +576674 +576675 +576676 +576677 +576678 +576679 +576704 +576705 +576706 +576707 +576708 +576709 +576710 +576711 +576736 +576737 +576738 +576739 +576740 +576741 +576742 +576743 +576768 +576769 +576770 +576771 +576772 +576773 +576774 +576775 +576800 +576801 +576802 +576803 +576804 +576805 +576806 +576807 +576832 +576833 +576834 +576835 +576836 +576837 +576838 +576839 +576864 +576865 +576866 +576867 +576868 +576869 +576870 +576871 +576896 +576897 +576898 +576899 +576900 +576901 +576902 +576903 +576928 +576929 +576930 +576931 +576932 +576933 +576934 +576935 +576960 +576961 +576962 +576963 +576964 +576965 +576966 +576967 +576992 +576993 +576994 +576995 +576996 +576997 +576998 +576999 +577024 +577025 +577026 +577027 +577028 +577029 +577030 +577031 +577056 +577057 +577058 +577059 +577060 +577061 +577062 +577063 +577088 +577089 +577090 +577091 +577092 +577093 +577094 +577095 +577120 +577121 +577122 +577123 +577124 +577125 +577126 +577127 +577152 +577153 +577154 +577155 +577156 +577157 +577158 +577159 +577184 +577185 +577186 +577187 +577188 +577189 +577190 +577191 +577216 +577217 +577218 +577219 +577220 +577221 +577222 +577223 +577248 +577249 +577250 +577251 +577252 +577253 +577254 +577255 +577280 +577281 +577282 +577283 +577284 +577285 +577286 +577287 +577312 +577313 +577314 +577315 +577316 +577317 +577318 +577319 +577344 +577345 +577346 +577347 +577348 +577349 +577350 +577351 +577376 +577377 +577378 +577379 +577380 +577381 +577382 +577383 +577408 +577409 +577410 +577411 +577412 +577413 +577414 +577415 +577440 +577441 +577442 +577443 +577444 +577445 +577446 +577447 +577472 +577473 +577474 +577475 +577476 +577477 +577478 +577479 +577504 +577505 +577506 +577507 +577508 +577509 +577510 +577511 +577536 +577537 +577538 +577539 +577540 +577541 +577542 +577543 +577568 +577569 +577570 +577571 +577572 +577573 +577574 +577575 +577600 +577601 +577602 +577603 +577604 +577605 +577606 +577607 +577632 +577633 +577634 +577635 +577636 +577637 +577638 +577639 +577664 +577665 +577666 +577667 +577668 +577669 +577670 +577671 +577696 +577697 +577698 +577699 +577700 +577701 +577702 +577703 +577728 +577729 +577730 +577731 +577732 +577733 +577734 +577735 +577760 +577761 +577762 +577763 +577764 +577765 +577766 +577767 +577792 +577793 +577794 +577795 +577796 +577797 +577798 +577799 +577824 +577825 +577826 +577827 +577828 +577829 +577830 +577831 +577856 +577857 +577858 +577859 +577860 +577861 +577862 +577863 +577888 +577889 +577890 +577891 +577892 +577893 +577894 +577895 +577920 +577921 +577922 +577923 +577924 +577925 +577926 +577927 +577952 +577953 +577954 +577955 +577956 +577957 +577958 +577959 +577984 +577985 +577986 +577987 +577988 +577989 +577990 +577991 +578016 +578017 +578018 +578019 +578020 +578021 +578022 +578023 +578048 +578049 +578050 +578051 +578052 +578053 +578054 +578055 +578080 +578081 +578082 +578083 +578084 +578085 +578086 +578087 +578112 +578113 +578114 +578115 +578116 +578117 +578118 +578119 +578144 +578145 +578146 +578147 +578148 +578149 +578150 +578151 +578176 +578177 +578178 +578179 +578180 +578181 +578182 +578183 +578208 +578209 +578210 +578211 +578212 +578213 +578214 +578215 +578240 +578241 +578242 +578243 +578244 +578245 +578246 +578247 +578272 +578273 +578274 +578275 +578276 +578277 +578278 +578279 +578304 +578305 +578306 +578307 +578308 +578309 +578310 +578311 +578336 +578337 +578338 +578339 +578340 +578341 +578342 +578343 +578368 +578369 +578370 +578371 +578372 +578373 +578374 +578375 +578400 +578401 +578402 +578403 +578404 +578405 +578406 +578407 +578432 +578433 +578434 +578435 +578436 +578437 +578438 +578439 +578464 +578465 +578466 +578467 +578468 +578469 +578470 +578471 +578496 +578497 +578498 +578499 +578500 +578501 +578502 +578503 +578528 +578529 +578530 +578531 +578532 +578533 +578534 +578535 +578560 +578561 +578562 +578563 +578564 +578565 +578566 +578567 +578592 +578593 +578594 +578595 +578596 +578597 +578598 +578599 +578624 +578625 +578626 +578627 +578628 +578629 +578630 +578631 +578656 +578657 +578658 +578659 +578660 +578661 +578662 +578663 +578688 +578689 +578690 +578691 +578692 +578693 +578694 +578695 +578720 +578721 +578722 +578723 +578724 +578725 +578726 +578727 +578752 +578753 +578754 +578755 +578756 +578757 +578758 +578759 +578784 +578785 +578786 +578787 +578788 +578789 +578790 +578791 +578816 +578817 +578818 +578819 +578820 +578821 +578822 +578823 +578848 +578849 +578850 +578851 +578852 +578853 +578854 +578855 +578880 +578881 +578882 +578883 +578884 +578885 +578886 +578887 +578912 +578913 +578914 +578915 +578916 +578917 +578918 +578919 +578944 +578945 +578946 +578947 +578948 +578949 +578950 +578951 +578976 +578977 +578978 +578979 +578980 +578981 +578982 +578983 +579008 +579009 +579010 +579011 +579012 +579013 +579014 +579015 +579040 +579041 +579042 +579043 +579044 +579045 +579046 +579047 +579072 +579073 +579074 +579075 +579076 +579077 +579078 +579079 +579104 +579105 +579106 +579107 +579108 +579109 +579110 +579111 +579136 +579137 +579138 +579139 +579140 +579141 +579142 +579143 +579168 +579169 +579170 +579171 +579172 +579173 +579174 +579175 +579200 +579201 +579202 +579203 +579204 +579205 +579206 +579207 +579232 +579233 +579234 +579235 +579236 +579237 +579238 +579239 +579264 +579265 +579266 +579267 +579268 +579269 +579270 +579271 +579296 +579297 +579298 +579299 +579300 +579301 +579302 +579303 +579328 +579329 +579330 +579331 +579332 +579333 +579334 +579335 +579360 +579361 +579362 +579363 +579364 +579365 +579366 +579367 +579392 +579393 +579394 +579395 +579396 +579397 +579398 +579399 +579424 +579425 +579426 +579427 +579428 +579429 +579430 +579431 +579456 +579457 +579458 +579459 +579460 +579461 +579462 +579463 +579488 +579489 +579490 +579491 +579492 +579493 +579494 +579495 +579520 +579521 +579522 +579523 +579524 +579525 +579526 +579527 +579552 +579553 +579554 +579555 +579556 +579557 +579558 +579559 +579584 +579585 +579586 +579587 +579588 +579589 +579590 +579591 +579616 +579617 +579618 +579619 +579620 +579621 +579622 +579623 +579648 +579649 +579650 +579651 +579652 +579653 +579654 +579655 +579680 +579681 +579682 +579683 +579684 +579685 +579686 +579687 +579712 +579713 +579714 +579715 +579716 +579717 +579718 +579719 +579744 +579745 +579746 +579747 +579748 +579749 +579750 +579751 +579776 +579777 +579778 +579779 +579780 +579781 +579782 +579783 +579808 +579809 +579810 +579811 +579812 +579813 +579814 +579815 +579840 +579841 +579842 +579843 +579844 +579845 +579846 +579847 +579872 +579873 +579874 +579875 +579876 +579877 +579878 +579879 +579904 +579905 +579906 +579907 +579908 +579909 +579910 +579911 +579936 +579937 +579938 +579939 +579940 +579941 +579942 +579943 +579968 +579969 +579970 +579971 +579972 +579973 +579974 +579975 +580000 +580001 +580002 +580003 +580004 +580005 +580006 +580007 +580032 +580033 +580034 +580035 +580036 +580037 +580038 +580039 +580064 +580065 +580066 +580067 +580068 +580069 +580070 +580071 +580096 +580097 +580098 +580099 +580100 +580101 +580102 +580103 +580128 +580129 +580130 +580131 +580132 +580133 +580134 +580135 +580160 +580161 +580162 +580163 +580164 +580165 +580166 +580167 +580192 +580193 +580194 +580195 +580196 +580197 +580198 +580199 +580224 +580225 +580226 +580227 +580228 +580229 +580230 +580231 +580256 +580257 +580258 +580259 +580260 +580261 +580262 +580263 +580288 +580289 +580290 +580291 +580292 +580293 +580294 +580295 +580320 +580321 +580322 +580323 +580324 +580325 +580326 +580327 +580352 +580353 +580354 +580355 +580356 +580357 +580358 +580359 +580384 +580385 +580386 +580387 +580388 +580389 +580390 +580391 +580416 +580417 +580418 +580419 +580420 +580421 +580422 +580423 +580448 +580449 +580450 +580451 +580452 +580453 +580454 +580455 +580480 +580481 +580482 +580483 +580484 +580485 +580486 +580487 +580512 +580513 +580514 +580515 +580516 +580517 +580518 +580519 +580544 +580545 +580546 +580547 +580548 +580549 +580550 +580551 +580576 +580577 +580578 +580579 +580580 +580581 +580582 +580583 +580608 +580609 +580610 +580611 +580612 +580613 +580614 +580615 +580640 +580641 +580642 +580643 +580644 +580645 +580646 +580647 +580672 +580673 +580674 +580675 +580676 +580677 +580678 +580679 +580704 +580705 +580706 +580707 +580708 +580709 +580710 +580711 +580736 +580737 +580738 +580739 +580740 +580741 +580742 +580743 +580768 +580769 +580770 +580771 +580772 +580773 +580774 +580775 +580800 +580801 +580802 +580803 +580804 +580805 +580806 +580807 +580832 +580833 +580834 +580835 +580836 +580837 +580838 +580839 +580864 +580865 +580866 +580867 +580868 +580869 +580870 +580871 +580896 +580897 +580898 +580899 +580900 +580901 +580902 +580903 +580928 +580929 +580930 +580931 +580932 +580933 +580934 +580935 +580960 +580961 +580962 +580963 +580964 +580965 +580966 +580967 +580992 +580993 +580994 +580995 +580996 +580997 +580998 +580999 +581024 +581025 +581026 +581027 +581028 +581029 +581030 +581031 +581056 +581057 +581058 +581059 +581060 +581061 +581062 +581063 +581088 +581089 +581090 +581091 +581092 +581093 +581094 +581095 +581120 +581121 +581122 +581123 +581124 +581125 +581126 +581127 +581152 +581153 +581154 +581155 +581156 +581157 +581158 +581159 +581184 +581185 +581186 +581187 +581188 +581189 +581190 +581191 +581216 +581217 +581218 +581219 +581220 +581221 +581222 +581223 +581248 +581249 +581250 +581251 +581252 +581253 +581254 +581255 +581280 +581281 +581282 +581283 +581284 +581285 +581286 +581287 +581312 +581313 +581314 +581315 +581316 +581317 +581318 +581319 +581344 +581345 +581346 +581347 +581348 +581349 +581350 +581351 +581376 +581377 +581378 +581379 +581380 +581381 +581382 +581383 +581408 +581409 +581410 +581411 +581412 +581413 +581414 +581415 +581440 +581441 +581442 +581443 +581444 +581445 +581446 +581447 +581472 +581473 +581474 +581475 +581476 +581477 +581478 +581479 +581504 +581505 +581506 +581507 +581508 +581509 +581510 +581511 +581536 +581537 +581538 +581539 +581540 +581541 +581542 +581543 +581568 +581569 +581570 +581571 +581572 +581573 +581574 +581575 +581600 +581601 +581602 +581603 +581604 +581605 +581606 +581607 +581632 +581633 +581634 +581635 +581636 +581637 +581638 +581639 +581664 +581665 +581666 +581667 +581668 +581669 +581670 +581671 +581696 +581697 +581698 +581699 +581700 +581701 +581702 +581703 +581728 +581729 +581730 +581731 +581732 +581733 +581734 +581735 +581760 +581761 +581762 +581763 +581764 +581765 +581766 +581767 +581792 +581793 +581794 +581795 +581796 +581797 +581798 +581799 +581824 +581825 +581826 +581827 +581828 +581829 +581830 +581831 +581856 +581857 +581858 +581859 +581860 +581861 +581862 +581863 +581888 +581889 +581890 +581891 +581892 +581893 +581894 +581895 +581920 +581921 +581922 +581923 +581924 +581925 +581926 +581927 +581952 +581953 +581954 +581955 +581956 +581957 +581958 +581959 +581984 +581985 +581986 +581987 +581988 +581989 +581990 +581991 +582016 +582017 +582018 +582019 +582020 +582021 +582022 +582023 +582048 +582049 +582050 +582051 +582052 +582053 +582054 +582055 +582080 +582081 +582082 +582083 +582084 +582085 +582086 +582087 +582112 +582113 +582114 +582115 +582116 +582117 +582118 +582119 +582144 +582145 +582146 +582147 +582148 +582149 +582150 +582151 +582176 +582177 +582178 +582179 +582180 +582181 +582182 +582183 +582208 +582209 +582210 +582211 +582212 +582213 +582214 +582215 +582240 +582241 +582242 +582243 +582244 +582245 +582246 +582247 +582272 +582273 +582274 +582275 +582276 +582277 +582278 +582279 +582304 +582305 +582306 +582307 +582308 +582309 +582310 +582311 +582336 +582337 +582338 +582339 +582340 +582341 +582342 +582343 +582368 +582369 +582370 +582371 +582372 +582373 +582374 +582375 +582400 +582401 +582402 +582403 +582404 +582405 +582406 +582407 +582432 +582433 +582434 +582435 +582436 +582437 +582438 +582439 +582464 +582465 +582466 +582467 +582468 +582469 +582470 +582471 +582496 +582497 +582498 +582499 +582500 +582501 +582502 +582503 +582528 +582529 +582530 +582531 +582532 +582533 +582534 +582535 +582560 +582561 +582562 +582563 +582564 +582565 +582566 +582567 +582592 +582593 +582594 +582595 +582596 +582597 +582598 +582599 +582624 +582625 +582626 +582627 +582628 +582629 +582630 +582631 +582656 +582657 +582658 +582659 +582660 +582661 +582662 +582663 +582688 +582689 +582690 +582691 +582692 +582693 +582694 +582695 +582720 +582721 +582722 +582723 +582724 +582725 +582726 +582727 +582752 +582753 +582754 +582755 +582756 +582757 +582758 +582759 +582784 +582785 +582786 +582787 +582788 +582789 +582790 +582791 +582816 +582817 +582818 +582819 +582820 +582821 +582822 +582823 +582848 +582849 +582850 +582851 +582852 +582853 +582854 +582855 +582880 +582881 +582882 +582883 +582884 +582885 +582886 +582887 +582912 +582913 +582914 +582915 +582916 +582917 +582918 +582919 +582944 +582945 +582946 +582947 +582948 +582949 +582950 +582951 +582976 +582977 +582978 +582979 +582980 +582981 +582982 +582983 +583008 +583009 +583010 +583011 +583012 +583013 +583014 +583015 +583040 +583041 +583042 +583043 +583044 +583045 +583046 +583047 +583072 +583073 +583074 +583075 +583076 +583077 +583078 +583079 +583104 +583105 +583106 +583107 +583108 +583109 +583110 +583111 +583136 +583137 +583138 +583139 +583140 +583141 +583142 +583143 +583168 +583169 +583170 +583171 +583172 +583173 +583174 +583175 +583200 +583201 +583202 +583203 +583204 +583205 +583206 +583207 +583232 +583233 +583234 +583235 +583236 +583237 +583238 +583239 +583264 +583265 +583266 +583267 +583268 +583269 +583270 +583271 +583296 +583297 +583298 +583299 +583300 +583301 +583302 +583303 +583328 +583329 +583330 +583331 +583332 +583333 +583334 +583335 +583360 +583361 +583362 +583363 +583364 +583365 +583366 +583367 +583392 +583393 +583394 +583395 +583396 +583397 +583398 +583399 +583424 +583425 +583426 +583427 +583428 +583429 +583430 +583431 +583456 +583457 +583458 +583459 +583460 +583461 +583462 +583463 +583488 +583489 +583490 +583491 +583492 +583493 +583494 +583495 +583520 +583521 +583522 +583523 +583524 +583525 +583526 +583527 +583552 +583553 +583554 +583555 +583556 +583557 +583558 +583559 +583584 +583585 +583586 +583587 +583588 +583589 +583590 +583591 +583616 +583617 +583618 +583619 +583620 +583621 +583622 +583623 +583648 +583649 +583650 +583651 +583652 +583653 +583654 +583655 +583680 +583681 +583682 +583683 +583684 +583685 +583686 +583687 +583712 +583713 +583714 +583715 +583716 +583717 +583718 +583719 +583744 +583745 +583746 +583747 +583748 +583749 +583750 +583751 +583776 +583777 +583778 +583779 +583780 +583781 +583782 +583783 +583808 +583809 +583810 +583811 +583812 +583813 +583814 +583815 +583840 +583841 +583842 +583843 +583844 +583845 +583846 +583847 +583872 +583873 +583874 +583875 +583876 +583877 +583878 +583879 +583904 +583905 +583906 +583907 +583908 +583909 +583910 +583911 +583936 +583937 +583938 +583939 +583940 +583941 +583942 +583943 +583968 +583969 +583970 +583971 +583972 +583973 +583974 +583975 +584000 +584001 +584002 +584003 +584004 +584005 +584006 +584007 +584032 +584033 +584034 +584035 +584036 +584037 +584038 +584039 +584064 +584065 +584066 +584067 +584068 +584069 +584070 +584071 +584096 +584097 +584098 +584099 +584100 +584101 +584102 +584103 +584128 +584129 +584130 +584131 +584132 +584133 +584134 +584135 +584160 +584161 +584162 +584163 +584164 +584165 +584166 +584167 +584192 +584193 +584194 +584195 +584196 +584197 +584198 +584199 +584224 +584225 +584226 +584227 +584228 +584229 +584230 +584231 +584256 +584257 +584258 +584259 +584260 +584261 +584262 +584263 +584288 +584289 +584290 +584291 +584292 +584293 +584294 +584295 +584320 +584321 +584322 +584323 +584324 +584325 +584326 +584327 +584352 +584353 +584354 +584355 +584356 +584357 +584358 +584359 +584384 +584385 +584386 +584387 +584388 +584389 +584390 +584391 +584416 +584417 +584418 +584419 +584420 +584421 +584422 +584423 +584448 +584449 +584450 +584451 +584452 +584453 +584454 +584455 +584480 +584481 +584482 +584483 +584484 +584485 +584486 +584487 +584512 +584513 +584514 +584515 +584516 +584517 +584518 +584519 +584544 +584545 +584546 +584547 +584548 +584549 +584550 +584551 +584576 +584577 +584578 +584579 +584580 +584581 +584582 +584583 +584608 +584609 +584610 +584611 +584612 +584613 +584614 +584615 +584640 +584641 +584642 +584643 +584644 +584645 +584646 +584647 +584672 +584673 +584674 +584675 +584676 +584677 +584678 +584679 +584704 +584705 +584706 +584707 +584708 +584709 +584710 +584711 +584736 +584737 +584738 +584739 +584740 +584741 +584742 +584743 +584768 +584769 +584770 +584771 +584772 +584773 +584774 +584775 +584800 +584801 +584802 +584803 +584804 +584805 +584806 +584807 +584832 +584833 +584834 +584835 +584836 +584837 +584838 +584839 +584864 +584865 +584866 +584867 +584868 +584869 +584870 +584871 +584896 +584897 +584898 +584899 +584900 +584901 +584902 +584903 +584928 +584929 +584930 +584931 +584932 +584933 +584934 +584935 +584960 +584961 +584962 +584963 +584964 +584965 +584966 +584967 +584992 +584993 +584994 +584995 +584996 +584997 +584998 +584999 +585024 +585025 +585026 +585027 +585028 +585029 +585030 +585031 +585056 +585057 +585058 +585059 +585060 +585061 +585062 +585063 +585088 +585089 +585090 +585091 +585092 +585093 +585094 +585095 +585120 +585121 +585122 +585123 +585124 +585125 +585126 +585127 +585152 +585153 +585154 +585155 +585156 +585157 +585158 +585159 +585184 +585185 +585186 +585187 +585188 +585189 +585190 +585191 +585216 +585217 +585218 +585219 +585220 +585221 +585222 +585223 +585248 +585249 +585250 +585251 +585252 +585253 +585254 +585255 +585280 +585281 +585282 +585283 +585284 +585285 +585286 +585287 +585312 +585313 +585314 +585315 +585316 +585317 +585318 +585319 +585344 +585345 +585346 +585347 +585348 +585349 +585350 +585351 +585376 +585377 +585378 +585379 +585380 +585381 +585382 +585383 +585408 +585409 +585410 +585411 +585412 +585413 +585414 +585415 +585440 +585441 +585442 +585443 +585444 +585445 +585446 +585447 +585472 +585473 +585474 +585475 +585476 +585477 +585478 +585479 +585504 +585505 +585506 +585507 +585508 +585509 +585510 +585511 +585536 +585537 +585538 +585539 +585540 +585541 +585542 +585543 +585568 +585569 +585570 +585571 +585572 +585573 +585574 +585575 +585600 +585601 +585602 +585603 +585604 +585605 +585606 +585607 +585632 +585633 +585634 +585635 +585636 +585637 +585638 +585639 +585664 +585665 +585666 +585667 +585668 +585669 +585670 +585671 +585696 +585697 +585698 +585699 +585700 +585701 +585702 +585703 +585728 +585729 +585730 +585731 +585732 +585733 +585734 +585735 +585760 +585761 +585762 +585763 +585764 +585765 +585766 +585767 +585792 +585793 +585794 +585795 +585796 +585797 +585798 +585799 +585824 +585825 +585826 +585827 +585828 +585829 +585830 +585831 +585856 +585857 +585858 +585859 +585860 +585861 +585862 +585863 +585888 +585889 +585890 +585891 +585892 +585893 +585894 +585895 +585920 +585921 +585922 +585923 +585924 +585925 +585926 +585927 +585952 +585953 +585954 +585955 +585956 +585957 +585958 +585959 +585984 +585985 +585986 +585987 +585988 +585989 +585990 +585991 +586016 +586017 +586018 +586019 +586020 +586021 +586022 +586023 +586048 +586049 +586050 +586051 +586052 +586053 +586054 +586055 +586080 +586081 +586082 +586083 +586084 +586085 +586086 +586087 +586112 +586113 +586114 +586115 +586116 +586117 +586118 +586119 +586144 +586145 +586146 +586147 +586148 +586149 +586150 +586151 +586176 +586177 +586178 +586179 +586180 +586181 +586182 +586183 +586208 +586209 +586210 +586211 +586212 +586213 +586214 +586215 +586240 +586241 +586242 +586243 +586244 +586245 +586246 +586247 +586272 +586273 +586274 +586275 +586276 +586277 +586278 +586279 +586304 +586305 +586306 +586307 +586308 +586309 +586310 +586311 +586336 +586337 +586338 +586339 +586340 +586341 +586342 +586343 +586368 +586369 +586370 +586371 +586372 +586373 +586374 +586375 +586400 +586401 +586402 +586403 +586404 +586405 +586406 +586407 +586432 +586433 +586434 +586435 +586436 +586437 +586438 +586439 +586464 +586465 +586466 +586467 +586468 +586469 +586470 +586471 +586496 +586497 +586498 +586499 +586500 +586501 +586502 +586503 +586528 +586529 +586530 +586531 +586532 +586533 +586534 +586535 +586560 +586561 +586562 +586563 +586564 +586565 +586566 +586567 +586592 +586593 +586594 +586595 +586596 +586597 +586598 +586599 +586624 +586625 +586626 +586627 +586628 +586629 +586630 +586631 +586656 +586657 +586658 +586659 +586660 +586661 +586662 +586663 +586688 +586689 +586690 +586691 +586692 +586693 +586694 +586695 +586720 +586721 +586722 +586723 +586724 +586725 +586726 +586727 +586752 +586753 +586754 +586755 +586756 +586757 +586758 +586759 +586784 +586785 +586786 +586787 +586788 +586789 +586790 +586791 +586816 +586817 +586818 +586819 +586820 +586821 +586822 +586823 +586848 +586849 +586850 +586851 +586852 +586853 +586854 +586855 +586880 +586881 +586882 +586883 +586884 +586885 +586886 +586887 +586912 +586913 +586914 +586915 +586916 +586917 +586918 +586919 +586944 +586945 +586946 +586947 +586948 +586949 +586950 +586951 +586976 +586977 +586978 +586979 +586980 +586981 +586982 +586983 +587008 +587009 +587010 +587011 +587012 +587013 +587014 +587015 +587040 +587041 +587042 +587043 +587044 +587045 +587046 +587047 +587072 +587073 +587074 +587075 +587076 +587077 +587078 +587079 +587104 +587105 +587106 +587107 +587108 +587109 +587110 +587111 +587136 +587137 +587138 +587139 +587140 +587141 +587142 +587143 +587168 +587169 +587170 +587171 +587172 +587173 +587174 +587175 +587200 +587201 +587202 +587203 +587204 +587205 +587206 +587207 +587232 +587233 +587234 +587235 +587236 +587237 +587238 +587239 +587264 +587265 +587266 +587267 +587268 +587269 +587270 +587271 +587296 +587297 +587298 +587299 +587300 +587301 +587302 +587303 +587328 +587329 +587330 +587331 +587332 +587333 +587334 +587335 +587360 +587361 +587362 +587363 +587364 +587365 +587366 +587367 +587392 +587393 +587394 +587395 +587396 +587397 +587398 +587399 +587424 +587425 +587426 +587427 +587428 +587429 +587430 +587431 +587456 +587457 +587458 +587459 +587460 +587461 +587462 +587463 +587488 +587489 +587490 +587491 +587492 +587493 +587494 +587495 +587520 +587521 +587522 +587523 +587524 +587525 +587526 +587527 +587552 +587553 +587554 +587555 +587556 +587557 +587558 +587559 +587584 +587585 +587586 +587587 +587588 +587589 +587590 +587591 +587616 +587617 +587618 +587619 +587620 +587621 +587622 +587623 +587648 +587649 +587650 +587651 +587652 +587653 +587654 +587655 +587680 +587681 +587682 +587683 +587684 +587685 +587686 +587687 +587712 +587713 +587714 +587715 +587716 +587717 +587718 +587719 +587744 +587745 +587746 +587747 +587748 +587749 +587750 +587751 +587776 +587777 +587778 +587779 +587780 +587781 +587782 +587783 +587808 +587809 +587810 +587811 +587812 +587813 +587814 +587815 +587840 +587841 +587842 +587843 +587844 +587845 +587846 +587847 +587872 +587873 +587874 +587875 +587876 +587877 +587878 +587879 +587904 +587905 +587906 +587907 +587908 +587909 +587910 +587911 +587936 +587937 +587938 +587939 +587940 +587941 +587942 +587943 +587968 +587969 +587970 +587971 +587972 +587973 +587974 +587975 +588000 +588001 +588002 +588003 +588004 +588005 +588006 +588007 +588032 +588033 +588034 +588035 +588036 +588037 +588038 +588039 +588064 +588065 +588066 +588067 +588068 +588069 +588070 +588071 +588096 +588097 +588098 +588099 +588100 +588101 +588102 +588103 +588128 +588129 +588130 +588131 +588132 +588133 +588134 +588135 +588160 +588161 +588162 +588163 +588164 +588165 +588166 +588167 +588192 +588193 +588194 +588195 +588196 +588197 +588198 +588199 +588224 +588225 +588226 +588227 +588228 +588229 +588230 +588231 +588256 +588257 +588258 +588259 +588260 +588261 +588262 +588263 +588288 +588289 +588290 +588291 +588292 +588293 +588294 +588295 +588320 +588321 +588322 +588323 +588324 +588325 +588326 +588327 +588352 +588353 +588354 +588355 +588356 +588357 +588358 +588359 +588384 +588385 +588386 +588387 +588388 +588389 +588390 +588391 +588416 +588417 +588418 +588419 +588420 +588421 +588422 +588423 +588448 +588449 +588450 +588451 +588452 +588453 +588454 +588455 +588480 +588481 +588482 +588483 +588484 +588485 +588486 +588487 +588512 +588513 +588514 +588515 +588516 +588517 +588518 +588519 +588544 +588545 +588546 +588547 +588548 +588549 +588550 +588551 +588576 +588577 +588578 +588579 +588580 +588581 +588582 +588583 +588608 +588609 +588610 +588611 +588612 +588613 +588614 +588615 +588640 +588641 +588642 +588643 +588644 +588645 +588646 +588647 +588672 +588673 +588674 +588675 +588676 +588677 +588678 +588679 +588704 +588705 +588706 +588707 +588708 +588709 +588710 +588711 +588736 +588737 +588738 +588739 +588740 +588741 +588742 +588743 +588768 +588769 +588770 +588771 +588772 +588773 +588774 +588775 +588800 +588801 +588802 +588803 +588804 +588805 +588806 +588807 +588832 +588833 +588834 +588835 +588836 +588837 +588838 +588839 +588864 +588865 +588866 +588867 +588868 +588869 +588870 +588871 +588896 +588897 +588898 +588899 +588900 +588901 +588902 +588903 +588928 +588929 +588930 +588931 +588932 +588933 +588934 +588935 +588960 +588961 +588962 +588963 +588964 +588965 +588966 +588967 +588992 +588993 +588994 +588995 +588996 +588997 +588998 +588999 +589024 +589025 +589026 +589027 +589028 +589029 +589030 +589031 +589056 +589057 +589058 +589059 +589060 +589061 +589062 +589063 +589088 +589089 +589090 +589091 +589092 +589093 +589094 +589095 +589120 +589121 +589122 +589123 +589124 +589125 +589126 +589127 +589152 +589153 +589154 +589155 +589156 +589157 +589158 +589159 +589184 +589185 +589186 +589187 +589188 +589189 +589190 +589191 +589216 +589217 +589218 +589219 +589220 +589221 +589222 +589223 +589248 +589249 +589250 +589251 +589252 +589253 +589254 +589255 +589280 +589281 +589282 +589283 +589284 +589285 +589286 +589287 +589312 +589313 +589314 +589315 +589316 +589317 +589318 +589319 +589344 +589345 +589346 +589347 +589348 +589349 +589350 +589351 +589376 +589377 +589378 +589379 +589380 +589381 +589382 +589383 +589408 +589409 +589410 +589411 +589412 +589413 +589414 +589415 +589440 +589441 +589442 +589443 +589444 +589445 +589446 +589447 +589472 +589473 +589474 +589475 +589476 +589477 +589478 +589479 +589504 +589505 +589506 +589507 +589508 +589509 +589510 +589511 +589536 +589537 +589538 +589539 +589540 +589541 +589542 +589543 +589568 +589569 +589570 +589571 +589572 +589573 +589574 +589575 +589600 +589601 +589602 +589603 +589604 +589605 +589606 +589607 +589632 +589633 +589634 +589635 +589636 +589637 +589638 +589639 +589664 +589665 +589666 +589667 +589668 +589669 +589670 +589671 +589696 +589697 +589698 +589699 +589700 +589701 +589702 +589703 +589728 +589729 +589730 +589731 +589732 +589733 +589734 +589735 +589760 +589761 +589762 +589763 +589764 +589765 +589766 +589767 +589792 +589793 +589794 +589795 +589796 +589797 +589798 +589799 +589824 +589825 +589826 +589827 +589828 +589829 +589830 +589831 +589856 +589857 +589858 +589859 +589860 +589861 +589862 +589863 +589888 +589889 +589890 +589891 +589892 +589893 +589894 +589895 +589920 +589921 +589922 +589923 +589924 +589925 +589926 +589927 +589952 +589953 +589954 +589955 +589956 +589957 +589958 +589959 +589984 +589985 +589986 +589987 +589988 +589989 +589990 +589991 +590016 +590017 +590018 +590019 +590020 +590021 +590022 +590023 +590048 +590049 +590050 +590051 +590052 +590053 +590054 +590055 +590080 +590081 +590082 +590083 +590084 +590085 +590086 +590087 +590112 +590113 +590114 +590115 +590116 +590117 +590118 +590119 +590144 +590145 +590146 +590147 +590148 +590149 +590150 +590151 +590176 +590177 +590178 +590179 +590180 +590181 +590182 +590183 +590208 +590209 +590210 +590211 +590212 +590213 +590214 +590215 +590240 +590241 +590242 +590243 +590244 +590245 +590246 +590247 +590272 +590273 +590274 +590275 +590276 +590277 +590278 +590279 +590304 +590305 +590306 +590307 +590308 +590309 +590310 +590311 +590336 +590337 +590338 +590339 +590340 +590341 +590342 +590343 +590368 +590369 +590370 +590371 +590372 +590373 +590374 +590375 +590400 +590401 +590402 +590403 +590404 +590405 +590406 +590407 +590432 +590433 +590434 +590435 +590436 +590437 +590438 +590439 +590464 +590465 +590466 +590467 +590468 +590469 +590470 +590471 +590496 +590497 +590498 +590499 +590500 +590501 +590502 +590503 +590528 +590529 +590530 +590531 +590532 +590533 +590534 +590535 +590560 +590561 +590562 +590563 +590564 +590565 +590566 +590567 +590592 +590593 +590594 +590595 +590596 +590597 +590598 +590599 +590624 +590625 +590626 +590627 +590628 +590629 +590630 +590631 +590656 +590657 +590658 +590659 +590660 +590661 +590662 +590663 +590688 +590689 +590690 +590691 +590692 +590693 +590694 +590695 +590720 +590721 +590722 +590723 +590724 +590725 +590726 +590727 +590752 +590753 +590754 +590755 +590756 +590757 +590758 +590759 +590784 +590785 +590786 +590787 +590788 +590789 +590790 +590791 +590816 +590817 +590818 +590819 +590820 +590821 +590822 +590823 +590848 +590849 +590850 +590851 +590852 +590853 +590854 +590855 +590880 +590881 +590882 +590883 +590884 +590885 +590886 +590887 +590912 +590913 +590914 +590915 +590916 +590917 +590918 +590919 +590944 +590945 +590946 +590947 +590948 +590949 +590950 +590951 +590976 +590977 +590978 +590979 +590980 +590981 +590982 +590983 +591008 +591009 +591010 +591011 +591012 +591013 +591014 +591015 +591040 +591041 +591042 +591043 +591044 +591045 +591046 +591047 +591072 +591073 +591074 +591075 +591076 +591077 +591078 +591079 +591104 +591105 +591106 +591107 +591108 +591109 +591110 +591111 +591136 +591137 +591138 +591139 +591140 +591141 +591142 +591143 +591168 +591169 +591170 +591171 +591172 +591173 +591174 +591175 +591200 +591201 +591202 +591203 +591204 +591205 +591206 +591207 +591232 +591233 +591234 +591235 +591236 +591237 +591238 +591239 +591264 +591265 +591266 +591267 +591268 +591269 +591270 +591271 +591296 +591297 +591298 +591299 +591300 +591301 +591302 +591303 +591328 +591329 +591330 +591331 +591332 +591333 +591334 +591335 +591360 +591361 +591362 +591363 +591364 +591365 +591366 +591367 +591392 +591393 +591394 +591395 +591396 +591397 +591398 +591399 +591424 +591425 +591426 +591427 +591428 +591429 +591430 +591431 +591456 +591457 +591458 +591459 +591460 +591461 +591462 +591463 +591488 +591489 +591490 +591491 +591492 +591493 +591494 +591495 +591520 +591521 +591522 +591523 +591524 +591525 +591526 +591527 +591552 +591553 +591554 +591555 +591556 +591557 +591558 +591559 +591584 +591585 +591586 +591587 +591588 +591589 +591590 +591591 +591616 +591617 +591618 +591619 +591620 +591621 +591622 +591623 +591648 +591649 +591650 +591651 +591652 +591653 +591654 +591655 +591680 +591681 +591682 +591683 +591684 +591685 +591686 +591687 +591712 +591713 +591714 +591715 +591716 +591717 +591718 +591719 +591744 +591745 +591746 +591747 +591748 +591749 +591750 +591751 +591776 +591777 +591778 +591779 +591780 +591781 +591782 +591783 +591808 +591809 +591810 +591811 +591812 +591813 +591814 +591815 +591840 +591841 +591842 +591843 +591844 +591845 +591846 +591847 +591872 +591873 +591874 +591875 +591876 +591877 +591878 +591879 +591904 +591905 +591906 +591907 +591908 +591909 +591910 +591911 +591936 +591937 +591938 +591939 +591940 +591941 +591942 +591943 +591968 +591969 +591970 +591971 +591972 +591973 +591974 +591975 +592000 +592001 +592002 +592003 +592004 +592005 +592006 +592007 +592032 +592033 +592034 +592035 +592036 +592037 +592038 +592039 +592064 +592065 +592066 +592067 +592068 +592069 +592070 +592071 +592096 +592097 +592098 +592099 +592100 +592101 +592102 +592103 +592128 +592129 +592130 +592131 +592132 +592133 +592134 +592135 +592160 +592161 +592162 +592163 +592164 +592165 +592166 +592167 +592192 +592193 +592194 +592195 +592196 +592197 +592198 +592199 +592224 +592225 +592226 +592227 +592228 +592229 +592230 +592231 +592256 +592257 +592258 +592259 +592260 +592261 +592262 +592263 +592288 +592289 +592290 +592291 +592292 +592293 +592294 +592295 +592320 +592321 +592322 +592323 +592324 +592325 +592326 +592327 +592352 +592353 +592354 +592355 +592356 +592357 +592358 +592359 +592384 +592385 +592386 +592387 +592388 +592389 +592390 +592391 +592416 +592417 +592418 +592419 +592420 +592421 +592422 +592423 +592448 +592449 +592450 +592451 +592452 +592453 +592454 +592455 +592480 +592481 +592482 +592483 +592484 +592485 +592486 +592487 +592512 +592513 +592514 +592515 +592516 +592517 +592518 +592519 +592544 +592545 +592546 +592547 +592548 +592549 +592550 +592551 +592576 +592577 +592578 +592579 +592580 +592581 +592582 +592583 +592608 +592609 +592610 +592611 +592612 +592613 +592614 +592615 +592640 +592641 +592642 +592643 +592644 +592645 +592646 +592647 +592672 +592673 +592674 +592675 +592676 +592677 +592678 +592679 +592704 +592705 +592706 +592707 +592708 +592709 +592710 +592711 +592736 +592737 +592738 +592739 +592740 +592741 +592742 +592743 +592768 +592769 +592770 +592771 +592772 +592773 +592774 +592775 +592800 +592801 +592802 +592803 +592804 +592805 +592806 +592807 +592832 +592833 +592834 +592835 +592836 +592837 +592838 +592839 +592864 +592865 +592866 +592867 +592868 +592869 +592870 +592871 +592896 +592897 +592898 +592899 +592900 +592901 +592902 +592903 +592928 +592929 +592930 +592931 +592932 +592933 +592934 +592935 +592960 +592961 +592962 +592963 +592964 +592965 +592966 +592967 +592992 +592993 +592994 +592995 +592996 +592997 +592998 +592999 +593024 +593025 +593026 +593027 +593028 +593029 +593030 +593031 +593056 +593057 +593058 +593059 +593060 +593061 +593062 +593063 +593088 +593089 +593090 +593091 +593092 +593093 +593094 +593095 +593120 +593121 +593122 +593123 +593124 +593125 +593126 +593127 +593152 +593153 +593154 +593155 +593156 +593157 +593158 +593159 +593184 +593185 +593186 +593187 +593188 +593189 +593190 +593191 +593216 +593217 +593218 +593219 +593220 +593221 +593222 +593223 +593248 +593249 +593250 +593251 +593252 +593253 +593254 +593255 +593280 +593281 +593282 +593283 +593284 +593285 +593286 +593287 +593312 +593313 +593314 +593315 +593316 +593317 +593318 +593319 +593344 +593345 +593346 +593347 +593348 +593349 +593350 +593351 +593376 +593377 +593378 +593379 +593380 +593381 +593382 +593383 +593408 +593409 +593410 +593411 +593412 +593413 +593414 +593415 +593440 +593441 +593442 +593443 +593444 +593445 +593446 +593447 +593472 +593473 +593474 +593475 +593476 +593477 +593478 +593479 +593504 +593505 +593506 +593507 +593508 +593509 +593510 +593511 +593536 +593537 +593538 +593539 +593540 +593541 +593542 +593543 +593568 +593569 +593570 +593571 +593572 +593573 +593574 +593575 +593600 +593601 +593602 +593603 +593604 +593605 +593606 +593607 +593632 +593633 +593634 +593635 +593636 +593637 +593638 +593639 +593664 +593665 +593666 +593667 +593668 +593669 +593670 +593671 +593696 +593697 +593698 +593699 +593700 +593701 +593702 +593703 +593728 +593729 +593730 +593731 +593732 +593733 +593734 +593735 +593760 +593761 +593762 +593763 +593764 +593765 +593766 +593767 +593792 +593793 +593794 +593795 +593796 +593797 +593798 +593799 +593824 +593825 +593826 +593827 +593828 +593829 +593830 +593831 +593856 +593857 +593858 +593859 +593860 +593861 +593862 +593863 +593888 +593889 +593890 +593891 +593892 +593893 +593894 +593895 +593920 +593921 +593922 +593923 +593924 +593925 +593926 +593927 +593952 +593953 +593954 +593955 +593956 +593957 +593958 +593959 +593984 +593985 +593986 +593987 +593988 +593989 +593990 +593991 +594016 +594017 +594018 +594019 +594020 +594021 +594022 +594023 +594048 +594049 +594050 +594051 +594052 +594053 +594054 +594055 +594080 +594081 +594082 +594083 +594084 +594085 +594086 +594087 +594112 +594113 +594114 +594115 +594116 +594117 +594118 +594119 +594144 +594145 +594146 +594147 +594148 +594149 +594150 +594151 +594176 +594177 +594178 +594179 +594180 +594181 +594182 +594183 +594208 +594209 +594210 +594211 +594212 +594213 +594214 +594215 +594240 +594241 +594242 +594243 +594244 +594245 +594246 +594247 +594272 +594273 +594274 +594275 +594276 +594277 +594278 +594279 +594304 +594305 +594306 +594307 +594308 +594309 +594310 +594311 +594336 +594337 +594338 +594339 +594340 +594341 +594342 +594343 +594368 +594369 +594370 +594371 +594372 +594373 +594374 +594375 +594400 +594401 +594402 +594403 +594404 +594405 +594406 +594407 +594432 +594433 +594434 +594435 +594436 +594437 +594438 +594439 +594464 +594465 +594466 +594467 +594468 +594469 +594470 +594471 +594496 +594497 +594498 +594499 +594500 +594501 +594502 +594503 +594528 +594529 +594530 +594531 +594532 +594533 +594534 +594535 +594560 +594561 +594562 +594563 +594564 +594565 +594566 +594567 +594592 +594593 +594594 +594595 +594596 +594597 +594598 +594599 +594624 +594625 +594626 +594627 +594628 +594629 +594630 +594631 +594656 +594657 +594658 +594659 +594660 +594661 +594662 +594663 +594688 +594689 +594690 +594691 +594692 +594693 +594694 +594695 +594720 +594721 +594722 +594723 +594724 +594725 +594726 +594727 +594752 +594753 +594754 +594755 +594756 +594757 +594758 +594759 +594784 +594785 +594786 +594787 +594788 +594789 +594790 +594791 +594816 +594817 +594818 +594819 +594820 +594821 +594822 +594823 +594848 +594849 +594850 +594851 +594852 +594853 +594854 +594855 +594880 +594881 +594882 +594883 +594884 +594885 +594886 +594887 +594912 +594913 +594914 +594915 +594916 +594917 +594918 +594919 +594944 +594945 +594946 +594947 +594948 +594949 +594950 +594951 +594976 +594977 +594978 +594979 +594980 +594981 +594982 +594983 +595008 +595009 +595010 +595011 +595012 +595013 +595014 +595015 +595040 +595041 +595042 +595043 +595044 +595045 +595046 +595047 +595072 +595073 +595074 +595075 +595076 +595077 +595078 +595079 +595104 +595105 +595106 +595107 +595108 +595109 +595110 +595111 +595136 +595137 +595138 +595139 +595140 +595141 +595142 +595143 +595168 +595169 +595170 +595171 +595172 +595173 +595174 +595175 +595200 +595201 +595202 +595203 +595204 +595205 +595206 +595207 +595232 +595233 +595234 +595235 +595236 +595237 +595238 +595239 +595264 +595265 +595266 +595267 +595268 +595269 +595270 +595271 +595296 +595297 +595298 +595299 +595300 +595301 +595302 +595303 +595328 +595329 +595330 +595331 +595332 +595333 +595334 +595335 +595360 +595361 +595362 +595363 +595364 +595365 +595366 +595367 +595392 +595393 +595394 +595395 +595396 +595397 +595398 +595399 +595424 +595425 +595426 +595427 +595428 +595429 +595430 +595431 +595456 +595457 +595458 +595459 +595460 +595461 +595462 +595463 +595488 +595489 +595490 +595491 +595492 +595493 +595494 +595495 +595520 +595521 +595522 +595523 +595524 +595525 +595526 +595527 +595552 +595553 +595554 +595555 +595556 +595557 +595558 +595559 +595584 +595585 +595586 +595587 +595588 +595589 +595590 +595591 +595616 +595617 +595618 +595619 +595620 +595621 +595622 +595623 +595648 +595649 +595650 +595651 +595652 +595653 +595654 +595655 +595680 +595681 +595682 +595683 +595684 +595685 +595686 +595687 +595712 +595713 +595714 +595715 +595716 +595717 +595718 +595719 +595744 +595745 +595746 +595747 +595748 +595749 +595750 +595751 +595776 +595777 +595778 +595779 +595780 +595781 +595782 +595783 +595808 +595809 +595810 +595811 +595812 +595813 +595814 +595815 +595840 +595841 +595842 +595843 +595844 +595845 +595846 +595847 +595872 +595873 +595874 +595875 +595876 +595877 +595878 +595879 +595904 +595905 +595906 +595907 +595908 +595909 +595910 +595911 +595936 +595937 +595938 +595939 +595940 +595941 +595942 +595943 +595968 +595969 +595970 +595971 +595972 +595973 +595974 +595975 +596000 +596001 +596002 +596003 +596004 +596005 +596006 +596007 +596032 +596033 +596034 +596035 +596036 +596037 +596038 +596039 +596064 +596065 +596066 +596067 +596068 +596069 +596070 +596071 +596096 +596097 +596098 +596099 +596100 +596101 +596102 +596103 +596128 +596129 +596130 +596131 +596132 +596133 +596134 +596135 +596160 +596161 +596162 +596163 +596164 +596165 +596166 +596167 +596192 +596193 +596194 +596195 +596196 +596197 +596198 +596199 +596224 +596225 +596226 +596227 +596228 +596229 +596230 +596231 +596256 +596257 +596258 +596259 +596260 +596261 +596262 +596263 +596288 +596289 +596290 +596291 +596292 +596293 +596294 +596295 +596320 +596321 +596322 +596323 +596324 +596325 +596326 +596327 +596352 +596353 +596354 +596355 +596356 +596357 +596358 +596359 +596384 +596385 +596386 +596387 +596388 +596389 +596390 +596391 +596416 +596417 +596418 +596419 +596420 +596421 +596422 +596423 +596448 +596449 +596450 +596451 +596452 +596453 +596454 +596455 +596480 +596481 +596482 +596483 +596484 +596485 +596486 +596487 +596512 +596513 +596514 +596515 +596516 +596517 +596518 +596519 +596544 +596545 +596546 +596547 +596548 +596549 +596550 +596551 +596576 +596577 +596578 +596579 +596580 +596581 +596582 +596583 +596608 +596609 +596610 +596611 +596612 +596613 +596614 +596615 +596640 +596641 +596642 +596643 +596644 +596645 +596646 +596647 +596672 +596673 +596674 +596675 +596676 +596677 +596678 +596679 +596704 +596705 +596706 +596707 +596708 +596709 +596710 +596711 +596736 +596737 +596738 +596739 +596740 +596741 +596742 +596743 +596768 +596769 +596770 +596771 +596772 +596773 +596774 +596775 +596800 +596801 +596802 +596803 +596804 +596805 +596806 +596807 +596832 +596833 +596834 +596835 +596836 +596837 +596838 +596839 +596864 +596865 +596866 +596867 +596868 +596869 +596870 +596871 +596896 +596897 +596898 +596899 +596900 +596901 +596902 +596903 +596928 +596929 +596930 +596931 +596932 +596933 +596934 +596935 +596960 +596961 +596962 +596963 +596964 +596965 +596966 +596967 +596992 +596993 +596994 +596995 +596996 +596997 +596998 +596999 +597024 +597025 +597026 +597027 +597028 +597029 +597030 +597031 +597056 +597057 +597058 +597059 +597060 +597061 +597062 +597063 +597088 +597089 +597090 +597091 +597092 +597093 +597094 +597095 +597120 +597121 +597122 +597123 +597124 +597125 +597126 +597127 +597152 +597153 +597154 +597155 +597156 +597157 +597158 +597159 +597184 +597185 +597186 +597187 +597188 +597189 +597190 +597191 +597216 +597217 +597218 +597219 +597220 +597221 +597222 +597223 +597248 +597249 +597250 +597251 +597252 +597253 +597254 +597255 +597280 +597281 +597282 +597283 +597284 +597285 +597286 +597287 +597312 +597313 +597314 +597315 +597316 +597317 +597318 +597319 +597344 +597345 +597346 +597347 +597348 +597349 +597350 +597351 +597376 +597377 +597378 +597379 +597380 +597381 +597382 +597383 +597408 +597409 +597410 +597411 +597412 +597413 +597414 +597415 +597440 +597441 +597442 +597443 +597444 +597445 +597446 +597447 +597472 +597473 +597474 +597475 +597476 +597477 +597478 +597479 +597504 +597505 +597506 +597507 +597508 +597509 +597510 +597511 +597536 +597537 +597538 +597539 +597540 +597541 +597542 +597543 +597568 +597569 +597570 +597571 +597572 +597573 +597574 +597575 +597600 +597601 +597602 +597603 +597604 +597605 +597606 +597607 +597632 +597633 +597634 +597635 +597636 +597637 +597638 +597639 +597664 +597665 +597666 +597667 +597668 +597669 +597670 +597671 +597696 +597697 +597698 +597699 +597700 +597701 +597702 +597703 +597728 +597729 +597730 +597731 +597732 +597733 +597734 +597735 +597760 +597761 +597762 +597763 +597764 +597765 +597766 +597767 +597792 +597793 +597794 +597795 +597796 +597797 +597798 +597799 +597824 +597825 +597826 +597827 +597828 +597829 +597830 +597831 +597856 +597857 +597858 +597859 +597860 +597861 +597862 +597863 +597888 +597889 +597890 +597891 +597892 +597893 +597894 +597895 +597920 +597921 +597922 +597923 +597924 +597925 +597926 +597927 +597952 +597953 +597954 +597955 +597956 +597957 +597958 +597959 +597984 +597985 +597986 +597987 +597988 +597989 +597990 +597991 +598016 +598017 +598018 +598019 +598020 +598021 +598022 +598023 +598048 +598049 +598050 +598051 +598052 +598053 +598054 +598055 +598080 +598081 +598082 +598083 +598084 +598085 +598086 +598087 +598112 +598113 +598114 +598115 +598116 +598117 +598118 +598119 +598144 +598145 +598146 +598147 +598148 +598149 +598150 +598151 +598176 +598177 +598178 +598179 +598180 +598181 +598182 +598183 +598208 +598209 +598210 +598211 +598212 +598213 +598214 +598215 +598240 +598241 +598242 +598243 +598244 +598245 +598246 +598247 +598272 +598273 +598274 +598275 +598276 +598277 +598278 +598279 +598304 +598305 +598306 +598307 +598308 +598309 +598310 +598311 +598336 +598337 +598338 +598339 +598340 +598341 +598342 +598343 +598368 +598369 +598370 +598371 +598372 +598373 +598374 +598375 +598400 +598401 +598402 +598403 +598404 +598405 +598406 +598407 +598432 +598433 +598434 +598435 +598436 +598437 +598438 +598439 +598464 +598465 +598466 +598467 +598468 +598469 +598470 +598471 +598496 +598497 +598498 +598499 +598500 +598501 +598502 +598503 +598528 +598529 +598530 +598531 +598532 +598533 +598534 +598535 +598560 +598561 +598562 +598563 +598564 +598565 +598566 +598567 +598592 +598593 +598594 +598595 +598596 +598597 +598598 +598599 +598624 +598625 +598626 +598627 +598628 +598629 +598630 +598631 +598656 +598657 +598658 +598659 +598660 +598661 +598662 +598663 +598688 +598689 +598690 +598691 +598692 +598693 +598694 +598695 +598720 +598721 +598722 +598723 +598724 +598725 +598726 +598727 +598752 +598753 +598754 +598755 +598756 +598757 +598758 +598759 +598784 +598785 +598786 +598787 +598788 +598789 +598790 +598791 +598816 +598817 +598818 +598819 +598820 +598821 +598822 +598823 +598848 +598849 +598850 +598851 +598852 +598853 +598854 +598855 +598880 +598881 +598882 +598883 +598884 +598885 +598886 +598887 +598912 +598913 +598914 +598915 +598916 +598917 +598918 +598919 +598944 +598945 +598946 +598947 +598948 +598949 +598950 +598951 +598976 +598977 +598978 +598979 +598980 +598981 +598982 +598983 +599008 +599009 +599010 +599011 +599012 +599013 +599014 +599015 +599040 +599041 +599042 +599043 +599044 +599045 +599046 +599047 +599072 +599073 +599074 +599075 +599076 +599077 +599078 +599079 +599104 +599105 +599106 +599107 +599108 +599109 +599110 +599111 +599136 +599137 +599138 +599139 +599140 +599141 +599142 +599143 +599168 +599169 +599170 +599171 +599172 +599173 +599174 +599175 +599200 +599201 +599202 +599203 +599204 +599205 +599206 +599207 +599232 +599233 +599234 +599235 +599236 +599237 +599238 +599239 +599264 +599265 +599266 +599267 +599268 +599269 +599270 +599271 +599296 +599297 +599298 +599299 +599300 +599301 +599302 +599303 +599328 +599329 +599330 +599331 +599332 +599333 +599334 +599335 +599360 +599361 +599362 +599363 +599364 +599365 +599366 +599367 +599392 +599393 +599394 +599395 +599396 +599397 +599398 +599399 +599424 +599425 +599426 +599427 +599428 +599429 +599430 +599431 +599456 +599457 +599458 +599459 +599460 +599461 +599462 +599463 +599488 +599489 +599490 +599491 +599492 +599493 +599494 +599495 +599520 +599521 +599522 +599523 +599524 +599525 +599526 +599527 +599552 +599553 +599554 +599555 +599556 +599557 +599558 +599559 +599584 +599585 +599586 +599587 +599588 +599589 +599590 +599591 +599616 +599617 +599618 +599619 +599620 +599621 +599622 +599623 +599648 +599649 +599650 +599651 +599652 +599653 +599654 +599655 +599680 +599681 +599682 +599683 +599684 +599685 +599686 +599687 +599712 +599713 +599714 +599715 +599716 +599717 +599718 +599719 +599744 +599745 +599746 +599747 +599748 +599749 +599750 +599751 +599776 +599777 +599778 +599779 +599780 +599781 +599782 +599783 +599808 +599809 +599810 +599811 +599812 +599813 +599814 +599815 +599840 +599841 +599842 +599843 +599844 +599845 +599846 +599847 +599872 +599873 +599874 +599875 +599876 +599877 +599878 +599879 +599904 +599905 +599906 +599907 +599908 +599909 +599910 +599911 +599936 +599937 +599938 +599939 +599940 +599941 +599942 +599943 +599968 +599969 +599970 +599971 +599972 +599973 +599974 +599975 +600000 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having_plan.json new file mode 100644 index 00000000..f173f48b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/having_plan.json @@ -0,0 +1,147 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "count" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "gt" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 4 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "literal": { + "i64": "1" + } + } + } + ] + } + } + ] + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "literal": { + "i64": "12100" + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_quantity", + "count(*)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and_plan.json new file mode 100644 index 00000000..60787011 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_and_plan.json @@ -0,0 +1,131 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "and" + } + } + ], + "relations": [ + { + "root": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 13 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "2" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "literal": { + "string": "TAKE BACK RETURN" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "names": [ + "l_orderkey", + "l_shipinstruct" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between_plan.json new file mode 100644 index 00000000..e80b0811 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_between_plan.json @@ -0,0 +1,138 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "gte" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "lte" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 2, + "name": "and" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 2, + "arguments": [ + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "20" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "50" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "count": "20" + } + }, + "names": [ + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col_plan.json new file mode 100644 index 00000000..e3ebf7c8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_equal_multi_col_plan.json @@ -0,0 +1,116 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col_plan.json new file mode 100644 index 00000000..db9b2703 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gt_multi_col_plan.json @@ -0,0 +1,128 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "lt" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col_plan.json new file mode 100644 index 00000000..5fe6dfbf --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_gte_multi_col_plan.json @@ -0,0 +1,128 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "lte" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in_plan.json new file mode 100644 index 00000000..327e4929 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_in_plan.json @@ -0,0 +1,158 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "or" + } + } + ], + "relations": [ + { + "root": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "1" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "2" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "3" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "names": [ + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like_plan.json new file mode 100644 index 00000000..49e2fbd4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_like_plan.json @@ -0,0 +1,148 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "like" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 13 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "literal": { + "string": "%DELIVER IN PERSON%" + } + } + }, + { + "value": { + "literal": { + "null": { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "nullable": true + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_shipinstruct", + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col_plan.json new file mode 100644 index 00000000..b9ad9738 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lt_multi_col_plan.json @@ -0,0 +1,128 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "gt" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col_plan.json new file mode 100644 index 00000000..9d7d49f1 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_lte_multi_col_plan.json @@ -0,0 +1,128 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "gte" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col_plan.json new file mode 100644 index 00000000..103d51bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_not_equal_multi_col_plan.json @@ -0,0 +1,128 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "not_equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or_plan.json new file mode 100644 index 00000000..4a118121 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DataFusionProducer/where_or_plan.json @@ -0,0 +1,129 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "or" + } + } + ], + "relations": [ + { + "root": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 13 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "2" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "literal": { + "i64": "3" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "names": [ + "l_orderkey", + "l_shipinstruct" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having_plan.json new file mode 100644 index 00000000..d816107e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/having_plan.json @@ -0,0 +1,280 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_aggregate_generic.yaml" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "gt:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 4 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + } + } + ] + } + }, + "condition": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "12100" + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "l_quantity", + "count_star()" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and_plan.json new file mode 100644 index 00000000..9fe4ca32 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_and_plan.json @@ -0,0 +1,374 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_boolean.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:string_string" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "is_not_null:string" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 3, + "name": "and:bool?" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 4, + "name": "equal:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 5, + "name": "is_not_null:i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "filter": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "string": "TAKE BACK RETURN" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 4, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "2" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 5, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + } + ] + } + } + } + ] + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 13 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_orderkey", + "l_shipinstruct" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between_plan.json new file mode 100644 index 00000000..cae24ffd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_between_plan.json @@ -0,0 +1,316 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_boolean.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "gte:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "lte:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 3, + "name": "and:bool?" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 4, + "name": "is_not_null:i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "fetch": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "filter": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "20" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "50" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 4, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + } + ] + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "count": "20" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col_plan.json new file mode 100644 index 00000000..6fc97399 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_equal_multi_col_plan.json @@ -0,0 +1,250 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col_plan.json new file mode 100644 index 00000000..b0de8d89 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gt_multi_col_plan.json @@ -0,0 +1,263 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "gt:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col_plan.json new file mode 100644 index 00000000..73c7dfa9 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_gte_multi_col_plan.json @@ -0,0 +1,263 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "gte:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in_plan.json new file mode 100644 index 00000000..48ab1e76 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_in_plan.json @@ -0,0 +1,311 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_boolean.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "gte:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "lte:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 3, + "name": "and:bool?" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 4, + "name": "is_not_null:i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "filter": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 3, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "1" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "3" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 4, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + } + ] + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like_plan.json new file mode 100644 index 00000000..a578e128 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_like_plan.json @@ -0,0 +1,245 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_string.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "contains:string_string" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 13 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "string": "DELIVER IN PERSON" + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_shipinstruct", + "l_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col_plan.json new file mode 100644 index 00000000..ae1a26dc --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lt_multi_col_plan.json @@ -0,0 +1,263 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "lt:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col_plan.json new file mode 100644 index 00000000..d0d8b77c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_lte_multi_col_plan.json @@ -0,0 +1,263 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "lte:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col_plan.json new file mode 100644 index 00000000..4143871a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_not_equal_multi_col_plan.json @@ -0,0 +1,263 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "not_equal:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "20" + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or_plan.json new file mode 100644 index 00000000..b2102016 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/DuckDBProducer/where_or_plan.json @@ -0,0 +1,277 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + }, + { + "extensionUriAnchor": 2, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_boolean.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:i64_i64" + } + }, + { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "or:bool?" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "filter": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 13 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "2" + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "i64": "3" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_orderkey", + "l_shipinstruct" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate_plan.json new file mode 100644 index 00000000..8734f248 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/having-validate_plan.json @@ -0,0 +1,235 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "gt:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 4 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_ALL" + } + }] + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 12100 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["L_QUANTITY", "EXPR$1"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate_plan.json new file mode 100644 index 00000000..9040be6d --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_and-validate_plan.json @@ -0,0 +1,222 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "2" + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "string": "TAKE BACK RETURN" + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["L_ORDERKEY", "L_SHIPINSTRUCT"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate_plan.json new file mode 100644 index 00000000..a084c204 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_between-validate_plan.json @@ -0,0 +1,246 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "gte:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "lte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 20 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 50 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "count": "20" + } + }, + "names": ["L_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate_plan.json new file mode 100644 index 00000000..c6d10d5c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_equal_multi_col-validate_plan.json @@ -0,0 +1,209 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate_plan.json new file mode 100644 index 00000000..348fd5af --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gt_multi_col-validate_plan.json @@ -0,0 +1,222 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gt:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate_plan.json new file mode 100644 index 00000000..7a08f6e3 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_gte_multi_col-validate_plan.json @@ -0,0 +1,222 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "gte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate_plan.json new file mode 100644 index 00000000..5cb3509f --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_in-validate_plan.json @@ -0,0 +1,240 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "or:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "1" + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "2" + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "3" + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["L_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate_plan.json new file mode 100644 index 00000000..c693e6c8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_like-validate_plan.json @@ -0,0 +1,213 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_string.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "like:str_str" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "fixedChar": "%DELIVER IN PERSON%" + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_SHIPINSTRUCT", "L_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate_plan.json new file mode 100644 index 00000000..527b2c3d --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lt_multi_col-validate_plan.json @@ -0,0 +1,222 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lt:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate_plan.json new file mode 100644 index 00000000..b67c228c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_lte_multi_col-validate_plan.json @@ -0,0 +1,222 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "lte:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "20" + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_not_equal_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_not_equal_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..6fda0977 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_not_equal_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate_plan.json b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate_plan.json new file mode 100644 index 00000000..7c968d58 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/IsthmusProducer/where_or-validate_plan.json @@ -0,0 +1,221 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "or:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "2" + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "literal": { + "i64": "3" + } + } + }] + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["L_ORDERKEY", "L_SHIPINSTRUCT"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-generate-outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having_result_schema.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having_result_schema.txt index a6167791..f46fd8ee 100644 --- a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/having_result_schema.txt @@ -1,2 +1,2 @@ l_quantity: decimal128(15, 2) -count_star(): int64 \ No newline at end of file +count(*): int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_and-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_between-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_equal_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gt_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_gte_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_in-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..4ad84245 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_like-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lt_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_lte_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_not_equal_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/filter_snapshots/relation_test_results/where_or-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join_plan.json new file mode 100644 index 00000000..f096985f --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/cross_join_plan.json @@ -0,0 +1,81 @@ +{ + "relations": [ + { + "root": { + "input": { + "cross": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + } + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join_plan.json new file mode 100644 index 00000000..36851268 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/full_join_plan.json @@ -0,0 +1,150 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_OUTER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join_plan.json new file mode 100644 index 00000000..60582706 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/inner_join_plan.json @@ -0,0 +1,150 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_INNER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join_plan.json new file mode 100644 index 00000000..ccbcea9a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_anti_join_plan.json @@ -0,0 +1,117 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_ANTI" + } + }, + "names": [ + "c_custkey", + "c_name" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join_plan.json new file mode 100644 index 00000000..bc3ff9cf --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_join_plan.json @@ -0,0 +1,150 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_mark_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_mark_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_mark_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join_plan.json new file mode 100644 index 00000000..c6374def --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_semi_join_plan.json @@ -0,0 +1,117 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_SEMI" + } + }, + "names": [ + "c_custkey", + "c_name" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join_plan.json new file mode 100644 index 00000000..871db277 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/left_single_join_plan.json @@ -0,0 +1,239 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "not_equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 2, + "name": "and" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 2, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + } + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 4 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + } + } + } + ] + } + }, + "names": [ + "c1key", + "c1name", + "c1nationakey", + "c2key", + "c2name", + "c2nationakey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join_plan.json new file mode 100644 index 00000000..0e72c688 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_anti_join_plan.json @@ -0,0 +1,123 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_ANTI" + } + }, + "names": [ + "o_orderkey", + "o_custkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join_plan.json new file mode 100644 index 00000000..a80b3f0a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_join_plan.json @@ -0,0 +1,150 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_RIGHT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_mark_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_mark_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_mark_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join_plan.json new file mode 100644 index 00000000..8d260bd8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_semi_join_plan.json @@ -0,0 +1,117 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_SEMI" + } + }, + "names": [ + "o_orderkey", + "o_custkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join_plan.json new file mode 100644 index 00000000..bb706559 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DataFusionProducer/right_single_join_plan.json @@ -0,0 +1,239 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "not_equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "equal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 2, + "name": "and" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 2, + "arguments": [ + { + "value": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + } + } + } + } + ] + } + } + }, + { + "value": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + } + } + ] + } + } + } + ] + } + }, + "type": "JOIN_TYPE_RIGHT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 4 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + } + } + } + ] + } + }, + "names": [ + "c1key", + "c1name", + "c1nationakey", + "c2key", + "c2name", + "c2nationakey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join_plan.json new file mode 100644 index 00000000..42429620 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/cross_join_plan.json @@ -0,0 +1,216 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "cross": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join_plan.json new file mode 100644 index 00000000..c2f0c315 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/full_join_plan.json @@ -0,0 +1,313 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_OUTER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join_plan.json new file mode 100644 index 00000000..f8e972f8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/inner_join_plan.json @@ -0,0 +1,313 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_INNER" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_anti_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_anti_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_anti_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join_plan.json new file mode 100644 index 00000000..b6cd32da --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_join_plan.json @@ -0,0 +1,313 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_mark_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_mark_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_mark_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join_plan.json new file mode 100644 index 00000000..07445ad7 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_semi_join_plan.json @@ -0,0 +1,295 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "is_not_distinct_from:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_SEMI" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_single_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_single_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/left_single_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_anti_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_anti_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_anti_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join_plan.json new file mode 100644 index 00000000..a72d44fe --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_join_plan.json @@ -0,0 +1,313 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "equal:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_RIGHT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "c_name", + "o_orderkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_mark_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_mark_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_mark_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join_plan.json new file mode 100644 index 00000000..ce318c03 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_semi_join_plan.json @@ -0,0 +1,293 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "is_not_distinct_from:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "right": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_SEMI" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "o_orderkey", + "o_custkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_single_join-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_single_join-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/DuckDBProducer/right_single_join-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate_plan.json new file mode 100644 index 00000000..96600cdd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/cross_join-validate_plan.json @@ -0,0 +1,162 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [17, 18, 19] + } + }, + "input": { + "cross": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME", "O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate_plan.json new file mode 100644 index 00000000..5b0d1942 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/full_join-validate_plan.json @@ -0,0 +1,206 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [17, 18, 19] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + } + }] + } + }, + "type": "JOIN_TYPE_OUTER" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME", "O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate_plan.json new file mode 100644 index 00000000..ff9ff74a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/inner_join-validate_plan.json @@ -0,0 +1,206 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [17, 18, 19] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + } + }] + } + }, + "type": "JOIN_TYPE_INNER" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME", "O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate_plan.json new file mode 100644 index 00000000..18832797 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_anti_join-validate_plan.json @@ -0,0 +1,232 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "not:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [8, 9] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "subquery": { + "setPredicate": { + "predicateOp": "PREDICATE_OP_EXISTS", + "tuples": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "outerReference": { + "stepsOut": 1 + } + } + } + }] + } + } + } + } + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate_plan.json new file mode 100644 index 00000000..2049dcd8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_join-validate_plan.json @@ -0,0 +1,206 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [17, 18, 19] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + } + }] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME", "O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_mark_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_mark_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_mark_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate_plan.json new file mode 100644 index 00000000..d497bf5b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_semi_join-validate_plan.json @@ -0,0 +1,211 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [8, 9] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "condition": { + "subquery": { + "setPredicate": { + "predicateOp": "PREDICATE_OP_EXISTS", + "tuples": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "outerReference": { + "stepsOut": 1 + } + } + } + }] + } + } + } + } + } + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate_plan.json new file mode 100644 index 00000000..8c595fdd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/left_single_join-validate_plan.json @@ -0,0 +1,295 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "not_equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18, 19, 20, 21] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + } + }] + } + } + }] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C1KEY", "C1NAME", "C1NATIONAKEY", "C2KEY", "C2NAME", "C2NATIONAKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate_plan.json new file mode 100644 index 00000000..fff610d0 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_anti_join-validate_plan.json @@ -0,0 +1,269 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "not:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9, 10] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "subquery": { + "setPredicate": { + "predicateOp": "PREDICATE_OP_EXISTS", + "tuples": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "condition": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "outerReference": { + "stepsOut": 1 + } + } + } + }] + } + } + } + } + } + } + } + }] + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["O_ORDERKEY", "O_CUSTKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate_plan.json new file mode 100644 index 00000000..049d8732 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_join-validate_plan.json @@ -0,0 +1,206 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [17, 18, 19] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + } + }] + } + }, + "type": "JOIN_TYPE_RIGHT" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C_CUSTKEY", "C_NAME", "O_ORDERKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_mark_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_mark_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_mark_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate_plan.json new file mode 100644 index 00000000..84b59063 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_semi_join-validate_plan.json @@ -0,0 +1,211 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [9, 10] + } + }, + "input": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "condition": { + "subquery": { + "setPredicate": { + "predicateOp": "PREDICATE_OP_EXISTS", + "tuples": { + "filter": { + "common": { + "direct": { + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "condition": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "outerReference": { + "stepsOut": 1 + } + } + } + }] + } + } + } + } + } + } + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["O_ORDERKEY", "O_CUSTKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate_plan.json b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate_plan.json new file mode 100644 index 00000000..a0a35a86 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/IsthmusProducer/right_single_join-validate_plan.json @@ -0,0 +1,295 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_boolean.yaml" + }, { + "extensionUriAnchor": 2, + "uri": "/functions_comparison.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "and:bool" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 1, + "name": "equal:any_any" + } + }, { + "extensionFunction": { + "extensionUriReference": 2, + "functionAnchor": 2, + "name": "not_equal:any_any" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18, 19, 20, 21] + } + }, + "input": { + "join": { + "common": { + "direct": { + } + }, + "left": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "right": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expression": { + "scalarFunction": { + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + } + }] + } + } + }, { + "value": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + } + }] + } + } + }] + } + }, + "type": "JOIN_TYPE_RIGHT" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["C1KEY", "C1NAME", "C1NATIONAKEY", "C2KEY", "C2NAME", "C2NATIONAKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/cross_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/full_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/inner_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_anti_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..9145b9be --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_semi_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/left_single_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_anti_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..9145b9be --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_semi_join-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/join_snapshots/relation_test_results/right_single_join-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project_plan.json new file mode 100644 index 00000000..61c3e462 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/count_distinct_in_project_plan.json @@ -0,0 +1,116 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "count" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 5 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ] + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "names": [ + "count(DISTINCT lineitem.l_extendedprice)" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project_plan.json new file mode 100644 index 00000000..fd81e428 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/distinct_in_project_plan.json @@ -0,0 +1,70 @@ +{ + "relations": [ + { + "root": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 9 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ] + } + }, + "names": [ + "l_linestatus" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project_plan.json new file mode 100644 index 00000000..7b35ee2c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/extended_project_plan.json @@ -0,0 +1,105 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "multiply" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 4 + }, + { + "field": 5 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + }, + { + "value": { + "literal": { + "decimal": { + "value": "CgAAAAAAAAAAAAAAAAAAAA==", + "precision": 20 + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "l_quantity", + "multi_price" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate_plan.json new file mode 100644 index 00000000..822e8b61 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_all_col-validate_plan.json @@ -0,0 +1,46 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "r_regionkey", + "r_name", + "r_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 2 + } + ] + } + }, + "namedTable": { + "names": [ + "region" + ] + } + } + }, + "names": [ + "r_regionkey", + "r_name", + "r_comment" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate_plan.json new file mode 100644 index 00000000..f2193df7 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_multi_col-validate_plan.json @@ -0,0 +1,57 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate_plan.json new file mode 100644 index 00000000..88668823 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/project_single_col-validate_plan.json @@ -0,0 +1,111 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 2 + }, + { + "field": 3 + }, + { + "field": 4 + }, + { + "field": 5 + }, + { + "field": 6 + }, + { + "field": 7 + }, + { + "field": 8 + }, + { + "field": 9 + }, + { + "field": 10 + }, + { + "field": 11 + }, + { + "field": 12 + }, + { + "field": 13 + }, + { + "field": 14 + }, + { + "field": 15 + } + ] + } + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project_plan.json new file mode 100644 index 00000000..5ada1287 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DataFusionProducer/subquery_in_project_plan.json @@ -0,0 +1,206 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "sum" + } + }, + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "functionAnchor": 1, + "name": "equal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ], + "measures": [ + { + "measure": { + "invocation": "AGGREGATION_INVOCATION_ALL", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 1, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + ] + } + }, + "names": [ + "c_custkey", + "total_price" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project_plan.json new file mode 100644 index 00000000..08e55c32 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/count_distinct_in_project_plan.json @@ -0,0 +1,208 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "count:decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 5 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "groupings": [ + {} + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "invocation": "AGGREGATION_INVOCATION_DISTINCT", + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "count(DISTINCT l_extendedprice)" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/distinct_in_project-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/distinct_in_project-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/distinct_in_project-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project_plan.json new file mode 100644 index 00000000..16ab4aff --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/extended_project_plan.json @@ -0,0 +1,216 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_arithmetic_decimal.yaml" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "multiply:decimal_decimal" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 4 + }, + { + "field": 5 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "scalarFunction": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 18, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + }, + { + "value": { + "literal": { + "decimal": { + "value": "CgAAAAAAAAAAAAAAAAAAAA==", + "precision": 18 + } + } + } + } + ] + } + } + ] + } + }, + "names": [ + "l_quantity", + "MULTI_PRICE" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col_plan.json new file mode 100644 index 00000000..25668846 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_all_col_plan.json @@ -0,0 +1,101 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "r_regionkey", + "r_name", + "r_comment" + ], + "struct": { + "types": [ + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "region" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "r_regionkey", + "r_name", + "r_comment" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col_plan.json new file mode 100644 index 00000000..21b956dd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_multi_col_plan.json @@ -0,0 +1,175 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 6 + }, + { + "field": 7 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_discount", + "l_tax" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col_plan.json new file mode 100644 index 00000000..a4663d38 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/project_single_col_plan.json @@ -0,0 +1,369 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {}, + { + "field": 1 + }, + { + "field": 2 + }, + { + "field": 3 + }, + { + "field": 4 + }, + { + "field": 5 + }, + { + "field": 6 + }, + { + "field": 7 + }, + { + "field": 8 + }, + { + "field": 9 + }, + { + "field": 10 + }, + { + "field": 11 + }, + { + "field": 12 + }, + { + "field": 13 + }, + { + "field": 14 + }, + { + "field": 15 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "lineitem" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 4 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 10 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 14 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 15 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "l_orderkey", + "l_partkey", + "l_suppkey", + "l_linenumber", + "l_quantity", + "l_extendedprice", + "l_discount", + "l_tax", + "l_returnflag", + "l_linestatus", + "l_shipdate", + "l_commitdate", + "l_receiptdate", + "l_shipinstruct", + "l_shipmode", + "l_comment" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project_plan.json new file mode 100644 index 00000000..dccf7af8 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/DuckDBProducer/subquery_in_project_plan.json @@ -0,0 +1,368 @@ +{ + "extensionUris": [ + { + "extensionUriAnchor": 1, + "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/" + } + ], + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 1, + "name": "sum:decimal" + } + }, + { + "extensionFunction": { + "extensionUriReference": 1, + "functionAnchor": 2, + "name": "is_not_distinct_from:i64_i64" + } + } + ], + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "project": { + "input": { + "join": { + "left": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "right": { + "project": { + "input": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 1 + }, + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + ], + "measures": [ + { + "measure": { + "functionReference": 1, + "outputType": { + "decimal": { + "scale": 2, + "precision": 38, + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + } + ] + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "expression": { + "scalarFunction": { + "functionReference": 2, + "outputType": { + "bool": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT" + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": {} + } + } + ] + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "c_custkey", + "total_price" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate_plan.json new file mode 100644 index 00000000..27fd40ab --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/count_distinct_in_project-validate_plan.json @@ -0,0 +1,160 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_aggregate_generic.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "count:any" + } + }], + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + }], + "measures": [{ + "measure": { + "phase": "AGGREGATION_PHASE_INITIAL_TO_RESULT", + "outputType": { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, + "invocation": "AGGREGATION_INVOCATION_DISTINCT", + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + } + }] + } + }] + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate_plan.json new file mode 100644 index 00000000..17768b11 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/distinct_in_project-validate_plan.json @@ -0,0 +1,137 @@ +{ + "relations": [{ + "root": { + "input": { + "aggregate": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + }] + } + }, + "groupings": [{ + "groupingExpressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + }] + } + }, + "names": ["L_LINESTATUS"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate_plan.json new file mode 100644 index 00000000..1ee39d4c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/extended_project-validate_plan.json @@ -0,0 +1,168 @@ +{ + "extensionUris": [{ + "extensionUriAnchor": 1, + "uri": "/functions_arithmetic_decimal.yaml" + }], + "extensions": [{ + "extensionFunction": { + "extensionUriReference": 1, + "name": "multiply:dec_dec" + } + }], + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 4 + } + }, + "rootReference": { + } + } + }, { + "scalarFunction": { + "outputType": { + "decimal": { + "scale": 2, + "precision": 19, + "nullability": "NULLABILITY_REQUIRED" + } + }, + "arguments": [{ + "value": { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + } + }, { + "value": { + "cast": { + "type": { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, + "input": { + "literal": { + "i32": 10 + } + }, + "failureBehavior": "FAILURE_BEHAVIOR_THROW_EXCEPTION" + } + } + }] + } + }] + } + }, + "names": ["L_QUANTITY", "MULTI_PRICE"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate_plan.json new file mode 100644 index 00000000..6d8393ce --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_all_col-validate_plan.json @@ -0,0 +1,76 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [3, 4, 5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["R_REGIONKEY", "R_NAME", "R_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["REGION"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["R_REGIONKEY", "R_NAME", "R_COMMENT"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate_plan.json new file mode 100644 index 00000000..0e45d3a9 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_multi_col-validate_plan.json @@ -0,0 +1,127 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["L_DISCOUNT", "L_TAX"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate_plan.json b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate_plan.json new file mode 100644 index 00000000..aa146e52 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/project_single_col-validate_plan.json @@ -0,0 +1,266 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["LINEITEM"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 4 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 6 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 7 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 8 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 9 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 10 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 11 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 12 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 13 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 14 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 15 + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["L_ORDERKEY", "L_PARTKEY", "L_SUPPKEY", "L_LINENUMBER", "L_QUANTITY", "L_EXTENDEDPRICE", "L_DISCOUNT", "L_TAX", "L_RETURNFLAG", "L_LINESTATUS", "L_SHIPDATE", "L_COMMITDATE", "L_RECEIPTDATE", "L_SHIPINSTRUCT", "L_SHIPMODE", "L_COMMENT"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/subquery_in_project-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/subquery_in_project-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/IsthmusProducer/subquery_in_project-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-generate-outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project_result_schema.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project_result_schema.txt index 307e9438..7dfe2a33 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/count_distinct_in_project_result_schema.txt @@ -1 +1 @@ -count(distinct l_extendedprice): int64 \ No newline at end of file +count(distinct lineitem.l_extendedprice): int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/distinct_in_project-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-generate-outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project_result_schema.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project_result_schema.txt index 66748741..3b3bc173 100644 --- a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/extended_project_result_schema.txt @@ -1,2 +1,2 @@ l_quantity: decimal128(15, 2) -multi_price: decimal128(18, 2) \ No newline at end of file +multi_price: decimal128(35, 2) \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_all_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_multi_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/project_single_col-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/project_snapshots/relation_test_results/subquery_in_project-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table_plan.json b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table_plan.json new file mode 100644 index 00000000..c77c8520 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/datafusion_read_virtual_table_plan.json @@ -0,0 +1,44 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "column1" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ] + } + }, + "virtualTable": { + "values": [ + { + "fields": [ + { + "i64": "10" + } + ] + } + ] + } + } + }, + "names": [ + "column1" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table_plan.json b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table_plan.json new file mode 100644 index 00000000..744d735b --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DataFusionProducer/read_named_table_plan.json @@ -0,0 +1,40 @@ +{ + "relations": [ + { + "root": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "names": [ + "ps_partkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_local_file-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_local_file-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_local_file-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_virtual_table-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_virtual_table-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/duckdb_read_virtual_table-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table_plan.json b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table_plan.json new file mode 100644 index 00000000..cd5ec310 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/DuckDBProducer/read_named_table_plan.json @@ -0,0 +1,87 @@ +{ + "relations": [ + { + "root": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "names": [ + "ps_partkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate_plan.json b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate_plan.json new file mode 100644 index 00000000..caa1ac7e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/isthmus_read_virtual_table-validate_plan.json @@ -0,0 +1,33 @@ +{ + "relations": [{ + "root": { + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["EXPR$0"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "virtualTable": { + "values": [{ + "fields": [{ + "i32": 10 + }] + }] + } + } + }, + "names": ["EXPR$0"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate_plan.json b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate_plan.json new file mode 100644 index 00000000..8c6af347 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/IsthmusProducer/read_named_table-validate_plan.json @@ -0,0 +1,66 @@ +{ + "relations": [{ + "root": { + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "names": ["PS_PARTKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_data.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_data.txt new file mode 100644 index 00000000..548a9177 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_data.txt @@ -0,0 +1,2 @@ +10 + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_schema.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_schema.txt new file mode 100644 index 00000000..84b117ef --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/datafusion_read_virtual_table_result_schema.txt @@ -0,0 +1 @@ +column1: int64 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/read_snapshots/relation_test_results/read_named_table-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except_plan.json new file mode 100644 index 00000000..c14f06c5 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/except_plan.json @@ -0,0 +1,132 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "is_not_distinct_from" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ] + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 5 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_ANTI" + } + }, + "names": [ + "o_totalprice" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect_plan.json new file mode 100644 index 00000000..826d7c47 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/intersect_plan.json @@ -0,0 +1,125 @@ +{ + "extensions": [ + { + "extensionFunction": { + "extensionUriReference": 4294967295, + "name": "is_not_distinct_from" + } + } + ], + "relations": [ + { + "root": { + "input": { + "join": { + "left": { + "aggregate": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ] + } + }, + "right": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expression": { + "scalarFunction": { + "arguments": [ + { + "value": { + "selection": { + "directReference": { + "structField": {} + } + } + } + }, + { + "value": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + } + } + ] + } + }, + "type": "JOIN_TYPE_LEFT_SEMI" + } + }, + "names": [ + "c_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all_plan.json new file mode 100644 index 00000000..73d8c6bf --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_all_plan.json @@ -0,0 +1,89 @@ +{ + "relations": [ + { + "root": { + "input": { + "set": { + "inputs": [ + { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + } + ], + "op": "SET_OP_UNION_ALL" + } + }, + "names": [ + "c_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct_plan.json new file mode 100644 index 00000000..223098b9 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DataFusionProducer/union_distinct_plan.json @@ -0,0 +1,122 @@ +{ + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "aggregate": { + "input": { + "set": { + "inputs": [ + { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + {} + ] + } + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + } + ], + "op": "SET_OP_UNION_ALL" + } + }, + "groupings": [ + { + "groupingExpressions": [ + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "c_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except_plan.json new file mode 100644 index 00000000..7993fcbd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/except_plan.json @@ -0,0 +1,212 @@ +{ + "relations": [ + { + "root": { + "input": { + "set": { + "inputs": [ + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "o_orderkey", + "o_custkey", + "o_orderstatus", + "o_totalprice", + "o_orderdate", + "o_orderpriority", + "o_clerk", + "o_shippriority", + "o_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "date": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "orders" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 5 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + } + ], + "op": "SET_OP_MINUS_PRIMARY" + } + }, + "names": [ + "c_acctbal" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect_plan.json new file mode 100644 index 00000000..31f434a2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/intersect_plan.json @@ -0,0 +1,178 @@ +{ + "relations": [ + { + "root": { + "input": { + "set": { + "inputs": [ + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ], + "struct": { + "types": [ + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + } + ], + "op": "SET_OP_INTERSECTION_PRIMARY" + } + }, + "names": [ + "n_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all_plan.json new file mode 100644 index 00000000..3ff3cca2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_all_plan.json @@ -0,0 +1,178 @@ +{ + "relations": [ + { + "root": { + "input": { + "set": { + "inputs": [ + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ], + "struct": { + "types": [ + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + } + ], + "op": "SET_OP_UNION_ALL" + } + }, + "names": [ + "n_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct_plan.json new file mode 100644 index 00000000..fd50a229 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/DuckDBProducer/union_distinct_plan.json @@ -0,0 +1,195 @@ +{ + "relations": [ + { + "root": { + "input": { + "sort": { + "input": { + "set": { + "inputs": [ + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "c_custkey", + "c_name", + "c_address", + "c_nationkey", + "c_phone", + "c_acctbal", + "c_mktsegment", + "c_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "customer" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "n_nationkey", + "n_name", + "n_regionkey", + "n_comment" + ], + "struct": { + "types": [ + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i32": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + {} + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "nation" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + } + ], + "op": "SET_OP_UNION_ALL" + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "names": [ + "n_nationkey" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate_plan.json new file mode 100644 index 00000000..a836a4f9 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/except-validate_plan.json @@ -0,0 +1,163 @@ +{ + "relations": [{ + "root": { + "input": { + "set": { + "common": { + "direct": { + } + }, + "inputs": [{ + "project": { + "common": { + "emit": { + "outputMapping": [9] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["O_ORDERKEY", "O_CUSTKEY", "O_ORDERSTATUS", "O_TOTALPRICE", "O_ORDERDATE", "O_ORDERPRIORITY", "O_CLERK", "O_SHIPPRIORITY", "O_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "date": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["ORDERS"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, { + "project": { + "common": { + "emit": { + "outputMapping": [8] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 5 + } + }, + "rootReference": { + } + } + }] + } + }], + "op": "SET_OP_MINUS_PRIMARY" + } + }, + "names": ["O_TOTALPRICE"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate_plan.json new file mode 100644 index 00000000..fdc599da --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/intersect-validate_plan.json @@ -0,0 +1,140 @@ +{ + "relations": [{ + "root": { + "input": { + "set": { + "common": { + "direct": { + } + }, + "inputs": [{ + "project": { + "common": { + "emit": { + "outputMapping": [8] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }], + "op": "SET_OP_INTERSECTION_MULTISET" + } + }, + "names": ["C_NATIONKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate_plan.json new file mode 100644 index 00000000..2020ecc6 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_all-validate_plan.json @@ -0,0 +1,140 @@ +{ + "relations": [{ + "root": { + "input": { + "set": { + "common": { + "direct": { + } + }, + "inputs": [{ + "project": { + "common": { + "emit": { + "outputMapping": [8] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }], + "op": "SET_OP_UNION_ALL" + } + }, + "names": ["C_NATIONKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate_plan.json b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate_plan.json new file mode 100644 index 00000000..3a6f9194 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/IsthmusProducer/union_distinct-validate_plan.json @@ -0,0 +1,180 @@ +{ + "relations": [{ + "root": { + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [1] + } + }, + "input": { + "set": { + "common": { + "direct": { + } + }, + "inputs": [{ + "project": { + "common": { + "emit": { + "outputMapping": [8] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["C_CUSTKEY", "C_NAME", "C_ADDRESS", "C_NATIONKEY", "C_PHONE", "C_ACCTBAL", "C_MKTSEGMENT", "C_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["CUSTOMER"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, { + "project": { + "common": { + "emit": { + "outputMapping": [4] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["N_NATIONKEY", "N_NAME", "N_REGIONKEY", "N_COMMENT"], + "struct": { + "types": [{ + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i32": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["NATION"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }], + "op": "SET_OP_UNION_DISTINCT" + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "names": ["C_NATIONKEY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..d38857f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-generate-outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-isthmus-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-isthmus-duckdb_outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-isthmus-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except-isthmus-duckdb_outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except_result_schema.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except_result_schema.txt index a4b26b7d..16ed11ce 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/except_result_schema.txt @@ -1 +1 @@ -o_totalprice: decimal128(15, 2) \ No newline at end of file +c_acctbal: decimal128(15, 2) \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..d38857f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-generate-outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-generate-outcome.txt index 210d4ce2..b70e2402 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect_result_schema.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect_result_schema.txt index 85998b3a..dbd0e6c9 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect_result_schema.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/intersect_result_schema.txt @@ -1 +1 @@ -c_nationkey: int32 \ No newline at end of file +n_nationkey: int32 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..2efe13a4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-generate-outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-generate-outcome.txt index 210d4ce2..2efe13a4 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-generate-outcome.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all-generate-outcome.txt @@ -1 +1 @@ -{'schema': True, 'data': True} \ No newline at end of file +{'schema': True, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all_result_data.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all_result_data.txt index f9806d81..8281aed4 100644 --- a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all_result_data.txt +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_all_result_data.txt @@ -1,27 +1,26 @@ -15 -0 -1 -2 -3 -4 5 -6 -7 -8 9 -10 -11 -12 -13 14 -15 -16 17 +2 +10 18 -19 -20 +1 21 +3 +6 +12 +20 +15 +0 +11 +16 22 +7 +8 +13 +19 +4 23 24 \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..e15e5134 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': False} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..b70e2402 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/set_snapshots/relation_test_results/union_distinct-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': False, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate_plan.json new file mode 100644 index 00000000..8719a7f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc-validate_plan.json @@ -0,0 +1,101 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate_plan.json new file mode 100644 index 00000000..4ba66144 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_asc_desc-validate_plan.json @@ -0,0 +1,101 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate_plan.json new file mode 100644 index 00000000..136f3e8a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_asc-validate_plan.json @@ -0,0 +1,101 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_plan.json new file mode 100644 index 00000000..300f7369 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/multi_col_desc_plan.json @@ -0,0 +1,63 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate-datafusion_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate-datafusion_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate_plan.json new file mode 100644 index 00000000..8719a7f4 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/order_by_col_number-validate_plan.json @@ -0,0 +1,101 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + }, + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + { + "selection": { + "directReference": { + "structField": {} + } + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc_plan.json new file mode 100644 index 00000000..9fcc2e5a --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_asc_plan.json @@ -0,0 +1,63 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort_plan.json new file mode 100644 index 00000000..eb933dc1 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_default_sort_plan.json @@ -0,0 +1,63 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-datafusion_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-datafusion_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-datafusion_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-validate-datafusion_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc_plan.json new file mode 100644 index 00000000..300f7369 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DataFusionProducer/single_col_desc_plan.json @@ -0,0 +1,63 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ] + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + } + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 51, + "producer": "datafusion" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc_plan.json new file mode 100644 index 00000000..d2b2fb0c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_desc_plan.json @@ -0,0 +1,138 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + }, + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_plan.json new file mode 100644 index 00000000..a7273ae5 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_asc_plan.json @@ -0,0 +1,138 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + }, + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc_plan.json new file mode 100644 index 00000000..c8ab6681 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_asc_plan.json @@ -0,0 +1,138 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + }, + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_plan.json new file mode 100644 index 00000000..bf6c2576 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/multi_col_desc_plan.json @@ -0,0 +1,111 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number_plan.json new file mode 100644 index 00000000..a7273ae5 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/order_by_col_number_plan.json @@ -0,0 +1,138 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + }, + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, + { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost", + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc_plan.json new file mode 100644 index 00000000..4c3b9c71 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_asc_plan.json @@ -0,0 +1,111 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort_plan.json new file mode 100644 index 00000000..fd302fb7 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_default_sort_plan.json @@ -0,0 +1,111 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 2 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_availqty" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-duckdb_outcome.txt index 2ee6126c..4791ed55 100644 --- a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-duckdb_outcome.txt +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-duckdb_outcome.txt @@ -1 +1 @@ - \ No newline at end of file +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-validate-duckdb_outcome.txt new file mode 100644 index 00000000..2ee6126c --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc_plan.json new file mode 100644 index 00000000..bf6c2576 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/DuckDBProducer/single_col_desc_plan.json @@ -0,0 +1,111 @@ +{ + "relations": [ + { + "root": { + "input": { + "fetch": { + "input": { + "sort": { + "input": { + "project": { + "input": { + "read": { + "baseSchema": { + "names": [ + "ps_partkey", + "ps_suppkey", + "ps_availqty", + "ps_supplycost", + "ps_comment" + ], + "struct": { + "types": [ + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "i64": { + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_NULLABLE" + } + }, + { + "string": { + "nullability": "NULLABILITY_NULLABLE" + } + } + ], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "projection": { + "select": { + "structItems": [ + { + "field": 3 + } + ] + }, + "maintainSingularStruct": true + }, + "namedTable": { + "names": [ + "partsupp" + ] + } + } + }, + "expressions": [ + { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + } + ] + } + }, + "sorts": [ + { + "expr": { + "selection": { + "directReference": { + "structField": {} + }, + "rootReference": {} + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_LAST" + } + ] + } + }, + "count": "10" + } + }, + "names": [ + "ps_supplycost" + ] + } + } + ], + "version": { + "minorNumber": 53, + "producer": "DuckDB" + } +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate_plan.json new file mode 100644 index 00000000..1bc78693 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc-validate_plan.json @@ -0,0 +1,120 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate_plan.json new file mode 100644 index 00000000..e9881ba6 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_asc_desc-validate_plan.json @@ -0,0 +1,120 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate_plan.json new file mode 100644 index 00000000..7515ce20 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc-validate_plan.json @@ -0,0 +1,97 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate_plan.json new file mode 100644 index 00000000..06ec24d5 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/multi_col_desc_asc-validate_plan.json @@ -0,0 +1,120 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate_plan.json new file mode 100644 index 00000000..1bc78693 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/order_by_col_number-validate_plan.json @@ -0,0 +1,120 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5, 6] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }, { + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }, { + "expr": { + "selection": { + "directReference": { + "structField": { + "field": 1 + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST", "PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate_plan.json new file mode 100644 index 00000000..cb91b650 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_asc-validate_plan.json @@ -0,0 +1,97 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate_plan.json new file mode 100644 index 00000000..3c522aff --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_default_sort-validate_plan.json @@ -0,0 +1,97 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 2 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_ASC_NULLS_LAST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_AVAILQTY"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate-isthmus_outcome.txt new file mode 100644 index 00000000..4791ed55 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate-isthmus_outcome.txt @@ -0,0 +1 @@ +True \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate_plan.json b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate_plan.json new file mode 100644 index 00000000..7515ce20 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/IsthmusProducer/single_col_desc-validate_plan.json @@ -0,0 +1,97 @@ +{ + "relations": [{ + "root": { + "input": { + "fetch": { + "common": { + "direct": { + } + }, + "input": { + "sort": { + "common": { + "direct": { + } + }, + "input": { + "project": { + "common": { + "emit": { + "outputMapping": [5] + } + }, + "input": { + "read": { + "common": { + "direct": { + } + }, + "baseSchema": { + "names": ["PS_PARTKEY", "PS_SUPPKEY", "PS_AVAILQTY", "PS_SUPPLYCOST", "PS_COMMENT"], + "struct": { + "types": [{ + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "i64": { + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "decimal": { + "scale": 2, + "precision": 15, + "nullability": "NULLABILITY_REQUIRED" + } + }, { + "string": { + "nullability": "NULLABILITY_REQUIRED" + } + }], + "nullability": "NULLABILITY_REQUIRED" + } + }, + "namedTable": { + "names": ["PARTSUPP"] + } + } + }, + "expressions": [{ + "selection": { + "directReference": { + "structField": { + "field": 3 + } + }, + "rootReference": { + } + } + }] + } + }, + "sorts": [{ + "expr": { + "selection": { + "directReference": { + "structField": { + } + }, + "rootReference": { + } + } + }, + "direction": "SORT_DIRECTION_DESC_NULLS_FIRST" + }] + } + }, + "count": "10" + } + }, + "names": ["PS_SUPPLYCOST"] + } + }] +} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_asc_desc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/multi_col_desc_asc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/order_by_col_number-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_asc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_default_sort-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-acero_outcome.txt new file mode 100644 index 00000000..c4716c68 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-datafusion-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-acero_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-acero_outcome.txt new file mode 100644 index 00000000..c70b321e --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-acero_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-datafusion_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-datafusion_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-duckdb_outcome.txt new file mode 100644 index 00000000..210d4ce2 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/sort_snapshots/relation_test_results/single_col_desc-duckdb-duckdb_outcome.txt @@ -0,0 +1 @@ +{'schema': True, 'data': True} \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/delete-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/delete-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/delete-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/insert-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/insert-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/insert-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/update-validate-datafusion_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/update-validate-datafusion_outcome.txt new file mode 100644 index 00000000..b07405bd --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DataFusionProducer/update-validate-datafusion_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/delete-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/delete-validate-duckdb_outcome.txt new file mode 100644 index 00000000..988574ac --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/delete-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/insert-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/insert-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/insert-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/update-validate-duckdb_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/update-validate-duckdb_outcome.txt new file mode 100644 index 00000000..ad83c8cb --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/DuckDBProducer/update-validate-duckdb_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/delete-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/delete-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/delete-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/insert-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/insert-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/insert-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/update-validate-isthmus_outcome.txt b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/update-validate-isthmus_outcome.txt new file mode 100644 index 00000000..499f5d93 --- /dev/null +++ b/substrait_consumer/tests/functional/relations/write_snapshots/IsthmusProducer/update-validate-isthmus_outcome.txt @@ -0,0 +1 @@ + \ No newline at end of file