From a0407cbbd0abc98b54cdddd098b308e8f88023b6 Mon Sep 17 00:00:00 2001 From: Tsung-Hsien Lee Date: Tue, 30 Jan 2018 16:35:23 -0800 Subject: [PATCH] Update on 01/30/2018 --- epi_judge_cpp/CMakeLists.txt | 1 + epi_judge_cpp/Makefile | 15 ++++ epi_judge_cpp/absent_value_array.cc | 7 +- epi_judge_cpp/adding_credits.cc | 3 +- epi_judge_cpp/advance_by_offsets.cc | 4 +- epi_judge_cpp/alternating_array.cc | 12 +-- epi_judge_cpp/anagrams.cc | 3 +- epi_judge_cpp/apply_permutation.cc | 3 +- epi_judge_cpp/arbitrage.cc | 6 +- epi_judge_cpp/binomial_coefficients.cc | 3 +- epi_judge_cpp/bonus.cc | 3 +- epi_judge_cpp/bst_from_preorder.cc | 3 +- epi_judge_cpp/bst_from_sorted_array.cc | 3 +- epi_judge_cpp/bst_merge.cc | 3 +- epi_judge_cpp/bst_to_sorted_list.cc | 3 +- epi_judge_cpp/buy_and_sell_stock.cc | 4 +- epi_judge_cpp/buy_and_sell_stock_k_times.cc | 3 +- epi_judge_cpp/buy_and_sell_stock_twice.cc | 3 +- epi_judge_cpp/calendar_rendering.cc | 3 +- epi_judge_cpp/circular_queue.cc | 4 +- epi_judge_cpp/closest_int_same_weight.cc | 3 +- epi_judge_cpp/collatz_checker.cc | 4 +- epi_judge_cpp/combinations.cc | 4 +- epi_judge_cpp/convert_base.cc | 3 +- epi_judge_cpp/copy_posting_list.cc | 9 ++- epi_judge_cpp/count_bits.cc | 3 +- epi_judge_cpp/count_inversions.cc | 4 +- epi_judge_cpp/deadlock_detection.cc | 19 +++-- epi_judge_cpp/defective_jugs.cc | 4 +- epi_judge_cpp/delete_from_list.cc | 10 +-- epi_judge_cpp/delete_kth_last_from_list.cc | 3 +- epi_judge_cpp/delete_node_from_list.cc | 10 +-- .../descendant_and_ancestor_in_bst.cc | 18 +++-- epi_judge_cpp/directory_path_normalization.cc | 3 +- epi_judge_cpp/do_lists_overlap.cc | 46 ++++++----- epi_judge_cpp/do_terminated_lists_overlap.cc | 39 ++++----- epi_judge_cpp/drawing_skyline.cc | 4 +- epi_judge_cpp/dutch_national_flag.cc | 13 +-- epi_judge_cpp/element_appearing_once.cc | 3 +- .../enumerate_balanced_parentheses.cc | 7 +- .../enumerate_palindromic_decompositions.cc | 5 +- epi_judge_cpp/enumerate_trees.cc | 8 +- epi_judge_cpp/evaluate_rpn.cc | 3 +- epi_judge_cpp/even_odd_array.cc | 4 +- epi_judge_cpp/even_odd_list_merge.cc | 4 +- epi_judge_cpp/find_salary_threshold.cc | 4 +- epi_judge_cpp/first_missing_positive_entry.cc | 3 +- epi_judge_cpp/gcd.cc | 5 +- epi_judge_cpp/graph_clone.cc | 15 ++-- epi_judge_cpp/gray_code.cc | 3 +- epi_judge_cpp/group_equal_entries.cc | 18 +++-- epi_judge_cpp/hanoi.cc | 4 +- epi_judge_cpp/huffman_coding.cc | 4 +- epi_judge_cpp/insert_in_list.cc | 19 +++-- epi_judge_cpp/insert_operators_in_string.cc | 5 +- epi_judge_cpp/int_as_array_increment.cc | 4 +- epi_judge_cpp/int_as_array_multiply.cc | 4 +- epi_judge_cpp/int_as_list_add.cc | 4 +- epi_judge_cpp/int_square_root.cc | 4 +- epi_judge_cpp/intersect_sorted_arrays.cc | 3 +- epi_judge_cpp/interval_add.cc | 3 +- epi_judge_cpp/intervals_union.cc | 8 +- .../is_anonymous_letter_constructible.cc | 4 +- epi_judge_cpp/is_array_dominated.cc | 26 +++--- epi_judge_cpp/is_circuit_wirable.cc | 5 +- epi_judge_cpp/is_list_cyclic.cc | 4 +- epi_judge_cpp/is_list_palindromic.cc | 3 +- epi_judge_cpp/is_number_palindromic.cc | 3 +- .../is_string_decomposable_into_words.cc | 4 +- epi_judge_cpp/is_string_in_matrix.cc | 3 +- .../is_string_palindromic_punctuation.cc | 5 +- .../is_string_permutable_to_palindrome.cc | 3 +- epi_judge_cpp/is_tree_a_bst.cc | 4 +- epi_judge_cpp/is_tree_balanced.cc | 4 +- epi_judge_cpp/is_tree_symmetric.cc | 4 +- epi_judge_cpp/is_valid_parenthesization.cc | 4 +- epi_judge_cpp/is_valid_sudoku.cc | 4 +- epi_judge_cpp/k_closest_stars.cc | 7 +- epi_judge_cpp/k_largest_in_heap.cc | 4 +- epi_judge_cpp/k_largest_values_in_bst.cc | 3 +- epi_judge_cpp/knapsack.cc | 4 +- ...th_largest_element_in_two_sorted_arrays.cc | 4 +- epi_judge_cpp/kth_largest_in_array.cc | 7 +- epi_judge_cpp/kth_node_in_tree.cc | 9 ++- .../largest_rectangle_under_skyline.cc | 4 +- epi_judge_cpp/left_right_justify_text.cc | 4 +- epi_judge_cpp/levenshtein_distance.cc | 3 +- epi_judge_cpp/line_though_most_points.cc | 3 +- epi_judge_cpp/list_cyclic_right_shift.cc | 3 +- epi_judge_cpp/longest_contained_interval.cc | 3 +- epi_judge_cpp/longest_increasing_subarray.cc | 5 +- .../longest_nondecreasing_subsequence.cc | 4 +- .../longest_subarray_with_distinct_values.cc | 4 +- .../longest_subarray_with_sum_constraint.cc | 4 +- ...est_substring_with_matching_parentheses.cc | 3 +- epi_judge_cpp/look_and_say.cc | 3 +- epi_judge_cpp/lowest_common_ancestor.cc | 13 ++- .../lowest_common_ancestor_close_ancestor.cc | 17 ++-- .../lowest_common_ancestor_in_bst.cc | 13 ++- .../lowest_common_ancestor_with_parent.cc | 18 ++--- epi_judge_cpp/lru_cache.cc | 3 +- epi_judge_cpp/majority_element.cc | 12 +-- epi_judge_cpp/matrix_connected_regions.cc | 23 +++--- epi_judge_cpp/matrix_enclosed_regions.cc | 23 +++--- epi_judge_cpp/matrix_rotation.cc | 10 ++- epi_judge_cpp/max_of_sliding_window.cc | 3 +- epi_judge_cpp/max_product_all_but_one.cc | 3 +- epi_judge_cpp/max_safe_height.cc | 3 +- epi_judge_cpp/max_square_submatrix.cc | 3 +- epi_judge_cpp/max_submatrix.cc | 4 +- epi_judge_cpp/max_teams_in_photograph.cc | 5 +- epi_judge_cpp/max_water_trappable.cc | 3 +- .../maximum_subarray_in_circular_array.cc | 4 +- .../minimum_distance_3_sorted_arrays.cc | 4 +- .../minimum_points_covering_intervals.cc | 3 +- epi_judge_cpp/minimum_waiting_time.cc | 3 +- .../minimum_weight_path_in_a_triangle.cc | 4 +- epi_judge_cpp/n_queens.cc | 3 +- epi_judge_cpp/nearest_repeated_entries.cc | 3 +- epi_judge_cpp/next_permutation.cc | 4 +- epi_judge_cpp/nonuniform_random_number.cc | 3 +- epi_judge_cpp/number_of_score_combinations.cc | 3 +- epi_judge_cpp/number_of_traversals_matrix.cc | 3 +- .../number_of_traversals_staircase.cc | 5 +- epi_judge_cpp/offline_sampling.cc | 4 +- epi_judge_cpp/online_median.cc | 4 +- epi_judge_cpp/online_sampling.cc | 24 +++--- epi_judge_cpp/parity.cc | 3 +- epi_judge_cpp/pascal_triangle.cc | 4 +- epi_judge_cpp/path_sum.cc | 3 +- epi_judge_cpp/permutations.cc | 3 +- epi_judge_cpp/phone_number_mnemonic.cc | 4 +- epi_judge_cpp/picking_up_coins.cc | 4 +- epi_judge_cpp/pivot_list.cc | 10 ++- epi_judge_cpp/power_set.cc | 3 +- epi_judge_cpp/power_x_y.cc | 3 +- epi_judge_cpp/pretty_printing.cc | 4 +- epi_judge_cpp/prime_sieve.cc | 4 +- epi_judge_cpp/primitive_divide.cc | 3 +- epi_judge_cpp/primitive_multiply.cc | 10 +-- epi_judge_cpp/queue_from_stacks.cc | 4 +- epi_judge_cpp/queue_with_max.cc | 4 +- epi_judge_cpp/random_permutation.cc | 3 +- epi_judge_cpp/random_subset.cc | 4 +- epi_judge_cpp/real_square_root.cc | 4 +- epi_judge_cpp/rectangle_intersection.cc | 3 +- epi_judge_cpp/refueling_schedule.cc | 4 +- epi_judge_cpp/regular_expression.cc | 4 +- epi_judge_cpp/remove_duplicates.cc | 11 +-- .../remove_duplicates_from_sorted_list.cc | 4 +- epi_judge_cpp/replace_and_remove.cc | 17 ++-- epi_judge_cpp/reverse_bits.cc | 3 +- epi_judge_cpp/reverse_digits.cc | 3 +- epi_judge_cpp/reverse_sublist.cc | 4 +- epi_judge_cpp/reverse_words.cc | 15 +++- epi_judge_cpp/road_network.cc | 4 +- epi_judge_cpp/roman_to_integer.cc | 4 +- epi_judge_cpp/rook_attack.cc | 9 ++- epi_judge_cpp/rotate_array.cc | 18 +++-- epi_judge_cpp/rotate_array_permutation.cc | 11 +++ epi_judge_cpp/run_length_compression.cc | 4 +- epi_judge_cpp/search_entry_equal_to_index.cc | 3 +- .../search_first_greater_value_in_bst.cc | 4 +- epi_judge_cpp/search_first_key.cc | 4 +- epi_judge_cpp/search_for_min_max_in_array.cc | 4 +- epi_judge_cpp/search_for_missing_element.cc | 3 +- epi_judge_cpp/search_frequent_items.cc | 7 +- epi_judge_cpp/search_in_list.cc | 4 +- epi_judge_cpp/search_maze.cc | 4 +- epi_judge_cpp/search_row_col_sorted_matrix.cc | 3 +- epi_judge_cpp/search_shifted_sorted_array.cc | 3 +- epi_judge_cpp/search_unknown_length_array.cc | 3 +- .../smallest_nonconstructible_value.cc | 4 +- .../smallest_subarray_covering_all_values.cc | 3 +- .../smallest_subarray_covering_set.cc | 20 ++--- epi_judge_cpp/snake_string.cc | 3 +- epi_judge_cpp/sort_almost_sorted_array.cc | 8 +- .../sort_increasing_decreasing_array.cc | 4 +- epi_judge_cpp/sort_list.cc | 3 +- epi_judge_cpp/sorted_array_remove_dups.cc | 3 +- epi_judge_cpp/sorted_arrays_merge.cc | 4 +- epi_judge_cpp/sorted_list_to_bst.cc | 15 ++-- epi_judge_cpp/sorted_lists_merge.cc | 4 +- epi_judge_cpp/spiral_ordering_segments.cc | 3 +- epi_judge_cpp/spreadsheet_encoding.cc | 4 +- epi_judge_cpp/stack_with_max.cc | 4 +- ...ng_decompositions_into_dictionary_words.cc | 3 +- .../string_integer_interconversion.cc | 10 ++- epi_judge_cpp/string_transformability.cc | 3 +- epi_judge_cpp/substring_match.cc | 3 +- epi_judge_cpp/successor_in_tree.cc | 8 +- epi_judge_cpp/sudoku_solve.cc | 13 +-- epi_judge_cpp/sum_root_to_leaf.cc | 4 +- epi_judge_cpp/sunset_view.cc | 3 +- epi_judge_cpp/swap_bits.cc | 3 +- epi_judge_cpp/task_pairing.cc | 4 +- .../test_framework/generic_test_handler.h | 13 +-- epi_judge_cpp/test_framework/test_utils.h | 34 +++----- .../test_framework/test_utils_console.h | 30 ++++--- .../test_framework/test_utils_generic_main.h | 8 +- .../test_framework/test_utils_meta.h | 7 +- epi_judge_cpp/three_sum.cc | 3 +- epi_judge_cpp/tree_connect_leaves.cc | 3 +- epi_judge_cpp/tree_exterior.cc | 3 +- epi_judge_cpp/tree_from_preorder_inorder.cc | 3 +- epi_judge_cpp/tree_from_preorder_with_null.cc | 3 +- epi_judge_cpp/tree_inorder.cc | 4 +- epi_judge_cpp/tree_level_order.cc | 4 +- epi_judge_cpp/tree_postorder.cc | 4 +- epi_judge_cpp/tree_preorder.cc | 4 +- epi_judge_cpp/tree_right_sibling.cc | 3 +- epi_judge_cpp/tree_with_parent_inorder.cc | 3 +- epi_judge_cpp/two_sum.cc | 3 +- epi_judge_cpp/uniform_random_number.cc | 3 +- epi_judge_cpp/valid_ip_addresses.cc | 5 +- epi_judge_cpp/zip_list.cc | 4 +- epi_judge_java/Makefile | 4 +- epi_judge_java/epi/AbsentValueArray.java | 4 +- epi_judge_java/epi/Anagrams.java | 4 +- epi_judge_java/epi/Arbitrage.java | 2 +- epi_judge_java/epi/Combinations.java | 4 +- epi_judge_java/epi/CopyPostingList.java | 8 +- epi_judge_java/epi/DeadlockDetection.java | 12 +-- epi_judge_java/epi/DeleteNodeFromList.java | 7 +- .../epi/DescendantAndAncestorInBst.java | 16 ++-- epi_judge_java/epi/DoListsOverlap.java | 40 ++++----- .../epi/DoTerminatedListsOverlap.java | 20 ++--- epi_judge_java/epi/DutchNationalFlag.java | 10 +-- .../EnumeratePalindromicDecompositions.java | 4 +- epi_judge_java/epi/EnumerateTrees.java | 8 +- epi_judge_java/epi/GraphClone.java | 6 +- epi_judge_java/epi/GroupEqualEntries.java | 18 ++--- epi_judge_java/epi/InsertInList.java | 13 +-- epi_judge_java/epi/IntervalsUnion.java | 18 ++--- epi_judge_java/epi/IsArrayDominated.java | 21 +++-- epi_judge_java/epi/IsCircuitWirable.java | 2 +- epi_judge_java/epi/KthLargestInArray.java | 8 +- epi_judge_java/epi/LowestCommonAncestor.java | 11 ++- .../LowestCommonAncestorCloseAncestor.java | 8 +- .../epi/LowestCommonAncestorInBst.java | 12 ++- .../epi/LowestCommonAncestorWithParent.java | 10 +-- epi_judge_java/epi/MajorityElement.java | 6 +- .../epi/MatrixConnectedRegions.java | 18 ++--- epi_judge_java/epi/MatrixRotation.java | 7 +- epi_judge_java/epi/MaxTeamsInPhotograph.java | 2 +- epi_judge_java/epi/NQueens.java | 4 +- epi_judge_java/epi/OnlineSampling.java | 8 +- epi_judge_java/epi/Permutations.java | 4 +- epi_judge_java/epi/PivotList.java | 22 ++--- epi_judge_java/epi/PowerSet.java | 4 +- epi_judge_java/epi/RemoveDuplicates.java | 8 +- epi_judge_java/epi/ReplaceAndRemove.java | 12 +-- epi_judge_java/epi/ReverseWords.java | 6 +- epi_judge_java/epi/RookAttack.java | 6 +- epi_judge_java/epi/RotateArray.java | 14 +++- epi_judge_java/epi/SearchFrequentItems.java | 8 +- .../epi/SmallestSubarrayCoveringSet.java | 16 ++-- epi_judge_java/epi/SortedListToBst.java | 12 +-- .../epi/StringIntegerInterconversion.java | 6 +- epi_judge_java/epi/SudokuSolve.java | 10 +-- .../epi/test_framework/BinaryTreeUtils.java | 14 ++-- .../test_framework/GenericTestHandler.java | 81 +++++++++++-------- .../epi/test_framework/TestHandler.java | 2 +- .../epi/test_framework/TestUtils.java | 29 ++----- .../epi/test_framework/TestUtilsConsole.java | 40 +++++---- epi_judge_python/alternating_array.py | 22 ++--- epi_judge_python/arbitrage.py | 2 +- epi_judge_python/copy_posting_list.py | 37 +++++---- epi_judge_python/deadlock_detection.py | 12 +-- epi_judge_python/delete_from_list.py | 4 +- epi_judge_python/delete_node_from_list.py | 4 +- .../descendant_and_ancestor_in_bst.py | 11 +-- epi_judge_python/do_lists_overlap.py | 34 ++++---- .../do_terminated_lists_overlap.py | 30 +++---- epi_judge_python/dutch_national_flag.py | 22 ++--- epi_judge_python/enumerate_trees.py | 4 +- epi_judge_python/graph_clone.py | 8 +- epi_judge_python/group_equal_entries.py | 18 ++--- epi_judge_python/insert_in_list.py | 10 +-- epi_judge_python/intervals_union.py | 8 +- epi_judge_python/is_array_dominated.py | 17 ++-- epi_judge_python/is_circuit_wirable.py | 2 +- epi_judge_python/kth_node_in_tree.py | 4 +- epi_judge_python/lowest_common_ancestor.py | 5 +- .../lowest_common_ancestor_close_ancestor.py | 9 +-- .../lowest_common_ancestor_in_bst.py | 6 +- .../lowest_common_ancestor_with_parent.py | 7 +- epi_judge_python/majority_element.py | 6 +- epi_judge_python/matrix_connected_regions.py | 8 +- epi_judge_python/matrix_rotation.py | 6 +- epi_judge_python/max_teams_in_photograph.py | 3 +- epi_judge_python/online_sampling.py | 18 ++--- epi_judge_python/pivot_list.py | 22 ++--- epi_judge_python/reverse_words.py | 8 +- epi_judge_python/rook_attack.py | 5 +- epi_judge_python/rotate_array.py | 15 +++- epi_judge_python/search_frequent_items.py | 6 +- .../smallest_subarray_covering_set.py | 12 +-- epi_judge_python/sorted_list_to_bst.py | 10 +-- .../string_integer_interconversion.py | 6 +- epi_judge_python/sudoku_solve.py | 12 +-- .../test_framework/binary_tree_utils.py | 3 +- .../test_framework/console_color.py | 23 +++--- .../test_framework/generic_test_handler.py | 41 +++++----- epi_judge_python/test_framework/platform.py | 2 - epi_judge_python/test_framework/test_utils.py | 67 ++------------- .../test_framework/test_utils_console.py | 51 +++++++----- .../test_utils_deserialization.py | 4 +- .../test_framework/test_utils_generic_main.py | 12 ++- test_data/a_b_sqrt2.tsv | 1 - test_data/absent_value_array.tsv | 1 - test_data/add_binary.tsv | 1 - test_data/adding_credits.tsv | 1 - test_data/advance_by_offsets.tsv | 1 - test_data/alternating_array.tsv | 1 - test_data/anagrams.tsv | 1 - test_data/apply_permutation.tsv | 1 - test_data/arbitrage.tsv | 1 - test_data/bentley_bsearch.tsv | 1 - test_data/binary_search_ai=i.tsv | 1 - ..._search_circular_array_with_duplicates.tsv | 1 - test_data/binary_search_larger_k.tsv | 1 - test_data/binomial_coefficients.tsv | 1 - test_data/bonus.tsv | 1 - test_data/bst_from_preorder.tsv | 1 - test_data/bst_from_sorted_array.tsv | 1 - test_data/bst_merge.tsv | 1 - test_data/bst_to_sorted_list.tsv | 1 - test_data/buy_and_sell_stock.tsv | 1 - test_data/buy_and_sell_stock_k_times.tsv | 1 - test_data/buy_and_sell_stock_twice.tsv | 1 - test_data/calendar_rendering.tsv | 1 - test_data/can_string_be_palindrome.tsv | 1 - test_data/circular_queue.tsv | 1 - test_data/climb_stairs.tsv | 1 - test_data/closest_int_same_weight.tsv | 1 - test_data/collatz_checker.tsv | 1 - test_data/combinations.tsv | 1 - test_data/convert_base.tsv | 1 - test_data/copy_posting_list.tsv | 1 - test_data/count_bits.tsv | 1 - test_data/count_inversions.tsv | 1 - test_data/deadlock_detection.tsv | 1 - test_data/defective_jugs.tsv | 1 - test_data/delete_from_list.tsv | 1 - test_data/delete_kth_last_from_list.tsv | 1 - test_data/delete_node_from_list.tsv | 1 - test_data/descendant_and_ancestor_in_bst.tsv | 1 - test_data/directory_path_normalization.tsv | 1 - test_data/do_lists_overlap.tsv | 1 - test_data/do_terminated_lists_overlap.tsv | 1 - test_data/drawing_skyline.tsv | 1 - test_data/dutch_national_flag.tsv | 1 - test_data/dutch_national_flag_small.tsv | 1 - test_data/element_appearing_once.tsv | 1 - test_data/enumerate_balanced_parentheses.tsv | 1 - .../enumerate_palindromic_decompositions.tsv | 1 - test_data/enumerate_trees.tsv | 1 - test_data/evaluate_rpn.tsv | 1 - test_data/even_odd_array.tsv | 1 - test_data/even_odd_list_merge.tsv | 1 - test_data/fibonacci.tsv | 1 - test_data/find_missing_and_duplicate.tsv | 1 - test_data/find_salary_threshold.tsv | 1 - test_data/first_missing_positive_entry.tsv | 1 - test_data/gcd.tsv | 1 - test_data/graph_clone.tsv | 1 - test_data/gray_code.tsv | 1 - test_data/group_equal_entries.tsv | 1 - test_data/hanoi.tsv | 1 - test_data/huffman_coding.tsv | 1 - test_data/insert_in_list.tsv | 1 - test_data/insert_operators_in_string.tsv | 1 - test_data/int_as_array_increment.tsv | 1 - test_data/int_as_array_multiply.tsv | 1 - test_data/int_as_list_add.tsv | 1 - test_data/int_square_root.tsv | 1 - test_data/intersect_sorted_arrays.tsv | 1 - test_data/interval_add.tsv | 1 - test_data/intervals_union.tsv | 1 - .../is_anonymous_letter_constructible.tsv | 1 - test_data/is_array_dominated.tsv | 1 - test_data/is_circuit_wirable.tsv | 1 - test_data/is_list_cyclic.tsv | 1 - test_data/is_list_palindromic.tsv | 1 - test_data/is_number_palindromic.tsv | 1 - .../is_string_decomposable_into_words.tsv | 1 - test_data/is_string_in_matrix.tsv | 1 - test_data/is_string_palindromic.tsv | 1 - .../is_string_palindromic_punctuation.tsv | 1 - test_data/is_tree_a_bst.tsv | 1 - test_data/is_tree_balanced.tsv | 1 - test_data/is_tree_symmetric.tsv | 1 - test_data/is_valid_parenthesization.tsv | 1 - test_data/is_valid_sudoku.tsv | 1 - test_data/k_closest_stars.tsv | 1 - test_data/k_largest_in_heap.tsv | 1 - test_data/k_largest_values_in_bst.tsv | 1 - test_data/knapsack.tsv | 1 - .../kth_largest_element_in_long_array.tsv | 1 - ...h_largest_element_in_two_sorted_arrays.tsv | 1 - test_data/kth_largest_in_array.tsv | 1 - test_data/kth_node_in_tree.tsv | 1 - test_data/largest_rectangle_under_skyline.tsv | 1 - test_data/left_right_justify_text.tsv | 1 - test_data/levenshtein_distance.tsv | 1 - test_data/line_though_most_points.tsv | 1 - test_data/list_cyclic_right_shift.tsv | 1 - test_data/longest_contained_interval.tsv | 1 - test_data/longest_increasing_subarray.tsv | 1 - .../longest_nondecreasing_subsequence.tsv | 1 - .../longest_subarray_with_distinct_values.tsv | 1 - .../longest_subarray_with_sum_constraint.tsv | 1 - ...st_substring_with_matching_parentheses.tsv | 1 - test_data/look_and_say.tsv | 1 - test_data/lowest_common_ancestor.tsv | 1 - test_data/lowest_common_ancestor_in_bst.tsv | 1 - test_data/lru_cache.tsv | 1 - test_data/majority_element.tsv | 1 - test_data/making_change.tsv | 1 - test_data/matrix_enclosed_regions.tsv | 1 - test_data/matrix_rotation.tsv | 1 - test_data/max_of_sliding_window.tsv | 1 - test_data/max_product_all_but_one.tsv | 1 - test_data/max_safe_height.tsv | 1 - test_data/max_square_submatrix.tsv | 1 - test_data/max_submatrix.tsv | 1 - test_data/max_sum_subarray.tsv | 1 - test_data/max_teams_in_photograph.tsv | 1 - test_data/max_trapped_water.tsv | 1 - test_data/max_water_trappable.tsv | 1 - .../maximum_subarray_in_circular_array.tsv | 1 - .../minimum_distance_3_sorted_arrays.tsv | 1 - test_data/minimum_waiting_time.tsv | 1 - .../minimum_weight_path_in_a_triangle.tsv | 1 - test_data/n_queens.tsv | 1 - test_data/nearest_repeated_entries.tsv | 1 - test_data/next_permutation.tsv | 1 - test_data/nonuniform_random_number.tsv | 1 - test_data/number_of_score_combinations.tsv | 1 - test_data/number_of_traversals_matrix.tsv | 1 - test_data/number_of_traversals_staircase.tsv | 1 - test_data/offline_sampling.tsv | 1 - test_data/online_median.tsv | 1 - test_data/online_sampling.tsv | 1 - test_data/painting.tsv | 1 - test_data/parity.tsv | 1 - test_data/pascal_triangle.tsv | 1 - test_data/path_sum.tsv | 1 - test_data/permutations.tsv | 1 - test_data/phone_number_mnemonic.tsv | 1 - test_data/picking_up_coins.tsv | 1 - test_data/pivot_list.tsv | 1 - test_data/points_covering_intervals.tsv | 1 - test_data/power_set.tsv | 1 - test_data/power_x_y.tsv | 1 - test_data/pretty_printing.tsv | 1 - test_data/prime_sieve.tsv | 1 - test_data/primitive_divide.tsv | 1 - test_data/primitive_multiply.tsv | 1 - test_data/queue_from_stacks.tsv | 1 - test_data/queue_with_max.tsv | 1 - test_data/random_permutation.tsv | 1 - test_data/random_subset.tsv | 1 - test_data/range_lookup_in_bst.tsv | 1 - test_data/real_square_root.tsv | 1 - test_data/rectangle_intersection.tsv | 1 - test_data/refueling_schedule.tsv | 1 - test_data/regular_expression.tsv | 1 - test_data/remove_duplicates.tsv | 1 - .../remove_duplicates_from_sorted_list.tsv | 1 - test_data/replace_and_remove.tsv | 1 - test_data/reverse_bits.tsv | 1 - test_data/reverse_digits.tsv | 1 - test_data/reverse_sublist.tsv | 1 - test_data/reverse_words.tsv | 1 - test_data/road_network.tsv | 1 - test_data/roman_to_integer.tsv | 1 - test_data/rook_attack.tsv | 1 - test_data/rotate_array.tsv | 1 - test_data/run_length_compression.tsv | 1 - .../search_first_greater_value_in_bst.tsv | 1 - test_data/search_first_key.tsv | 1 - test_data/search_for_min_max_in_array.tsv | 1 - test_data/search_frequent_items.tsv | 1 - test_data/search_in_bst.tsv | 1 - test_data/search_in_list.tsv | 1 - test_data/search_maze.tsv | 1 - test_data/search_row_col_sorted_matrix.tsv | 1 - test_data/search_shifted_sorted_array.tsv | 1 - test_data/search_unknown_length_array.tsv | 1 - test_data/smallest_nonconstructible_value.tsv | 1 - test_data/smallest_subarray_covering_set.tsv | 1 - test_data/snake_string.tsv | 1 - test_data/sort_almost_sorted_array.tsv | 1 - .../sort_increasing_decreasing_array.tsv | 1 - test_data/sort_list.tsv | 1 - test_data/sorted_array_remove_dups.tsv | 1 - test_data/sorted_arrays_merge.tsv | 1 - test_data/sorted_list_to_bst.tsv | 1 - test_data/sorted_lists_merge.tsv | 1 - test_data/spiral_ordering_segments.tsv | 1 - test_data/spreadsheet_encoding.tsv | 1 - test_data/stack_with_max.tsv | 1 - ...g_decompositions_into_dictionary_words.tsv | 1 - test_data/string_integer_interconversion.tsv | 1 - test_data/string_transformability.tsv | 1 - test_data/subsequence_cover.tsv | 1 - test_data/substring_match.tsv | 1 - test_data/successor_in_tree.tsv | 1 - test_data/sudoku_solve.tsv | 1 - test_data/sum_root_to_leaf.tsv | 1 - test_data/sunset_view.tsv | 1 - test_data/swap_bits.tsv | 1 - test_data/task_pairing.tsv | 1 - test_data/three_sum.tsv | 1 - test_data/tree_connect_leaves.tsv | 1 - test_data/tree_exterior.tsv | 1 - test_data/tree_from_preorder_inorder.tsv | 1 - test_data/tree_from_preorder_with_null.tsv | 1 - test_data/tree_inorder.tsv | 1 - test_data/tree_level_order.tsv | 1 - test_data/tree_postorder.tsv | 1 - test_data/tree_preorder.tsv | 1 - test_data/tree_right_sibling.tsv | 1 - test_data/tree_with_parent_inorder.tsv | 1 - test_data/two_sorted_arrays_merge.tsv | 1 - test_data/two_sum.tsv | 1 - test_data/uniform_random_number.tsv | 1 - test_data/valid_ip_addresses.tsv | 1 - test_data/zip_list.tsv | 1 - 531 files changed, 1415 insertions(+), 1372 deletions(-) create mode 100644 epi_judge_cpp/rotate_array_permutation.cc diff --git a/epi_judge_cpp/CMakeLists.txt b/epi_judge_cpp/CMakeLists.txt index 159b91c07..b64083bc8 100644 --- a/epi_judge_cpp/CMakeLists.txt +++ b/epi_judge_cpp/CMakeLists.txt @@ -168,6 +168,7 @@ add_executable(road_network road_network.cc) add_executable(roman_to_integer roman_to_integer.cc) add_executable(rook_attack rook_attack.cc) add_executable(rotate_array rotate_array.cc) +add_executable(rotate_array_permutation rotate_array_permutation.cc) add_executable(run_length_compression run_length_compression.cc) add_executable(search_entry_equal_to_index search_entry_equal_to_index.cc) add_executable(search_first_greater_value_in_bst search_first_greater_value_in_bst.cc) diff --git a/epi_judge_cpp/Makefile b/epi_judge_cpp/Makefile index fd11f3c1a..3d4272196 100644 --- a/epi_judge_cpp/Makefile +++ b/epi_judge_cpp/Makefile @@ -2378,6 +2378,21 @@ rotate_array_dbg: $(BUILD_DIR)/rotate_array_dbg .PHONY: rotate_array rotate_array_dbg +# rotate_array_permutation.cc + +$(BUILD_DIR)/rotate_array_permutation: $(SRC_DIR)/rotate_array_permutation.cc $(BUILD_DIR) + $(CXX_COMPILER) $(CXX_FLAGS_RELEASE) -o $@ $< +rotate_array_permutation: $(BUILD_DIR)/rotate_array_permutation + $< --test_data_dir $(TEST_DATA_DIR) + +$(BUILD_DIR)/rotate_array_permutation_dbg: $(SRC_DIR)/rotate_array_permutation.cc $(BUILD_DIR) + $(CXX_COMPILER) $(CXX_FLAGS_DEBUG) -o $@ $< +rotate_array_permutation_dbg: $(BUILD_DIR)/rotate_array_permutation_dbg + $< --test_data_dir $(TEST_DATA_DIR) + +.PHONY: rotate_array_permutation rotate_array_permutation_dbg + + # run_length_compression.cc $(BUILD_DIR)/run_length_compression: $(SRC_DIR)/run_length_compression.cc $(BUILD_DIR) diff --git a/epi_judge_cpp/absent_value_array.cc b/epi_judge_cpp/absent_value_array.cc index 76c0ea503..770cbbfc9 100644 --- a/epi_judge_cpp/absent_value_array.cc +++ b/epi_judge_cpp/absent_value_array.cc @@ -12,9 +12,9 @@ int FindMissingElement(vector::const_iterator stream_begin, return 0; } -int FindMissingElementWrapper(const vector& data) { +int FindMissingElementWrapper(const vector& stream) { try { - return FindMissingElement(cbegin(data), cend(data)); + return FindMissingElement(cbegin(stream), cend(stream)); } catch (invalid_argument&) { throw TestFailureException("Unexpected no_missing_element exception"); } @@ -23,7 +23,8 @@ int FindMissingElementWrapper(const vector& data) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "absent_value_array.tsv", + std::vector param_names{"stream"}; + generic_test_main(argc, argv, param_names, "absent_value_array.tsv", &FindMissingElementWrapper); return 0; } diff --git a/epi_judge_cpp/adding_credits.cc b/epi_judge_cpp/adding_credits.cc index 0aa20e07f..a5d016675 100644 --- a/epi_judge_cpp/adding_credits.cc +++ b/epi_judge_cpp/adding_credits.cc @@ -74,7 +74,8 @@ void ClientsCreditsInfoTester(const std::vector& ops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "adding_credits.tsv", + std::vector param_names{"ops"}; + generic_test_main(argc, argv, param_names, "adding_credits.tsv", &ClientsCreditsInfoTester); return 0; } diff --git a/epi_judge_cpp/advance_by_offsets.cc b/epi_judge_cpp/advance_by_offsets.cc index fc9ee899a..b0ec6cfdf 100644 --- a/epi_judge_cpp/advance_by_offsets.cc +++ b/epi_judge_cpp/advance_by_offsets.cc @@ -10,6 +10,8 @@ bool CanReachEnd(const vector& max_advance_steps) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "advance_by_offsets.tsv", &CanReachEnd); + std::vector param_names{"max_advance_steps"}; + generic_test_main(argc, argv, param_names, "advance_by_offsets.tsv", + &CanReachEnd); return 0; } diff --git a/epi_judge_cpp/alternating_array.cc b/epi_judge_cpp/alternating_array.cc index d20e15344..b293cd03f 100644 --- a/epi_judge_cpp/alternating_array.cc +++ b/epi_judge_cpp/alternating_array.cc @@ -11,7 +11,7 @@ void Rearrange(vector* A_ptr) { } void CheckAnswer(const vector& A) { - for (size_t i = 0; i < A.size(); ++i) { + for (int i = 0; i < A.size(); ++i) { if (i % 2) { if (A[i] < A[i - 1]) { throw TestFailureException(""); @@ -36,17 +36,19 @@ void CheckAnswer(const vector& A) { } } -void RearrangeWrapper(TestTimer& timer, vector v) { +void RearrangeWrapper(TestTimer& timer, vector A) { timer.Start(); - Rearrange(&v); + Rearrange(&A); timer.Stop(); - CheckAnswer(v); + CheckAnswer(A); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "alternating_array.tsv", &RearrangeWrapper); + std::vector param_names{"timer", "A"}; + generic_test_main(argc, argv, param_names, "alternating_array.tsv", + &RearrangeWrapper); return 0; } diff --git a/epi_judge_cpp/anagrams.cc b/epi_judge_cpp/anagrams.cc index 5728959c9..05b2508c7 100644 --- a/epi_judge_cpp/anagrams.cc +++ b/epi_judge_cpp/anagrams.cc @@ -12,8 +12,9 @@ vector> FindAnagrams(const vector& dictionary) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { + std::vector param_names{"dictionary"}; generic_test_main( - argc, argv, "anagrams.tsv", &FindAnagrams, + argc, argv, param_names, "anagrams.tsv", &FindAnagrams, &UnorderedComparator>>); return 0; } diff --git a/epi_judge_cpp/apply_permutation.cc b/epi_judge_cpp/apply_permutation.cc index 30437ffaf..02b6bc5d9 100644 --- a/epi_judge_cpp/apply_permutation.cc +++ b/epi_judge_cpp/apply_permutation.cc @@ -15,7 +15,8 @@ vector ApplyPermutationWrapper(vector perm, vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "apply_permutation.tsv", + std::vector param_names{"perm", "A"}; + generic_test_main(argc, argv, param_names, "apply_permutation.tsv", &ApplyPermutationWrapper); return 0; } diff --git a/epi_judge_cpp/arbitrage.cc b/epi_judge_cpp/arbitrage.cc index 564fb0a9a..2f15e8749 100644 --- a/epi_judge_cpp/arbitrage.cc +++ b/epi_judge_cpp/arbitrage.cc @@ -2,7 +2,7 @@ using std::vector; -bool IsArbitrageExist(vector> G) { +bool IsArbitrageExist(vector> graph) { // Implement this placeholder. return true; } @@ -10,6 +10,8 @@ bool IsArbitrageExist(vector> G) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "arbitrage.tsv", &IsArbitrageExist); + std::vector param_names{"graph"}; + generic_test_main(argc, argv, param_names, "arbitrage.tsv", + &IsArbitrageExist); return 0; } diff --git a/epi_judge_cpp/binomial_coefficients.cc b/epi_judge_cpp/binomial_coefficients.cc index 34035394e..dd2545c2f 100644 --- a/epi_judge_cpp/binomial_coefficients.cc +++ b/epi_judge_cpp/binomial_coefficients.cc @@ -8,7 +8,8 @@ int ComputeBinomialCoefficient(int n, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "binomial_coefficients.tsv", + std::vector param_names{"n", "k"}; + generic_test_main(argc, argv, param_names, "binomial_coefficients.tsv", &ComputeBinomialCoefficient); return 0; } diff --git a/epi_judge_cpp/bonus.cc b/epi_judge_cpp/bonus.cc index d91fdbd30..080a3b8e5 100644 --- a/epi_judge_cpp/bonus.cc +++ b/epi_judge_cpp/bonus.cc @@ -10,6 +10,7 @@ int CalculateBonus(const vector& productivity) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "bonus.tsv", &CalculateBonus); + std::vector param_names{"productivity"}; + generic_test_main(argc, argv, param_names, "bonus.tsv", &CalculateBonus); return 0; } diff --git a/epi_judge_cpp/bst_from_preorder.cc b/epi_judge_cpp/bst_from_preorder.cc index 63126b071..f0af4ef5b 100644 --- a/epi_judge_cpp/bst_from_preorder.cc +++ b/epi_judge_cpp/bst_from_preorder.cc @@ -14,7 +14,8 @@ unique_ptr> RebuildBSTFromPreorder( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "bst_from_preorder.tsv", + std::vector param_names{"preorder_sequence"}; + generic_test_main(argc, argv, param_names, "bst_from_preorder.tsv", &RebuildBSTFromPreorder); return 0; } diff --git a/epi_judge_cpp/bst_from_sorted_array.cc b/epi_judge_cpp/bst_from_sorted_array.cc index 35d9ae923..ebc54b740 100644 --- a/epi_judge_cpp/bst_from_sorted_array.cc +++ b/epi_judge_cpp/bst_from_sorted_array.cc @@ -29,7 +29,8 @@ int BuildMinHeightBSTFromSortedArrayWrapper(TestTimer& timer, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "bst_from_sorted_array.tsv", + std::vector param_names{"timer", "A"}; + generic_test_main(argc, argv, param_names, "bst_from_sorted_array.tsv", &BuildMinHeightBSTFromSortedArrayWrapper); return 0; } diff --git a/epi_judge_cpp/bst_merge.cc b/epi_judge_cpp/bst_merge.cc index b2a1a2eca..db23b39db 100644 --- a/epi_judge_cpp/bst_merge.cc +++ b/epi_judge_cpp/bst_merge.cc @@ -13,6 +13,7 @@ shared_ptr> MergeTwoBSTs(shared_ptr> A, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "bst_merge.tsv", &MergeTwoBSTs); + std::vector param_names{"A", "B"}; + generic_test_main(argc, argv, param_names, "bst_merge.tsv", &MergeTwoBSTs); return 0; } diff --git a/epi_judge_cpp/bst_to_sorted_list.cc b/epi_judge_cpp/bst_to_sorted_list.cc index e8f0cd29a..443a3f615 100644 --- a/epi_judge_cpp/bst_to_sorted_list.cc +++ b/epi_judge_cpp/bst_to_sorted_list.cc @@ -36,7 +36,8 @@ std::vector BSTToDoublyLinkedListWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "bst_to_sorted_list.tsv", + std::vector param_names{"timer", "tree"}; + generic_test_main(argc, argv, param_names, "bst_to_sorted_list.tsv", &BSTToDoublyLinkedListWrapper); return 0; } diff --git a/epi_judge_cpp/buy_and_sell_stock.cc b/epi_judge_cpp/buy_and_sell_stock.cc index c17caa78e..4c979f710 100644 --- a/epi_judge_cpp/buy_and_sell_stock.cc +++ b/epi_judge_cpp/buy_and_sell_stock.cc @@ -10,6 +10,8 @@ double BuyAndSellStockOnce(const vector& prices) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "buy_and_sell_stock.tsv", &BuyAndSellStockOnce); + std::vector param_names{"prices"}; + generic_test_main(argc, argv, param_names, "buy_and_sell_stock.tsv", + &BuyAndSellStockOnce); return 0; } diff --git a/epi_judge_cpp/buy_and_sell_stock_k_times.cc b/epi_judge_cpp/buy_and_sell_stock_k_times.cc index 3c7b35e66..188dce561 100644 --- a/epi_judge_cpp/buy_and_sell_stock_k_times.cc +++ b/epi_judge_cpp/buy_and_sell_stock_k_times.cc @@ -10,7 +10,8 @@ double BuyAndSellStockKTimes(const vector& prices, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "buy_and_sell_stock_k_times.tsv", + std::vector param_names{"&prices", "k"}; + generic_test_main(argc, argv, param_names, "buy_and_sell_stock_k_times.tsv", &BuyAndSellStockKTimes); return 0; } diff --git a/epi_judge_cpp/buy_and_sell_stock_twice.cc b/epi_judge_cpp/buy_and_sell_stock_twice.cc index aecf9b323..6df815a76 100644 --- a/epi_judge_cpp/buy_and_sell_stock_twice.cc +++ b/epi_judge_cpp/buy_and_sell_stock_twice.cc @@ -10,7 +10,8 @@ double BuyAndSellStockTwice(const vector& prices) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "buy_and_sell_stock_twice.tsv", + std::vector param_names{"prices"}; + generic_test_main(argc, argv, param_names, "buy_and_sell_stock_twice.tsv", &BuyAndSellStockTwice); return 0; } diff --git a/epi_judge_cpp/calendar_rendering.cc b/epi_judge_cpp/calendar_rendering.cc index b5df37de0..72e1037ee 100644 --- a/epi_judge_cpp/calendar_rendering.cc +++ b/epi_judge_cpp/calendar_rendering.cc @@ -19,7 +19,8 @@ struct SerializationTraits : UserSerTraits {}; #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "calendar_rendering.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "calendar_rendering.tsv", &FindMaxSimultaneousEvents); return 0; } diff --git a/epi_judge_cpp/circular_queue.cc b/epi_judge_cpp/circular_queue.cc index b72f1687c..340e83068 100644 --- a/epi_judge_cpp/circular_queue.cc +++ b/epi_judge_cpp/circular_queue.cc @@ -84,6 +84,8 @@ void QueueTester(const std::vector& ops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "circular_queue.tsv", &QueueTester); + std::vector param_names{"ops"}; + generic_test_main(argc, argv, param_names, "circular_queue.tsv", + &QueueTester); return 0; } diff --git a/epi_judge_cpp/closest_int_same_weight.cc b/epi_judge_cpp/closest_int_same_weight.cc index bb0633f52..2e4c3f0b0 100644 --- a/epi_judge_cpp/closest_int_same_weight.cc +++ b/epi_judge_cpp/closest_int_same_weight.cc @@ -8,7 +8,8 @@ unsigned long ClosestIntSameBitCount(unsigned long x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "closest_int_same_weight.tsv", + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "closest_int_same_weight.tsv", &ClosestIntSameBitCount); return 0; } diff --git a/epi_judge_cpp/collatz_checker.cc b/epi_judge_cpp/collatz_checker.cc index 123c00d77..6d65f0e1d 100644 --- a/epi_judge_cpp/collatz_checker.cc +++ b/epi_judge_cpp/collatz_checker.cc @@ -10,6 +10,8 @@ bool TestCollatzConjecture(int n) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "collatz_checker.tsv", &TestCollatzConjecture); + std::vector param_names{"n"}; + generic_test_main(argc, argv, param_names, "collatz_checker.tsv", + &TestCollatzConjecture); return 0; } diff --git a/epi_judge_cpp/combinations.cc b/epi_judge_cpp/combinations.cc index 59e41eb60..0d549756b 100644 --- a/epi_judge_cpp/combinations.cc +++ b/epi_judge_cpp/combinations.cc @@ -10,7 +10,9 @@ vector> Combinations(int n, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "combinations.tsv", &Combinations, + std::vector param_names{"int", "int", "int", + "vector*", "n", "k"}; + generic_test_main(argc, argv, param_names, "combinations.tsv", &Combinations, &UnorderedComparator>>); return 0; } diff --git a/epi_judge_cpp/convert_base.cc b/epi_judge_cpp/convert_base.cc index 6108b010a..e65dd71e2 100644 --- a/epi_judge_cpp/convert_base.cc +++ b/epi_judge_cpp/convert_base.cc @@ -10,6 +10,7 @@ string ConvertBase(const string& num_as_string, int b1, int b2) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "convert_base.tsv", &ConvertBase); + std::vector param_names{"num_as_string", "b1", "b2"}; + generic_test_main(argc, argv, param_names, "convert_base.tsv", &ConvertBase); return 0; } diff --git a/epi_judge_cpp/copy_posting_list.cc b/epi_judge_cpp/copy_posting_list.cc index 18b033488..92432c692 100644 --- a/epi_judge_cpp/copy_posting_list.cc +++ b/epi_judge_cpp/copy_posting_list.cc @@ -10,7 +10,7 @@ using std::make_shared; using std::shared_ptr; shared_ptr CopyPostingsList( - const shared_ptr& L) { + const shared_ptr& l) { // Implement this placeholder. return nullptr; } @@ -84,8 +84,8 @@ void AssertListsEqual(const PostingListPtr& orig, const PostingListPtr& copy) { } void CopyPostingsListWrapper(TestTimer& timer, - const std::vector& serialized) { - auto head = CreatePostingList(serialized); + const std::vector& l) { + auto head = CreatePostingList(l); timer.Start(); auto copy = CopyPostingsList(head); timer.Stop(); @@ -95,7 +95,8 @@ void CopyPostingsListWrapper(TestTimer& timer, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "copy_posting_list.tsv", + std::vector param_names{"timer", "l"}; + generic_test_main(argc, argv, param_names, "copy_posting_list.tsv", &CopyPostingsListWrapper); return 0; } diff --git a/epi_judge_cpp/count_bits.cc b/epi_judge_cpp/count_bits.cc index 6867245c2..b707ff6f8 100644 --- a/epi_judge_cpp/count_bits.cc +++ b/epi_judge_cpp/count_bits.cc @@ -7,6 +7,7 @@ short CountBits(unsigned int x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "count_bits.tsv", &CountBits); + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "count_bits.tsv", &CountBits); return 0; } diff --git a/epi_judge_cpp/count_inversions.cc b/epi_judge_cpp/count_inversions.cc index 37d6cbc65..814cc93c1 100644 --- a/epi_judge_cpp/count_inversions.cc +++ b/epi_judge_cpp/count_inversions.cc @@ -10,6 +10,8 @@ int CountInversions(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "count_inversions.tsv", &CountInversions); + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "count_inversions.tsv", + &CountInversions); return 0; } diff --git a/epi_judge_cpp/deadlock_detection.cc b/epi_judge_cpp/deadlock_detection.cc index 8de669348..99009c611 100644 --- a/epi_judge_cpp/deadlock_detection.cc +++ b/epi_judge_cpp/deadlock_detection.cc @@ -11,7 +11,7 @@ struct GraphVertex { vector edges; }; -bool IsDeadlocked(vector* G) { +bool IsDeadlocked(vector* graph) { // Implement this placeholder. return true; } @@ -24,19 +24,20 @@ struct Edge { template <> struct SerializationTraits : UserSerTraits {}; -bool HasCycleWrapper(TestTimer& timer, int k, const vector& edges) { +bool HasCycleWrapper(TestTimer& timer, int num_nodes, + const vector& edges) { vector graph; - if (k <= 0) { - throw std::runtime_error("Invalid k value"); + if (num_nodes <= 0) { + throw std::runtime_error("Invalid num_nodes value"); } - graph.reserve(k); + graph.reserve(num_nodes); - for (int i = 0; i < k; i++) { + for (int i = 0; i < num_nodes; i++) { graph.push_back(GraphVertex{}); } for (const Edge& e : edges) { - if (e.from < 0 || e.from >= k || e.to < 0 || e.to >= k) { + if (e.from < 0 || e.from >= num_nodes || e.to < 0 || e.to >= num_nodes) { throw std::runtime_error("Invalid vertex index"); } graph[e.from].edges.push_back(&graph[e.to]); @@ -51,6 +52,8 @@ bool HasCycleWrapper(TestTimer& timer, int k, const vector& edges) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "deadlock_detection.tsv", &HasCycleWrapper); + std::vector param_names{"timer", "num_nodes", "edges"}; + generic_test_main(argc, argv, param_names, "deadlock_detection.tsv", + &HasCycleWrapper); return 0; } diff --git a/epi_judge_cpp/defective_jugs.cc b/epi_judge_cpp/defective_jugs.cc index 9ff300683..3dd55d83d 100644 --- a/epi_judge_cpp/defective_jugs.cc +++ b/epi_judge_cpp/defective_jugs.cc @@ -23,6 +23,8 @@ bool operator==(const Jug& lhs, const Jug& rhs) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "defective_jugs.tsv", &CheckFeasible); + std::vector param_names{"jugs", "L", "H"}; + generic_test_main(argc, argv, param_names, "defective_jugs.tsv", + &CheckFeasible); return 0; } diff --git a/epi_judge_cpp/delete_from_list.cc b/epi_judge_cpp/delete_from_list.cc index b55373008..027f234e9 100644 --- a/epi_judge_cpp/delete_from_list.cc +++ b/epi_judge_cpp/delete_from_list.cc @@ -12,12 +12,10 @@ void DeleteAfter(const shared_ptr>& node) { } shared_ptr> DeleteFromListWrapper( - TestTimer& timer, const shared_ptr>& head, int i) { - static int nr = 1; - nr++; + TestTimer& timer, const shared_ptr>& head, int node_idx) { shared_ptr> selected_node = head; shared_ptr> prev; - while (i-- > 0) { + while (node_idx-- > 0) { if (!selected_node || !selected_node->next) throw std::runtime_error("Node index is out of range"); prev = selected_node; @@ -32,6 +30,8 @@ shared_ptr> DeleteFromListWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "delete_from_list.tsv", &DeleteFromListWrapper); + std::vector param_names{"timer", "head", "node_idx"}; + generic_test_main(argc, argv, param_names, "delete_from_list.tsv", + &DeleteFromListWrapper); return 0; } diff --git a/epi_judge_cpp/delete_kth_last_from_list.cc b/epi_judge_cpp/delete_kth_last_from_list.cc index f69a51920..47214e1a2 100644 --- a/epi_judge_cpp/delete_kth_last_from_list.cc +++ b/epi_judge_cpp/delete_kth_last_from_list.cc @@ -14,7 +14,8 @@ shared_ptr> RemoveKthLast(const shared_ptr>& L, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "delete_kth_last_from_list.tsv", + std::vector param_names{"L", "k"}; + generic_test_main(argc, argv, param_names, "delete_kth_last_from_list.tsv", &RemoveKthLast); return 0; } diff --git a/epi_judge_cpp/delete_node_from_list.cc b/epi_judge_cpp/delete_node_from_list.cc index e89b18750..8d7b9b1bf 100644 --- a/epi_judge_cpp/delete_node_from_list.cc +++ b/epi_judge_cpp/delete_node_from_list.cc @@ -8,11 +8,10 @@ void DeletionFromList(const shared_ptr>& node_to_delete) { } shared_ptr> DeletionFromListWrapper( - TestTimer& timer, const shared_ptr>& head, int i) { - static int nr = 1; - nr++; + TestTimer& timer, const shared_ptr>& head, + int node_to_delete_idx) { shared_ptr> selected_node = head; - while (i-- > 0) { + while (node_to_delete_idx-- > 0) { if (!selected_node || !selected_node->next) throw std::runtime_error("Node index is out of range"); selected_node = selected_node->next; @@ -26,7 +25,8 @@ shared_ptr> DeletionFromListWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "delete_node_from_list.tsv", + std::vector param_names{"timer", "head", "node_to_delete_idx"}; + generic_test_main(argc, argv, param_names, "delete_node_from_list.tsv", &DeletionFromListWrapper); return 0; } diff --git a/epi_judge_cpp/descendant_and_ancestor_in_bst.cc b/epi_judge_cpp/descendant_and_ancestor_in_bst.cc index 8c913c64a..32c108e6f 100644 --- a/epi_judge_cpp/descendant_and_ancestor_in_bst.cc +++ b/epi_judge_cpp/descendant_and_ancestor_in_bst.cc @@ -15,14 +15,14 @@ bool PairIncludesAncestorAndDescendantOfM( } bool PairIncludesAncestorAndDescendantOfMWrapper( - TestTimer& timer, const unique_ptr>& tree, int candidate1idx, - int candidate2idx, int middle_idx) { - auto& candidate1 = MustFindNode(tree, candidate1idx); - auto& candidate2 = MustFindNode(tree, candidate2idx); - auto& middle = MustFindNode(tree, middle_idx); + TestTimer& timer, const unique_ptr>& tree, + int possible_anc_or_desc_0, int possible_anc_or_desc_1, int middle) { + auto& candidate0 = MustFindNode(tree, possible_anc_or_desc_0); + auto& candidate1 = MustFindNode(tree, possible_anc_or_desc_1); + auto& middle_node = MustFindNode(tree, middle); timer.Start(); bool result = - PairIncludesAncestorAndDescendantOfM(candidate1, candidate2, middle); + PairIncludesAncestorAndDescendantOfM(candidate0, candidate1, middle_node); timer.Stop(); return result; } @@ -30,7 +30,11 @@ bool PairIncludesAncestorAndDescendantOfMWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "descendant_and_ancestor_in_bst.tsv", + std::vector param_names{"timer", "tree", + "possible_anc_or_desc_0", + "possible_anc_or_desc_1", "middle"}; + generic_test_main(argc, argv, param_names, + "descendant_and_ancestor_in_bst.tsv", &PairIncludesAncestorAndDescendantOfMWrapper); return 0; } diff --git a/epi_judge_cpp/directory_path_normalization.cc b/epi_judge_cpp/directory_path_normalization.cc index 4094db06f..08235b923 100644 --- a/epi_judge_cpp/directory_path_normalization.cc +++ b/epi_judge_cpp/directory_path_normalization.cc @@ -10,7 +10,8 @@ string ShortestEquivalentPath(const string& path) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "directory_path_normalization.tsv", + std::vector param_names{"path"}; + generic_test_main(argc, argv, param_names, "directory_path_normalization.tsv", &ShortestEquivalentPath); return 0; } diff --git a/epi_judge_cpp/do_lists_overlap.cc b/epi_judge_cpp/do_lists_overlap.cc index 0c2080e9d..48b4d77c0 100644 --- a/epi_judge_cpp/do_lists_overlap.cc +++ b/epi_judge_cpp/do_lists_overlap.cc @@ -5,31 +5,31 @@ #include "test_framework/test_failure_exception.h" #include "test_framework/test_timer.h" -shared_ptr> OverlappingLists(shared_ptr> L1, - shared_ptr> L2) { +shared_ptr> OverlappingLists(shared_ptr> l0, + shared_ptr> l1) { // Implement this placeholder. return nullptr; } -void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l1, - shared_ptr> l2, - shared_ptr> common, int cycle1, - int cycle2) { +void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l0, + shared_ptr> l1, + shared_ptr> common, int cycle0, + int cycle1) { if (common) { - if (!l1) { - l1 = common; + if (!l0) { + l0 = common; } else { - auto it = l1; + auto it = l0; while (it->next) { it = it->next; } it->next = common; } - if (!l2) { - l2 = common; + if (!l1) { + l1 = common; } else { - auto it = l2; + auto it = l1; while (it->next) { it = it->next; } @@ -37,13 +37,13 @@ void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l1, } } - if (cycle1 != -1 && l1) { - auto last = l1; + if (cycle0 != -1 && l0) { + auto last = l0; while (last->next) { last = last->next; } - auto it = l1; - while (cycle1-- > 0) { + auto it = l0; + while (cycle0-- > 0) { if (!it) { throw std::runtime_error("Invalid input data"); } @@ -52,13 +52,13 @@ void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l1, last->next = it; } - if (cycle2 != -1 && l2) { - auto last = l2; + if (cycle1 != -1 && l1) { + auto last = l1; while (last->next) { last = last->next; } - auto it = l2; - while (cycle2-- > 0) { + auto it = l1; + while (cycle1-- > 0) { if (!it) { throw std::runtime_error("Invalid input data"); } @@ -75,7 +75,7 @@ void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l1, } timer.Start(); - auto result = OverlappingLists(l1, l2); + auto result = OverlappingLists(l0, l1); timer.Stop(); if (!((common_nodes.empty() && result == nullptr) || @@ -87,7 +87,9 @@ void OverlappingListsWrapper(TestTimer& timer, shared_ptr> l1, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "do_lists_overlap.tsv", + std::vector param_names{"timer", "l0", "l1", + "common", "cycle0", "cycle1"}; + generic_test_main(argc, argv, param_names, "do_lists_overlap.tsv", &OverlappingListsWrapper); return 0; } diff --git a/epi_judge_cpp/do_terminated_lists_overlap.cc b/epi_judge_cpp/do_terminated_lists_overlap.cc index f51a74580..ba0720a6b 100644 --- a/epi_judge_cpp/do_terminated_lists_overlap.cc +++ b/epi_judge_cpp/do_terminated_lists_overlap.cc @@ -7,39 +7,39 @@ using std::shared_ptr; shared_ptr> OverlappingNoCycleLists( - shared_ptr> L1, shared_ptr> L2) { + shared_ptr> l0, shared_ptr> l1) { // Implement this placeholder. return nullptr; } void OverlappingNoCycleListsWrapper(TestTimer& timer, - shared_ptr> p1, - shared_ptr> p2, + shared_ptr> l0, + shared_ptr> l1, shared_ptr> common) { if (common) { - if (!p1) { - p1 = common; - } else { - auto l1 = p1; - while (l1->next) { - l1 = l1->next; + if (l0) { + auto i = l0; + while (i->next) { + i = i->next; } - l1->next = common; + i->next = common; + } else { + l0 = common; } - if (!p2) { - p2 = common; - } else { - auto l2 = p2; - while (l2->next) { - l2 = l2->next; + if (l1) { + auto i = l1; + while (i->next) { + i = i->next; } - l2->next = common; + i->next = common; + } else { + l1 = common; } } timer.Start(); - auto result = OverlappingNoCycleLists(p1, p2); + auto result = OverlappingNoCycleLists(l0, l1); timer.Stop(); if (result != common) { @@ -50,7 +50,8 @@ void OverlappingNoCycleListsWrapper(TestTimer& timer, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "do_terminated_lists_overlap.tsv", + std::vector param_names{"timer", "l0", "l1", "common"}; + generic_test_main(argc, argv, param_names, "do_terminated_lists_overlap.tsv", &OverlappingNoCycleListsWrapper); return 0; } diff --git a/epi_judge_cpp/drawing_skyline.cc b/epi_judge_cpp/drawing_skyline.cc index 71c8e3711..16f039ca2 100644 --- a/epi_judge_cpp/drawing_skyline.cc +++ b/epi_judge_cpp/drawing_skyline.cc @@ -29,6 +29,8 @@ std::ostream& operator<<(std::ostream& out, const Rectangle& r) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "drawing_skyline.tsv", &ComputeSkyline); + std::vector param_names{"buildings"}; + generic_test_main(argc, argv, param_names, "drawing_skyline.tsv", + &ComputeSkyline); return 0; } diff --git a/epi_judge_cpp/dutch_national_flag.cc b/epi_judge_cpp/dutch_national_flag.cc index cbfda54f9..aa0323dfd 100644 --- a/epi_judge_cpp/dutch_national_flag.cc +++ b/epi_judge_cpp/dutch_national_flag.cc @@ -13,14 +13,14 @@ void DutchFlagPartition(int pivot_index, vector* A_ptr) { return; } -void DutchFlagPartitionWrapper(TestTimer& timer, const vector& data, +void DutchFlagPartitionWrapper(TestTimer& timer, const vector& A, int pivot_idx) { vector colors; - colors.resize(data.size()); + colors.resize(A.size()); std::array count = {0, 0, 0}; - for (size_t i = 0; i < data.size(); i++) { - count[data[i]]++; - colors[i] = static_cast(data[i]); + for (size_t i = 0; i < A.size(); i++) { + count[A[i]]++; + colors[i] = static_cast(A[i]); } Color pivot = colors[pivot_idx]; @@ -52,7 +52,8 @@ void DutchFlagPartitionWrapper(TestTimer& timer, const vector& data, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "dutch_national_flag.tsv", + std::vector param_names{"timer", "A", "pivot_idx"}; + generic_test_main(argc, argv, param_names, "dutch_national_flag.tsv", &DutchFlagPartitionWrapper); return 0; } diff --git a/epi_judge_cpp/element_appearing_once.cc b/epi_judge_cpp/element_appearing_once.cc index 47134aee6..30ff0e03a 100644 --- a/epi_judge_cpp/element_appearing_once.cc +++ b/epi_judge_cpp/element_appearing_once.cc @@ -10,7 +10,8 @@ int FindElementAppearsOnce(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "element_appearing_once.tsv", + std::vector param_names{"&A"}; + generic_test_main(argc, argv, param_names, "element_appearing_once.tsv", &FindElementAppearsOnce); return 0; } diff --git a/epi_judge_cpp/enumerate_balanced_parentheses.cc b/epi_judge_cpp/enumerate_balanced_parentheses.cc index 2e4c26f0f..510bd7fc6 100644 --- a/epi_judge_cpp/enumerate_balanced_parentheses.cc +++ b/epi_judge_cpp/enumerate_balanced_parentheses.cc @@ -12,8 +12,9 @@ vector GenerateBalancedParentheses(int num_pairs) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "enumerate_balanced_parentheses.tsv", - &GenerateBalancedParentheses, - &UnorderedComparator>); + std::vector param_names{"int", "int", "string&", "num_pairs"}; + generic_test_main( + argc, argv, param_names, "enumerate_balanced_parentheses.tsv", + &GenerateBalancedParentheses, &UnorderedComparator>); return 0; } diff --git a/epi_judge_cpp/enumerate_palindromic_decompositions.cc b/epi_judge_cpp/enumerate_palindromic_decompositions.cc index 68cc9f6db..212df76a1 100644 --- a/epi_judge_cpp/enumerate_palindromic_decompositions.cc +++ b/epi_judge_cpp/enumerate_palindromic_decompositions.cc @@ -20,7 +20,10 @@ bool Comp(vector> expected, vector> result) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "enumerate_palindromic_decompositions.tsv", + std::vector param_names{"string&", "int", "vector*", + "input"}; + generic_test_main(argc, argv, param_names, + "enumerate_palindromic_decompositions.tsv", &PalindromeDecompositions, &Comp); return 0; } diff --git a/epi_judge_cpp/enumerate_trees.cc b/epi_judge_cpp/enumerate_trees.cc index eaf4c2883..61eeb0f94 100644 --- a/epi_judge_cpp/enumerate_trees.cc +++ b/epi_judge_cpp/enumerate_trees.cc @@ -29,9 +29,10 @@ vector SerializeStructure(const unique_ptr>& tree) { return result; } -vector> GenerateAllBinaryTreesWrapper(TestTimer& timer, int i) { +vector> GenerateAllBinaryTreesWrapper(TestTimer& timer, + int num_nodes) { timer.Start(); - auto result = GenerateAllBinaryTrees(i); + auto result = GenerateAllBinaryTrees(num_nodes); timer.Stop(); vector> serialized; @@ -45,7 +46,8 @@ vector> GenerateAllBinaryTreesWrapper(TestTimer& timer, int i) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "enumerate_trees.tsv", + std::vector param_names{"timer", "num_nodes"}; + generic_test_main(argc, argv, param_names, "enumerate_trees.tsv", &GenerateAllBinaryTreesWrapper); return 0; } diff --git a/epi_judge_cpp/evaluate_rpn.cc b/epi_judge_cpp/evaluate_rpn.cc index 002d9a5c9..05f67a05f 100644 --- a/epi_judge_cpp/evaluate_rpn.cc +++ b/epi_judge_cpp/evaluate_rpn.cc @@ -10,6 +10,7 @@ int Evaluate(const string& expression) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "evaluate_rpn.tsv", &Evaluate); + std::vector param_names{"expression"}; + generic_test_main(argc, argv, param_names, "evaluate_rpn.tsv", &Evaluate); return 0; } diff --git a/epi_judge_cpp/even_odd_array.cc b/epi_judge_cpp/even_odd_array.cc index 23ad88fa3..5b4f538c6 100644 --- a/epi_judge_cpp/even_odd_array.cc +++ b/epi_judge_cpp/even_odd_array.cc @@ -38,6 +38,8 @@ void EvenOddWrapper(TestTimer& timer, vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "even_odd_array.tsv", &EvenOddWrapper); + std::vector param_names{"timer", "A"}; + generic_test_main(argc, argv, param_names, "even_odd_array.tsv", + &EvenOddWrapper); return 0; } diff --git a/epi_judge_cpp/even_odd_list_merge.cc b/epi_judge_cpp/even_odd_list_merge.cc index 438bf7892..8d3f478fd 100644 --- a/epi_judge_cpp/even_odd_list_merge.cc +++ b/epi_judge_cpp/even_odd_list_merge.cc @@ -9,6 +9,8 @@ shared_ptr> EvenOddMerge(const shared_ptr>& L) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "even_odd_list_merge.tsv", &EvenOddMerge); + std::vector param_names{"L"}; + generic_test_main(argc, argv, param_names, "even_odd_list_merge.tsv", + &EvenOddMerge); return 0; } diff --git a/epi_judge_cpp/find_salary_threshold.cc b/epi_judge_cpp/find_salary_threshold.cc index 3fa040d74..5b77a5317 100644 --- a/epi_judge_cpp/find_salary_threshold.cc +++ b/epi_judge_cpp/find_salary_threshold.cc @@ -10,6 +10,8 @@ double FindSalaryCap(int target_payroll, vector current_salaries) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "find_salary_threshold.tsv", &FindSalaryCap); + std::vector param_names{"target_payroll", "current_salaries"}; + generic_test_main(argc, argv, param_names, "find_salary_threshold.tsv", + &FindSalaryCap); return 0; } diff --git a/epi_judge_cpp/first_missing_positive_entry.cc b/epi_judge_cpp/first_missing_positive_entry.cc index b6f460805..122ef7b4c 100644 --- a/epi_judge_cpp/first_missing_positive_entry.cc +++ b/epi_judge_cpp/first_missing_positive_entry.cc @@ -11,7 +11,8 @@ int FindFirstMissingPositive(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "first_missing_positive_entry.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "first_missing_positive_entry.tsv", &FindFirstMissingPositive); return 0; } diff --git a/epi_judge_cpp/gcd.cc b/epi_judge_cpp/gcd.cc index 04fa4cb82..ccfaf0143 100644 --- a/epi_judge_cpp/gcd.cc +++ b/epi_judge_cpp/gcd.cc @@ -1,5 +1,5 @@ -long long GCD(long long x, long long y) { +long long Gcd(long long x, long long y) { // Implement this placeholder. return 0; } @@ -7,6 +7,7 @@ long long GCD(long long x, long long y) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "gcd.tsv", &GCD); + std::vector param_names{"x", "y"}; + generic_test_main(argc, argv, param_names, "gcd.tsv", &Gcd); return 0; } diff --git a/epi_judge_cpp/graph_clone.cc b/epi_judge_cpp/graph_clone.cc index 89798142e..bc5410c06 100644 --- a/epi_judge_cpp/graph_clone.cc +++ b/epi_judge_cpp/graph_clone.cc @@ -15,7 +15,7 @@ struct GraphVertex { vector edges; }; -GraphVertex* CloneGraph(GraphVertex* G) { +GraphVertex* CloneGraph(GraphVertex* graph) { // Implement this placeholder. return nullptr; } @@ -27,8 +27,9 @@ vector CopyLabels(const vector& edges) { return labels; } -void CheckAndDeallocateGraph(GraphVertex* node, const vector& G) { - if (node == &G[0]) { +void CheckAndDeallocateGraph(GraphVertex* node, + const vector& graph) { + if (node == &graph[0]) { throw TestFailureException("Graph was not copied"); } @@ -39,11 +40,11 @@ void CheckAndDeallocateGraph(GraphVertex* node, const vector& G) { while (!q.empty()) { auto vertex = q.front(); q.pop(); - if (vertex->label > G.size()) { + if (vertex->label > graph.size()) { throw TestFailureException("Invalid vertex label"); } vector label1 = CopyLabels(vertex->edges), - label2 = CopyLabels(G[vertex->label].edges); + label2 = CopyLabels(graph[vertex->label].edges); sort(begin(label1), end(label1)), sort(begin(label2), end(label2)); if (label1 != label2) { throw TestFailureException("Invalid vertex label"); @@ -92,6 +93,8 @@ void CloneGraphTest(int k, const vector& edges) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "graph_clone.tsv", &CloneGraphTest); + std::vector param_names{"k", "edges"}; + generic_test_main(argc, argv, param_names, "graph_clone.tsv", + &CloneGraphTest); return 0; } diff --git a/epi_judge_cpp/gray_code.cc b/epi_judge_cpp/gray_code.cc index 35f553a36..4dbe65c6a 100644 --- a/epi_judge_cpp/gray_code.cc +++ b/epi_judge_cpp/gray_code.cc @@ -50,6 +50,7 @@ void GrayCodeWrapper(TestTimer& timer, int num_bits) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "gray_code.tsv", &GrayCodeWrapper); + std::vector param_names{"timer", "num_bits"}; + generic_test_main(argc, argv, param_names, "gray_code.tsv", &GrayCodeWrapper); return 0; } diff --git a/epi_judge_cpp/group_equal_entries.cc b/epi_judge_cpp/group_equal_entries.cc index 0eea72452..ba6a0eebb 100644 --- a/epi_judge_cpp/group_equal_entries.cc +++ b/epi_judge_cpp/group_equal_entries.cc @@ -23,25 +23,25 @@ void GroupByAge(vector* people) { template <> struct SerializationTraits : UserSerTraits {}; -void GroupByAgeWrapper(TestTimer& timer, vector& v) { - if (v.empty()) { +void GroupByAgeWrapper(TestTimer& timer, vector& people) { + if (people.empty()) { return; } std::multiset> values( - begin(v), end(v), [](const Person& a, const Person& b) { + begin(people), end(people), [](const Person& a, const Person& b) { return a.age == b.age ? a.name < b.name : a.age < b.age; }); timer.Start(); - GroupByAge(&v); + GroupByAge(&people); timer.Stop(); - if (v.empty()) { + if (people.empty()) { throw TestFailureException("Empty result"); } std::set ages; - int last_age = v[0].age; - for (auto& x : v) { + int last_age = people[0].age; + for (auto& x : people) { if (ages.count(x.age) != 0) { throw TestFailureException("Entries are not grouped by age"); } @@ -60,6 +60,8 @@ void GroupByAgeWrapper(TestTimer& timer, vector& v) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "group_equal_entries.tsv", &GroupByAgeWrapper); + std::vector param_names{"timer", "people"}; + generic_test_main(argc, argv, param_names, "group_equal_entries.tsv", + &GroupByAgeWrapper); return 0; } diff --git a/epi_judge_cpp/hanoi.cc b/epi_judge_cpp/hanoi.cc index 0fb9d2737..0f509d15f 100644 --- a/epi_judge_cpp/hanoi.cc +++ b/epi_judge_cpp/hanoi.cc @@ -51,6 +51,8 @@ void ComputeTowerHanoiWrapper(TestTimer& timer, int num_rings) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "hanoi.tsv", &ComputeTowerHanoiWrapper); + std::vector param_names{"timer", "num_rings"}; + generic_test_main(argc, argv, param_names, "hanoi.tsv", + &ComputeTowerHanoiWrapper); return 0; } diff --git a/epi_judge_cpp/huffman_coding.cc b/epi_judge_cpp/huffman_coding.cc index 7c97ee508..a2bd06eba 100644 --- a/epi_judge_cpp/huffman_coding.cc +++ b/epi_judge_cpp/huffman_coding.cc @@ -41,6 +41,8 @@ double HuffmanEncodingWrapper(vector symbols) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "huffman_coding.tsv", &HuffmanEncodingWrapper); + std::vector param_names{"symbols"}; + generic_test_main(argc, argv, param_names, "huffman_coding.tsv", + &HuffmanEncodingWrapper); return 0; } diff --git a/epi_judge_cpp/insert_in_list.cc b/epi_judge_cpp/insert_in_list.cc index b314476c0..8f774b49e 100644 --- a/epi_judge_cpp/insert_in_list.cc +++ b/epi_judge_cpp/insert_in_list.cc @@ -14,23 +14,26 @@ void InsertAfter(const shared_ptr>& node, } shared_ptr> InsertListWrapper(TestTimer& timer, - const shared_ptr>& L, - int pos, int key) { - auto node = L; - while (pos > 1) { + const shared_ptr>& l, + int node_idx, int new_node_data) { + auto node = l; + while (node_idx > 1) { node = node->next; - --pos; + --node_idx; } - auto new_node = make_shared>(key, nullptr); + auto new_node = make_shared>(new_node_data, nullptr); timer.Start(); InsertAfter(node, new_node); timer.Stop(); - return L; + return l; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "insert_in_list.tsv", &InsertListWrapper); + std::vector param_names{"timer", "l", "node_idx", + "new_node_data"}; + generic_test_main(argc, argv, param_names, "insert_in_list.tsv", + &InsertListWrapper); return 0; } diff --git a/epi_judge_cpp/insert_operators_in_string.cc b/epi_judge_cpp/insert_operators_in_string.cc index 585e43def..1372c141f 100644 --- a/epi_judge_cpp/insert_operators_in_string.cc +++ b/epi_judge_cpp/insert_operators_in_string.cc @@ -10,7 +10,10 @@ bool ExpressionSynthesis(const vector& digits, int target) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "insert_operators_in_string.tsv", + std::vector param_names{ + "vector&", "int", "int", "int", + "vector*", "vector&", "digits", "target"}; + generic_test_main(argc, argv, param_names, "insert_operators_in_string.tsv", &ExpressionSynthesis); return 0; } diff --git a/epi_judge_cpp/int_as_array_increment.cc b/epi_judge_cpp/int_as_array_increment.cc index 38f39b12d..922de490f 100644 --- a/epi_judge_cpp/int_as_array_increment.cc +++ b/epi_judge_cpp/int_as_array_increment.cc @@ -10,6 +10,8 @@ vector PlusOne(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "int_as_array_increment.tsv", &PlusOne); + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "int_as_array_increment.tsv", + &PlusOne); return 0; } diff --git a/epi_judge_cpp/int_as_array_multiply.cc b/epi_judge_cpp/int_as_array_multiply.cc index 13d522e4c..3cd1d7aef 100644 --- a/epi_judge_cpp/int_as_array_multiply.cc +++ b/epi_judge_cpp/int_as_array_multiply.cc @@ -10,6 +10,8 @@ vector Multiply(vector num1, vector num2) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "int_as_array_multiply.tsv", &Multiply); + std::vector param_names{"num1", "num2"}; + generic_test_main(argc, argv, param_names, "int_as_array_multiply.tsv", + &Multiply); return 0; } diff --git a/epi_judge_cpp/int_as_list_add.cc b/epi_judge_cpp/int_as_list_add.cc index 51b8cd9af..ab46a48f6 100644 --- a/epi_judge_cpp/int_as_list_add.cc +++ b/epi_judge_cpp/int_as_list_add.cc @@ -9,6 +9,8 @@ shared_ptr> AddTwoNumbers(shared_ptr> L1, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "int_as_list_add.tsv", &AddTwoNumbers); + std::vector param_names{"L1", "L2"}; + generic_test_main(argc, argv, param_names, "int_as_list_add.tsv", + &AddTwoNumbers); return 0; } diff --git a/epi_judge_cpp/int_square_root.cc b/epi_judge_cpp/int_square_root.cc index dbe77ab91..d945cb153 100644 --- a/epi_judge_cpp/int_square_root.cc +++ b/epi_judge_cpp/int_square_root.cc @@ -7,6 +7,8 @@ int SquareRoot(int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "int_square_root.tsv", &SquareRoot); + std::vector param_names{"k"}; + generic_test_main(argc, argv, param_names, "int_square_root.tsv", + &SquareRoot); return 0; } diff --git a/epi_judge_cpp/intersect_sorted_arrays.cc b/epi_judge_cpp/intersect_sorted_arrays.cc index d308d0136..f2244b3cd 100644 --- a/epi_judge_cpp/intersect_sorted_arrays.cc +++ b/epi_judge_cpp/intersect_sorted_arrays.cc @@ -11,7 +11,8 @@ vector IntersectTwoSortedArrays(const vector& A, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "intersect_sorted_arrays.tsv", + std::vector param_names{"A", "B"}; + generic_test_main(argc, argv, param_names, "intersect_sorted_arrays.tsv", &IntersectTwoSortedArrays); return 0; } diff --git a/epi_judge_cpp/interval_add.cc b/epi_judge_cpp/interval_add.cc index 408efc319..c046e650b 100644 --- a/epi_judge_cpp/interval_add.cc +++ b/epi_judge_cpp/interval_add.cc @@ -28,6 +28,7 @@ std::ostream& operator<<(std::ostream& out, const Interval& i) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "interval_add.tsv", &AddInterval); + std::vector param_names{"disjoint_intervals", "new_interval"}; + generic_test_main(argc, argv, param_names, "interval_add.tsv", &AddInterval); return 0; } diff --git a/epi_judge_cpp/intervals_union.cc b/epi_judge_cpp/intervals_union.cc index 3e60a0567..0f9a1dde3 100644 --- a/epi_judge_cpp/intervals_union.cc +++ b/epi_judge_cpp/intervals_union.cc @@ -59,22 +59,24 @@ std::ostream& operator<<(std::ostream& out, const FlatInterval& i) { } std::vector UnionOfIntervalsWrapper( - TestTimer& timer, const std::vector& input) { + TestTimer& timer, const std::vector& intervals) { std::vector casted; - for (const FlatInterval& i : input) { + for (const FlatInterval& i : intervals) { casted.push_back(static_cast(i)); } timer.Start(); std::vector result = UnionOfIntervals(casted); timer.Stop(); + return {begin(result), end(result)}; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "intervals_union.tsv", + std::vector param_names{"timer", "intervals"}; + generic_test_main(argc, argv, param_names, "intervals_union.tsv", &UnionOfIntervalsWrapper); return 0; } diff --git a/epi_judge_cpp/is_anonymous_letter_constructible.cc b/epi_judge_cpp/is_anonymous_letter_constructible.cc index 3af20c117..796977bd3 100644 --- a/epi_judge_cpp/is_anonymous_letter_constructible.cc +++ b/epi_judge_cpp/is_anonymous_letter_constructible.cc @@ -11,7 +11,9 @@ bool IsLetterConstructibleFromMagazine(const string& letter_text, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_anonymous_letter_constructible.tsv", + std::vector param_names{"letter_text", "magazine_text"}; + generic_test_main(argc, argv, param_names, + "is_anonymous_letter_constructible.tsv", &IsLetterConstructibleFromMagazine); return 0; } diff --git a/epi_judge_cpp/is_array_dominated.cc b/epi_judge_cpp/is_array_dominated.cc index 93cf43851..5f18056b3 100644 --- a/epi_judge_cpp/is_array_dominated.cc +++ b/epi_judge_cpp/is_array_dominated.cc @@ -3,6 +3,7 @@ #include #include "test_framework/test_failure_exception.h" +#include "test_framework/test_timer.h" using std::vector; @@ -13,8 +14,8 @@ class Team { [](int h) { return Player{h}; }); } - // Checks if A can be placed in front of B. - static bool ValidPlacementExists(const Team& A, const Team& B) { + // Checks if team0 can be placed in front of team1. + static bool ValidPlacementExists(const Team& team0, const Team& team1) { // Implement this placeholder. return true; } @@ -29,16 +30,13 @@ class Team { vector players_; }; -void ValidPlacementExistsWrapper(const vector& h1, const vector& h2, - bool expected12, bool expected21) { - Team t1(h1), t2(h2); - bool result12 = Team::ValidPlacementExists(t1, t2); - if (result12 != expected12) { - throw TestFailureException(""); - } - - bool result21 = Team::ValidPlacementExists(t2, t1); - if (result21 != expected21) { +void ValidPlacementExistsWrapper(TestTimer& timer, const vector& team0, + const vector& team1, bool expected_01, + bool expected_10) { + Team t0(team0), t1(team1); + timer.Start(); + if (Team::ValidPlacementExists(t0, t1) != expected_01 && + Team::ValidPlacementExists(t1, t0) != expected_10) { throw TestFailureException(""); } } @@ -46,7 +44,9 @@ void ValidPlacementExistsWrapper(const vector& h1, const vector& h2, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_array_dominated.tsv", + std::vector param_names{"timer", "team0", "team1", "expected_01", + "expected_10"}; + generic_test_main(argc, argv, param_names, "is_array_dominated.tsv", &ValidPlacementExistsWrapper); return 0; } diff --git a/epi_judge_cpp/is_circuit_wirable.cc b/epi_judge_cpp/is_circuit_wirable.cc index 8a0b34a69..e96f68226 100644 --- a/epi_judge_cpp/is_circuit_wirable.cc +++ b/epi_judge_cpp/is_circuit_wirable.cc @@ -11,7 +11,7 @@ struct GraphVertex { vector edges; }; -bool IsAnyPlacementFeasible(vector* G) { +bool IsAnyPlacementFeasible(vector* graph) { // Implement this placeholder. return true; } @@ -52,7 +52,8 @@ bool IsAnyPlacementFeasibleWrapper(TestTimer& timer, int k, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_circuit_wirable.tsv", + std::vector param_names{"timer", "k", "edges"}; + generic_test_main(argc, argv, param_names, "is_circuit_wirable.tsv", &IsAnyPlacementFeasibleWrapper); return 0; } diff --git a/epi_judge_cpp/is_list_cyclic.cc b/epi_judge_cpp/is_list_cyclic.cc index 1988ccd39..a013a6a65 100644 --- a/epi_judge_cpp/is_list_cyclic.cc +++ b/epi_judge_cpp/is_list_cyclic.cc @@ -70,6 +70,8 @@ void HasCycleWrapper(TestTimer& timer, const shared_ptr>& head, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_list_cyclic.tsv", &HasCycleWrapper); + std::vector param_names{"timer", "head", "cycle_idx"}; + generic_test_main(argc, argv, param_names, "is_list_cyclic.tsv", + &HasCycleWrapper); return 0; } diff --git a/epi_judge_cpp/is_list_palindromic.cc b/epi_judge_cpp/is_list_palindromic.cc index d8ed8dc17..2f4bdf0b5 100644 --- a/epi_judge_cpp/is_list_palindromic.cc +++ b/epi_judge_cpp/is_list_palindromic.cc @@ -8,7 +8,8 @@ bool IsLinkedListAPalindrome(shared_ptr> L) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_list_palindromic.tsv", + std::vector param_names{"L"}; + generic_test_main(argc, argv, param_names, "is_list_palindromic.tsv", &IsLinkedListAPalindrome); return 0; } diff --git a/epi_judge_cpp/is_number_palindromic.cc b/epi_judge_cpp/is_number_palindromic.cc index af1cdb56f..24a5bd107 100644 --- a/epi_judge_cpp/is_number_palindromic.cc +++ b/epi_judge_cpp/is_number_palindromic.cc @@ -7,7 +7,8 @@ bool IsPalindromeNumber(int x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_number_palindromic.tsv", + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "is_number_palindromic.tsv", &IsPalindromeNumber); return 0; } diff --git a/epi_judge_cpp/is_string_decomposable_into_words.cc b/epi_judge_cpp/is_string_decomposable_into_words.cc index ace708d69..c7c4c9b2d 100644 --- a/epi_judge_cpp/is_string_decomposable_into_words.cc +++ b/epi_judge_cpp/is_string_decomposable_into_words.cc @@ -15,7 +15,9 @@ vector DecomposeIntoDictionaryWords( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_string_decomposable_into_words.tsv", + std::vector param_names{"domain", "dictionary"}; + generic_test_main(argc, argv, param_names, + "is_string_decomposable_into_words.tsv", &DecomposeIntoDictionaryWords); return 0; } diff --git a/epi_judge_cpp/is_string_in_matrix.cc b/epi_judge_cpp/is_string_in_matrix.cc index 8fc15e0bb..94e1b4e08 100644 --- a/epi_judge_cpp/is_string_in_matrix.cc +++ b/epi_judge_cpp/is_string_in_matrix.cc @@ -11,7 +11,8 @@ bool IsPatternContainedInGrid(const vector>& grid, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_string_in_matrix.tsv", + std::vector param_names{"grid", "pattern"}; + generic_test_main(argc, argv, param_names, "is_string_in_matrix.tsv", &IsPatternContainedInGrid); return 0; } diff --git a/epi_judge_cpp/is_string_palindromic_punctuation.cc b/epi_judge_cpp/is_string_palindromic_punctuation.cc index fc3f31c93..3bd8d4daf 100644 --- a/epi_judge_cpp/is_string_palindromic_punctuation.cc +++ b/epi_judge_cpp/is_string_palindromic_punctuation.cc @@ -10,7 +10,8 @@ bool IsPalindrome(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_string_palindromic_punctuation.tsv", - &IsPalindrome); + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, + "is_string_palindromic_punctuation.tsv", &IsPalindrome); return 0; } diff --git a/epi_judge_cpp/is_string_permutable_to_palindrome.cc b/epi_judge_cpp/is_string_permutable_to_palindrome.cc index 2367abf1b..0d95e01b0 100644 --- a/epi_judge_cpp/is_string_permutable_to_palindrome.cc +++ b/epi_judge_cpp/is_string_permutable_to_palindrome.cc @@ -10,7 +10,8 @@ bool CanFormPalindrome(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "can_string_be_palindrome.tsv", + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "can_string_be_palindrome.tsv", &CanFormPalindrome); return 0; } diff --git a/epi_judge_cpp/is_tree_a_bst.cc b/epi_judge_cpp/is_tree_a_bst.cc index fbc48b57c..e9f039eae 100644 --- a/epi_judge_cpp/is_tree_a_bst.cc +++ b/epi_judge_cpp/is_tree_a_bst.cc @@ -12,6 +12,8 @@ bool IsBinaryTreeBST(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_tree_a_bst.tsv", &IsBinaryTreeBST); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "is_tree_a_bst.tsv", + &IsBinaryTreeBST); return 0; } diff --git a/epi_judge_cpp/is_tree_balanced.cc b/epi_judge_cpp/is_tree_balanced.cc index 03a60cdd8..8035391d6 100644 --- a/epi_judge_cpp/is_tree_balanced.cc +++ b/epi_judge_cpp/is_tree_balanced.cc @@ -9,6 +9,8 @@ bool IsBalanced(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_tree_balanced.tsv", &IsBalanced); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "is_tree_balanced.tsv", + &IsBalanced); return 0; } diff --git a/epi_judge_cpp/is_tree_symmetric.cc b/epi_judge_cpp/is_tree_symmetric.cc index c81409538..bc52a028a 100644 --- a/epi_judge_cpp/is_tree_symmetric.cc +++ b/epi_judge_cpp/is_tree_symmetric.cc @@ -8,6 +8,8 @@ bool IsSymmetric(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_tree_symmetric.tsv", &IsSymmetric); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "is_tree_symmetric.tsv", + &IsSymmetric); return 0; } diff --git a/epi_judge_cpp/is_valid_parenthesization.cc b/epi_judge_cpp/is_valid_parenthesization.cc index e89b8ec25..8775fcddc 100644 --- a/epi_judge_cpp/is_valid_parenthesization.cc +++ b/epi_judge_cpp/is_valid_parenthesization.cc @@ -10,6 +10,8 @@ bool IsWellFormed(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_valid_parenthesization.tsv", &IsWellFormed); + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "is_valid_parenthesization.tsv", + &IsWellFormed); return 0; } diff --git a/epi_judge_cpp/is_valid_sudoku.cc b/epi_judge_cpp/is_valid_sudoku.cc index be5884ab8..15420b959 100644 --- a/epi_judge_cpp/is_valid_sudoku.cc +++ b/epi_judge_cpp/is_valid_sudoku.cc @@ -11,6 +11,8 @@ bool IsValidSudoku(const vector>& partial_assignment) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "is_valid_sudoku.tsv", &IsValidSudoku); + std::vector param_names{"partial_assignment"}; + generic_test_main(argc, argv, param_names, "is_valid_sudoku.tsv", + &IsValidSudoku); return 0; } diff --git a/epi_judge_cpp/k_closest_stars.cc b/epi_judge_cpp/k_closest_stars.cc index 930eeff6e..8d69127af 100644 --- a/epi_judge_cpp/k_closest_stars.cc +++ b/epi_judge_cpp/k_closest_stars.cc @@ -17,8 +17,8 @@ struct Star { double x, y, z; }; -vector FindClosestKStars(vector::const_iterator star_begin, - const vector::const_iterator& star_end, +vector FindClosestKStars(vector::const_iterator stars_begin, + const vector::const_iterator& stars_end, int k) { // Implement this placeholder. return {}; @@ -54,7 +54,8 @@ vector FindClosestKStarsWrapper(const vector& stars, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "k_closest_stars.tsv", + std::vector param_names{"stars", "k"}; + generic_test_main(argc, argv, param_names, "k_closest_stars.tsv", &FindClosestKStarsWrapper, &Comp); return 0; } diff --git a/epi_judge_cpp/k_largest_in_heap.cc b/epi_judge_cpp/k_largest_in_heap.cc index c5ca8d6ba..32040d144 100644 --- a/epi_judge_cpp/k_largest_in_heap.cc +++ b/epi_judge_cpp/k_largest_in_heap.cc @@ -10,7 +10,9 @@ vector KLargestInBinaryHeap(const vector& A, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "k_largest_in_heap.tsv", &KLargestInBinaryHeap, + std::vector param_names{"A", "k"}; + generic_test_main(argc, argv, param_names, "k_largest_in_heap.tsv", + &KLargestInBinaryHeap, &UnorderedComparator>); return 0; } diff --git a/epi_judge_cpp/k_largest_values_in_bst.cc b/epi_judge_cpp/k_largest_values_in_bst.cc index 9aa9a2f0a..5e0bff793 100644 --- a/epi_judge_cpp/k_largest_values_in_bst.cc +++ b/epi_judge_cpp/k_largest_values_in_bst.cc @@ -14,7 +14,8 @@ vector FindKLargestInBST(const unique_ptr>& tree, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "k_largest_values_in_bst.tsv", + std::vector param_names{"tree", "k"}; + generic_test_main(argc, argv, param_names, "k_largest_values_in_bst.tsv", &FindKLargestInBST, &UnorderedComparator>); return 0; } diff --git a/epi_judge_cpp/knapsack.cc b/epi_judge_cpp/knapsack.cc index 1ca2b2709..60fbdd66f 100644 --- a/epi_judge_cpp/knapsack.cc +++ b/epi_judge_cpp/knapsack.cc @@ -19,6 +19,8 @@ struct SerializationTraits : UserSerTraits {}; #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "knapsack.tsv", &OptimumSubjectToCapacity); + std::vector param_names{"items", "capacity"}; + generic_test_main(argc, argv, param_names, "knapsack.tsv", + &OptimumSubjectToCapacity); return 0; } diff --git a/epi_judge_cpp/kth_largest_element_in_two_sorted_arrays.cc b/epi_judge_cpp/kth_largest_element_in_two_sorted_arrays.cc index 1f90b1ac8..2286898f1 100644 --- a/epi_judge_cpp/kth_largest_element_in_two_sorted_arrays.cc +++ b/epi_judge_cpp/kth_largest_element_in_two_sorted_arrays.cc @@ -11,7 +11,9 @@ int FindKthInTwoSortedArrays(const vector& A, const vector& B, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "kth_largest_element_in_two_sorted_arrays.tsv", + std::vector param_names{"A", "B", "k"}; + generic_test_main(argc, argv, param_names, + "kth_largest_element_in_two_sorted_arrays.tsv", &FindKthInTwoSortedArrays); return 0; } diff --git a/epi_judge_cpp/kth_largest_in_array.cc b/epi_judge_cpp/kth_largest_in_array.cc index 4685a74d0..c1a5575e2 100644 --- a/epi_judge_cpp/kth_largest_in_array.cc +++ b/epi_judge_cpp/kth_largest_in_array.cc @@ -10,14 +10,15 @@ int FindKthLargest(int k, vector* A_ptr) { return 0; } -int FindKthLargestWrapper(int k, vector& v) { - return FindKthLargest(k, &v); +int FindKthLargestWrapper(int k, vector& A) { + return FindKthLargest(k, &A); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "kth_largest_in_array.tsv", + std::vector param_names{"k", "A"}; + generic_test_main(argc, argv, param_names, "kth_largest_in_array.tsv", &FindKthLargestWrapper); return 0; } diff --git a/epi_judge_cpp/kth_node_in_tree.cc b/epi_judge_cpp/kth_node_in_tree.cc index a425cb347..0f39e3b4a 100644 --- a/epi_judge_cpp/kth_node_in_tree.cc +++ b/epi_judge_cpp/kth_node_in_tree.cc @@ -88,9 +88,9 @@ struct SerializationTraits>> { } }; -int FindKthNodeBinaryTreeWrapper(const unique_ptr>& root, - int node_idx) { - auto result = FindKthNodeBinaryTree(root, node_idx); +int FindKthNodeBinaryTreeWrapper(const unique_ptr>& tree, + int k) { + auto result = FindKthNodeBinaryTree(tree, k); if (!result) { throw TestFailureException("Result can't be nullptr"); } @@ -100,7 +100,8 @@ int FindKthNodeBinaryTreeWrapper(const unique_ptr>& root, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "kth_node_in_tree.tsv", + std::vector param_names{"tree", "k"}; + generic_test_main(argc, argv, param_names, "kth_node_in_tree.tsv", &FindKthNodeBinaryTreeWrapper); return 0; } diff --git a/epi_judge_cpp/largest_rectangle_under_skyline.cc b/epi_judge_cpp/largest_rectangle_under_skyline.cc index 8c6f84743..0223898ab 100644 --- a/epi_judge_cpp/largest_rectangle_under_skyline.cc +++ b/epi_judge_cpp/largest_rectangle_under_skyline.cc @@ -10,7 +10,9 @@ int CalculateLargestRectangle(const vector& heights) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "largest_rectangle_under_skyline.tsv", + std::vector param_names{"heights"}; + generic_test_main(argc, argv, param_names, + "largest_rectangle_under_skyline.tsv", &CalculateLargestRectangle); return 0; } diff --git a/epi_judge_cpp/left_right_justify_text.cc b/epi_judge_cpp/left_right_justify_text.cc index 5c38ef9dc..84a4492ef 100644 --- a/epi_judge_cpp/left_right_justify_text.cc +++ b/epi_judge_cpp/left_right_justify_text.cc @@ -12,6 +12,8 @@ vector JustifyText(const vector& words, int L) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "left_right_justify_text.tsv", &JustifyText); + std::vector param_names{"words", "L"}; + generic_test_main(argc, argv, param_names, "left_right_justify_text.tsv", + &JustifyText); return 0; } diff --git a/epi_judge_cpp/levenshtein_distance.cc b/epi_judge_cpp/levenshtein_distance.cc index bc76f0631..82a6449a4 100644 --- a/epi_judge_cpp/levenshtein_distance.cc +++ b/epi_judge_cpp/levenshtein_distance.cc @@ -12,7 +12,8 @@ int LevenshteinDistance(const string& A, const string& B) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "levenshtein_distance.tsv", + std::vector param_names{"A", "B"}; + generic_test_main(argc, argv, param_names, "levenshtein_distance.tsv", &LevenshteinDistance); return 0; } diff --git a/epi_judge_cpp/line_though_most_points.cc b/epi_judge_cpp/line_though_most_points.cc index 72da52f9c..26559135e 100644 --- a/epi_judge_cpp/line_though_most_points.cc +++ b/epi_judge_cpp/line_though_most_points.cc @@ -23,7 +23,8 @@ bool operator==(const Point& lhs, const Point& rhs) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "line_though_most_points.tsv", + std::vector param_names{"points"}; + generic_test_main(argc, argv, param_names, "line_though_most_points.tsv", &FindLineWithMostPoints); return 0; } diff --git a/epi_judge_cpp/list_cyclic_right_shift.cc b/epi_judge_cpp/list_cyclic_right_shift.cc index ddddb8b9e..788a4319e 100644 --- a/epi_judge_cpp/list_cyclic_right_shift.cc +++ b/epi_judge_cpp/list_cyclic_right_shift.cc @@ -13,7 +13,8 @@ shared_ptr> CyclicallyRightShiftList(shared_ptr> L, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "list_cyclic_right_shift.tsv", + std::vector param_names{"L", "k"}; + generic_test_main(argc, argv, param_names, "list_cyclic_right_shift.tsv", &CyclicallyRightShiftList); return 0; } diff --git a/epi_judge_cpp/longest_contained_interval.cc b/epi_judge_cpp/longest_contained_interval.cc index 6d9d0ae5c..59fc1450d 100644 --- a/epi_judge_cpp/longest_contained_interval.cc +++ b/epi_judge_cpp/longest_contained_interval.cc @@ -10,7 +10,8 @@ int LongestContainedRange(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "longest_contained_interval.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "longest_contained_interval.tsv", &LongestContainedRange); return 0; } diff --git a/epi_judge_cpp/longest_increasing_subarray.cc b/epi_judge_cpp/longest_increasing_subarray.cc index 338016a61..a5ee64139 100644 --- a/epi_judge_cpp/longest_increasing_subarray.cc +++ b/epi_judge_cpp/longest_increasing_subarray.cc @@ -12,14 +12,15 @@ Subarray FindLongestIncreasingSubarray(const vector& A) { } int FindLongestIncreasingSubarrayWrapper(const vector& A) { - auto result = FindLongestIncreasingSubarray(A); + Subarray result = FindLongestIncreasingSubarray(A); return result.end - result.start + 1; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "longest_increasing_subarray.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "longest_increasing_subarray.tsv", &FindLongestIncreasingSubarrayWrapper); return 0; } diff --git a/epi_judge_cpp/longest_nondecreasing_subsequence.cc b/epi_judge_cpp/longest_nondecreasing_subsequence.cc index 56bcb54fb..b70300585 100644 --- a/epi_judge_cpp/longest_nondecreasing_subsequence.cc +++ b/epi_judge_cpp/longest_nondecreasing_subsequence.cc @@ -10,7 +10,9 @@ int LongestNondecreasingSubsequenceLength(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "longest_nondecreasing_subsequence.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, + "longest_nondecreasing_subsequence.tsv", &LongestNondecreasingSubsequenceLength); return 0; } diff --git a/epi_judge_cpp/longest_subarray_with_distinct_values.cc b/epi_judge_cpp/longest_subarray_with_distinct_values.cc index 675d73839..2abc04e09 100644 --- a/epi_judge_cpp/longest_subarray_with_distinct_values.cc +++ b/epi_judge_cpp/longest_subarray_with_distinct_values.cc @@ -10,7 +10,9 @@ int LongestSubarrayWithDistinctEntries(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "longest_subarray_with_distinct_values.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, + "longest_subarray_with_distinct_values.tsv", &LongestSubarrayWithDistinctEntries); return 0; } diff --git a/epi_judge_cpp/longest_subarray_with_sum_constraint.cc b/epi_judge_cpp/longest_subarray_with_sum_constraint.cc index 6dbb77829..4a38d8418 100644 --- a/epi_judge_cpp/longest_subarray_with_sum_constraint.cc +++ b/epi_judge_cpp/longest_subarray_with_sum_constraint.cc @@ -10,7 +10,9 @@ int FindLongestSubarrayLessEqualK(const vector& A, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "longest_subarray_with_sum_constraint.tsv", + std::vector param_names{"&A", "k"}; + generic_test_main(argc, argv, param_names, + "longest_subarray_with_sum_constraint.tsv", &FindLongestSubarrayLessEqualK); return 0; } diff --git a/epi_judge_cpp/longest_substring_with_matching_parentheses.cc b/epi_judge_cpp/longest_substring_with_matching_parentheses.cc index 5136fa91a..351d78c64 100644 --- a/epi_judge_cpp/longest_substring_with_matching_parentheses.cc +++ b/epi_judge_cpp/longest_substring_with_matching_parentheses.cc @@ -12,7 +12,8 @@ int LongestMatchingParentheses(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "longest_substring_with_matching_parentheses.tsv", &LongestMatchingParentheses); return 0; diff --git a/epi_judge_cpp/look_and_say.cc b/epi_judge_cpp/look_and_say.cc index 1402c14a2..c182e152e 100644 --- a/epi_judge_cpp/look_and_say.cc +++ b/epi_judge_cpp/look_and_say.cc @@ -10,6 +10,7 @@ string LookAndSay(int n) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "look_and_say.tsv", &LookAndSay); + std::vector param_names{"n"}; + generic_test_main(argc, argv, param_names, "look_and_say.tsv", &LookAndSay); return 0; } diff --git a/epi_judge_cpp/lowest_common_ancestor.cc b/epi_judge_cpp/lowest_common_ancestor.cc index 61cc2fa3f..b33112052 100644 --- a/epi_judge_cpp/lowest_common_ancestor.cc +++ b/epi_judge_cpp/lowest_common_ancestor.cc @@ -14,13 +14,10 @@ BinaryTreeNode* LCA(const unique_ptr>& tree, return nullptr; } -int LcaWrapper(TestTimer& timer, const unique_ptr>& root, - int key1, int key2) { - auto& node1 = MustFindNode(root, key1); - auto& node2 = MustFindNode(root, key2); - +int LcaWrapper(TestTimer& timer, const unique_ptr>& tree, + int node0, int node1) { timer.Start(); - auto result = LCA(root, node1, node2); + auto result = LCA(tree, MustFindNode(tree, node0), MustFindNode(tree, node1)); timer.Stop(); if (!result) { @@ -32,6 +29,8 @@ int LcaWrapper(TestTimer& timer, const unique_ptr>& root, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "lowest_common_ancestor.tsv", &LcaWrapper); + std::vector param_names{"timer", "tree", "node0", "node1"}; + generic_test_main(argc, argv, param_names, "lowest_common_ancestor.tsv", + &LcaWrapper); return 0; } diff --git a/epi_judge_cpp/lowest_common_ancestor_close_ancestor.cc b/epi_judge_cpp/lowest_common_ancestor_close_ancestor.cc index 5784b7e0b..fd999955e 100644 --- a/epi_judge_cpp/lowest_common_ancestor_close_ancestor.cc +++ b/epi_judge_cpp/lowest_common_ancestor_close_ancestor.cc @@ -7,19 +7,16 @@ using std::unique_ptr; -BinaryTreeNode* LCA(const unique_ptr>& node_0, - const unique_ptr>& node_1) { +BinaryTreeNode* LCA(const unique_ptr>& node0, + const unique_ptr>& node1) { // Implement this placeholder. return nullptr; } -int LcaWrapper(TestTimer& timer, const unique_ptr>& root, - int key1, int key2) { - auto& node1 = MustFindNode(root, key1); - auto& node2 = MustFindNode(root, key2); - +int LcaWrapper(TestTimer& timer, const unique_ptr>& tree, + int node0, int node1) { timer.Start(); - auto result = LCA(node1, node2); + auto result = LCA(MustFindNode(tree, node0), MustFindNode(tree, node1)); timer.Stop(); if (!result) { @@ -31,6 +28,8 @@ int LcaWrapper(TestTimer& timer, const unique_ptr>& root, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "lowest_common_ancestor.tsv", &LcaWrapper); + std::vector param_names{"timer", "tree", "node0", "node1"}; + generic_test_main(argc, argv, param_names, "lowest_common_ancestor.tsv", + &LcaWrapper); return 0; } diff --git a/epi_judge_cpp/lowest_common_ancestor_in_bst.cc b/epi_judge_cpp/lowest_common_ancestor_in_bst.cc index 3b4d46463..e7ec90dec 100644 --- a/epi_judge_cpp/lowest_common_ancestor_in_bst.cc +++ b/epi_judge_cpp/lowest_common_ancestor_in_bst.cc @@ -16,12 +16,10 @@ BstNode* FindLCA(const unique_ptr>& tree, return nullptr; } -int LcaWrapper(TestTimer& timer, const std::unique_ptr>& root, - int key1, int key2) { - auto& node1 = MustFindNode(root, key1); - auto& node2 = MustFindNode(root, key2); +int LcaWrapper(TestTimer& timer, const std::unique_ptr>& tree, + int s, int b) { timer.Start(); - auto result = FindLCA(root, node1, node2); + auto result = FindLCA(tree, MustFindNode(tree, s), MustFindNode(tree, b)); timer.Stop(); if (!result) { throw TestFailureException("Result can not be nullptr"); @@ -32,7 +30,8 @@ int LcaWrapper(TestTimer& timer, const std::unique_ptr>& root, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "lowest_common_ancestor_in_bst.tsv", - &LcaWrapper); + std::vector param_names{"timer", "tree", "s", "b"}; + generic_test_main(argc, argv, param_names, + "lowest_common_ancestor_in_bst.tsv", &LcaWrapper); return 0; } diff --git a/epi_judge_cpp/lowest_common_ancestor_with_parent.cc b/epi_judge_cpp/lowest_common_ancestor_with_parent.cc index ee7967370..eeb983b18 100644 --- a/epi_judge_cpp/lowest_common_ancestor_with_parent.cc +++ b/epi_judge_cpp/lowest_common_ancestor_with_parent.cc @@ -4,19 +4,17 @@ #include "test_framework/test_failure_exception.h" #include "test_framework/test_timer.h" -BinaryTreeNode* LCA(const unique_ptr>& node_0, - const unique_ptr>& node_1) { +BinaryTreeNode* LCA(const unique_ptr>& node0, + const unique_ptr>& node1) { // Implement this placeholder. return nullptr; } -int LcaWrapper(TestTimer& timer, const unique_ptr>& root, - int key1, int key2) { - auto& node1 = MustFindNode(root, key1); - auto& node2 = MustFindNode(root, key2); - +int LcaWrapper(TestTimer& timer, const unique_ptr>& tree, + int node0, int node1) { timer.Start(); - auto result = LCA(node1, node2); + BinaryTreeNode* result = + LCA(MustFindNode(tree, node0), MustFindNode(tree, node1)); timer.Stop(); if (!result) { @@ -28,6 +26,8 @@ int LcaWrapper(TestTimer& timer, const unique_ptr>& root, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "lowest_common_ancestor.tsv", &LcaWrapper); + std::vector param_names{"timer", "tree", "node0", "node1"}; + generic_test_main(argc, argv, param_names, "lowest_common_ancestor.tsv", + &LcaWrapper); return 0; } diff --git a/epi_judge_cpp/lru_cache.cc b/epi_judge_cpp/lru_cache.cc index 8fa3f0a90..0b7a82cb2 100644 --- a/epi_judge_cpp/lru_cache.cc +++ b/epi_judge_cpp/lru_cache.cc @@ -65,6 +65,7 @@ void RunTest(const std::vector& commands) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "lru_cache.tsv", &RunTest); + std::vector param_names{"commands"}; + generic_test_main(argc, argv, param_names, "lru_cache.tsv", &RunTest); return 0; } diff --git a/epi_judge_cpp/majority_element.cc b/epi_judge_cpp/majority_element.cc index 0681c059b..096406876 100644 --- a/epi_judge_cpp/majority_element.cc +++ b/epi_judge_cpp/majority_element.cc @@ -4,19 +4,21 @@ using std::string; using std::vector; -string MajoritySearch(vector::const_iterator input_stream_begin, - const vector::const_iterator input_stream_end) { +string MajoritySearch(vector::const_iterator stream_begin, + const vector::const_iterator stream_end) { // Implement this placeholder. return ""; } -string MajoritySearchWrapper(const vector& input_stream) { - return MajoritySearch(cbegin(input_stream), cend(input_stream)); +string MajoritySearchWrapper(const vector& stream) { + return MajoritySearch(cbegin(stream), cend(stream)); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "majority_element.tsv", &MajoritySearchWrapper); + std::vector param_names{"stream"}; + generic_test_main(argc, argv, param_names, "majority_element.tsv", + &MajoritySearchWrapper); return 0; } diff --git a/epi_judge_cpp/matrix_connected_regions.cc b/epi_judge_cpp/matrix_connected_regions.cc index 51867f367..b4936b4e2 100644 --- a/epi_judge_cpp/matrix_connected_regions.cc +++ b/epi_judge_cpp/matrix_connected_regions.cc @@ -6,16 +6,16 @@ using std::deque; using std::vector; -void FlipColor(int x, int y, vector>* A_ptr) { +void FlipColor(int x, int y, vector>* image_ptr) { // Implement this placeholder. return; } vector> FlipColorWrapper(TestTimer& timer, int x, int y, - vector> a) { + vector> image) { vector> b; - b.reserve(a.size()); - for (const vector& row : a) { + b.reserve(image.size()); + for (const vector& row : image) { deque tmp; tmp.resize(row.size()); for (int i = 0; i < row.size(); ++i) { @@ -28,20 +28,21 @@ vector> FlipColorWrapper(TestTimer& timer, int x, int y, FlipColor(x, y, &b); timer.Stop(); - a.resize(b.size()); + image.resize(b.size()); - for (int i = 0; i < a.size(); ++i) { - a[i].resize(b.size()); - for (int j = 0; j < a[i].size(); ++j) { - a[i][j] = b[i][j]; + for (int i = 0; i < image.size(); ++i) { + image[i].resize(b.size()); + for (int j = 0; j < image[i].size(); ++j) { + image[i][j] = b[i][j]; } } - return a; + return image; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "painting.tsv", &FlipColorWrapper); + std::vector param_names{"timer", "x", "y", "image"}; + generic_test_main(argc, argv, param_names, "painting.tsv", &FlipColorWrapper); return 0; } diff --git a/epi_judge_cpp/matrix_enclosed_regions.cc b/epi_judge_cpp/matrix_enclosed_regions.cc index b4dae1aa3..06348bf8f 100644 --- a/epi_judge_cpp/matrix_enclosed_regions.cc +++ b/epi_judge_cpp/matrix_enclosed_regions.cc @@ -13,11 +13,11 @@ void FillSurroundedRegions(vector>* board_ptr) { } vector> FillSurroundedRegionsWrapper( - TestTimer& timer, vector> raw) { + TestTimer& timer, vector> board) { vector> char_vector; - char_vector.resize(raw.size()); - for (size_t i = 0; i < raw.size(); i++) { - for (auto& s : raw[i]) { + char_vector.resize(board.size()); + for (int i = 0; i < board.size(); i++) { + for (const string& s : board[i]) { if (s.size() != 1) { throw std::runtime_error("String size is not 1"); } @@ -29,21 +29,22 @@ vector> FillSurroundedRegionsWrapper( FillSurroundedRegions(&char_vector); timer.Stop(); - raw.clear(); - raw.resize(char_vector.size(), {}); - for (size_t i = 0; i < raw.size(); i++) { - for (auto c : char_vector[i]) { - raw[i].emplace_back(1, c); + board.clear(); + board.resize(char_vector.size(), {}); + for (int i = 0; i < board.size(); i++) { + for (char c : char_vector[i]) { + board[i].emplace_back(1, c); } } - return raw; + return board; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "matrix_enclosed_regions.tsv", + std::vector param_names{"timer", "board"}; + generic_test_main(argc, argv, param_names, "matrix_enclosed_regions.tsv", &FillSurroundedRegionsWrapper); return 0; } diff --git a/epi_judge_cpp/matrix_rotation.cc b/epi_judge_cpp/matrix_rotation.cc index d81262dd7..94a9b8284 100644 --- a/epi_judge_cpp/matrix_rotation.cc +++ b/epi_judge_cpp/matrix_rotation.cc @@ -7,14 +7,16 @@ void RotateMatrix(vector>* square_matrix_ptr) { return; } -vector> RotateMatrixWrapper(vector> m) { - RotateMatrix(&m); - return m; +vector> RotateMatrixWrapper(vector> square_matrix) { + RotateMatrix(&square_matrix); + return square_matrix; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "matrix_rotation.tsv", &RotateMatrixWrapper); + std::vector param_names{"square_matrix"}; + generic_test_main(argc, argv, param_names, "matrix_rotation.tsv", + &RotateMatrixWrapper); return 0; } diff --git a/epi_judge_cpp/max_of_sliding_window.cc b/epi_judge_cpp/max_of_sliding_window.cc index c20f18f84..de450ad3d 100644 --- a/epi_judge_cpp/max_of_sliding_window.cc +++ b/epi_judge_cpp/max_of_sliding_window.cc @@ -30,7 +30,8 @@ std::ostream& operator<<(std::ostream& out, const TrafficElement& te) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_of_sliding_window.tsv", + std::vector param_names{"A", "w"}; + generic_test_main(argc, argv, param_names, "max_of_sliding_window.tsv", &CalculateTrafficVolumes); return 0; } diff --git a/epi_judge_cpp/max_product_all_but_one.cc b/epi_judge_cpp/max_product_all_but_one.cc index 6d0e0432b..d0c803de1 100644 --- a/epi_judge_cpp/max_product_all_but_one.cc +++ b/epi_judge_cpp/max_product_all_but_one.cc @@ -10,7 +10,8 @@ int FindBiggestNMinusOneProduct(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_product_all_but_one.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "max_product_all_but_one.tsv", &FindBiggestNMinusOneProduct); return 0; } diff --git a/epi_judge_cpp/max_safe_height.cc b/epi_judge_cpp/max_safe_height.cc index f599bc10d..4d6889827 100644 --- a/epi_judge_cpp/max_safe_height.cc +++ b/epi_judge_cpp/max_safe_height.cc @@ -8,6 +8,7 @@ int GetHeight(int cases, int drops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_safe_height.tsv", &GetHeight); + std::vector param_names{"cases", "drops"}; + generic_test_main(argc, argv, param_names, "max_safe_height.tsv", &GetHeight); return 0; } diff --git a/epi_judge_cpp/max_square_submatrix.cc b/epi_judge_cpp/max_square_submatrix.cc index 1df71631e..76641ce8e 100644 --- a/epi_judge_cpp/max_square_submatrix.cc +++ b/epi_judge_cpp/max_square_submatrix.cc @@ -12,7 +12,8 @@ int MaxSquareSubmatrix(const vector>& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_square_submatrix.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "max_square_submatrix.tsv", &MaxSquareSubmatrix); return 0; } diff --git a/epi_judge_cpp/max_submatrix.cc b/epi_judge_cpp/max_submatrix.cc index 7dce9f19b..ba0cee086 100644 --- a/epi_judge_cpp/max_submatrix.cc +++ b/epi_judge_cpp/max_submatrix.cc @@ -12,6 +12,8 @@ int MaxRectangleSubmatrix(const vector>& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_submatrix.tsv", &MaxRectangleSubmatrix); + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "max_submatrix.tsv", + &MaxRectangleSubmatrix); return 0; } diff --git a/epi_judge_cpp/max_teams_in_photograph.cc b/epi_judge_cpp/max_teams_in_photograph.cc index 4f8f4984e..89e773bc0 100644 --- a/epi_judge_cpp/max_teams_in_photograph.cc +++ b/epi_judge_cpp/max_teams_in_photograph.cc @@ -12,7 +12,7 @@ struct GraphVertex { int max_distance = 0; }; -int FindLargestNumberTeams(vector* G) { +int FindLargestNumberTeams(vector* graph) { // Implement this placeholder. return 0; } @@ -49,7 +49,8 @@ int FindLargestNumberTeamsWrapper(TestTimer& timer, int k, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_teams_in_photograph.tsv", + std::vector param_names{"timer", "k", "edges"}; + generic_test_main(argc, argv, param_names, "max_teams_in_photograph.tsv", &FindLargestNumberTeamsWrapper); return 0; } diff --git a/epi_judge_cpp/max_water_trappable.cc b/epi_judge_cpp/max_water_trappable.cc index b94dc168e..703bce227 100644 --- a/epi_judge_cpp/max_water_trappable.cc +++ b/epi_judge_cpp/max_water_trappable.cc @@ -10,7 +10,8 @@ int CalculateTrappingWater(const vector& heights) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "max_water_trappable.tsv", + std::vector param_names{"&heights"}; + generic_test_main(argc, argv, param_names, "max_water_trappable.tsv", &CalculateTrappingWater); return 0; } diff --git a/epi_judge_cpp/maximum_subarray_in_circular_array.cc b/epi_judge_cpp/maximum_subarray_in_circular_array.cc index c0a32f61c..ebc50f392 100644 --- a/epi_judge_cpp/maximum_subarray_in_circular_array.cc +++ b/epi_judge_cpp/maximum_subarray_in_circular_array.cc @@ -10,7 +10,9 @@ int MaxSubarraySumInCircular(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "maximum_subarray_in_circular_array.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, + "maximum_subarray_in_circular_array.tsv", &MaxSubarraySumInCircular); return 0; } diff --git a/epi_judge_cpp/minimum_distance_3_sorted_arrays.cc b/epi_judge_cpp/minimum_distance_3_sorted_arrays.cc index 869e96b28..efa77bab4 100644 --- a/epi_judge_cpp/minimum_distance_3_sorted_arrays.cc +++ b/epi_judge_cpp/minimum_distance_3_sorted_arrays.cc @@ -11,7 +11,9 @@ int FindClosestElementsInSortedArrays( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "minimum_distance_3_sorted_arrays.tsv", + std::vector param_names{"sorted_arrays"}; + generic_test_main(argc, argv, param_names, + "minimum_distance_3_sorted_arrays.tsv", &FindClosestElementsInSortedArrays); return 0; } diff --git a/epi_judge_cpp/minimum_points_covering_intervals.cc b/epi_judge_cpp/minimum_points_covering_intervals.cc index 9fb7417a2..74b706b3d 100644 --- a/epi_judge_cpp/minimum_points_covering_intervals.cc +++ b/epi_judge_cpp/minimum_points_covering_intervals.cc @@ -19,7 +19,8 @@ struct SerializationTraits : UserSerTraits {}; #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "points_covering_intervals.tsv", + std::vector param_names{"intervals"}; + generic_test_main(argc, argv, param_names, "points_covering_intervals.tsv", &FindMinimumVisits); return 0; } diff --git a/epi_judge_cpp/minimum_waiting_time.cc b/epi_judge_cpp/minimum_waiting_time.cc index 0b9cfcc97..99168cae4 100644 --- a/epi_judge_cpp/minimum_waiting_time.cc +++ b/epi_judge_cpp/minimum_waiting_time.cc @@ -10,7 +10,8 @@ int MinimumTotalWaitingTime(vector service_times) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "minimum_waiting_time.tsv", + std::vector param_names{"service_times"}; + generic_test_main(argc, argv, param_names, "minimum_waiting_time.tsv", &MinimumTotalWaitingTime); return 0; } diff --git a/epi_judge_cpp/minimum_weight_path_in_a_triangle.cc b/epi_judge_cpp/minimum_weight_path_in_a_triangle.cc index 096cb1af4..973818c8f 100644 --- a/epi_judge_cpp/minimum_weight_path_in_a_triangle.cc +++ b/epi_judge_cpp/minimum_weight_path_in_a_triangle.cc @@ -10,7 +10,9 @@ int MinimumPathWeight(const vector>& triangle) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "minimum_weight_path_in_a_triangle.tsv", + std::vector param_names{"triangle"}; + generic_test_main(argc, argv, param_names, + "minimum_weight_path_in_a_triangle.tsv", &MinimumPathWeight); return 0; } diff --git a/epi_judge_cpp/n_queens.cc b/epi_judge_cpp/n_queens.cc index b2fd87c5f..b0fa02751 100644 --- a/epi_judge_cpp/n_queens.cc +++ b/epi_judge_cpp/n_queens.cc @@ -18,6 +18,7 @@ bool Comp(vector>& a, vector>& b) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "n_queens.tsv", &NQueens, &Comp); + std::vector param_names{"int", "int", "vector*", "n"}; + generic_test_main(argc, argv, param_names, "n_queens.tsv", &NQueens, &Comp); return 0; } diff --git a/epi_judge_cpp/nearest_repeated_entries.cc b/epi_judge_cpp/nearest_repeated_entries.cc index 39e2232c7..8cd77716e 100644 --- a/epi_judge_cpp/nearest_repeated_entries.cc +++ b/epi_judge_cpp/nearest_repeated_entries.cc @@ -12,7 +12,8 @@ int FindNearestRepetition(const vector& paragraph) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "nearest_repeated_entries.tsv", + std::vector param_names{"paragraph"}; + generic_test_main(argc, argv, param_names, "nearest_repeated_entries.tsv", &FindNearestRepetition); return 0; } diff --git a/epi_judge_cpp/next_permutation.cc b/epi_judge_cpp/next_permutation.cc index bafd5ef4a..e8fc6f176 100644 --- a/epi_judge_cpp/next_permutation.cc +++ b/epi_judge_cpp/next_permutation.cc @@ -10,6 +10,8 @@ vector NextPermutation(vector perm) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "next_permutation.tsv", &NextPermutation); + std::vector param_names{"perm"}; + generic_test_main(argc, argv, param_names, "next_permutation.tsv", + &NextPermutation); return 0; } diff --git a/epi_judge_cpp/nonuniform_random_number.cc b/epi_judge_cpp/nonuniform_random_number.cc index 5551f1866..7cbfad665 100644 --- a/epi_judge_cpp/nonuniform_random_number.cc +++ b/epi_judge_cpp/nonuniform_random_number.cc @@ -58,7 +58,8 @@ void NonuniformRandomNumberGenerationWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "nonuniform_random_number.tsv", + std::vector param_names{"timer", "values", "probabilities"}; + generic_test_main(argc, argv, param_names, "nonuniform_random_number.tsv", &NonuniformRandomNumberGenerationWrapper); return 0; } diff --git a/epi_judge_cpp/number_of_score_combinations.cc b/epi_judge_cpp/number_of_score_combinations.cc index f5e3bcb6c..e567f880b 100644 --- a/epi_judge_cpp/number_of_score_combinations.cc +++ b/epi_judge_cpp/number_of_score_combinations.cc @@ -11,7 +11,8 @@ int NumCombinationsForFinalScore(int final_score, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "number_of_score_combinations.tsv", + std::vector param_names{"final_score", "individual_play_scores"}; + generic_test_main(argc, argv, param_names, "number_of_score_combinations.tsv", &NumCombinationsForFinalScore); return 0; } diff --git a/epi_judge_cpp/number_of_traversals_matrix.cc b/epi_judge_cpp/number_of_traversals_matrix.cc index 77d36b1d1..e0c89b977 100644 --- a/epi_judge_cpp/number_of_traversals_matrix.cc +++ b/epi_judge_cpp/number_of_traversals_matrix.cc @@ -8,7 +8,8 @@ int NumberOfWays(int n, int m) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "number_of_traversals_matrix.tsv", + std::vector param_names{"n", "m"}; + generic_test_main(argc, argv, param_names, "number_of_traversals_matrix.tsv", &NumberOfWays); return 0; } diff --git a/epi_judge_cpp/number_of_traversals_staircase.cc b/epi_judge_cpp/number_of_traversals_staircase.cc index d7679d33c..5ab053539 100644 --- a/epi_judge_cpp/number_of_traversals_staircase.cc +++ b/epi_judge_cpp/number_of_traversals_staircase.cc @@ -8,7 +8,8 @@ int NumberOfWaysToTop(int top, int maximum_step) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "number_of_traversals_staircase.tsv", - &NumberOfWaysToTop); + std::vector param_names{"top", "maximum_step"}; + generic_test_main(argc, argv, param_names, + "number_of_traversals_staircase.tsv", &NumberOfWaysToTop); return 0; } diff --git a/epi_judge_cpp/offline_sampling.cc b/epi_judge_cpp/offline_sampling.cc index b1dbe7278..4ae09e40d 100644 --- a/epi_judge_cpp/offline_sampling.cc +++ b/epi_judge_cpp/offline_sampling.cc @@ -48,6 +48,8 @@ void RandomSamplingWrapper(TestTimer& timer, int k, const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "offline_sampling.tsv", &RandomSamplingWrapper); + std::vector param_names{"timer", "k", "A"}; + generic_test_main(argc, argv, param_names, "offline_sampling.tsv", + &RandomSamplingWrapper); return 0; } diff --git a/epi_judge_cpp/online_median.cc b/epi_judge_cpp/online_median.cc index c977c607b..a9de0bc89 100644 --- a/epi_judge_cpp/online_median.cc +++ b/epi_judge_cpp/online_median.cc @@ -15,6 +15,8 @@ vector OnlineMedianWrapper(const vector& sequence) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "online_median.tsv", &OnlineMedianWrapper); + std::vector param_names{"sequence"}; + generic_test_main(argc, argv, param_names, "online_median.tsv", + &OnlineMedianWrapper); return 0; } diff --git a/epi_judge_cpp/online_sampling.cc b/epi_judge_cpp/online_sampling.cc index e25d23785..6ca98acc2 100644 --- a/epi_judge_cpp/online_sampling.cc +++ b/epi_judge_cpp/online_sampling.cc @@ -18,18 +18,20 @@ vector OnlineRandomSample(vector::const_iterator stream_begin, return {}; } -bool OnlineRandomSamplingRunner(TestTimer& timer, vector A, int k) { +bool OnlineRandomSamplingRunner(TestTimer& timer, vector stream, int k) { vector> results; timer.Start(); - std::generate_n(back_inserter(results), 100000, - std::bind(OnlineRandomSample, cbegin(A), cend(A), k)); + std::generate_n( + back_inserter(results), 100000, + std::bind(OnlineRandomSample, cbegin(stream), cend(stream), k)); timer.Stop(); - int total_possible_outcomes = BinomialCoefficient(A.size(), k); - sort(begin(A), end(A)); + int total_possible_outcomes = BinomialCoefficient(stream.size(), k); + sort(begin(stream), end(stream)); vector> combinations; - for (int i = 0; i < BinomialCoefficient(A.size(), k); ++i) { - combinations.emplace_back(ComputeCombinationIdx(A, A.size(), k, i)); + for (int i = 0; i < BinomialCoefficient(stream.size(), k); ++i) { + combinations.emplace_back( + ComputeCombinationIdx(stream, stream.size(), k, i)); } vector sequence; for (vector result : results) { @@ -42,15 +44,17 @@ bool OnlineRandomSamplingRunner(TestTimer& timer, vector A, int k) { 0.01); } -void OnlineRandomSampleWrapper(TestTimer& timer, const vector& A, int k) { +void OnlineRandomSampleWrapper(TestTimer& timer, const vector& stream, + int k) { RunFuncWithRetries( - bind(OnlineRandomSamplingRunner, std::ref(timer), std::cref(A), k)); + bind(OnlineRandomSamplingRunner, std::ref(timer), std::cref(stream), k)); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "online_sampling.tsv", + std::vector param_names{"timer", "stream", "k"}; + generic_test_main(argc, argv, param_names, "online_sampling.tsv", &OnlineRandomSampleWrapper); return 0; } diff --git a/epi_judge_cpp/parity.cc b/epi_judge_cpp/parity.cc index 797f63270..87e59faa6 100644 --- a/epi_judge_cpp/parity.cc +++ b/epi_judge_cpp/parity.cc @@ -6,6 +6,7 @@ short Parity(unsigned long x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "parity.tsv", &Parity); + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "parity.tsv", &Parity); return 0; } diff --git a/epi_judge_cpp/pascal_triangle.cc b/epi_judge_cpp/pascal_triangle.cc index 5e83b8388..2b843c896 100644 --- a/epi_judge_cpp/pascal_triangle.cc +++ b/epi_judge_cpp/pascal_triangle.cc @@ -10,6 +10,8 @@ vector> GeneratePascalTriangle(int num_rows) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "pascal_triangle.tsv", &GeneratePascalTriangle); + std::vector param_names{"num_rows"}; + generic_test_main(argc, argv, param_names, "pascal_triangle.tsv", + &GeneratePascalTriangle); return 0; } diff --git a/epi_judge_cpp/path_sum.cc b/epi_judge_cpp/path_sum.cc index 575393d40..f4ba7cf0f 100644 --- a/epi_judge_cpp/path_sum.cc +++ b/epi_judge_cpp/path_sum.cc @@ -13,6 +13,7 @@ bool HasPathSum(const unique_ptr>& tree, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "path_sum.tsv", &HasPathSum); + std::vector param_names{"tree", "remaining_weight"}; + generic_test_main(argc, argv, param_names, "path_sum.tsv", &HasPathSum); return 0; } diff --git a/epi_judge_cpp/permutations.cc b/epi_judge_cpp/permutations.cc index 0ee8da34e..ea37b25f2 100644 --- a/epi_judge_cpp/permutations.cc +++ b/epi_judge_cpp/permutations.cc @@ -10,7 +10,8 @@ vector> Permutations(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "permutations.tsv", &Permutations, + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "permutations.tsv", &Permutations, &UnorderedComparator>>); return 0; } diff --git a/epi_judge_cpp/phone_number_mnemonic.cc b/epi_judge_cpp/phone_number_mnemonic.cc index 4e47d6b94..a3e554c33 100644 --- a/epi_judge_cpp/phone_number_mnemonic.cc +++ b/epi_judge_cpp/phone_number_mnemonic.cc @@ -12,7 +12,9 @@ vector PhoneMnemonic(const string& phone_number) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "phone_number_mnemonic.tsv", &PhoneMnemonic, + std::vector param_names{"phone_number"}; + generic_test_main(argc, argv, param_names, "phone_number_mnemonic.tsv", + &PhoneMnemonic, &UnorderedComparator>); return 0; } diff --git a/epi_judge_cpp/picking_up_coins.cc b/epi_judge_cpp/picking_up_coins.cc index 5e41c8eb4..dcb11fc4a 100644 --- a/epi_judge_cpp/picking_up_coins.cc +++ b/epi_judge_cpp/picking_up_coins.cc @@ -10,6 +10,8 @@ int MaximumRevenue(const vector& coins) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "picking_up_coins.tsv", &MaximumRevenue); + std::vector param_names{"coins"}; + generic_test_main(argc, argv, param_names, "picking_up_coins.tsv", + &MaximumRevenue); return 0; } diff --git a/epi_judge_cpp/pivot_list.cc b/epi_judge_cpp/pivot_list.cc index 78a755406..09e1048e9 100644 --- a/epi_judge_cpp/pivot_list.cc +++ b/epi_judge_cpp/pivot_list.cc @@ -9,7 +9,7 @@ using std::shared_ptr; -shared_ptr> ListPivoting(const shared_ptr>& L, +shared_ptr> ListPivoting(const shared_ptr>& l, int x) { // Implement this placeholder. return nullptr; @@ -29,9 +29,9 @@ void ListPivotingWrapper(TestTimer& timer, const shared_ptr>& l, int x) { std::vector original = ListToVector(l); timer.Start(); - auto pivoted_list = ListPivoting(l, x); + std::shared_ptr> pivoted_list = ListPivoting(l, x); timer.Stop(); - auto pivoted = ListToVector(pivoted_list); + vector pivoted = ListToVector(pivoted_list); enum { LESS, EQ, GREATER } mode = LESS; for (auto& i : pivoted) { switch (mode) { @@ -65,6 +65,8 @@ void ListPivotingWrapper(TestTimer& timer, const shared_ptr>& l, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "pivot_list.tsv", &ListPivotingWrapper); + std::vector param_names{"timer", "l", "x"}; + generic_test_main(argc, argv, param_names, "pivot_list.tsv", + &ListPivotingWrapper); return 0; } diff --git a/epi_judge_cpp/power_set.cc b/epi_judge_cpp/power_set.cc index e3ea46a57..fcf274ae9 100644 --- a/epi_judge_cpp/power_set.cc +++ b/epi_judge_cpp/power_set.cc @@ -10,7 +10,8 @@ vector> GeneratePowerSet(const vector& input_set) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "power_set.tsv", &GeneratePowerSet, + std::vector param_names{"input_set"}; + generic_test_main(argc, argv, param_names, "power_set.tsv", &GeneratePowerSet, &UnorderedComparator>>); return 0; } diff --git a/epi_judge_cpp/power_x_y.cc b/epi_judge_cpp/power_x_y.cc index 573a7b3fa..118819fa6 100644 --- a/epi_judge_cpp/power_x_y.cc +++ b/epi_judge_cpp/power_x_y.cc @@ -6,6 +6,7 @@ double Power(double x, int y) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "power_x_y.tsv", &Power); + std::vector param_names{"x", "y"}; + generic_test_main(argc, argv, param_names, "power_x_y.tsv", &Power); return 0; } diff --git a/epi_judge_cpp/pretty_printing.cc b/epi_judge_cpp/pretty_printing.cc index 29896fc19..8b6fa58d3 100644 --- a/epi_judge_cpp/pretty_printing.cc +++ b/epi_judge_cpp/pretty_printing.cc @@ -12,6 +12,8 @@ int MinimumMessiness(const vector& words, int line_length) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "pretty_printing.tsv", &MinimumMessiness); + std::vector param_names{"words", "line_length"}; + generic_test_main(argc, argv, param_names, "pretty_printing.tsv", + &MinimumMessiness); return 0; } diff --git a/epi_judge_cpp/prime_sieve.cc b/epi_judge_cpp/prime_sieve.cc index 6cb998da2..ff6c99dff 100644 --- a/epi_judge_cpp/prime_sieve.cc +++ b/epi_judge_cpp/prime_sieve.cc @@ -11,6 +11,8 @@ vector GeneratePrimes(int n) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "prime_sieve.tsv", &GeneratePrimes); + std::vector param_names{"n"}; + generic_test_main(argc, argv, param_names, "prime_sieve.tsv", + &GeneratePrimes); return 0; } diff --git a/epi_judge_cpp/primitive_divide.cc b/epi_judge_cpp/primitive_divide.cc index 48aee1daf..c3bbb2952 100644 --- a/epi_judge_cpp/primitive_divide.cc +++ b/epi_judge_cpp/primitive_divide.cc @@ -6,6 +6,7 @@ int Divide(int x, int y) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "primitive_divide.tsv", &Divide); + std::vector param_names{"x", "y"}; + generic_test_main(argc, argv, param_names, "primitive_divide.tsv", &Divide); return 0; } diff --git a/epi_judge_cpp/primitive_multiply.cc b/epi_judge_cpp/primitive_multiply.cc index 6d50adccb..3d82a9984 100644 --- a/epi_judge_cpp/primitive_multiply.cc +++ b/epi_judge_cpp/primitive_multiply.cc @@ -1,16 +1,14 @@ -unsigned int Multiply(unsigned int x, unsigned int y) { +unsigned long Multiply(unsigned long x, unsigned long y) { // Implement this placeholder. return 0; } -long MultiplyWrapper(long x, long y) { - return Multiply(static_cast(x), static_cast(y)); -} - #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "primitive_multiply.tsv", &MultiplyWrapper); + std::vector param_names{"x", "y"}; + generic_test_main(argc, argv, param_names, "primitive_multiply.tsv", + &Multiply); return 0; } diff --git a/epi_judge_cpp/queue_from_stacks.cc b/epi_judge_cpp/queue_from_stacks.cc index 5c884d84b..334e677cb 100644 --- a/epi_judge_cpp/queue_from_stacks.cc +++ b/epi_judge_cpp/queue_from_stacks.cc @@ -69,6 +69,8 @@ void QueueTester(const std::vector& ops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "queue_from_stacks.tsv", &QueueTester); + std::vector param_names{"ops"}; + generic_test_main(argc, argv, param_names, "queue_from_stacks.tsv", + &QueueTester); return 0; } diff --git a/epi_judge_cpp/queue_with_max.cc b/epi_judge_cpp/queue_with_max.cc index fa3a31c66..f01bf600f 100644 --- a/epi_judge_cpp/queue_with_max.cc +++ b/epi_judge_cpp/queue_with_max.cc @@ -82,6 +82,8 @@ void QueueTester(const std::vector& ops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "queue_with_max.tsv", &QueueTester); + std::vector param_names{"ops"}; + generic_test_main(argc, argv, param_names, "queue_with_max.tsv", + &QueueTester); return 0; } diff --git a/epi_judge_cpp/random_permutation.cc b/epi_judge_cpp/random_permutation.cc index d86fb04f3..380ea1911 100644 --- a/epi_judge_cpp/random_permutation.cc +++ b/epi_judge_cpp/random_permutation.cc @@ -53,7 +53,8 @@ void ComputeRandomPermutationWrapper(TestTimer& timer, int n) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "random_permutation.tsv", + std::vector param_names{"timer", "n"}; + generic_test_main(argc, argv, param_names, "random_permutation.tsv", &ComputeRandomPermutationWrapper); return 0; } diff --git a/epi_judge_cpp/random_subset.cc b/epi_judge_cpp/random_subset.cc index ecb9ef90b..b9a7934ee 100644 --- a/epi_judge_cpp/random_subset.cc +++ b/epi_judge_cpp/random_subset.cc @@ -49,6 +49,8 @@ void RandomSubsetWrapper(TestTimer& timer, int n, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "random_subset.tsv", &RandomSubsetWrapper); + std::vector param_names{"timer", "n", "k"}; + generic_test_main(argc, argv, param_names, "random_subset.tsv", + &RandomSubsetWrapper); return 0; } diff --git a/epi_judge_cpp/real_square_root.cc b/epi_judge_cpp/real_square_root.cc index 2986c754b..ca605cfce 100644 --- a/epi_judge_cpp/real_square_root.cc +++ b/epi_judge_cpp/real_square_root.cc @@ -8,6 +8,8 @@ double SquareRoot(double x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "real_square_root.tsv", &SquareRoot); + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "real_square_root.tsv", + &SquareRoot); return 0; } diff --git a/epi_judge_cpp/rectangle_intersection.cc b/epi_judge_cpp/rectangle_intersection.cc index 89c888f55..5210834a8 100644 --- a/epi_judge_cpp/rectangle_intersection.cc +++ b/epi_judge_cpp/rectangle_intersection.cc @@ -27,7 +27,8 @@ std::ostream& operator<<(std::ostream& out, const Rectangle& r) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "rectangle_intersection.tsv", + std::vector param_names{"R1", "R2"}; + generic_test_main(argc, argv, param_names, "rectangle_intersection.tsv", &IntersectRectangle); return 0; } diff --git a/epi_judge_cpp/refueling_schedule.cc b/epi_judge_cpp/refueling_schedule.cc index d2f244191..3ee1ae51e 100644 --- a/epi_judge_cpp/refueling_schedule.cc +++ b/epi_judge_cpp/refueling_schedule.cc @@ -12,6 +12,8 @@ int FindAmpleCity(const vector& gallons, const vector& distances) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "refueling_schedule.tsv", &FindAmpleCity); + std::vector param_names{"gallons", "distances"}; + generic_test_main(argc, argv, param_names, "refueling_schedule.tsv", + &FindAmpleCity); return 0; } diff --git a/epi_judge_cpp/regular_expression.cc b/epi_judge_cpp/regular_expression.cc index 5ddba5517..090a00e55 100644 --- a/epi_judge_cpp/regular_expression.cc +++ b/epi_judge_cpp/regular_expression.cc @@ -10,6 +10,8 @@ bool IsMatch(const string ®ex, const string &s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char *argv[]) { - generic_test_main(argc, argv, "regular_expression.tsv", &IsMatch); + std::vector param_names{"®ex", "&s"}; + generic_test_main(argc, argv, param_names, "regular_expression.tsv", + &IsMatch); return 0; } diff --git a/epi_judge_cpp/remove_duplicates.cc b/epi_judge_cpp/remove_duplicates.cc index 045c380af..f8ac4d77d 100644 --- a/epi_judge_cpp/remove_duplicates.cc +++ b/epi_judge_cpp/remove_duplicates.cc @@ -17,7 +17,7 @@ struct Name { string first_name, last_name; }; -void EliminateDuplicate(vector* A) { +void EliminateDuplicate(vector* names) { // Implement this placeholder. return; } @@ -30,9 +30,9 @@ std::ostream& operator<<(std::ostream& out, const Name& n) { return out << n.first_name; } -vector EliminateDuplicateWrapper(vector data) { - EliminateDuplicate(&data); - return data; +vector EliminateDuplicateWrapper(vector names) { + EliminateDuplicate(&names); + return names; } bool Comp(vector expected, vector result) { @@ -46,7 +46,8 @@ bool Comp(vector expected, vector result) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "remove_duplicates.tsv", + std::vector param_names{"names"}; + generic_test_main(argc, argv, param_names, "remove_duplicates.tsv", &EliminateDuplicateWrapper, &Comp); return 0; } diff --git a/epi_judge_cpp/remove_duplicates_from_sorted_list.cc b/epi_judge_cpp/remove_duplicates_from_sorted_list.cc index a71bf7c14..6ac03f9f7 100644 --- a/epi_judge_cpp/remove_duplicates_from_sorted_list.cc +++ b/epi_judge_cpp/remove_duplicates_from_sorted_list.cc @@ -12,7 +12,9 @@ shared_ptr> RemoveDuplicates(const shared_ptr>& L) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "remove_duplicates_from_sorted_list.tsv", + std::vector param_names{"L"}; + generic_test_main(argc, argv, param_names, + "remove_duplicates_from_sorted_list.tsv", &RemoveDuplicates); return 0; } diff --git a/epi_judge_cpp/replace_and_remove.cc b/epi_judge_cpp/replace_and_remove.cc index 5c5b0325a..c1ffb25a2 100644 --- a/epi_judge_cpp/replace_and_remove.cc +++ b/epi_judge_cpp/replace_and_remove.cc @@ -13,21 +13,21 @@ int ReplaceAndRemove(int size, char s[]) { } vector ReplaceAndRemoveWrapper(TestTimer& timer, int size, - const vector& input_s) { - std::vector s(input_s.size(), '\0'); - for (int i = 0; i < input_s.size(); ++i) { - if (!input_s[i].empty()) { - s[i] = input_s[i][0]; + const vector& s) { + std::vector s_copy(s.size(), '\0'); + for (int i = 0; i < s.size(); ++i) { + if (!s[i].empty()) { + s_copy[i] = s[i][0]; } } timer.Start(); - int res_size = ReplaceAndRemove(size, s.data()); + int res_size = ReplaceAndRemove(size, s_copy.data()); timer.Stop(); vector result; for (int i = 0; i < res_size; ++i) { - result.emplace_back(string(1, s[i])); + result.emplace_back(string(1, s_copy[i])); } return result; } @@ -35,7 +35,8 @@ vector ReplaceAndRemoveWrapper(TestTimer& timer, int size, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "replace_and_remove.tsv", + std::vector param_names{"timer", "size", "s"}; + generic_test_main(argc, argv, param_names, "replace_and_remove.tsv", &ReplaceAndRemoveWrapper); return 0; } diff --git a/epi_judge_cpp/reverse_bits.cc b/epi_judge_cpp/reverse_bits.cc index 70ec109be..819f46121 100644 --- a/epi_judge_cpp/reverse_bits.cc +++ b/epi_judge_cpp/reverse_bits.cc @@ -8,6 +8,7 @@ unsigned long ReverseBits(unsigned long x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "reverse_bits.tsv", &ReverseBits); + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "reverse_bits.tsv", &ReverseBits); return 0; } diff --git a/epi_judge_cpp/reverse_digits.cc b/epi_judge_cpp/reverse_digits.cc index 2b9d8b159..67b434299 100644 --- a/epi_judge_cpp/reverse_digits.cc +++ b/epi_judge_cpp/reverse_digits.cc @@ -7,6 +7,7 @@ long Reverse(int x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "reverse_digits.tsv", &Reverse); + std::vector param_names{"x"}; + generic_test_main(argc, argv, param_names, "reverse_digits.tsv", &Reverse); return 0; } diff --git a/epi_judge_cpp/reverse_sublist.cc b/epi_judge_cpp/reverse_sublist.cc index 6a0abe059..714c4d860 100644 --- a/epi_judge_cpp/reverse_sublist.cc +++ b/epi_judge_cpp/reverse_sublist.cc @@ -9,6 +9,8 @@ shared_ptr> ReverseSublist(shared_ptr> L, int start, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "reverse_sublist.tsv", &ReverseSublist); + std::vector param_names{"L", "start", "finish"}; + generic_test_main(argc, argv, param_names, "reverse_sublist.tsv", + &ReverseSublist); return 0; } diff --git a/epi_judge_cpp/reverse_words.cc b/epi_judge_cpp/reverse_words.cc index d4ccd6ade..046e0839b 100644 --- a/epi_judge_cpp/reverse_words.cc +++ b/epi_judge_cpp/reverse_words.cc @@ -1,5 +1,7 @@ #include +#include "test_framework/test_timer.h" + using std::string; void ReverseWords(string* s) { @@ -7,14 +9,19 @@ void ReverseWords(string* s) { return; } -string ReverseWordsWrapper(string s) { - ReverseWords(&s); - return s; +string ReverseWordsWrapper(TestTimer& timer, string s) { + string s_copy = s; + timer.Start(); + ReverseWords(&s_copy); + timer.Stop(); + return s_copy; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "reverse_words.tsv", &ReverseWordsWrapper); + std::vector param_names{"timer", "s"}; + generic_test_main(argc, argv, param_names, "reverse_words.tsv", + &ReverseWordsWrapper); return 0; } diff --git a/epi_judge_cpp/road_network.cc b/epi_judge_cpp/road_network.cc index e7570a931..fc4c7a068 100644 --- a/epi_judge_cpp/road_network.cc +++ b/epi_judge_cpp/road_network.cc @@ -29,6 +29,8 @@ std::ostream& operator<<(std::ostream& out, const HighwaySection& hs) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "road_network.tsv", &FindBestProposals); + std::vector param_names{"H", "P", "n"}; + generic_test_main(argc, argv, param_names, "road_network.tsv", + &FindBestProposals); return 0; } diff --git a/epi_judge_cpp/roman_to_integer.cc b/epi_judge_cpp/roman_to_integer.cc index 99fae0208..b2f74ee9d 100644 --- a/epi_judge_cpp/roman_to_integer.cc +++ b/epi_judge_cpp/roman_to_integer.cc @@ -10,6 +10,8 @@ int RomanToInteger(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "roman_to_integer.tsv", &RomanToInteger); + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "roman_to_integer.tsv", + &RomanToInteger); return 0; } diff --git a/epi_judge_cpp/rook_attack.cc b/epi_judge_cpp/rook_attack.cc index 67ca2f728..fbdb6e6c3 100644 --- a/epi_judge_cpp/rook_attack.cc +++ b/epi_judge_cpp/rook_attack.cc @@ -8,13 +8,16 @@ void RookAttack(vector>* A_ptr) { } vector> RookAttackWrapper(vector> A) { - RookAttack(&A); - return A; + vector> a_copy = A; + RookAttack(&a_copy); + return a_copy; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "rook_attack.tsv", &RookAttackWrapper); + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "rook_attack.tsv", + &RookAttackWrapper); return 0; } diff --git a/epi_judge_cpp/rotate_array.cc b/epi_judge_cpp/rotate_array.cc index 6d92ffa1b..61dc54e2f 100644 --- a/epi_judge_cpp/rotate_array.cc +++ b/epi_judge_cpp/rotate_array.cc @@ -1,20 +1,28 @@ #include +#include "test_framework/test_timer.h" + using std::vector; -void RotateArray(int i, vector* A) { +void RotateArray(int rotate_amount, vector* A) { // Implement this placeholder. return; } -vector RotateArrayWrapper(vector a, int k) { - RotateArray(k, &a); - return a; +vector RotateArrayWrapper(TestTimer& timer, vector A, + int rotate_amount) { + vector a_copy = A; + timer.Start(); + RotateArray(rotate_amount, &a_copy); + timer.Stop(); + return a_copy; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "rotate_array.tsv", &RotateArrayWrapper); + std::vector param_names{"timer", "A", "rotate_amount"}; + generic_test_main(argc, argv, param_names, "rotate_array.tsv", + &RotateArrayWrapper); return 0; } diff --git a/epi_judge_cpp/rotate_array_permutation.cc b/epi_judge_cpp/rotate_array_permutation.cc new file mode 100644 index 000000000..7f870df24 --- /dev/null +++ b/epi_judge_cpp/rotate_array_permutation.cc @@ -0,0 +1,11 @@ + +#include "test_framework/test_timer.h" + +#include "test_framework/test_utils_generic_main.h" + +int main(int argc, char* argv[]) { + std::vector param_names{"timer", "A", "rotate_amount"}; + generic_test_main(argc, argv, param_names, "rotate_array.tsv", + &RotateArrayWrapper); + return 0; +} diff --git a/epi_judge_cpp/run_length_compression.cc b/epi_judge_cpp/run_length_compression.cc index 8b87481ec..756a2b069 100644 --- a/epi_judge_cpp/run_length_compression.cc +++ b/epi_judge_cpp/run_length_compression.cc @@ -26,6 +26,8 @@ void RleTester(const string &encoded, const string &decoded) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char *argv[]) { - generic_test_main(argc, argv, "run_length_compression.tsv", &RleTester); + std::vector param_names{"&encoded", "&decoded"}; + generic_test_main(argc, argv, param_names, "run_length_compression.tsv", + &RleTester); return 0; } diff --git a/epi_judge_cpp/search_entry_equal_to_index.cc b/epi_judge_cpp/search_entry_equal_to_index.cc index 54132c612..2ace504ff 100644 --- a/epi_judge_cpp/search_entry_equal_to_index.cc +++ b/epi_judge_cpp/search_entry_equal_to_index.cc @@ -31,7 +31,8 @@ void SearchEntryEqualToItsIndexWrapper(TestTimer& timer, const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "binary_search_ai=i.tsv", + std::vector param_names{"timer", "A"}; + generic_test_main(argc, argv, param_names, "binary_search_ai=i.tsv", &SearchEntryEqualToItsIndexWrapper); return 0; } diff --git a/epi_judge_cpp/search_first_greater_value_in_bst.cc b/epi_judge_cpp/search_first_greater_value_in_bst.cc index 5e4091301..97af6f384 100644 --- a/epi_judge_cpp/search_first_greater_value_in_bst.cc +++ b/epi_judge_cpp/search_first_greater_value_in_bst.cc @@ -18,7 +18,9 @@ int FindFirstGreaterThanKWrapper(const unique_ptr>& tree, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_first_greater_value_in_bst.tsv", + std::vector param_names{"tree", "k"}; + generic_test_main(argc, argv, param_names, + "search_first_greater_value_in_bst.tsv", &FindFirstGreaterThanKWrapper); return 0; } diff --git a/epi_judge_cpp/search_first_key.cc b/epi_judge_cpp/search_first_key.cc index 3bcfb3fb4..06efdb980 100644 --- a/epi_judge_cpp/search_first_key.cc +++ b/epi_judge_cpp/search_first_key.cc @@ -10,6 +10,8 @@ int SearchFirstOfK(const vector& A, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_first_key.tsv", &SearchFirstOfK); + std::vector param_names{"A", "k"}; + generic_test_main(argc, argv, param_names, "search_first_key.tsv", + &SearchFirstOfK); return 0; } diff --git a/epi_judge_cpp/search_for_min_max_in_array.cc b/epi_judge_cpp/search_for_min_max_in_array.cc index a955ec12c..00123de31 100644 --- a/epi_judge_cpp/search_for_min_max_in_array.cc +++ b/epi_judge_cpp/search_for_min_max_in_array.cc @@ -28,6 +28,8 @@ std::ostream& operator<<(std::ostream& out, const MinMax& x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_for_min_max_in_array.tsv", &FindMinMax); + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "search_for_min_max_in_array.tsv", + &FindMinMax); return 0; } diff --git a/epi_judge_cpp/search_for_missing_element.cc b/epi_judge_cpp/search_for_missing_element.cc index 93888fa89..3d5bfc14c 100644 --- a/epi_judge_cpp/search_for_missing_element.cc +++ b/epi_judge_cpp/search_for_missing_element.cc @@ -30,7 +30,8 @@ std::ostream& operator<<(std::ostream& out, const DuplicateAndMissing& x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "find_missing_and_duplicate.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "find_missing_and_duplicate.tsv", &FindDuplicateMissing); return 0; } diff --git a/epi_judge_cpp/search_frequent_items.cc b/epi_judge_cpp/search_frequent_items.cc index dea88163f..029c8eff8 100644 --- a/epi_judge_cpp/search_frequent_items.cc +++ b/epi_judge_cpp/search_frequent_items.cc @@ -13,14 +13,15 @@ vector SearchFrequentItems( return {}; } -vector SearchFrequentItemsWrapper(int k, vector& v) { - return SearchFrequentItems(k, begin(v), end(v)); +vector SearchFrequentItemsWrapper(int k, vector& stream) { + return SearchFrequentItems(k, begin(stream), end(stream)); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_frequent_items.tsv", + std::vector param_names{"k", "stream"}; + generic_test_main(argc, argv, param_names, "search_frequent_items.tsv", &SearchFrequentItemsWrapper, &UnorderedComparator>); return 0; diff --git a/epi_judge_cpp/search_in_list.cc b/epi_judge_cpp/search_in_list.cc index df3565c30..42b333bb8 100644 --- a/epi_judge_cpp/search_in_list.cc +++ b/epi_judge_cpp/search_in_list.cc @@ -17,6 +17,8 @@ int SearchListWrapper(shared_ptr> L, int key) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_in_list.tsv", &SearchListWrapper); + std::vector param_names{"L", "key"}; + generic_test_main(argc, argv, param_names, "search_in_list.tsv", + &SearchListWrapper); return 0; } diff --git a/epi_judge_cpp/search_maze.cc b/epi_judge_cpp/search_maze.cc index 7951c88f3..f94d77a44 100644 --- a/epi_judge_cpp/search_maze.cc +++ b/epi_judge_cpp/search_maze.cc @@ -82,6 +82,8 @@ bool SearchMazeWrapper(TestTimer& timer, const vector>& maze, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_maze.tsv", &SearchMazeWrapper); + std::vector param_names{"timer", "maze", "s", "e"}; + generic_test_main(argc, argv, param_names, "search_maze.tsv", + &SearchMazeWrapper); return 0; } diff --git a/epi_judge_cpp/search_row_col_sorted_matrix.cc b/epi_judge_cpp/search_row_col_sorted_matrix.cc index a1d98d91a..2c2715287 100644 --- a/epi_judge_cpp/search_row_col_sorted_matrix.cc +++ b/epi_judge_cpp/search_row_col_sorted_matrix.cc @@ -10,7 +10,8 @@ bool MatrixSearch(const vector>& A, int x) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_row_col_sorted_matrix.tsv", + std::vector param_names{"A", "x"}; + generic_test_main(argc, argv, param_names, "search_row_col_sorted_matrix.tsv", &MatrixSearch); return 0; } diff --git a/epi_judge_cpp/search_shifted_sorted_array.cc b/epi_judge_cpp/search_shifted_sorted_array.cc index 08820ee19..039a4b71a 100644 --- a/epi_judge_cpp/search_shifted_sorted_array.cc +++ b/epi_judge_cpp/search_shifted_sorted_array.cc @@ -10,7 +10,8 @@ int SearchSmallest(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_shifted_sorted_array.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "search_shifted_sorted_array.tsv", &SearchSmallest); return 0; } diff --git a/epi_judge_cpp/search_unknown_length_array.cc b/epi_judge_cpp/search_unknown_length_array.cc index dae2dfcbb..e6ea63eea 100644 --- a/epi_judge_cpp/search_unknown_length_array.cc +++ b/epi_judge_cpp/search_unknown_length_array.cc @@ -10,7 +10,8 @@ int BinarySearchUnknownLength(const vector& A, int k) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "search_unknown_length_array.tsv", + std::vector param_names{"A", "k"}; + generic_test_main(argc, argv, param_names, "search_unknown_length_array.tsv", &BinarySearchUnknownLength); return 0; } diff --git a/epi_judge_cpp/smallest_nonconstructible_value.cc b/epi_judge_cpp/smallest_nonconstructible_value.cc index 09387bba2..f4d3ad8c5 100644 --- a/epi_judge_cpp/smallest_nonconstructible_value.cc +++ b/epi_judge_cpp/smallest_nonconstructible_value.cc @@ -10,7 +10,9 @@ int SmallestNonconstructibleValue(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "smallest_nonconstructible_value.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, + "smallest_nonconstructible_value.tsv", &SmallestNonconstructibleValue); return 0; } diff --git a/epi_judge_cpp/smallest_subarray_covering_all_values.cc b/epi_judge_cpp/smallest_subarray_covering_all_values.cc index b91158b00..f218d2190 100644 --- a/epi_judge_cpp/smallest_subarray_covering_all_values.cc +++ b/epi_judge_cpp/smallest_subarray_covering_all_values.cc @@ -50,7 +50,8 @@ int FindSmallestSequentiallyCoveringSubsetWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "subsequence_cover.tsv", + std::vector param_names{"timer", "paragraph", "keywords"}; + generic_test_main(argc, argv, param_names, "subsequence_cover.tsv", &FindSmallestSequentiallyCoveringSubsetWrapper); return 0; } diff --git a/epi_judge_cpp/smallest_subarray_covering_set.cc b/epi_judge_cpp/smallest_subarray_covering_set.cc index ac65e819f..fcdf683fb 100644 --- a/epi_judge_cpp/smallest_subarray_covering_set.cc +++ b/epi_judge_cpp/smallest_subarray_covering_set.cc @@ -19,22 +19,22 @@ Subarray FindSmallestSubarrayCoveringSet( return {0, 0}; } -int FindSmallestSubarrayCoveringSetWrapper(TestTimer &timer, - const vector &v, - const unordered_set &s) { - auto copy = s; +int FindSmallestSubarrayCoveringSetWrapper( + TestTimer &timer, const vector ¶graph, + const unordered_set &keywords) { + unordered_set copy = keywords; timer.Start(); - auto result = FindSmallestSubarrayCoveringSet(v, s); + auto result = FindSmallestSubarrayCoveringSet(paragraph, keywords); timer.Stop(); - if (result.start < 0 || result.start >= v.size() || result.end < 0 || - result.end >= v.size() || result.start > result.end) { + if (result.start < 0 || result.start >= paragraph.size() || result.end < 0 || + result.end >= paragraph.size() || result.start > result.end) { throw TestFailureException("Index out of range"); } for (int i = result.start; i <= result.end; i++) { - copy.erase(v[i]); + copy.erase(paragraph[i]); } if (!copy.empty()) { @@ -47,7 +47,9 @@ int FindSmallestSubarrayCoveringSetWrapper(TestTimer &timer, #include "test_framework/test_utils_generic_main.h" int main(int argc, char *argv[]) { - generic_test_main(argc, argv, "smallest_subarray_covering_set.tsv", + std::vector param_names{"&timer", "¶graph", "&keywords"}; + generic_test_main(argc, argv, param_names, + "smallest_subarray_covering_set.tsv", &FindSmallestSubarrayCoveringSetWrapper); return 0; } diff --git a/epi_judge_cpp/snake_string.cc b/epi_judge_cpp/snake_string.cc index e938ecada..c6360f2b8 100644 --- a/epi_judge_cpp/snake_string.cc +++ b/epi_judge_cpp/snake_string.cc @@ -10,6 +10,7 @@ string SnakeString(const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "snake_string.tsv", &SnakeString); + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "snake_string.tsv", &SnakeString); return 0; } diff --git a/epi_judge_cpp/sort_almost_sorted_array.cc b/epi_judge_cpp/sort_almost_sorted_array.cc index b145fd1b9..ae032ea78 100644 --- a/epi_judge_cpp/sort_almost_sorted_array.cc +++ b/epi_judge_cpp/sort_almost_sorted_array.cc @@ -9,14 +9,16 @@ vector SortApproximatelySortedData( return {}; } -vector SortApproximatelySortedDataWrapper(const vector& data, int k) { - return SortApproximatelySortedData(cbegin(data), cend(data), k); +vector SortApproximatelySortedDataWrapper(const vector& sequence, + int k) { + return SortApproximatelySortedData(cbegin(sequence), cend(sequence), k); } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sort_almost_sorted_array.tsv", + std::vector param_names{"sequence", "k"}; + generic_test_main(argc, argv, param_names, "sort_almost_sorted_array.tsv", &SortApproximatelySortedDataWrapper); return 0; } diff --git a/epi_judge_cpp/sort_increasing_decreasing_array.cc b/epi_judge_cpp/sort_increasing_decreasing_array.cc index e35f90bf1..29af54e12 100644 --- a/epi_judge_cpp/sort_increasing_decreasing_array.cc +++ b/epi_judge_cpp/sort_increasing_decreasing_array.cc @@ -10,7 +10,9 @@ vector SortKIncreasingDecreasingArray(const vector& A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sort_increasing_decreasing_array.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, + "sort_increasing_decreasing_array.tsv", &SortKIncreasingDecreasingArray); return 0; } diff --git a/epi_judge_cpp/sort_list.cc b/epi_judge_cpp/sort_list.cc index c086671e8..93f8c5329 100644 --- a/epi_judge_cpp/sort_list.cc +++ b/epi_judge_cpp/sort_list.cc @@ -10,6 +10,7 @@ shared_ptr> StableSortList(shared_ptr> L) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sort_list.tsv", &StableSortList); + std::vector param_names{"L"}; + generic_test_main(argc, argv, param_names, "sort_list.tsv", &StableSortList); return 0; } diff --git a/epi_judge_cpp/sorted_array_remove_dups.cc b/epi_judge_cpp/sorted_array_remove_dups.cc index 3471a3dbd..045cf1f98 100644 --- a/epi_judge_cpp/sorted_array_remove_dups.cc +++ b/epi_judge_cpp/sorted_array_remove_dups.cc @@ -17,7 +17,8 @@ vector DeleteDuplicatesWrapper(vector A) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sorted_array_remove_dups.tsv", + std::vector param_names{"A"}; + generic_test_main(argc, argv, param_names, "sorted_array_remove_dups.tsv", &DeleteDuplicatesWrapper); return 0; } diff --git a/epi_judge_cpp/sorted_arrays_merge.cc b/epi_judge_cpp/sorted_arrays_merge.cc index 6864b4168..4119106d9 100644 --- a/epi_judge_cpp/sorted_arrays_merge.cc +++ b/epi_judge_cpp/sorted_arrays_merge.cc @@ -10,6 +10,8 @@ vector MergeSortedArrays(const vector>& sorted_arrays) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sorted_arrays_merge.tsv", &MergeSortedArrays); + std::vector param_names{"sorted_arrays"}; + generic_test_main(argc, argv, param_names, "sorted_arrays_merge.tsv", + &MergeSortedArrays); return 0; } diff --git a/epi_judge_cpp/sorted_list_to_bst.cc b/epi_judge_cpp/sorted_list_to_bst.cc index ee0e64644..3cdb48223 100644 --- a/epi_judge_cpp/sorted_list_to_bst.cc +++ b/epi_judge_cpp/sorted_list_to_bst.cc @@ -39,9 +39,9 @@ void CompareVectorAndTree(const shared_ptr>& tree, } void BuildBSTFromSortedDoublyListWrapper(TestTimer& timer, - const vector& v) { + const vector& L) { shared_ptr> list; - for (auto it = rbegin(v); it != rend(v); ++it) { + for (auto it = rbegin(L); it != rend(L); ++it) { list = make_shared>(*it, nullptr, list); if (list->next) { list->next->prev = list; @@ -49,12 +49,12 @@ void BuildBSTFromSortedDoublyListWrapper(TestTimer& timer, } timer.Start(); - list = BuildBSTFromSortedDoublyList(list, static_cast(v.size())); + list = BuildBSTFromSortedDoublyList(list, static_cast(L.size())); timer.Stop(); - auto current = begin(v); - CompareVectorAndTree(list, current, end(v)); - if (current != end(v)) { + auto current = begin(L); + CompareVectorAndTree(list, current, end(L)); + if (current != end(L)) { throw TestFailureException("Too many values in the tree"); } @@ -67,7 +67,8 @@ void BuildBSTFromSortedDoublyListWrapper(TestTimer& timer, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sorted_list_to_bst.tsv", + std::vector param_names{"timer", "L"}; + generic_test_main(argc, argv, param_names, "sorted_list_to_bst.tsv", &BuildBSTFromSortedDoublyListWrapper); return 0; } diff --git a/epi_judge_cpp/sorted_lists_merge.cc b/epi_judge_cpp/sorted_lists_merge.cc index a636f337d..e90d4bead 100644 --- a/epi_judge_cpp/sorted_lists_merge.cc +++ b/epi_judge_cpp/sorted_lists_merge.cc @@ -9,6 +9,8 @@ shared_ptr> MergeTwoSortedLists(shared_ptr> L1, #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sorted_lists_merge.tsv", &MergeTwoSortedLists); + std::vector param_names{"L1", "L2"}; + generic_test_main(argc, argv, param_names, "sorted_lists_merge.tsv", + &MergeTwoSortedLists); return 0; } diff --git a/epi_judge_cpp/spiral_ordering_segments.cc b/epi_judge_cpp/spiral_ordering_segments.cc index de8bd9eae..859a3a69a 100644 --- a/epi_judge_cpp/spiral_ordering_segments.cc +++ b/epi_judge_cpp/spiral_ordering_segments.cc @@ -10,7 +10,8 @@ vector MatrixInSpiralOrder(vector> square_matrix) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "spiral_ordering_segments.tsv", + std::vector param_names{"square_matrix"}; + generic_test_main(argc, argv, param_names, "spiral_ordering_segments.tsv", &MatrixInSpiralOrder); return 0; } diff --git a/epi_judge_cpp/spreadsheet_encoding.cc b/epi_judge_cpp/spreadsheet_encoding.cc index 353d747fd..d8a54cb93 100644 --- a/epi_judge_cpp/spreadsheet_encoding.cc +++ b/epi_judge_cpp/spreadsheet_encoding.cc @@ -10,6 +10,8 @@ int SSDecodeColID(const string& col) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "spreadsheet_encoding.tsv", &SSDecodeColID); + std::vector param_names{"col"}; + generic_test_main(argc, argv, param_names, "spreadsheet_encoding.tsv", + &SSDecodeColID); return 0; } diff --git a/epi_judge_cpp/stack_with_max.cc b/epi_judge_cpp/stack_with_max.cc index 439ebbe7b..f4a0151e8 100644 --- a/epi_judge_cpp/stack_with_max.cc +++ b/epi_judge_cpp/stack_with_max.cc @@ -78,6 +78,8 @@ void StackTester(const std::vector& ops) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "stack_with_max.tsv", &StackTester); + std::vector param_names{"ops"}; + generic_test_main(argc, argv, param_names, "stack_with_max.tsv", + &StackTester); return 0; } diff --git a/epi_judge_cpp/string_decompositions_into_dictionary_words.cc b/epi_judge_cpp/string_decompositions_into_dictionary_words.cc index 491b7db56..dc1f9c669 100644 --- a/epi_judge_cpp/string_decompositions_into_dictionary_words.cc +++ b/epi_judge_cpp/string_decompositions_into_dictionary_words.cc @@ -12,7 +12,8 @@ vector FindAllSubstrings(const string& s, const vector& words) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, + std::vector param_names{"s", "words"}; + generic_test_main(argc, argv, param_names, "string_decompositions_into_dictionary_words.tsv", &FindAllSubstrings); return 0; diff --git a/epi_judge_cpp/string_integer_interconversion.cc b/epi_judge_cpp/string_integer_interconversion.cc index 750da9ac6..926ddbd9b 100644 --- a/epi_judge_cpp/string_integer_interconversion.cc +++ b/epi_judge_cpp/string_integer_interconversion.cc @@ -14,12 +14,12 @@ int StringToInt(const string& s) { return 0; } -void Wrapper(int num, const string& s) { - if (IntToString(num) != s) { +void Wrapper(int x, const string& s) { + if (IntToString(x) != s) { throw TestFailureException("Int to string conversion failed"); } - if (StringToInt(s) != num) { + if (StringToInt(s) != x) { throw TestFailureException("String to int conversion failed"); } } @@ -27,6 +27,8 @@ void Wrapper(int num, const string& s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "string_integer_interconversion.tsv", &Wrapper); + std::vector param_names{"x", "s"}; + generic_test_main(argc, argv, param_names, + "string_integer_interconversion.tsv", &Wrapper); return 0; } diff --git a/epi_judge_cpp/string_transformability.cc b/epi_judge_cpp/string_transformability.cc index aa026ecd2..115fd0729 100644 --- a/epi_judge_cpp/string_transformability.cc +++ b/epi_judge_cpp/string_transformability.cc @@ -13,7 +13,8 @@ int TransformString(unordered_set D, const string& s, const string& t) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "string_transformability.tsv", + std::vector param_names{"D", "s", "t"}; + generic_test_main(argc, argv, param_names, "string_transformability.tsv", &TransformString); return 0; } diff --git a/epi_judge_cpp/substring_match.cc b/epi_judge_cpp/substring_match.cc index 95f77f5c7..c5b3b7906 100644 --- a/epi_judge_cpp/substring_match.cc +++ b/epi_judge_cpp/substring_match.cc @@ -12,6 +12,7 @@ int RabinKarp(const string &t, const string &s) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char *argv[]) { - generic_test_main(argc, argv, "substring_match.tsv", &RabinKarp); + std::vector param_names{"&t", "&s"}; + generic_test_main(argc, argv, param_names, "substring_match.tsv", &RabinKarp); return 0; } diff --git a/epi_judge_cpp/successor_in_tree.cc b/epi_judge_cpp/successor_in_tree.cc index ceccac1b0..af277c68d 100644 --- a/epi_judge_cpp/successor_in_tree.cc +++ b/epi_judge_cpp/successor_in_tree.cc @@ -7,15 +7,17 @@ BinaryTreeNode* FindSuccessor( return nullptr; } -int FindSuccessorWrapper(const unique_ptr>& root, +int FindSuccessorWrapper(const unique_ptr>& tree, int node_idx) { - auto result = FindSuccessor(MustFindNode(root, node_idx)); + auto result = FindSuccessor(MustFindNode(tree, node_idx)); return result ? result->data : -1; } #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "successor_in_tree.tsv", &FindSuccessorWrapper); + std::vector param_names{"tree", "node_idx"}; + generic_test_main(argc, argv, param_names, "successor_in_tree.tsv", + &FindSuccessorWrapper); return 0; } diff --git a/epi_judge_cpp/sudoku_solve.cc b/epi_judge_cpp/sudoku_solve.cc index d0a45944c..4bdde0ed1 100644 --- a/epi_judge_cpp/sudoku_solve.cc +++ b/epi_judge_cpp/sudoku_solve.cc @@ -53,15 +53,16 @@ void AssertUniqueSeq(const vector& seq) { } } -void SolveSudokuWrapper(TestTimer& timer, const vector>& board) { - vector> solved = board; +void SolveSudokuWrapper(TestTimer& timer, + const vector>& partial_assignment) { + vector> solved = partial_assignment; timer.Start(); SolveSudoku(&solved); timer.Stop(); - if (!std::equal(begin(board), end(board), begin(solved), end(solved), - [](auto br, auto cr) { + if (!std::equal(begin(partial_assignment), end(partial_assignment), + begin(solved), end(solved), [](auto br, auto cr) { return std::equal(begin(br), end(br), begin(cr), end(cr), [](int bcell, int ccell) { return bcell == 0 || bcell == ccell; @@ -81,6 +82,8 @@ void SolveSudokuWrapper(TestTimer& timer, const vector>& board) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sudoku_solve.tsv", &SolveSudokuWrapper); + std::vector param_names{"timer", "partial_assignment"}; + generic_test_main(argc, argv, param_names, "sudoku_solve.tsv", + &SolveSudokuWrapper); return 0; } diff --git a/epi_judge_cpp/sum_root_to_leaf.cc b/epi_judge_cpp/sum_root_to_leaf.cc index d8a3f003c..c3d006486 100644 --- a/epi_judge_cpp/sum_root_to_leaf.cc +++ b/epi_judge_cpp/sum_root_to_leaf.cc @@ -8,6 +8,8 @@ int SumRootToLeaf(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sum_root_to_leaf.tsv", &SumRootToLeaf); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "sum_root_to_leaf.tsv", + &SumRootToLeaf); return 0; } diff --git a/epi_judge_cpp/sunset_view.cc b/epi_judge_cpp/sunset_view.cc index 79e2fd7d1..3497457e1 100644 --- a/epi_judge_cpp/sunset_view.cc +++ b/epi_judge_cpp/sunset_view.cc @@ -17,7 +17,8 @@ vector ExamineBuildingsWithSunsetWrapper(const vector& sequence) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "sunset_view.tsv", + std::vector param_names{"sequence"}; + generic_test_main(argc, argv, param_names, "sunset_view.tsv", &ExamineBuildingsWithSunsetWrapper); return 0; } diff --git a/epi_judge_cpp/swap_bits.cc b/epi_judge_cpp/swap_bits.cc index aafc4cbb3..344e7eac7 100644 --- a/epi_judge_cpp/swap_bits.cc +++ b/epi_judge_cpp/swap_bits.cc @@ -6,6 +6,7 @@ long SwapBits(long x, int i, int j) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "swap_bits.tsv", &SwapBits); + std::vector param_names{"x", "i", "j"}; + generic_test_main(argc, argv, param_names, "swap_bits.tsv", &SwapBits); return 0; } diff --git a/epi_judge_cpp/task_pairing.cc b/epi_judge_cpp/task_pairing.cc index 0754b00f1..0da9df1cf 100644 --- a/epi_judge_cpp/task_pairing.cc +++ b/epi_judge_cpp/task_pairing.cc @@ -29,6 +29,8 @@ std::ostream& operator<<(std::ostream& out, const PairedTasks& t) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "task_pairing.tsv", &OptimumTaskAssignment); + std::vector param_names{"task_durations"}; + generic_test_main(argc, argv, param_names, "task_pairing.tsv", + &OptimumTaskAssignment); return 0; } diff --git a/epi_judge_cpp/test_framework/generic_test_handler.h b/epi_judge_cpp/test_framework/generic_test_handler.h index 85c0abcb5..39027378e 100644 --- a/epi_judge_cpp/test_framework/generic_test_handler.h +++ b/epi_judge_cpp/test_framework/generic_test_handler.h @@ -62,21 +62,21 @@ class GenericTestHandler { TestOutput::return_t>; - GenericTestHandler(Function func_ptr, Comparator comp) - : func_(func_ptr), comp_(comp) {} + GenericTestHandler(Function func, Comparator comp) + : func_(func), comp_(comp) {} /** * This method ensures that test data header matches with the signature of * the tested function. * - * @param arg_types - test data header + * @param signature - test data header */ - void ParseSignature(const std::vector& arg_types) { + void ParseSignature(const std::vector& signature) { using arg_tuple_t = typename FunctionalTraits::arg_tuple_t; using ret_t = typename FunctionalTraits::return_t; MatchFunctionSignature( - std::cbegin(arg_types), std::cend(arg_types)); + std::cbegin(signature), std::cend(signature)); } /** @@ -107,6 +107,9 @@ class GenericTestHandler { typename FunctionalTraits::arg_tuple_t>::value; } + static constexpr bool HasTimerHook() { + return FunctionalTraits::HasTimerHook(); + } private: /** * This method parses expected value (if return type is not void), diff --git a/epi_judge_cpp/test_framework/test_utils.h b/epi_judge_cpp/test_framework/test_utils.h index 40ceb2336..6ceb6f138 100644 --- a/epi_judge_cpp/test_framework/test_utils.h +++ b/epi_judge_cpp/test_framework/test_utils.h @@ -44,14 +44,6 @@ std::vector> SplitTsvFile( return result; } -std::vector GetDefaultArgNames(size_t count) { - std::vector result; - for (size_t i = 0; i < count; i++) { - result.push_back("arg " + std::to_string(i)); - } - return result; -} - /** * Serialized type name can contain multiple comments, enclosed into brackets. * This function removes all such comments. @@ -146,32 +138,24 @@ std::string GetDefaultTestDataDirPath() { } // namespace template -void RunTests(const std::string& test_data_path, TestHandlerT& handler, - const std::chrono::milliseconds& timeout, bool stop_on_error) { +void RunTests(std::string test_data_path, TestHandlerT& handler, + const std::chrono::milliseconds& timeout, bool stop_on_error, + std::vector param_names) { std::vector> test_data = SplitTsvFile(test_data_path); handler.ParseSignature(test_data[0]); - std::vector arg_names; - size_t first_idx; - - if (test_data.size() >= 2 && !test_data[1].empty() && - (test_data[1][0] == "@" || test_data[1][0] == "+")) { - std::copy(test_data[1].begin() + 1, test_data[1].end(), - std::back_inserter(arg_names)); - first_idx = 2; - } else { - arg_names = GetDefaultArgNames(handler.ArgumentCount()); - first_idx = 1; + if (handler.HasTimerHook()) { + param_names.erase(param_names.begin()); //Remove "timer" parameter } - + int first_test_idx = 1; int test_nr = 1; - const int total_tests = static_cast(test_data.size() - first_idx); + const int total_tests = static_cast(test_data.size() - first_test_idx); int tests_passed = 0; const bool use_timeout = (timeout != timeout.zero()); std::vector durations; - for (size_t i = first_idx; i < test_data.size(); i++, test_nr++) { + for (int i = first_test_idx; i < test_data.size(); ++i, ++test_nr) { // Since the last field of test_data is test_explanation, which is not // used for running test, we extract that here. const std::string test_explanation = std::move(test_data[i].back()); @@ -223,7 +207,7 @@ void RunTests(const std::string& test_data_path, TestHandlerT& handler, if (!handler.ExpectedIsVoid()) { test_data[i].pop_back(); } - PrintFailedTest(arg_names, test_data[i], test_output, test_explanation); + PrintFailedTest(param_names, test_data[i], test_output, test_explanation); break; } } diff --git a/epi_judge_cpp/test_framework/test_utils_console.h b/epi_judge_cpp/test_framework/test_utils_console.h index e72578ec8..2dd904145 100644 --- a/epi_judge_cpp/test_framework/test_utils_console.h +++ b/epi_judge_cpp/test_framework/test_utils_console.h @@ -78,12 +78,10 @@ void PrintTestInfo(const TestResult& test_result, int test_nr, } } -std::string GenSpaces(size_t count) { - return std::string(count, ' '); -} +std::string GenSpaces(size_t count) { return std::string(count, ' '); } template -void PrintFailedTest(const std::vector& arg_names, +void PrintFailedTest(const std::vector& param_names, const std::vector& arguments, const TestOutputT& test_output, const std::string& test_explanation) { @@ -93,26 +91,26 @@ void PrintFailedTest(const std::vector& arg_names, const bool has_expected = (bool)test_output.expected; const bool has_result = (bool)test_output.result; - const bool has_explanation = test_explanation != "TODO" && - !test_explanation.empty(); + const bool has_explanation = + test_explanation != "TODO" && !test_explanation.empty(); - size_t max_col_size = has_explanation ? explanation_str.size() : - has_expected ? expected_str.size() : - has_result ? result_str.size() : - 0; + size_t max_col_size = + has_explanation ? explanation_str.size() + : has_expected ? expected_str.size() + : has_result ? result_str.size() : 0; - for (auto& arg : arg_names) { - if (arg.size() > max_col_size) - max_col_size = arg.size(); + for (auto& param : param_names) { + if (param.size() > max_col_size) { + max_col_size = param.size(); + } } for (unsigned int i = 0; i < arguments.size(); ++i) { - std::cout << '\t' << arg_names[i] << ": " - << GenSpaces(max_col_size - arg_names[i].size()) + std::cout << '\t' << param_names[i] << ": " + << GenSpaces(max_col_size - param_names[i].size()) << EscapeNewline{arguments[i]} << std::endl; } - if (has_expected) { std::cout << '\t' << expected_str << ": " << GenSpaces(max_col_size - expected_str.size()); diff --git a/epi_judge_cpp/test_framework/test_utils_generic_main.h b/epi_judge_cpp/test_framework/test_utils_generic_main.h index 3253b6abd..56d0f2403 100644 --- a/epi_judge_cpp/test_framework/test_utils_generic_main.h +++ b/epi_judge_cpp/test_framework/test_utils_generic_main.h @@ -18,7 +18,9 @@ * and optionally RESULT_COMPARATOR macros must be defined */ template -void generic_test_main(int argc, char* argv[], const std::string& filename, +void generic_test_main(int argc, char* argv[], + const std::vector& param_names, + const std::string& filename, Function func, Comparator comp = {}) { // Enables automatic flushing of the output stream after any output // operation. @@ -30,7 +32,7 @@ void generic_test_main(int argc, char* argv[], const std::string& filename, std::vector commandline_args(argv + 1, argv + argc); - for (unsigned int i = 0; i < commandline_args.size(); ++i) { + for (int i = 0; i < commandline_args.size(); ++i) { if (commandline_args[i] == "--test_data_dir") { if (i + 1 >= commandline_args.size()) { throw std::runtime_error("Missing param for --test_data_dir"); @@ -58,7 +60,7 @@ void generic_test_main(int argc, char* argv[], const std::string& filename, GenericTestHandler test_handler(func, comp); using namespace std::chrono_literals; - RunTests(test_data_dir + filename, test_handler, 0s, stop_on_error); + RunTests(test_data_dir + filename, test_handler, 0s, stop_on_error, param_names); } catch (std::runtime_error& e) { std::cerr << std::endl << "Critical error: " << e.what() << std::endl; } diff --git a/epi_judge_cpp/test_framework/test_utils_meta.h b/epi_judge_cpp/test_framework/test_utils_meta.h index 789a074e2..4011bbbc3 100644 --- a/epi_judge_cpp/test_framework/test_utils_meta.h +++ b/epi_judge_cpp/test_framework/test_utils_meta.h @@ -58,10 +58,9 @@ class OnScopeExit { }; /** - * Simple function reflexion. - * It is used to deduce argument types and - * return type of the function. - * @tparam Function - the type of the function to be reflected. + * Simple function reflexion. It is used to deduce argument types and return + * type of the function. + * @param Function - the type of the function to be reflected. */ template struct FunctionalTraits; diff --git a/epi_judge_cpp/three_sum.cc b/epi_judge_cpp/three_sum.cc index d864f6ffb..09058a6c7 100644 --- a/epi_judge_cpp/three_sum.cc +++ b/epi_judge_cpp/three_sum.cc @@ -10,6 +10,7 @@ bool HasThreeSum(vector A, int t) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "three_sum.tsv", &HasThreeSum); + std::vector param_names{"A", "t"}; + generic_test_main(argc, argv, param_names, "three_sum.tsv", &HasThreeSum); return 0; } diff --git a/epi_judge_cpp/tree_connect_leaves.cc b/epi_judge_cpp/tree_connect_leaves.cc index e117207e6..f05ba4c0e 100644 --- a/epi_judge_cpp/tree_connect_leaves.cc +++ b/epi_judge_cpp/tree_connect_leaves.cc @@ -36,7 +36,8 @@ vector CreateListOfLeavesWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_connect_leaves.tsv", + std::vector param_names{"timer", "tree"}; + generic_test_main(argc, argv, param_names, "tree_connect_leaves.tsv", &CreateListOfLeavesWrapper); return 0; } diff --git a/epi_judge_cpp/tree_exterior.cc b/epi_judge_cpp/tree_exterior.cc index 20869ec1e..ace53f4e0 100644 --- a/epi_judge_cpp/tree_exterior.cc +++ b/epi_judge_cpp/tree_exterior.cc @@ -35,7 +35,8 @@ vector ExteriorBinaryTreeWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_exterior.tsv", + std::vector param_names{"timer", "tree"}; + generic_test_main(argc, argv, param_names, "tree_exterior.tsv", &ExteriorBinaryTreeWrapper); return 0; } diff --git a/epi_judge_cpp/tree_from_preorder_inorder.cc b/epi_judge_cpp/tree_from_preorder_inorder.cc index b807be152..94b8205fc 100644 --- a/epi_judge_cpp/tree_from_preorder_inorder.cc +++ b/epi_judge_cpp/tree_from_preorder_inorder.cc @@ -14,7 +14,8 @@ unique_ptr> BinaryTreeFromPreorderInorder( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_from_preorder_inorder.tsv", + std::vector param_names{"preorder", "inorder"}; + generic_test_main(argc, argv, param_names, "tree_from_preorder_inorder.tsv", &BinaryTreeFromPreorderInorder); return 0; } diff --git a/epi_judge_cpp/tree_from_preorder_with_null.cc b/epi_judge_cpp/tree_from_preorder_with_null.cc index 96b49e531..6ff8dfadb 100644 --- a/epi_judge_cpp/tree_from_preorder_with_null.cc +++ b/epi_judge_cpp/tree_from_preorder_with_null.cc @@ -37,7 +37,8 @@ unique_ptr> ReconstructPreorderWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_from_preorder_with_null.tsv", + std::vector param_names{"timer", "preorder"}; + generic_test_main(argc, argv, param_names, "tree_from_preorder_with_null.tsv", &ReconstructPreorderWrapper); return 0; } diff --git a/epi_judge_cpp/tree_inorder.cc b/epi_judge_cpp/tree_inorder.cc index d261a7930..ae4109fd1 100644 --- a/epi_judge_cpp/tree_inorder.cc +++ b/epi_judge_cpp/tree_inorder.cc @@ -14,6 +14,8 @@ vector InorderTraversal(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_inorder.tsv", &InorderTraversal); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "tree_inorder.tsv", + &InorderTraversal); return 0; } diff --git a/epi_judge_cpp/tree_level_order.cc b/epi_judge_cpp/tree_level_order.cc index 506be31ef..a5777eb6a 100644 --- a/epi_judge_cpp/tree_level_order.cc +++ b/epi_judge_cpp/tree_level_order.cc @@ -15,6 +15,8 @@ vector> BinaryTreeDepthOrder( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_level_order.tsv", &BinaryTreeDepthOrder); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "tree_level_order.tsv", + &BinaryTreeDepthOrder); return 0; } diff --git a/epi_judge_cpp/tree_postorder.cc b/epi_judge_cpp/tree_postorder.cc index d73a2835a..d85bf0da1 100644 --- a/epi_judge_cpp/tree_postorder.cc +++ b/epi_judge_cpp/tree_postorder.cc @@ -15,6 +15,8 @@ vector PostorderTraversal(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_postorder.tsv", &PostorderTraversal); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "tree_postorder.tsv", + &PostorderTraversal); return 0; } diff --git a/epi_judge_cpp/tree_preorder.cc b/epi_judge_cpp/tree_preorder.cc index edafc8675..5b46731c9 100644 --- a/epi_judge_cpp/tree_preorder.cc +++ b/epi_judge_cpp/tree_preorder.cc @@ -12,6 +12,8 @@ vector PreorderTraversal(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_preorder.tsv", &PreorderTraversal); + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "tree_preorder.tsv", + &PreorderTraversal); return 0; } diff --git a/epi_judge_cpp/tree_right_sibling.cc b/epi_judge_cpp/tree_right_sibling.cc index 5dd924ea6..a4947ca6e 100644 --- a/epi_judge_cpp/tree_right_sibling.cc +++ b/epi_judge_cpp/tree_right_sibling.cc @@ -47,7 +47,8 @@ std::vector> ConstructRightSiblingWrapper( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_right_sibling.tsv", + std::vector param_names{"timer", "tree"}; + generic_test_main(argc, argv, param_names, "tree_right_sibling.tsv", &ConstructRightSiblingWrapper); return 0; } diff --git a/epi_judge_cpp/tree_with_parent_inorder.cc b/epi_judge_cpp/tree_with_parent_inorder.cc index 7e65871d8..a397cf376 100644 --- a/epi_judge_cpp/tree_with_parent_inorder.cc +++ b/epi_judge_cpp/tree_with_parent_inorder.cc @@ -12,7 +12,8 @@ vector InorderTraversal(const unique_ptr>& tree) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "tree_with_parent_inorder.tsv", + std::vector param_names{"tree"}; + generic_test_main(argc, argv, param_names, "tree_with_parent_inorder.tsv", &InorderTraversal); return 0; } diff --git a/epi_judge_cpp/two_sum.cc b/epi_judge_cpp/two_sum.cc index 9e7405b6b..985727109 100644 --- a/epi_judge_cpp/two_sum.cc +++ b/epi_judge_cpp/two_sum.cc @@ -10,6 +10,7 @@ bool HasTwoSum(const vector& A, int t) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "two_sum.tsv", &HasTwoSum); + std::vector param_names{"A", "t"}; + generic_test_main(argc, argv, param_names, "two_sum.tsv", &HasTwoSum); return 0; } diff --git a/epi_judge_cpp/uniform_random_number.cc b/epi_judge_cpp/uniform_random_number.cc index 531b482ee..bdf2649ab 100644 --- a/epi_judge_cpp/uniform_random_number.cc +++ b/epi_judge_cpp/uniform_random_number.cc @@ -44,7 +44,8 @@ void UniformRandomWrapper(TestTimer& timer, int lower_bound, int upper_bound) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "uniform_random_number.tsv", + std::vector param_names{"timer", "lower_bound", "upper_bound"}; + generic_test_main(argc, argv, param_names, "uniform_random_number.tsv", &UniformRandomWrapper); return 0; } diff --git a/epi_judge_cpp/valid_ip_addresses.cc b/epi_judge_cpp/valid_ip_addresses.cc index 84545417e..35f0e7e34 100644 --- a/epi_judge_cpp/valid_ip_addresses.cc +++ b/epi_judge_cpp/valid_ip_addresses.cc @@ -19,7 +19,8 @@ bool comp(vector expected, vector result) { #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "valid_ip_addresses.tsv", &GetValidIpAddress, - &comp); + std::vector param_names{"s"}; + generic_test_main(argc, argv, param_names, "valid_ip_addresses.tsv", + &GetValidIpAddress, &comp); return 0; } diff --git a/epi_judge_cpp/zip_list.cc b/epi_judge_cpp/zip_list.cc index a2d5f9869..62474cfcd 100644 --- a/epi_judge_cpp/zip_list.cc +++ b/epi_judge_cpp/zip_list.cc @@ -13,6 +13,8 @@ shared_ptr> ZippingLinkedList( #include "test_framework/test_utils_generic_main.h" int main(int argc, char* argv[]) { - generic_test_main(argc, argv, "zip_list.tsv", &ZippingLinkedList); + std::vector param_names{"L"}; + generic_test_main(argc, argv, param_names, "zip_list.tsv", + &ZippingLinkedList); return 0; } diff --git a/epi_judge_java/Makefile b/epi_judge_java/Makefile index 0c8f2fe24..5930c662f 100644 --- a/epi_judge_java/Makefile +++ b/epi_judge_java/Makefile @@ -3,10 +3,10 @@ SRC_DIR := . TEST_DATA_DIR := ../test_data ifdef ComSpec # Running on Windows - JAVAC_CMD := javac -d "$(BUILD_DIR)" -cp "$(BUILD_DIR);." + JAVAC_CMD := javac -parameters -d "$(BUILD_DIR)" -cp "$(BUILD_DIR);." RUN_CMD := java -cp "$(BUILD_DIR)" -Djava.library.path="$(SRC_DIR)/epi/test_framework/" else - JAVAC_CMD := javac -d "$(BUILD_DIR)" -cp "$(BUILD_DIR):." + JAVAC_CMD := javac -parameters -d "$(BUILD_DIR)" -cp "$(BUILD_DIR):." RUN_CMD := java -cp "$(BUILD_DIR)" endif diff --git a/epi_judge_java/epi/AbsentValueArray.java b/epi_judge_java/epi/AbsentValueArray.java index d677f9969..1570672a5 100644 --- a/epi_judge_java/epi/AbsentValueArray.java +++ b/epi_judge_java/epi/AbsentValueArray.java @@ -4,9 +4,9 @@ import epi.test_framework.GenericTestHandler; public class AbsentValueArray { - @EpiTest(testfile = "absent_value_array.tsv") - public static int findMissingElement(Iterable sequence) { + @EpiTest(testfile = "absent_value_array.tsv") + public static int findMissingElement(Iterable stream) { // Implement this placeholder. return 0; } diff --git a/epi_judge_java/epi/Anagrams.java b/epi_judge_java/epi/Anagrams.java index 3c4b72999..c03f8d62e 100644 --- a/epi_judge_java/epi/Anagrams.java +++ b/epi_judge_java/epi/Anagrams.java @@ -18,8 +18,8 @@ public static List> findAnagrams(List dictionary) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/Arbitrage.java b/epi_judge_java/epi/Arbitrage.java index f776c9c74..22c2f7f42 100644 --- a/epi_judge_java/epi/Arbitrage.java +++ b/epi_judge_java/epi/Arbitrage.java @@ -8,7 +8,7 @@ public class Arbitrage { @EpiTest(testfile = "arbitrage.tsv") - public static boolean isArbitrageExist(List> G) { + public static boolean isArbitrageExist(List> graph) { // Implement this placeholder. return true; } diff --git a/epi_judge_java/epi/Combinations.java b/epi_judge_java/epi/Combinations.java index 4663af8cf..d6a3c0e30 100644 --- a/epi_judge_java/epi/Combinations.java +++ b/epi_judge_java/epi/Combinations.java @@ -18,8 +18,8 @@ public static List> combinations(int n, int k) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/CopyPostingList.java b/epi_judge_java/epi/CopyPostingList.java index 456e54f58..ecb9661d9 100644 --- a/epi_judge_java/epi/CopyPostingList.java +++ b/epi_judge_java/epi/CopyPostingList.java @@ -12,7 +12,7 @@ public class CopyPostingList { - public static PostingListNode copyPostingsList(PostingListNode L) { + public static PostingListNode copyPostingsList(PostingListNode l) { // Implement this placeholder. return null; } @@ -99,10 +99,10 @@ public static void assertListsEqual(PostingListNode orig, } @EpiTest(testfile = "copy_posting_list.tsv") - public static void - copyPostingsListWrapper(TestTimer timer, List serializedNodes) + public static void copyPostingsListWrapper(TestTimer timer, + List l) throws TestFailureException { - PostingListNode head = createPostingList(serializedNodes); + PostingListNode head = createPostingList(l); timer.start(); PostingListNode copy = copyPostingsList(head); diff --git a/epi_judge_java/epi/DeadlockDetection.java b/epi_judge_java/epi/DeadlockDetection.java index e65cf6d9f..7344742e6 100644 --- a/epi_judge_java/epi/DeadlockDetection.java +++ b/epi_judge_java/epi/DeadlockDetection.java @@ -22,7 +22,7 @@ public GraphVertex() { } } - public static boolean isDeadlocked(List G) { + public static boolean isDeadlocked(List graph) { // Implement this placeholder. return true; } @@ -39,17 +39,17 @@ public Edge(int from, int to) { } @EpiTest(testfile = "deadlock_detection.tsv") - public static boolean isDeadlockedWrapper(TestTimer timer, int k, + public static boolean isDeadlockedWrapper(TestTimer timer, int numNodes, List edges) { - if (k <= 0) { - throw new RuntimeException("Invalid k value"); + if (numNodes <= 0) { + throw new RuntimeException("Invalid numNodes value"); } List graph = new ArrayList<>(); - for (int i = 0; i < k; i++) { + for (int i = 0; i < numNodes; i++) { graph.add(new GraphVertex()); } for (Edge e : edges) { - if (e.from < 0 || e.from >= k || e.to < 0 || e.to >= k) { + if (e.from < 0 || e.from >= numNodes || e.to < 0 || e.to >= numNodes) { throw new RuntimeException("Invalid vertex index"); } graph.get(e.from).edges.add(graph.get(e.to)); diff --git a/epi_judge_java/epi/DeleteNodeFromList.java b/epi_judge_java/epi/DeleteNodeFromList.java index 1fd576949..0b37eda81 100644 --- a/epi_judge_java/epi/DeleteNodeFromList.java +++ b/epi_judge_java/epi/DeleteNodeFromList.java @@ -13,12 +13,13 @@ public static void deletionFromList(ListNode nodeToDelete) { } @EpiTest(testfile = "delete_node_from_list.tsv") - public static ListNode - deleteListWrapper(TestTimer timer, ListNode head, int i) { + public static ListNode deleteListWrapper(TestTimer timer, + ListNode head, + int nodeToDeleteIdx) { ListNode nodeToDelete = head; if (nodeToDelete == null) throw new RuntimeException("List is empty"); - while (i-- > 0) { + while (nodeToDeleteIdx-- > 0) { if (nodeToDelete.next == null) throw new RuntimeException("Can't delete last node"); nodeToDelete = nodeToDelete.next; diff --git a/epi_judge_java/epi/DescendantAndAncestorInBst.java b/epi_judge_java/epi/DescendantAndAncestorInBst.java index c3137cbd4..2596cb0bc 100644 --- a/epi_judge_java/epi/DescendantAndAncestorInBst.java +++ b/epi_judge_java/epi/DescendantAndAncestorInBst.java @@ -17,17 +17,17 @@ public class DescendantAndAncestorInBst { @EpiTest(testfile = "descendant_and_ancestor_in_bst.tsv") public static boolean pairIncludesAncestorAndDescendantOfMWrapper( - TestTimer timer, BstNode tree, int candidate1Idx, - int candidate2Idx, int middleIdx) { + TestTimer timer, BstNode tree, int possibleAncOrDesc0, + int possibleAncOrDesc1, int middle) { + BstNode candidate0 = + BinaryTreeUtils.mustFindNode(tree, possibleAncOrDesc0); BstNode candidate1 = - BinaryTreeUtils.mustFindNode(tree, candidate1Idx); - BstNode candidate2 = - BinaryTreeUtils.mustFindNode(tree, candidate2Idx); - BstNode middle = BinaryTreeUtils.mustFindNode(tree, middleIdx); + BinaryTreeUtils.mustFindNode(tree, possibleAncOrDesc1); + BstNode middleNode = BinaryTreeUtils.mustFindNode(tree, middle); timer.start(); - boolean result = - pairIncludesAncestorAndDescendantOfM(candidate1, candidate2, middle); + boolean result = pairIncludesAncestorAndDescendantOfM( + candidate0, candidate1, middleNode); timer.stop(); return result; } diff --git a/epi_judge_java/epi/DoListsOverlap.java b/epi_judge_java/epi/DoListsOverlap.java index 25dfd851e..3e6761048 100644 --- a/epi_judge_java/epi/DoListsOverlap.java +++ b/epi_judge_java/epi/DoListsOverlap.java @@ -10,32 +10,32 @@ public class DoListsOverlap { - public static ListNode overlappingLists(ListNode L1, - ListNode L2) { + public static ListNode overlappingLists(ListNode l0, + ListNode l1) { // Implement this placeholder. return null; } @EpiTest(testfile = "do_lists_overlap.tsv") public static void - overlappingListsWrapper(TestTimer timer, ListNode l1, - ListNode l2, ListNode common, - int cycle1, int cycle2) throws TestFailureException { + overlappingListsWrapper(TestTimer timer, ListNode l0, + ListNode l1, ListNode common, + int cycle0, int cycle1) throws TestFailureException { if (common != null) { - if (l1 == null) { - l1 = common; + if (l0 == null) { + l0 = common; } else { - ListNode it = l1; + ListNode it = l0; while (it.next != null) { it = it.next; } it.next = common; } - if (l2 == null) { - l2 = common; + if (l1 == null) { + l1 = common; } else { - ListNode it = l2; + ListNode it = l1; while (it.next != null) { it = it.next; } @@ -43,13 +43,13 @@ public static ListNode overlappingLists(ListNode L1, } } - if (cycle1 != -1 && l1 != null) { - ListNode last = l1; + if (cycle0 != -1 && l0 != null) { + ListNode last = l0; while (last.next != null) { last = last.next; } - ListNode it = l1; - while (cycle1-- > 0) { + ListNode it = l0; + while (cycle0-- > 0) { if (it == null) { throw new RuntimeException("Invalid input data"); } @@ -58,13 +58,13 @@ public static ListNode overlappingLists(ListNode L1, last.next = it; } - if (cycle2 != -1 && l2 != null) { - ListNode last = l2; + if (cycle1 != -1 && l1 != null) { + ListNode last = l1; while (last.next != null) { last = last.next; } - ListNode it = l2; - while (cycle2-- > 0) { + ListNode it = l1; + while (cycle1-- > 0) { if (it == null) { throw new RuntimeException("Invalid input data"); } @@ -81,7 +81,7 @@ public static ListNode overlappingLists(ListNode L1, } timer.start(); - ListNode result = overlappingLists(l1, l2); + ListNode result = overlappingLists(l0, l1); timer.stop(); if (!((commonNodes.isEmpty() && result == null) || diff --git a/epi_judge_java/epi/DoTerminatedListsOverlap.java b/epi_judge_java/epi/DoTerminatedListsOverlap.java index 9c8adcc4c..5faf779e9 100644 --- a/epi_judge_java/epi/DoTerminatedListsOverlap.java +++ b/epi_judge_java/epi/DoTerminatedListsOverlap.java @@ -8,40 +8,40 @@ public class DoTerminatedListsOverlap { public static ListNode - overlappingNoCycleLists(ListNode L1, ListNode L2) { + overlappingNoCycleLists(ListNode l0, ListNode l1) { // Implement this placeholder. return null; } @EpiTest(testfile = "do_terminated_lists_overlap.tsv") public static void - overlappingNoCycleListsWrapper(TestTimer timer, ListNode p1, - ListNode p2, ListNode common) + overlappingNoCycleListsWrapper(TestTimer timer, ListNode l0, + ListNode l1, ListNode common) throws TestFailureException { if (common != null) { - if (p1 != null) { - ListNode i = p1; + if (l0 != null) { + ListNode i = l0; while (i.next != null) { i = i.next; } i.next = common; } else { - p1 = common; + l0 = common; } - if (p2 != null) { - ListNode i = p2; + if (l1 != null) { + ListNode i = l1; while (i.next != null) { i = i.next; } i.next = common; } else { - p2 = common; + l1 = common; } } timer.start(); - ListNode result = overlappingNoCycleLists(p1, p2); + ListNode result = overlappingNoCycleLists(l0, l1); timer.stop(); if (result != common) { diff --git a/epi_judge_java/epi/DutchNationalFlag.java b/epi_judge_java/epi/DutchNationalFlag.java index c36aaa2c3..dd33cbfd5 100644 --- a/epi_judge_java/epi/DutchNationalFlag.java +++ b/epi_judge_java/epi/DutchNationalFlag.java @@ -17,16 +17,16 @@ public static void dutchFlagPartition(int pivotIndex, List A) { } @EpiTest(testfile = "dutch_national_flag.tsv") - public static void dutchFlagPartitionWrapper(TestTimer timer, - List data, int pivotIdx) + public static void dutchFlagPartitionWrapper(TestTimer timer, List A, + int pivotIdx) throws TestFailureException { List colors = new ArrayList<>(); int[] count = new int[3]; Color[] C = Color.values(); - for (int i = 0; i < data.size(); i++) { - count[data.get(i)]++; - colors.add(C[data.get(i)]); + for (int i = 0; i < A.size(); i++) { + count[A.get(i)]++; + colors.add(C[A.get(i)]); } Color pivot = colors.get(pivotIdx); diff --git a/epi_judge_java/epi/EnumeratePalindromicDecompositions.java b/epi_judge_java/epi/EnumeratePalindromicDecompositions.java index e9fd4c43e..3b0fb8a66 100644 --- a/epi_judge_java/epi/EnumeratePalindromicDecompositions.java +++ b/epi_judge_java/epi/EnumeratePalindromicDecompositions.java @@ -17,8 +17,8 @@ public static List> palindromeDecompositions(String input) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/EnumerateTrees.java b/epi_judge_java/epi/EnumerateTrees.java index 9d6647bc8..5dae052b0 100644 --- a/epi_judge_java/epi/EnumerateTrees.java +++ b/epi_judge_java/epi/EnumerateTrees.java @@ -17,10 +17,10 @@ public class EnumerateTrees { return null; } - public static List serializeStructure(BinaryTreeNode root) { + public static List serializeStructure(BinaryTreeNode tree) { List result = new ArrayList<>(); Stack> stack = new Stack<>(); - stack.push(root); + stack.push(tree); while (!stack.empty()) { BinaryTreeNode p = stack.pop(); result.add(p == null ? 0 : 1); @@ -34,9 +34,9 @@ public static List serializeStructure(BinaryTreeNode root) { @EpiTest(testfile = "enumerate_trees.tsv") public static List> - generateAllBinaryTreesWrapper(TestTimer timer, int i) { + generateAllBinaryTreesWrapper(TestTimer timer, int numNodes) { timer.start(); - List> result = generateAllBinaryTrees(i); + List> result = generateAllBinaryTrees(numNodes); timer.stop(); List> serialized = new ArrayList<>(); diff --git a/epi_judge_java/epi/GraphClone.java b/epi_judge_java/epi/GraphClone.java index 8615df0e5..7a343edfe 100644 --- a/epi_judge_java/epi/GraphClone.java +++ b/epi_judge_java/epi/GraphClone.java @@ -45,13 +45,13 @@ private static void checkGraph(GraphVertex node, List g) { vertexSet.add(node); while (!q.isEmpty()) { GraphVertex vertex = q.remove(); - assert (vertex.label < g.size()); + assert(vertex.label < g.size()); List label1 = copyLabels(vertex.edges), label2 = copyLabels(g.get(vertex.label).edges); Collections.sort(label1); Collections.sort(label2); - assert (label1.size() == label2.size()); - assert (Arrays.equals(label1.toArray(), label2.toArray())); + assert(label1.size() == label2.size()); + assert(Arrays.equals(label1.toArray(), label2.toArray())); for (GraphVertex e : vertex.edges) { if (!vertexSet.contains(e)) { vertexSet.add(e); diff --git a/epi_judge_java/epi/GroupEqualEntries.java b/epi_judge_java/epi/GroupEqualEntries.java index 237c7dc6b..fc9fcaddd 100644 --- a/epi_judge_java/epi/GroupEqualEntries.java +++ b/epi_judge_java/epi/GroupEqualEntries.java @@ -51,34 +51,34 @@ public static void groupByAge(List people) { return; } - private static Map buildMultiset(List data) { + private static Map buildMultiset(List people) { Map m = new HashMap<>(); - for (Person p : data) { + for (Person p : people) { m.put(p, m.getOrDefault(p, 0) + 1); } return m; } @EpiTest(testfile = "group_equal_entries.tsv") - public static void groupByAgeWrapper(TestTimer timer, List data) + public static void groupByAgeWrapper(TestTimer timer, List people) throws TestFailureException { - if (data.isEmpty()) { + if (people.isEmpty()) { return; } - Map values = buildMultiset(data); + Map values = buildMultiset(people); timer.start(); - groupByAge(data); + groupByAge(people); timer.stop(); - Map newValues = buildMultiset(data); + Map newValues = buildMultiset(people); if (!values.equals(newValues)) { throw new TestFailureException("Entry set changed"); } - int lastAge = data.get(0).age; + int lastAge = people.get(0).age; Set ages = new HashSet<>(); - for (Person p : data) { + for (Person p : people) { if (ages.contains(p.age)) { throw new TestFailureException("Entries are not grouped by age"); } diff --git a/epi_judge_java/epi/InsertInList.java b/epi_judge_java/epi/InsertInList.java index a717cb5e1..09b71333f 100644 --- a/epi_judge_java/epi/InsertInList.java +++ b/epi_judge_java/epi/InsertInList.java @@ -15,19 +15,20 @@ public static void insertAfter(ListNode node, @EpiTest(testfile = "insert_in_list.tsv") public static ListNode - insertListWrapper(TestTimer timer, ListNode L, int pos, int key) { - ListNode node = L; - while (pos > 1) { + insertListWrapper(TestTimer timer, ListNode l, int nodeIdx, + int newNodeData) { + ListNode node = l; + while (nodeIdx > 1) { node = node.next; - --pos; + --nodeIdx; } - ListNode newNode = new ListNode(key, null); + ListNode newNode = new ListNode(newNodeData, null); timer.start(); insertAfter(node, newNode); timer.stop(); - return L; + return l; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/IntervalsUnion.java b/epi_judge_java/epi/IntervalsUnion.java index 57b6f5e64..570c0a13d 100644 --- a/epi_judge_java/epi/IntervalsUnion.java +++ b/epi_judge_java/epi/IntervalsUnion.java @@ -100,21 +100,21 @@ public String toString() { @EpiTest(testfile = "intervals_union.tsv") public static List - unionIntervalWrapper(TestTimer timer, List input) { - List I = new ArrayList<>(input.size()); - for (FlatInterval in : input) { - I.add(in.toInterval()); + unionIntervalWrapper(TestTimer timer, List intervals) { + List casted = new ArrayList<>(intervals.size()); + for (FlatInterval in : intervals) { + casted.add(in.toInterval()); } timer.start(); - I = unionOfIntervals(I); + List result = unionOfIntervals(casted); timer.stop(); - input = new ArrayList<>(I.size()); - for (Interval in : I) { - input.add(new FlatInterval(in)); + intervals = new ArrayList<>(result.size()); + for (Interval i : result) { + intervals.add(new FlatInterval(i)); } - return input; + return intervals; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/IsArrayDominated.java b/epi_judge_java/epi/IsArrayDominated.java index af9a5dd7c..a0d425801 100644 --- a/epi_judge_java/epi/IsArrayDominated.java +++ b/epi_judge_java/epi/IsArrayDominated.java @@ -11,18 +11,15 @@ public class IsArrayDominated { @EpiTest(testfile = "is_array_dominated.tsv") public static void - validPlacementExistsWrapper(TestTimer timer, List h1, - List h2, boolean expected12, - boolean expected21) throws TestFailureException { - Team t1 = new Team(h1); - Team t2 = new Team(h2); + validPlacementExistsWrapper(TestTimer timer, List team0, + List team1, boolean expected01, + boolean expected10) throws TestFailureException { + Team t0 = new Team(team0); + Team t1 = new Team(team1); timer.start(); - boolean result12 = Team.validPlacementExists(t1, t2); - boolean result21 = Team.validPlacementExists(t2, t1); - timer.stop(); - - if (result12 != expected12 || result21 != expected21) { + if (Team.validPlacementExists(t0, t1) != expected01 || + Team.validPlacementExists(t1, t0) != expected10) { throw new TestFailureException(""); } } @@ -50,8 +47,8 @@ public Team(List height) { height.stream().map(h -> new Player(h)).collect(Collectors.toList()); } - // Checks if A can be placed in front of B. - public static boolean validPlacementExists(Team A, Team B) { + // Checks if team0 can be placed in front of team1. + public static boolean validPlacementExists(Team team0, Team team1) { // Implement this placeholder. return true; } diff --git a/epi_judge_java/epi/IsCircuitWirable.java b/epi_judge_java/epi/IsCircuitWirable.java index 3e96a0b8f..3871a0aae 100644 --- a/epi_judge_java/epi/IsCircuitWirable.java +++ b/epi_judge_java/epi/IsCircuitWirable.java @@ -15,7 +15,7 @@ public static class GraphVertex { public List edges = new ArrayList<>(); } - public static boolean isAnyPlacementFeasible(List G) { + public static boolean isAnyPlacementFeasible(List graph) { // Implement this placeholder. return true; } diff --git a/epi_judge_java/epi/KthLargestInArray.java b/epi_judge_java/epi/KthLargestInArray.java index ff4f0b2ae..2a9bec283 100644 --- a/epi_judge_java/epi/KthLargestInArray.java +++ b/epi_judge_java/epi/KthLargestInArray.java @@ -9,16 +9,12 @@ public class KthLargestInArray { // The numbering starts from one, i.e., if A = [3,1,-1,2] then // findKthLargest(A, 1) returns 3, findKthLargest(A, 2) returns 2, // findKthLargest(A, 3) returns 1, and findKthLargest(A, 4) returns -1. - public static int findKthLargest(List A, int k) { + @EpiTest(testfile = "kth_largest_in_array.tsv") + public static int findKthLargest(int k, List A) { // Implement this placeholder. return 0; } - @EpiTest(testfile = "kth_largest_in_array.tsv") - public static int findKthLargestWrapper(int k, List A) { - return findKthLargest(A, k); - } - public static void main(String[] args) { GenericTestHandler.executeTestsByAnnotation( new Object() {}.getClass().getEnclosingClass(), args); diff --git a/epi_judge_java/epi/LowestCommonAncestor.java b/epi_judge_java/epi/LowestCommonAncestor.java index 029905e97..da2c061fd 100644 --- a/epi_judge_java/epi/LowestCommonAncestor.java +++ b/epi_judge_java/epi/LowestCommonAncestor.java @@ -16,14 +16,13 @@ public static BinaryTreeNode LCA(BinaryTreeNode tree, } @EpiTest(testfile = "lowest_common_ancestor.tsv") - public static int lcaWrapper(TestTimer timer, BinaryTreeNode root, - Integer key1, int key2) + public static int lcaWrapper(TestTimer timer, BinaryTreeNode tree, + Integer node0, int node1) throws TestFailureException { - BinaryTreeNode node1 = BinaryTreeUtils.mustFindNode(root, key1); - BinaryTreeNode node2 = BinaryTreeUtils.mustFindNode(root, key2); - timer.start(); - BinaryTreeNode result = LCA(root, node1, node2); + BinaryTreeNode result = + LCA(tree, BinaryTreeUtils.mustFindNode(tree, node0), + BinaryTreeUtils.mustFindNode(tree, node1)); timer.stop(); if (result == null) { diff --git a/epi_judge_java/epi/LowestCommonAncestorCloseAncestor.java b/epi_judge_java/epi/LowestCommonAncestorCloseAncestor.java index 37d005b76..fd0803bb4 100644 --- a/epi_judge_java/epi/LowestCommonAncestorCloseAncestor.java +++ b/epi_judge_java/epi/LowestCommonAncestorCloseAncestor.java @@ -15,14 +15,12 @@ public static BinaryTree LCA(BinaryTree node0, } @EpiTest(testfile = "lowest_common_ancestor.tsv") - public static int lcaWrapper(TestTimer timer, BinaryTree root, + public static int lcaWrapper(TestTimer timer, BinaryTree tree, Integer key1, int key2) throws TestFailureException { - BinaryTree node1 = BinaryTreeUtils.mustFindNode(root, key1); - BinaryTree node2 = BinaryTreeUtils.mustFindNode(root, key2); - timer.start(); - BinaryTree result = LCA(node1, node2); + BinaryTree result = LCA(BinaryTreeUtils.mustFindNode(tree, key1), + BinaryTreeUtils.mustFindNode(tree, key2)); timer.stop(); if (result == null) { diff --git a/epi_judge_java/epi/LowestCommonAncestorInBst.java b/epi_judge_java/epi/LowestCommonAncestorInBst.java index d34038ca3..c7f32839f 100644 --- a/epi_judge_java/epi/LowestCommonAncestorInBst.java +++ b/epi_judge_java/epi/LowestCommonAncestorInBst.java @@ -17,14 +17,12 @@ public class LowestCommonAncestorInBst { } @EpiTest(testfile = "lowest_common_ancestor_in_bst.tsv") - public static int lcaWrapper(TestTimer timer, BstNode root, - Integer key1, int key2) - throws TestFailureException { - BstNode node1 = BinaryTreeUtils.mustFindNode(root, key1); - BstNode node2 = BinaryTreeUtils.mustFindNode(root, key2); - + public static int lcaWrapper(TestTimer timer, BstNode tree, + Integer s, int b) throws TestFailureException { timer.start(); - BstNode result = findLCA(root, node1, node2); + BstNode result = + findLCA(tree, BinaryTreeUtils.mustFindNode(tree, s), + BinaryTreeUtils.mustFindNode(tree, b)); timer.stop(); if (result == null) diff --git a/epi_judge_java/epi/LowestCommonAncestorWithParent.java b/epi_judge_java/epi/LowestCommonAncestorWithParent.java index a96eac049..c31210380 100644 --- a/epi_judge_java/epi/LowestCommonAncestorWithParent.java +++ b/epi_judge_java/epi/LowestCommonAncestorWithParent.java @@ -15,14 +15,12 @@ public static BinaryTree LCA(BinaryTree node0, } @EpiTest(testfile = "lowest_common_ancestor.tsv") - public static int lcaWrapper(TestTimer timer, BinaryTree root, - Integer key1, int key2) + public static int lcaWrapper(TestTimer timer, BinaryTree tree, + Integer node0, int node1) throws TestFailureException { - BinaryTree node1 = BinaryTreeUtils.mustFindNode(root, key1); - BinaryTree node2 = BinaryTreeUtils.mustFindNode(root, key2); - timer.start(); - BinaryTree result = LCA(node1, node2); + BinaryTree result = LCA(BinaryTreeUtils.mustFindNode(tree, node0), + BinaryTreeUtils.mustFindNode(tree, node1)); timer.stop(); if (result == null) { diff --git a/epi_judge_java/epi/MajorityElement.java b/epi_judge_java/epi/MajorityElement.java index a4f98fb00..9a5722ef6 100644 --- a/epi_judge_java/epi/MajorityElement.java +++ b/epi_judge_java/epi/MajorityElement.java @@ -8,14 +8,14 @@ public class MajorityElement { - public static String majoritySearch(Iterator inputStream) { + public static String majoritySearch(Iterator stream) { // Implement this placeholder. return ""; } @EpiTest(testfile = "majority_element.tsv") - public static String majoritySearchWrapper(List inputStream) { - return majoritySearch(inputStream.iterator()); + public static String majoritySearchWrapper(List stream) { + return majoritySearch(stream.iterator()); } public static void main(String[] args) { diff --git a/epi_judge_java/epi/MatrixConnectedRegions.java b/epi_judge_java/epi/MatrixConnectedRegions.java index d8d377aa2..45bdb00c4 100644 --- a/epi_judge_java/epi/MatrixConnectedRegions.java +++ b/epi_judge_java/epi/MatrixConnectedRegions.java @@ -9,19 +9,19 @@ public class MatrixConnectedRegions { - public static void flipColor(int x, int y, List> A) { + public static void flipColor(int x, int y, List> image) { // Implement this placeholder. return; } @EpiTest(testfile = "painting.tsv") public static List> - flipColorWrapper(TestTimer timer, int x, int y, List> A) { + flipColorWrapper(TestTimer timer, int x, int y, List> image) { List> B = new ArrayList<>(); - for (int i = 0; i < A.size(); i++) { + for (int i = 0; i < image.size(); i++) { B.add(new ArrayList<>()); - for (int j = 0; j < A.get(i).size(); j++) { - B.get(i).add(A.get(i).get(j) == 1); + for (int j = 0; j < image.get(i).size(); j++) { + B.get(i).add(image.get(i).get(j) == 1); } } @@ -29,15 +29,15 @@ public static void flipColor(int x, int y, List> A) { flipColor(x, y, B); timer.stop(); - A = new ArrayList<>(); + image = new ArrayList<>(); for (int i = 0; i < B.size(); i++) { - A.add(new ArrayList<>()); + image.add(new ArrayList<>()); for (int j = 0; j < B.get(i).size(); j++) { - A.get(i).add(B.get(i).get(j) ? 1 : 0); + image.get(i).add(B.get(i).get(j) ? 1 : 0); } } - return A; + return image; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/MatrixRotation.java b/epi_judge_java/epi/MatrixRotation.java index 988719b43..e58ddb114 100644 --- a/epi_judge_java/epi/MatrixRotation.java +++ b/epi_judge_java/epi/MatrixRotation.java @@ -13,9 +13,10 @@ public static void rotateMatrix(List> squareMatrix) { } @EpiTest(testfile = "matrix_rotation.tsv") - public static List> rotateMatrixWrapper(List> L) { - rotateMatrix(L); - return L; + public static List> + rotateMatrixWrapper(List> squareMatrix) { + rotateMatrix(squareMatrix); + return squareMatrix; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/MaxTeamsInPhotograph.java b/epi_judge_java/epi/MaxTeamsInPhotograph.java index e09237c3a..c7ef9a038 100644 --- a/epi_judge_java/epi/MaxTeamsInPhotograph.java +++ b/epi_judge_java/epi/MaxTeamsInPhotograph.java @@ -16,7 +16,7 @@ public static class GraphVertex { public int maxDistance = 0; } - public static int findLargestNumberTeams(List G) { + public static int findLargestNumberTeams(List graph) { // Implement this placeholder. return 0; } diff --git a/epi_judge_java/epi/NQueens.java b/epi_judge_java/epi/NQueens.java index 9a3f784bf..b48aa06bf 100644 --- a/epi_judge_java/epi/NQueens.java +++ b/epi_judge_java/epi/NQueens.java @@ -17,8 +17,8 @@ public static List> nQueens(int n) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/OnlineSampling.java b/epi_judge_java/epi/OnlineSampling.java index 0bb3bbc68..a2ebb2138 100644 --- a/epi_judge_java/epi/OnlineSampling.java +++ b/epi_judge_java/epi/OnlineSampling.java @@ -14,7 +14,7 @@ public class OnlineSampling { // Assumption: there are at least k elements in the stream. - public static List onlineRandomSample(Iterator sequence, + public static List onlineRandomSample(Iterator stream, int k) { // Implement this placeholder. return null; @@ -48,11 +48,11 @@ private static boolean onlineRandomSampleRunner(TestTimer timer, } @EpiTest(testfile = "online_sampling.tsv") - public static void onlineRandomSampleWrapper(TestTimer timer, List A, - int k) + public static void onlineRandomSampleWrapper(TestTimer timer, + List stream, int k) throws TestFailureException { RandomSequenceChecker.runFuncWithRetries( - () -> onlineRandomSampleRunner(timer, A, k)); + () -> onlineRandomSampleRunner(timer, stream, k)); } public static void main(String[] args) { diff --git a/epi_judge_java/epi/Permutations.java b/epi_judge_java/epi/Permutations.java index aad28044c..8bb306593 100644 --- a/epi_judge_java/epi/Permutations.java +++ b/epi_judge_java/epi/Permutations.java @@ -18,8 +18,8 @@ public static List> permutations(List A) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/PivotList.java b/epi_judge_java/epi/PivotList.java index f253f4ad1..ad0e21a30 100644 --- a/epi_judge_java/epi/PivotList.java +++ b/epi_judge_java/epi/PivotList.java @@ -11,30 +11,30 @@ public class PivotList { - public static ListNode listPivoting(ListNode L, int x) { + public static ListNode listPivoting(ListNode l, int x) { // Implement this placeholder. return null; } - public static List linkedToList(ListNode ll) { - List l = new ArrayList<>(); - while (ll != null) { - l.add(ll.data); - ll = ll.next; + public static List linkedToList(ListNode l) { + List v = new ArrayList<>(); + while (l != null) { + v.add(l.data); + l = l.next; } - return l; + return v; } @EpiTest(testfile = "pivot_list.tsv") - public static void listPivotingWrapper(TestTimer timer, ListNode ll, + public static void listPivotingWrapper(TestTimer timer, ListNode l, int x) throws TestFailureException { - List original = linkedToList(ll); + List original = linkedToList(l); timer.start(); - ll = listPivoting(ll, x); + l = listPivoting(l, x); timer.stop(); - List pivoted = linkedToList(ll); + List pivoted = linkedToList(l); int mode = -1; for (Integer i : pivoted) { diff --git a/epi_judge_java/epi/PowerSet.java b/epi_judge_java/epi/PowerSet.java index 8d4dbc4fe..9cd6ef4a7 100644 --- a/epi_judge_java/epi/PowerSet.java +++ b/epi_judge_java/epi/PowerSet.java @@ -18,8 +18,8 @@ public static List> generatePowerSet(List inputSet) { } @EpiTestComparator - public static BiPredicate>, List>> comp = - (expected, result) -> { + public static BiPredicate < List>, + List < List>> comp = (expected, result) -> { if (result == null) { return false; } diff --git a/epi_judge_java/epi/RemoveDuplicates.java b/epi_judge_java/epi/RemoveDuplicates.java index 9945a7978..1c70887d5 100644 --- a/epi_judge_java/epi/RemoveDuplicates.java +++ b/epi_judge_java/epi/RemoveDuplicates.java @@ -50,15 +50,15 @@ public int compareTo(Name name) { } } - public static void eliminateDuplicate(List A) { + public static void eliminateDuplicate(List names) { // Implement this placeholder. return; } @EpiTest(testfile = "remove_duplicates.tsv") - public static List eliminateDuplicateWrapper(List data) { - eliminateDuplicate(data); - return data; + public static List eliminateDuplicateWrapper(List names) { + eliminateDuplicate(names); + return names; } @EpiTestComparator diff --git a/epi_judge_java/epi/ReplaceAndRemove.java b/epi_judge_java/epi/ReplaceAndRemove.java index a1d89333a..17b75909e 100644 --- a/epi_judge_java/epi/ReplaceAndRemove.java +++ b/epi_judge_java/epi/ReplaceAndRemove.java @@ -16,20 +16,20 @@ public static int replaceAndRemove(int size, char[] s) { @EpiTest(testfile = "replace_and_remove.tsv") public static List - replaceAndRemoveWrapper(TestTimer timer, Integer size, List inputS) { - char[] s = new char[inputS.size()]; + replaceAndRemoveWrapper(TestTimer timer, Integer size, List s) { + char[] sCopy = new char[s.size()]; for (int i = 0; i < size; ++i) { - if (!inputS.get(i).isEmpty()) { - s[i] = inputS.get(i).charAt(0); + if (!s.get(i).isEmpty()) { + sCopy[i] = s.get(i).charAt(0); } } timer.start(); - Integer resSize = replaceAndRemove(size, s); + Integer resSize = replaceAndRemove(size, sCopy); timer.stop(); List result = new ArrayList<>(); for (int i = 0; i < resSize; ++i) { - result.add(Character.toString(s[i])); + result.add(Character.toString(sCopy[i])); } return result; } diff --git a/epi_judge_java/epi/ReverseWords.java b/epi_judge_java/epi/ReverseWords.java index c61fc1566..866a90acc 100644 --- a/epi_judge_java/epi/ReverseWords.java +++ b/epi_judge_java/epi/ReverseWords.java @@ -13,13 +13,13 @@ public static void reverseWords(char[] input) { @EpiTest(testfile = "reverse_words.tsv") public static String reverseWordsWrapper(TestTimer timer, String s) { - char[] a = s.toCharArray(); + char[] sCopy = s.toCharArray(); timer.start(); - reverseWords(a); + reverseWords(sCopy); timer.stop(); - return String.valueOf(a); + return String.valueOf(sCopy); } public static void main(String[] args) { diff --git a/epi_judge_java/epi/RookAttack.java b/epi_judge_java/epi/RookAttack.java index 401068afb..27598c5b2 100644 --- a/epi_judge_java/epi/RookAttack.java +++ b/epi_judge_java/epi/RookAttack.java @@ -3,6 +3,7 @@ import epi.test_framework.EpiTest; import epi.test_framework.GenericTestHandler; +import java.util.ArrayList; import java.util.List; public class RookAttack { @@ -14,8 +15,9 @@ public static void rookAttack(List> A) { @EpiTest(testfile = "rook_attack.tsv") public static List> rookAttackWrapper(List> A) { - rookAttack(A); - return A; + List> aCopy = new ArrayList<>(A); + rookAttack(aCopy); + return aCopy; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/RotateArray.java b/epi_judge_java/epi/RotateArray.java index 57648ecc2..d345688ed 100644 --- a/epi_judge_java/epi/RotateArray.java +++ b/epi_judge_java/epi/RotateArray.java @@ -2,20 +2,26 @@ import epi.test_framework.EpiTest; import epi.test_framework.GenericTestHandler; +import epi.test_framework.TestTimer; +import java.util.ArrayList; import java.util.List; public class RotateArray { - public static void rotateArray(int i, List A) { + public static void rotateArray(int rotateAmount, List A) { // Implement this placeholder. return; } @EpiTest(testfile = "rotate_array.tsv") - public static List rotateArrayWrapper(List A, int k) { - rotateArray(k, A); - return A; + public static List + rotateArrayWrapper(TestTimer timer, List A, int rotateAmount) { + List aCopy = new ArrayList<>(A); + timer.start(); + rotateArray(rotateAmount, aCopy); + timer.stop(); + return aCopy; } public static void main(String[] args) { diff --git a/epi_judge_java/epi/SearchFrequentItems.java b/epi_judge_java/epi/SearchFrequentItems.java index 86a97938d..a9f1cc96a 100644 --- a/epi_judge_java/epi/SearchFrequentItems.java +++ b/epi_judge_java/epi/SearchFrequentItems.java @@ -11,16 +11,16 @@ public class SearchFrequentItems { - public static List searchFrequentItems(Iterable stream, - int k) { + public static List searchFrequentItems(int k, + Iterable stream) { // Implement this placeholder. return null; } @EpiTest(testfile = "search_frequent_items.tsv") public static List searchFrequentItemsWrapper(int k, - List data) { - return searchFrequentItems(data, k); + List stream) { + return searchFrequentItems(k, stream); } @EpiTestComparator diff --git a/epi_judge_java/epi/SmallestSubarrayCoveringSet.java b/epi_judge_java/epi/SmallestSubarrayCoveringSet.java index 5dd00b005..69792f707 100644 --- a/epi_judge_java/epi/SmallestSubarrayCoveringSet.java +++ b/epi_judge_java/epi/SmallestSubarrayCoveringSet.java @@ -29,22 +29,22 @@ public static Subarray findSmallestSubarrayCoveringSet(List paragraph, } @EpiTest(testfile = "smallest_subarray_covering_set.tsv") - public static int findSmallestSubarrayCoveringSetWrapper(TestTimer timer, - List v, - Set s) + public static int findSmallestSubarrayCoveringSetWrapper( + TestTimer timer, List paragraph, Set keywords) throws TestFailureException { - Set copy = new HashSet<>(s); + Set copy = new HashSet<>(keywords); timer.start(); - Subarray result = findSmallestSubarrayCoveringSet(v, s); + Subarray result = findSmallestSubarrayCoveringSet(paragraph, keywords); timer.stop(); - if (result.start < 0 || result.start >= v.size() || result.end < 0 || - result.end >= v.size() || result.start > result.end) + if (result.start < 0 || result.start >= paragraph.size() || + result.end < 0 || result.end >= paragraph.size() || + result.start > result.end) throw new TestFailureException("Index out of range"); for (int i = result.start; i <= result.end; i++) - copy.remove(v.get(i)); + copy.remove(paragraph.get(i)); if (!copy.isEmpty()) throw new TestFailureException("Not all keywords are in the range"); diff --git a/epi_judge_java/epi/SortedListToBst.java b/epi_judge_java/epi/SortedListToBst.java index 91a306bde..27e723e39 100644 --- a/epi_judge_java/epi/SortedListToBst.java +++ b/epi_judge_java/epi/SortedListToBst.java @@ -40,11 +40,11 @@ public static void compareVectorAndTree(DoublyListNode tree, @EpiTest(testfile = "sorted_list_to_bst.tsv") public static void buildBSTFromSortedListWrapper(TestTimer timer, - List values) + List L) throws TestFailureException { DoublyListNode list = null; - for (int i = values.size() - 1; i >= 0; i--) { - list = new DoublyListNode<>(values.get(i), null, list); + for (int i = L.size() - 1; i >= 0; i--) { + list = new DoublyListNode<>(L.get(i), null, list); if (list.next != null) { list.next.prev = list; @@ -52,13 +52,13 @@ public static void buildBSTFromSortedListWrapper(TestTimer timer, } timer.start(); - list = buildBSTFromSortedList(list, values.size()); + list = buildBSTFromSortedList(list, L.size()); timer.stop(); - Iterator current = values.iterator(); + Iterator current = L.iterator(); compareVectorAndTree(list, current); if (current.hasNext()) { - throw new TestFailureException("Too many values in the tree"); + throw new TestFailureException("Too many L in the tree"); } } diff --git a/epi_judge_java/epi/StringIntegerInterconversion.java b/epi_judge_java/epi/StringIntegerInterconversion.java index 005a32040..49198fc61 100644 --- a/epi_judge_java/epi/StringIntegerInterconversion.java +++ b/epi_judge_java/epi/StringIntegerInterconversion.java @@ -17,11 +17,11 @@ public static int stringToInt(String s) { } @EpiTest(testfile = "string_integer_interconversion.tsv") - public static void wrapper(int num, String s) throws TestFailureException { - if (!intToString(num).equals(s)) { + public static void wrapper(int x, String s) throws TestFailureException { + if (!intToString(x).equals(s)) { throw new TestFailureException("Int to string conversion failed"); } - if (stringToInt(s) != num) { + if (stringToInt(s) != x) { throw new TestFailureException("String to int conversion failed"); } } diff --git a/epi_judge_java/epi/SudokuSolve.java b/epi_judge_java/epi/SudokuSolve.java index 1c87a0a5f..36a136a0a 100644 --- a/epi_judge_java/epi/SudokuSolve.java +++ b/epi_judge_java/epi/SudokuSolve.java @@ -20,10 +20,10 @@ public static boolean solveSudoku(List> partialAssignment) { @EpiTest(testfile = "sudoku_solve.tsv") public static void solveSudokuWrapper(TestTimer timer, - List> board) + List> partialAssignment) throws TestFailureException { List> solved = new ArrayList<>(); - for (List row : board) { + for (List row : partialAssignment) { List copy = new ArrayList<>(); copy.addAll(row); solved.add(copy); @@ -33,13 +33,13 @@ public static void solveSudokuWrapper(TestTimer timer, solveSudoku(solved); timer.stop(); - if (board.size() != solved.size()) { + if (partialAssignment.size() != solved.size()) { throw new TestFailureException( "Initial cell assignment has been changed"); } - for (int i = 0; i < board.size(); i++) { - List br = board.get(i); + for (int i = 0; i < partialAssignment.size(); i++) { + List br = partialAssignment.get(i); List sr = solved.get(i); if (br.size() != sr.size()) { throw new TestFailureException( diff --git a/epi_judge_java/epi/test_framework/BinaryTreeUtils.java b/epi_judge_java/epi/test_framework/BinaryTreeUtils.java index a394799fe..de6e68158 100644 --- a/epi_judge_java/epi/test_framework/BinaryTreeUtils.java +++ b/epi_judge_java/epi/test_framework/BinaryTreeUtils.java @@ -14,8 +14,8 @@ import java.util.Set; public class BinaryTreeUtils { - private static void treeGenerateHelper(Object tree, - List result, int order) { + private static void treeGenerateHelper(Object tree, List result, + int order) { if (tree != null) { if (order == -1) { result.add(getData(tree)); @@ -35,21 +35,21 @@ private static void treeGenerateHelper(Object tree, public static List generatePreorder(BinaryTreeNode tree) { List result = new ArrayList<>(); treeGenerateHelper(tree, result, -1); - return (List) result; + return (List)result; } @SuppressWarnings("unchecked") public static List generateInorder(Object tree) { List result = new ArrayList<>(); treeGenerateHelper(tree, result, 0); - return (List) result; + return (List)result; } @SuppressWarnings("unchecked") public static List generatePostorder(Object tree) { List result = new ArrayList<>(); treeGenerateHelper(tree, result, 1); - return (List) result; + return (List)result; } private static Object findNode(Object node, Object val) { @@ -121,8 +121,8 @@ public static int binaryTreeHeight(T tree) { if (tree == null) { return -1; } - return 1 + - Math.max(binaryTreeHeight(getLeft(tree)), binaryTreeHeight(getRight(tree))); + return 1 + Math.max(binaryTreeHeight(getLeft(tree)), + binaryTreeHeight(getRight(tree))); } /** diff --git a/epi_judge_java/epi/test_framework/GenericTestHandler.java b/epi_judge_java/epi/test_framework/GenericTestHandler.java index d5574f47e..9b4238a4f 100644 --- a/epi_judge_java/epi/test_framework/GenericTestHandler.java +++ b/epi_judge_java/epi/test_framework/GenericTestHandler.java @@ -6,6 +6,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.lang.reflect.Parameter; import java.lang.reflect.Type; import java.nio.file.Files; import java.nio.file.Paths; @@ -15,6 +16,7 @@ import java.util.Objects; import java.util.function.BiPredicate; import java.util.function.Function; +import java.util.stream.Collectors; /** * The central class in generic test runner framework. @@ -38,52 +40,59 @@ *

*/ public class GenericTestHandler implements TestHandler { - private Method testedMethod; - private List methodParameters; - private Function[] argParsers; - private Function retParser; + private Method func; + private List paramTypes; + private boolean hasTimerHook; + private Function[] paramParsers; + private List paramNames; + private Function retValueParser; private BiPredicate comparator; private boolean customExpectedType; - private boolean hasTimerHook; /** * This constructor initializes type parsers for all arguments and return type - * of m. + * of func. * - * @param m - a method to test. + * @param func - a method to test. * @param comparator - an optional comparator for result. If comparator is * null, values are compared with equals(). * @param expectedType - can be used with a custom comparator that has * different types for expected and result arguments. */ - public GenericTestHandler(Method m, BiPredicate comparator, + public GenericTestHandler(Method func, BiPredicate comparator, List> expectedType) { - testedMethod = m; + this.func = func; this.comparator = comparator; hasTimerHook = false; - methodParameters = Arrays.asList(m.getGenericParameterTypes()); - if (methodParameters.size() >= 1 && - methodParameters.get(0).equals(TestTimer.class)) { + paramTypes = Arrays.asList(func.getGenericParameterTypes()); + if (paramTypes.size() >= 1 && paramTypes.get(0).equals(TestTimer.class)) { hasTimerHook = true; - methodParameters = methodParameters.subList(1, methodParameters.size()); + paramTypes = paramTypes.subList(1, paramTypes.size()); } @SuppressWarnings("unchecked") - Function[] A = new Function[methodParameters.size()]; - argParsers = A; + Function[] A = new Function[paramTypes.size()]; + paramParsers = A; + + for (int i = 0; i < paramTypes.size(); i++) { + paramParsers[i] = TestUtilsDeserialization.getTypeParser( + TestUtilsDeserialization.linearizeType(paramTypes.get(i))); + } - for (int i = 0; i < methodParameters.size(); i++) { - argParsers[i] = TestUtilsDeserialization.getTypeParser( - TestUtilsDeserialization.linearizeType(methodParameters.get(i))); + paramNames = Arrays.stream(func.getParameters()) + .map(p -> p.getName()) + .collect(Collectors.toList()); + if (hasTimerHook) { + paramNames.remove(0); } if (expectedType == null) { - retParser = TestUtilsDeserialization.getTypeParser( - TestUtilsDeserialization.linearizeType(m.getGenericReturnType())); + retValueParser = TestUtilsDeserialization.getTypeParser( + TestUtilsDeserialization.linearizeType(func.getGenericReturnType())); } else { - retParser = TestUtilsDeserialization.getTypeParser(expectedType); + retValueParser = TestUtilsDeserialization.getTypeParser(expectedType); } customExpectedType = expectedType != null; @@ -96,13 +105,13 @@ public GenericTestHandler(Method m, BiPredicate comparator, * @param signature - the header from a test data file. */ public void parseSignature(List signature) { - if (signature.size() != methodParameters.size() + 1) { - throw new RuntimeException("Argument type count mismatch"); + if (signature.size() != paramTypes.size() + 1) { + throw new RuntimeException("Signature parameter count mismatch"); } - for (int i = 0; i < methodParameters.size(); i++) { + for (int i = 0; i < paramTypes.size(); i++) { if (!TestUtilsDeserialization.matchArgumentType( - methodParameters.get(i), + paramTypes.get(i), TestUtils.filterBracketComments(signature.get(i)))) { throw new RuntimeException(Integer.toString(i) + "th argument type mismatch"); @@ -111,7 +120,7 @@ public void parseSignature(List signature) { if (!customExpectedType) { if (!TestUtilsDeserialization.matchArgumentType( - testedMethod.getGenericReturnType(), + this.func.getGenericReturnType(), TestUtils.filterBracketComments( signature.get(signature.size() - 1)))) { throw new RuntimeException("Return type mismatch"); @@ -131,13 +140,14 @@ public void parseSignature(List signature) { */ public TestOutput runTest(List testArgs) throws Exception { try { - if (testArgs.size() != argParsers.length + (retParser != null ? 1 : 0)) { + if (testArgs.size() != + paramParsers.length + (retValueParser != null ? 1 : 0)) { throw new RuntimeException("Invalid argument count"); } List parsed = new ArrayList<>(); - for (int i = 0; i < argParsers.length; i++) { - parsed.add(argParsers[i].apply(testArgs.get(i))); + for (int i = 0; i < paramParsers.length; i++) { + parsed.add(paramParsers[i].apply(testArgs.get(i))); } TestTimer timer = new TestTimer(); @@ -147,17 +157,18 @@ public TestOutput runTest(List testArgs) throws Exception { } if (!expectedIsVoid()) { - Object expected = retParser.apply(testArgs.get(testArgs.size() - 1)); + Object expected = + retValueParser.apply(testArgs.get(testArgs.size() - 1)); timer.start(); - Object result = testedMethod.invoke(null, parsed.toArray()); + Object result = this.func.invoke(null, parsed.toArray()); timer.stop(); return new TestOutput(compareResults(expected, result), timer, expected, result); } else { timer.start(); - testedMethod.invoke(null, parsed.toArray()); + this.func.invoke(null, parsed.toArray()); timer.stop(); return new TestOutput(true, timer); @@ -196,12 +207,12 @@ private boolean compareResults(Object expected, Object result) { @Override public boolean expectedIsVoid() { - return retParser == null; + return retValueParser == null; } @Override - public int argumentCount() { - return argParsers.length; + public List paramNames() { + return paramNames; } @SuppressWarnings("unchecked") diff --git a/epi_judge_java/epi/test_framework/TestHandler.java b/epi_judge_java/epi/test_framework/TestHandler.java index f35243739..55bad2d0a 100644 --- a/epi_judge_java/epi/test_framework/TestHandler.java +++ b/epi_judge_java/epi/test_framework/TestHandler.java @@ -9,5 +9,5 @@ public interface TestHandler { boolean expectedIsVoid(); - int argumentCount(); + List paramNames(); } diff --git a/epi_judge_java/epi/test_framework/TestUtils.java b/epi_judge_java/epi/test_framework/TestUtils.java index 17fb5257f..e511607b2 100644 --- a/epi_judge_java/epi/test_framework/TestUtils.java +++ b/epi_judge_java/epi/test_framework/TestUtils.java @@ -35,38 +35,21 @@ private static List> splitTsvFile(Path dataFile) { return result; } - public static List getDefaultArgNames(int count) { - List result = new ArrayList<>(); - for (int i = 0; i < count; i++) { - result.add("arg " + String.valueOf(i + 1)); - } - return result; - } - public static void runTests(Path testDataPath, TestHandler handler, long timeout, boolean stopOnError) { List> testData = splitTsvFile(testDataPath); handler.parseSignature(testData.get(0)); - List argNames; - int firstIdx; - - if (testData.size() >= 2 && !testData.get(1).isEmpty() && - (testData.get(1).get(0).equals("@") || - testData.get(1).get(0).equals("+"))) { - argNames = testData.get(1).subList(1, testData.get(1).size()); - firstIdx = 2; - } else { - argNames = getDefaultArgNames(handler.argumentCount()); - firstIdx = 1; - } + List paramNames = handler.paramNames(); + int firstTestIdx = 1; int testNr = 0; - final int totalTests = testData.size() - firstIdx; + final int totalTests = testData.size() - firstTestIdx; int testsPassed = 0; List durations = new ArrayList<>(); - for (List testCase : testData.subList(firstIdx, testData.size())) { + for (List testCase : + testData.subList(firstTestIdx, testData.size())) { testNr++; // Since the last field of test_data is test_explanation, which is not @@ -151,7 +134,7 @@ public static void runTests(Path testDataPath, TestHandler handler, if (!handler.expectedIsVoid()) { testCase = testCase.subList(0, testCase.size() - 1); } - TestUtilsConsole.printFailedTest(argNames, testCase, testOutput, + TestUtilsConsole.printFailedTest(paramNames, testCase, testOutput, testExplanation); break; } diff --git a/epi_judge_java/epi/test_framework/TestUtilsConsole.java b/epi_judge_java/epi/test_framework/TestUtilsConsole.java index 74f7b945a..8c94da596 100644 --- a/epi_judge_java/epi/test_framework/TestUtilsConsole.java +++ b/epi_judge_java/epi/test_framework/TestUtilsConsole.java @@ -65,7 +65,7 @@ private static String genSpaces(int count) { return new String(new char[count]).replace('\0', ' '); } - public static void printFailedTest(List argNames, + public static void printFailedTest(List paramNames, List arguments, TestOutput testOutput, String testExplanation) { @@ -73,44 +73,40 @@ public static void printFailedTest(List argNames, String resultStr = "result"; String explanationStr = "explanation"; - boolean hasExpected = testOutput != null && - testOutput.expected != TestOutput.EMPTY_OBJECT; - boolean hasResult = testOutput != null && - testOutput.result != TestOutput.EMPTY_OBJECT; - boolean hasExplanation = !testExplanation.equals("TODO") && - !testExplanation.equals(""); + boolean hasExpected = + testOutput != null && testOutput.expected != TestOutput.EMPTY_OBJECT; + boolean hasResult = + testOutput != null && testOutput.result != TestOutput.EMPTY_OBJECT; + boolean hasExplanation = + !testExplanation.equals("TODO") && !testExplanation.equals(""); - int maxColSize = hasExplanation ? explanationStr.length() : - hasExpected ? expectedStr.length() : - hasResult ? resultStr.length() : - 0; + int maxColSize = hasExplanation + ? explanationStr.length() + : hasExpected ? expectedStr.length() + : hasResult ? resultStr.length() : 0; - for (String arg : argNames) { - if (arg.length() > maxColSize) - maxColSize = arg.length(); + for (String param : paramNames) { + if (param.length() > maxColSize) maxColSize = param.length(); } for (int i = 0; i < arguments.size(); i++) { - System.out.printf("\t%s: %s%s\n", argNames.get(i), - genSpaces(maxColSize - argNames.get(i).length()), + System.out.printf("\t%s: %s%s\n", paramNames.get(i), + genSpaces(maxColSize - paramNames.get(i).length()), escapeNewline(arguments.get(i))); } if (hasExpected) { - System.out.printf("\t%s: %s%s\n", - expectedStr, + System.out.printf("\t%s: %s%s\n", expectedStr, genSpaces(maxColSize - expectedStr.length()), escapeNewline(String.valueOf(testOutput.expected))); } if (hasResult) { - System.out.printf("\t%s: %s%s\n", - resultStr, + System.out.printf("\t%s: %s%s\n", resultStr, genSpaces(maxColSize - resultStr.length()), escapeNewline(String.valueOf(testOutput.result))); } if (hasExplanation) { - System.out.printf("\t%s: %s%s\n", - explanationStr, + System.out.printf("\t%s: %s%s\n", explanationStr, genSpaces(maxColSize - explanationStr.length()), testExplanation); } diff --git a/epi_judge_python/alternating_array.py b/epi_judge_python/alternating_array.py index c9b28bf34..eaa609f01 100644 --- a/epi_judge_python/alternating_array.py +++ b/epi_judge_python/alternating_array.py @@ -7,6 +7,13 @@ def rearrange(A): return +@enable_timer_hook +def rearrange_wrapper(timer, A): + timer.start() + rearrange(A) + timer.stop() + + def check_answer(A): for i in range(len(A)): if i % 2: @@ -15,21 +22,14 @@ def check_answer(A): if i + 1 < len(A): if A[i] < A[i + 1]: raise TestFailureException('') - else: - if i > 0: - if A[i - 1] < A[i]: - raise TestFailureException('') + else: + if i > 0: + if A[i - 1] < A[i]: + raise TestFailureException('') if i + 1 < len(A): if A[i + 1] < A[i]: raise TestFailureException('') - -@enable_timer_hook -def rearrange_wrapper(timer, A): - timer.start() - rearrange(A) - timer.stop() - check_answer(A) diff --git a/epi_judge_python/arbitrage.py b/epi_judge_python/arbitrage.py index d3a05c519..48ace2e26 100644 --- a/epi_judge_python/arbitrage.py +++ b/epi_judge_python/arbitrage.py @@ -1,4 +1,4 @@ -def is_arbitrage_exist(G): +def is_arbitrage_exist(graph): # Implement this placeholder. return True diff --git a/epi_judge_python/copy_posting_list.py b/epi_judge_python/copy_posting_list.py index d41b55f99..00c4c7efd 100644 --- a/epi_judge_python/copy_posting_list.py +++ b/epi_judge_python/copy_posting_list.py @@ -8,23 +8,6 @@ def copy_postings_list(L): return None -def create_posting_list(serialized): - key_mapping = dict() - head = None - for (order, _) in reversed(serialized): - head = PostingListNode(order, head) - key_mapping[order] = head - - list_it = head - for (_, jump_index) in serialized: - if jump_index != -1: - list_it.jump = key_mapping.get(jump_index, None) - if not list_it.jump: - raise RuntimeError('Jump index out of range') - - return head - - def assert_lists_equal(orig, copy): node_mapping = dict() o_it = orig @@ -62,8 +45,24 @@ def assert_lists_equal(orig, copy): @enable_timer_hook -def copy_postings_list_wrapper(timer, serialized): - head = create_posting_list(serialized) +def copy_postings_list_wrapper(timer, l): + def create_posting_list(serialized): + key_mapping = dict() + head = None + for (order, _) in reversed(serialized): + head = PostingListNode(order, head) + key_mapping[order] = head + + list_it = head + for (_, jump_index) in serialized: + if jump_index != -1: + list_it.jump = key_mapping.get(jump_index, None) + if not list_it.jump: + raise RuntimeError('Jump index out of range') + + return head + + head = create_posting_list(l) timer.start() copy = copy_postings_list(head) diff --git a/epi_judge_python/deadlock_detection.py b/epi_judge_python/deadlock_detection.py index 4ca1d730d..ba5b2f96f 100644 --- a/epi_judge_python/deadlock_detection.py +++ b/epi_judge_python/deadlock_detection.py @@ -10,19 +10,19 @@ def __init__(self): self.edges = [] -def is_deadlocked(G): +def is_deadlocked(graph): # Implement this placeholder. return True @enable_timer_hook -def is_deadlocked_wrapper(timer, k, edges): - if k <= 0: - raise RuntimeError('Invalid k value') - graph = [GraphVertex() for _ in range(k)] +def is_deadlocked_wrapper(timer, num_nodes, edges): + if num_nodes <= 0: + raise RuntimeError('Invalid num_nodes value') + graph = [GraphVertex() for _ in range(num_nodes)] for (fr, to) in edges: - if fr < 0 or fr >= k or to < 0 or to >= k: + if fr < 0 or fr >= num_nodes or to < 0 or to >= num_nodes: raise RuntimeError('Invalid vertex index') graph[fr].edges.append(graph[to]) diff --git a/epi_judge_python/delete_from_list.py b/epi_judge_python/delete_from_list.py index f76d78160..53a6e2407 100644 --- a/epi_judge_python/delete_from_list.py +++ b/epi_judge_python/delete_from_list.py @@ -8,12 +8,12 @@ def delete_after(node): @enable_timer_hook -def delete_from_list_wrapper(timer, head, i): +def delete_from_list_wrapper(timer, head, node_idx): node_to_delete = head prev = None if node_to_delete is None: raise RuntimeError('List is empty') - for _ in range(i): + for _ in range(node_idx): if node_to_delete.next is None: raise RuntimeError("Can't delete last node") prev = node_to_delete diff --git a/epi_judge_python/delete_node_from_list.py b/epi_judge_python/delete_node_from_list.py index 09d9c2b2e..1f2136a2d 100644 --- a/epi_judge_python/delete_node_from_list.py +++ b/epi_judge_python/delete_node_from_list.py @@ -8,11 +8,11 @@ def deletion_from_list(node_to_delete): @enable_timer_hook -def deletion_from_list_wrapper(timer, head, i): +def deletion_from_list_wrapper(timer, head, node_to_delete_idx): node_to_delete = head if node_to_delete is None: raise RuntimeError('List is empty') - for _ in range(i): + for _ in range(node_to_delete_idx): if node_to_delete.next is None: raise RuntimeError("Can't delete last node") node_to_delete = node_to_delete.next diff --git a/epi_judge_python/descendant_and_ancestor_in_bst.py b/epi_judge_python/descendant_and_ancestor_in_bst.py index 3b7e888bf..cbd5d6f57 100644 --- a/epi_judge_python/descendant_and_ancestor_in_bst.py +++ b/epi_judge_python/descendant_and_ancestor_in_bst.py @@ -10,14 +10,15 @@ def pair_includes_ancestor_and_descendant_of_m(possible_anc_or_desc_0, @enable_timer_hook def pair_includes_ancestor_and_descendant_of_m_wrapper( - timer, tree, candidate1_idx, candidate2_idx, middle_idx): - candidate1 = must_find_node(tree, candidate1_idx) - candidate2 = must_find_node(tree, candidate2_idx) - middle = must_find_node(tree, middle_idx) + timer, tree, possible_anc_or_desc_0, possible_anc_or_desc_1, + middle_idx): + candidate0 = must_find_node(tree, possible_anc_or_desc_0) + candidate1 = must_find_node(tree, possible_anc_or_desc_1) + middle_node = must_find_node(tree, middle_idx) timer.start() result = pair_includes_ancestor_and_descendant_of_m( - candidate1, candidate2, middle) + candidate0, candidate1, middle_node) timer.stop() return result diff --git a/epi_judge_python/do_lists_overlap.py b/epi_judge_python/do_lists_overlap.py index 470037cc3..9dd41b4a2 100644 --- a/epi_judge_python/do_lists_overlap.py +++ b/epi_judge_python/do_lists_overlap.py @@ -4,47 +4,47 @@ from test_framework.test_utils import enable_timer_hook -def overlapping_lists(L1, L2): +def overlapping_lists(l0, l1): # Implement this placeholder. return None @enable_timer_hook -def overlapping_lists_wrapper(timer, l1, l2, common, cycle1, cycle2): +def overlapping_lists_wrapper(timer, l0, l1, common, cycle0, cycle1): if common: - if not l1: - l1 = common + if not l0: + l0 = common else: - it = l1 + it = l0 while it.next: it = it.next it.next = common - if not l2: - l2 = common + if not l1: + l1 = common else: - it = l2 + it = l1 while it.next: it = it.next it.next = common - if cycle1 != -1 and l1: - last = l1 + if cycle0 != -1 and l0: + last = l0 while last.next: last = last.next - it = l1 - for _ in range(cycle1): + it = l0 + for _ in range(cycle0): if not it: raise RuntimeError('Invalid input data') it = it.next last.next = it - if cycle2 != -1 and l2: - last = l2 + if cycle1 != -1 and l1: + last = l1 while last.next: last = last.next - it = l2 - for _ in range(cycle2): + it = l1 + for _ in range(cycle1): if not it: raise RuntimeError('Invalid input data') it = it.next @@ -57,7 +57,7 @@ def overlapping_lists_wrapper(timer, l1, l2, common, cycle1, cycle2): it = it.next timer.start() - result = overlapping_lists(l1, l2) + result = overlapping_lists(l0, l1) timer.stop() if not (id(result) in common_nodes or (not common_nodes and not result)): diff --git a/epi_judge_python/do_terminated_lists_overlap.py b/epi_judge_python/do_terminated_lists_overlap.py index ac877bdee..bbfd8feb9 100644 --- a/epi_judge_python/do_terminated_lists_overlap.py +++ b/epi_judge_python/do_terminated_lists_overlap.py @@ -2,32 +2,32 @@ from test_framework.test_failure_exception import TestFailureException -def overlapping_no_cycle_lists(L1, L2): +def overlapping_no_cycle_lists(l0, l1): # Implement this placeholder. return None @enable_timer_hook -def overlapping_no_cycle_lists_wrapper(timer, p1, p2, common): +def overlapping_no_cycle_lists_wrapper(timer, l0, l1, common): if common: - if p1: - l = p1 - while l.next: - l = l.next - l.next = common + if l0: + i = l0 + while i.next: + i = i.next + i.next = common else: - p1 = common + l0 = common - if p2: - l = p2 - while l.next: - l = l.next - l.next = common + if l1: + i = l1 + while i.next: + i = i.next + i.next = common else: - p2 = common + l1 = common timer.start() - result = overlapping_no_cycle_lists(p1, p2) + result = overlapping_no_cycle_lists(l0, l1) timer.stop() if result != common: diff --git a/epi_judge_python/dutch_national_flag.py b/epi_judge_python/dutch_national_flag.py index 01dc91c58..20bf4c693 100644 --- a/epi_judge_python/dutch_national_flag.py +++ b/epi_judge_python/dutch_national_flag.py @@ -10,28 +10,28 @@ def dutch_flag_partition(pivot_index, A): @enable_timer_hook -def dutch_flag_partition_wrapper(timer, data, pivot_idx): +def dutch_flag_partition_wrapper(timer, A, pivot_idx): count = [0, 0, 0] - for x in data: + for x in A: count[x] += 1 - pivot = data[pivot_idx] + pivot = A[pivot_idx] timer.start() - dutch_flag_partition(pivot_idx, data) + dutch_flag_partition(pivot_idx, A) timer.stop() i = 0 - while i < len(data) and data[i] < pivot: - count[data[i]] -= 1 + while i < len(A) and A[i] < pivot: + count[A[i]] -= 1 i += 1 - while i < len(data) and data[i] == pivot: - count[data[i]] -= 1 + while i < len(A) and A[i] == pivot: + count[A[i]] -= 1 i += 1 - while i < len(data) and data[i] > pivot: - count[data[i]] -= 1 + while i < len(A) and A[i] > pivot: + count[A[i]] -= 1 i += 1 - if i != len(data) or any(count): + if i != len(A) or any(count): raise TestFailureException("Invalid output") diff --git a/epi_judge_python/enumerate_trees.py b/epi_judge_python/enumerate_trees.py index 352421ae6..6dcc31109 100644 --- a/epi_judge_python/enumerate_trees.py +++ b/epi_judge_python/enumerate_trees.py @@ -20,9 +20,9 @@ def serialize_structure(tree): @enable_timer_hook -def generate_all_binary_trees_wrapper(timer, i): +def generate_all_binary_trees_wrapper(timer, num_nodes): timer.start() - result = generate_all_binary_trees(i) + result = generate_all_binary_trees(num_nodes) timer.stop() return sorted(map(serialize_structure, result)) diff --git a/epi_judge_python/graph_clone.py b/epi_judge_python/graph_clone.py index 4ad62f874..bea952289 100644 --- a/epi_judge_python/graph_clone.py +++ b/epi_judge_python/graph_clone.py @@ -7,7 +7,7 @@ def __init__(self, label): self.edges = [] -def clone_graph(G): +def clone_graph(graph): # Implement this placeholder. return None @@ -16,7 +16,7 @@ def copy_labels(edges): return [e.label for e in edges] -def check_graph(node, G): +def check_graph(node, graph): from test_framework.test_failure_exception import TestFailureException vertex_set = set() q = collections.deque() @@ -24,10 +24,10 @@ def check_graph(node, G): vertex_set.add(node) while q: vertex = q.popleft() - if vertex.label >= len(G): + if vertex.label >= len(graph): raise TestFailureException('') label1 = copy_labels(vertex.edges) - label2 = copy_labels(G[vertex.label].edges) + label2 = copy_labels(graph[vertex.label].edges) label1.sort() label2.sort() if label1 != label2: diff --git a/epi_judge_python/group_equal_entries.py b/epi_judge_python/group_equal_entries.py index ce5fb4865..e909ac3a9 100644 --- a/epi_judge_python/group_equal_entries.py +++ b/epi_judge_python/group_equal_entries.py @@ -12,29 +12,29 @@ def group_by_age(people): @enable_timer_hook -def group_by_age_wrapper(timer, v): - if not v: +def group_by_age_wrapper(timer, people): + if not people: return - v = [Person(*x) for x in v] + people = [Person(*x) for x in people] values = collections.Counter() - values.update(v) + values.update(people) timer.start() - group_by_age(v) + group_by_age(people) timer.stop() - if not v: + if not people: raise TestFailureException('Empty result') new_values = collections.Counter() - new_values.update(v) + new_values.update(people) if new_values != values: raise TestFailureException('Entry set changed') ages = set() - last_age = v[0] + last_age = people[0] - for x in v: + for x in people: if x.age in ages: raise TestFailureException('Entries are not grouped by age') if last_age != x.age: diff --git a/epi_judge_python/insert_in_list.py b/epi_judge_python/insert_in_list.py index 232e72dd6..49b992c35 100644 --- a/epi_judge_python/insert_in_list.py +++ b/epi_judge_python/insert_in_list.py @@ -9,17 +9,17 @@ def insert_after(node, new_node): @enable_timer_hook -def insert_list_wrapper(timer, L, pos, key): - node = L - for _ in range(pos - 1): +def insert_list_wrapper(timer, l, node_idx, new_node_data): + node = l + for _ in range(node_idx - 1): node = node.next - new_node = ListNode(key) + new_node = ListNode(new_node_data) timer.start() insert_after(node, new_node) timer.stop() - return L + return l from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/intervals_union.py b/epi_judge_python/intervals_union.py index 20f6836a8..12382c11d 100644 --- a/epi_judge_python/intervals_union.py +++ b/epi_judge_python/intervals_union.py @@ -13,11 +13,13 @@ def union_of_intervals(intervals): @enable_timer_hook -def union_of_intervals_wrapper(timer, A): - A = [Interval(Endpoint(x[1], x[0]), Endpoint(x[3], x[2])) for x in A] +def union_of_intervals_wrapper(timer, intervals): + intervals = [ + Interval(Endpoint(x[1], x[0]), Endpoint(x[3], x[2])) for x in intervals + ] timer.start() - result = union_of_intervals(A) + result = union_of_intervals(intervals) timer.stop() return [(i.left.val, i.left.is_closed, i.right.val, i.right.is_closed) diff --git a/epi_judge_python/is_array_dominated.py b/epi_judge_python/is_array_dominated.py index 2f9267ad0..58010ec79 100644 --- a/epi_judge_python/is_array_dominated.py +++ b/epi_judge_python/is_array_dominated.py @@ -10,23 +10,22 @@ class Team: def __init__(self, height): self._players = [Team.Player(h) for h in height] - # Checks if A can be placed in front of B. + # Checks if team0 can be placed in front of team1. @staticmethod - def valid_placement_exists(A, B): + def valid_placement_exists(team0, team1): # Implement this placeholder. return True @enable_timer_hook -def valid_placement_exists_wrapper(timer, h1, h2, expected12, expected21): - t1, t2 = Team(h1), Team(h2) +def valid_placement_exists_wrapper(timer, team0, team1, expected_01, + expected10): + t0, t1 = Team(team0), Team(team1) timer.start() - result12 = Team.valid_placement_exists(t1, t2) - result21 = Team.valid_placement_exists(t2, t1) - timer.stop() - - if result12 != expected12 or result21 != expected21: + if Team.valid_placement_exists( + t0, t1) != expected_01 or Team.valid_placement_exists( + t1, t0) != expected10: raise TestFailureException("") diff --git a/epi_judge_python/is_circuit_wirable.py b/epi_judge_python/is_circuit_wirable.py index 659bc4df0..958a190c9 100644 --- a/epi_judge_python/is_circuit_wirable.py +++ b/epi_judge_python/is_circuit_wirable.py @@ -7,7 +7,7 @@ def __init__(self): self.edges = [] -def is_any_placement_feasible(G): +def is_any_placement_feasible(graph): # Implement this placeholder. return True diff --git a/epi_judge_python/kth_node_in_tree.py b/epi_judge_python/kth_node_in_tree.py index 52f448044..759d20b83 100644 --- a/epi_judge_python/kth_node_in_tree.py +++ b/epi_judge_python/kth_node_in_tree.py @@ -16,7 +16,7 @@ def find_kth_node_binary_tree(tree, k): @enable_timer_hook -def find_kth_node_binary_tree_wrapper(timer, tree, idx): +def find_kth_node_binary_tree_wrapper(timer, tree, k): def init_size(node): if not node: return 0 @@ -26,7 +26,7 @@ def init_size(node): init_size(tree) timer.start() - result = find_kth_node_binary_tree(tree, idx) + result = find_kth_node_binary_tree(tree, k) timer.stop() if not result: diff --git a/epi_judge_python/lowest_common_ancestor.py b/epi_judge_python/lowest_common_ancestor.py index 19d5a5cd7..039f27a49 100644 --- a/epi_judge_python/lowest_common_ancestor.py +++ b/epi_judge_python/lowest_common_ancestor.py @@ -11,11 +11,8 @@ def lca(tree, node0, node1): @enable_timer_hook def lca_wrapper(timer, tree, key1, key2): strip_parent_link(tree) - node1 = must_find_node(tree, key1) - node2 = must_find_node(tree, key2) - timer.start() - result = lca(tree, node1, node2) + result = lca(tree, must_find_node(tree, key1), must_find_node(tree, key2)) timer.stop() if result is None: diff --git a/epi_judge_python/lowest_common_ancestor_close_ancestor.py b/epi_judge_python/lowest_common_ancestor_close_ancestor.py index b6fc8ed00..1d71d0460 100644 --- a/epi_judge_python/lowest_common_ancestor_close_ancestor.py +++ b/epi_judge_python/lowest_common_ancestor_close_ancestor.py @@ -3,18 +3,15 @@ from test_framework.test_utils import enable_timer_hook -def lca(node_0, node_1): +def lca(node0, node1): # Implement this placeholder. return None @enable_timer_hook -def lca_wrapper(timer, tree, key1, key2): - node1 = must_find_node(tree, key1) - node2 = must_find_node(tree, key2) - +def lca_wrapper(timer, tree, node0, node1): timer.start() - result = lca(node1, node2) + result = lca(must_find_node(tree, node0), must_find_node(tree, node1)) timer.stop() if result is None: diff --git a/epi_judge_python/lowest_common_ancestor_in_bst.py b/epi_judge_python/lowest_common_ancestor_in_bst.py index 9c922ce25..59a7d4baf 100644 --- a/epi_judge_python/lowest_common_ancestor_in_bst.py +++ b/epi_judge_python/lowest_common_ancestor_in_bst.py @@ -10,11 +10,9 @@ def find_LCA(tree, s, b): @enable_timer_hook -def lca_wrapper(timer, tree, key1, key2): - node1 = must_find_node(tree, key1) - node2 = must_find_node(tree, key2) +def lca_wrapper(timer, tree, s, b): timer.start() - result = find_LCA(tree, node1, node2) + result = find_LCA(tree, must_find_node(tree, s), must_find_node(tree, b)) timer.stop() if result is None: raise TestFailureException("Result can't be None") diff --git a/epi_judge_python/lowest_common_ancestor_with_parent.py b/epi_judge_python/lowest_common_ancestor_with_parent.py index 1b87fc8a1..62e2d2814 100644 --- a/epi_judge_python/lowest_common_ancestor_with_parent.py +++ b/epi_judge_python/lowest_common_ancestor_with_parent.py @@ -9,12 +9,9 @@ def lca(node0, node1): @enable_timer_hook -def lca_wrapper(timer, tree, key1, key2): - node1 = must_find_node(tree, key1) - node2 = must_find_node(tree, key2) - +def lca_wrapper(timer, tree, node0, node1): timer.start() - result = lca(node1, node2) + result = lca(must_find_node(tree, node0), must_find_node(tree, node1)) timer.stop() if result is None: diff --git a/epi_judge_python/majority_element.py b/epi_judge_python/majority_element.py index f9899d614..51faeed2b 100644 --- a/epi_judge_python/majority_element.py +++ b/epi_judge_python/majority_element.py @@ -1,10 +1,10 @@ -def majority_search(input_stream): +def majority_search(stream): # Implement this placeholder. return '' -def majority_search_wrapper(input_stream): - return majority_search(iter(input_stream)) +def majority_search_wrapper(stream): + return majority_search(iter(stream)) from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/matrix_connected_regions.py b/epi_judge_python/matrix_connected_regions.py index 5ebdc7098..ae7bffea2 100644 --- a/epi_judge_python/matrix_connected_regions.py +++ b/epi_judge_python/matrix_connected_regions.py @@ -1,11 +1,11 @@ -def flip_color(x, y, A): +def flip_color(x, y, image): # Implement this placeholder. return -def flip_color_wrapper(x, y, a): - flip_color(x, y, a) - return a +def flip_color_wrapper(x, y, image): + flip_color(x, y, image) + return image from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/matrix_rotation.py b/epi_judge_python/matrix_rotation.py index fe44ad53c..5562d5de4 100644 --- a/epi_judge_python/matrix_rotation.py +++ b/epi_judge_python/matrix_rotation.py @@ -3,9 +3,9 @@ def rotate_matrix(square_matrix): return -def rotate_matrix_wrapper(A): - rotate_matrix(A) - return A +def rotate_matrix_wrapper(square_matrix): + rotate_matrix(square_matrix) + return square_matrix from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/max_teams_in_photograph.py b/epi_judge_python/max_teams_in_photograph.py index 605e7017f..f25dfa475 100644 --- a/epi_judge_python/max_teams_in_photograph.py +++ b/epi_judge_python/max_teams_in_photograph.py @@ -4,10 +4,11 @@ class GraphVertex: def __init__(self): self.edges = [] + # Set max_distance = 0 to indicate unvisitied vertex. self.max_distance = 0 -def find_largest_number_teams(G): +def find_largest_number_teams(graph): # Implement this placeholder. return 0 diff --git a/epi_judge_python/online_sampling.py b/epi_judge_python/online_sampling.py index cc7e649a4..166b52ecb 100644 --- a/epi_judge_python/online_sampling.py +++ b/epi_judge_python/online_sampling.py @@ -7,30 +7,30 @@ # Assumption: there are at least k elements in the stream. -def online_random_sample(it, k): +def online_random_sample(stream, k): # Implement this placeholder. return [] @enable_timer_hook -def online_random_sample_wrapper(timer, A, k): - def online_random_sample_runner(timer, A, k): +def online_random_sample_wrapper(timer, stream, k): + def online_random_sample_runner(timer, stream, k): timer.start() - result = [online_random_sample(iter(A), k) for _ in range(100000)] + result = [online_random_sample(iter(stream), k) for _ in range(100000)] timer.stop() - total_possible_outcomes = binomial_coefficient(len(A), k) - A = sorted(A) + total_possible_outcomes = binomial_coefficient(len(stream), k) + stream = sorted(stream) comb_to_idx = { - tuple(compute_combination_idx(A, len(A), k, i)): i - for i in range(binomial_coefficient(len(A), k)) + tuple(compute_combination_idx(stream, len(stream), k, i)): i + for i in range(binomial_coefficient(len(stream), k)) } return check_sequence_is_uniformly_random( [comb_to_idx[tuple(sorted(a))] for a in result], total_possible_outcomes, 0.01) run_func_with_retries( - functools.partial(online_random_sample_runner, timer, A, k)) + functools.partial(online_random_sample_runner, timer, stream, k)) from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/pivot_list.py b/epi_judge_python/pivot_list.py index c5fa94856..0a7bbd614 100644 --- a/epi_judge_python/pivot_list.py +++ b/epi_judge_python/pivot_list.py @@ -3,28 +3,28 @@ from test_framework.test_utils import enable_timer_hook -def list_pivoting(L, x): +def list_pivoting(l, x): # Implement this placeholder. return None -def linked_to_list(ll): - l = list() - while ll is not None: - l.append(ll.data) - ll = ll.next - return l +def linked_to_list(l): + v = list() + while l is not None: + v.append(l.data) + l = l.next + return v @enable_timer_hook -def list_pivoting_wrapper(timer, ll, x): - original = linked_to_list(ll) +def list_pivoting_wrapper(timer, l, x): + original = linked_to_list(l) timer.start() - ll = list_pivoting(ll, x) + l = list_pivoting(l, x) timer.stop() - pivoted = linked_to_list(ll) + pivoted = linked_to_list(l) mode = -1 for i in pivoted: if mode == -1: diff --git a/epi_judge_python/reverse_words.py b/epi_judge_python/reverse_words.py index 7a6d58ac1..0c6740c6a 100644 --- a/epi_judge_python/reverse_words.py +++ b/epi_judge_python/reverse_words.py @@ -9,14 +9,14 @@ def reverse_words(s): @enable_timer_hook def reverse_words_wrapper(timer, s): - output = bytearray() - output.extend(map(ord, s)) + s_copy = bytearray() + s_copy.extend(map(ord, s)) timer.start() - reverse_words(output) + reverse_words(s_copy) timer.stop() - return output.decode("utf-8") + return s_copy.decode("utf-8") from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/rook_attack.py b/epi_judge_python/rook_attack.py index ca3cfba89..2d89e5e5e 100644 --- a/epi_judge_python/rook_attack.py +++ b/epi_judge_python/rook_attack.py @@ -4,8 +4,9 @@ def rook_attack(A): def rook_attack_wrapper(A): - rook_attack(A) - return A + a_copy = copy.deepcopy(A) + rook_attack(a_copy) + return a_copy from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/rotate_array.py b/epi_judge_python/rotate_array.py index 76207e318..feb1e471c 100644 --- a/epi_judge_python/rotate_array.py +++ b/epi_judge_python/rotate_array.py @@ -1,11 +1,18 @@ -def rotate_array(i, A): +from test_framework.test_utils import enable_timer_hook + + +def rotate_array(rotate_amount, A): # Implement this placeholder. return -def rotate_array_wrapper(a, k): - rotate_array(k, a) - return a +@enable_timer_hook +def rotate_array_wrapper(timer, A, rotate_amount): + a_copy = A[:] + timer.start() + rotate_array(rotate_amount, a_copy) + timer.stop() + return a_copy from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/search_frequent_items.py b/epi_judge_python/search_frequent_items.py index 1da97e9e2..b7aab85a8 100644 --- a/epi_judge_python/search_frequent_items.py +++ b/epi_judge_python/search_frequent_items.py @@ -4,9 +4,13 @@ def search_frequent_items(k, stream): return [] +def search_frequent_items_wrapper(k, stream): + return search_frequent_items(k, iter(stream)) + + from test_framework import test_utils_generic_main, test_utils if __name__ == '__main__': test_utils_generic_main.generic_test_main("search_frequent_items.tsv", - search_frequent_items, + search_frequent_items_wrapper, test_utils.unordered_compare) diff --git a/epi_judge_python/smallest_subarray_covering_set.py b/epi_judge_python/smallest_subarray_covering_set.py index bd0cf144e..128f9e076 100644 --- a/epi_judge_python/smallest_subarray_covering_set.py +++ b/epi_judge_python/smallest_subarray_covering_set.py @@ -10,20 +10,20 @@ def find_smallest_subarray_covering_set(paragraph, keywords): @enable_timer_hook -def find_smallest_subarray_covering_set_wrapper(timer, v, s): - copy = s +def find_smallest_subarray_covering_set_wrapper(timer, paragraph, keywords): + copy = keywords timer.start() - (start, end) = find_smallest_subarray_covering_set(v, s) + (start, end) = find_smallest_subarray_covering_set(paragraph, keywords) timer.stop() - if start < 0 or start >= len(v) or \ - end < 0 or end >= len(v) or \ + if start < 0 or start >= len(paragraph) or \ + end < 0 or end >= len(paragraph) or \ start > end: raise TestFailureException("Index out of range") for i in range(start, end + 1): - copy.discard(v[i]) + copy.discard(paragraph[i]) if copy: raise TestFailureException("Not all keywords are in the range") diff --git a/epi_judge_python/sorted_list_to_bst.py b/epi_judge_python/sorted_list_to_bst.py index c32c83e5f..1a048fcef 100644 --- a/epi_judge_python/sorted_list_to_bst.py +++ b/epi_judge_python/sorted_list_to_bst.py @@ -27,21 +27,21 @@ def compare_vector_and_tree(tree, it): @enable_timer_hook -def build_bst_from_sorted_doubly_list_wrapper(timer, values): +def build_bst_from_sorted_doubly_list_wrapper(timer, L): l = None - for v in reversed(values): + for v in reversed(L): l = DoublyListNode(v, next=l) if l.next != None: l.next.prev = l timer.start() - l = build_bst_from_sorted_doubly_list(l, len(values)) + l = build_bst_from_sorted_doubly_list(l, len(L)) timer.stop() - it = iter(values) + it = iter(L) compare_vector_and_tree(l, it) if next(it, None) is not None: - raise TestFailureException("Too many values in the tree") + raise TestFailureException("Too many L in the tree") from test_framework import test_utils_generic_main, test_utils diff --git a/epi_judge_python/string_integer_interconversion.py b/epi_judge_python/string_integer_interconversion.py index cbac349a4..0f6da23f7 100644 --- a/epi_judge_python/string_integer_interconversion.py +++ b/epi_judge_python/string_integer_interconversion.py @@ -11,10 +11,10 @@ def string_to_int(s): return 0 -def wrapper(num, s): - if int_to_string(num) != s: +def wrapper(x, s): + if int_to_string(x) != s: raise TestFailureException("Int to string conversion failed") - if string_to_int(s) != num: + if string_to_int(s) != x: raise TestFailureException("String to int conversion failed") diff --git a/epi_judge_python/sudoku_solve.py b/epi_judge_python/sudoku_solve.py index ccff674b1..1ab15a87d 100644 --- a/epi_judge_python/sudoku_solve.py +++ b/epi_judge_python/sudoku_solve.py @@ -27,23 +27,23 @@ def gather_square_block(data, block_size, n): block_y = (n // block_size) * block_size return [ - data[block_x + i][block_y + j] - for j in range(block_size) for i in range(block_size) + data[block_x + i][block_y + j] for j in range(block_size) + for i in range(block_size) ] @enable_timer_hook -def solve_sudoku_wrapper(timer, board): - solved = copy.deepcopy(board) +def solve_sudoku_wrapper(timer, partial_assignment): + solved = copy.deepcopy(partial_assignment) timer.start() solve_sudoku(solved) timer.stop() - if len(board) != len(solved): + if len(partial_assignment) != len(solved): raise TestFailureException('Initial cell assignment has been changed') - for (br, sr) in zip(board, solved): + for (br, sr) in zip(partial_assignment, solved): if len(br) != len(sr): raise TestFailureException( 'Initial cell assignment has been changed') diff --git a/epi_judge_python/test_framework/binary_tree_utils.py b/epi_judge_python/test_framework/binary_tree_utils.py index 83963b82f..bccb8c4ba 100644 --- a/epi_judge_python/test_framework/binary_tree_utils.py +++ b/epi_judge_python/test_framework/binary_tree_utils.py @@ -121,4 +121,5 @@ def strip_parent_link(tree): def binary_tree_height(tree): if not tree: return -1 - return 1 + max(binary_tree_height(tree.left), binary_tree_height(tree.right)) + return 1 + max( + binary_tree_height(tree.left), binary_tree_height(tree.right)) diff --git a/epi_judge_python/test_framework/console_color.py b/epi_judge_python/test_framework/console_color.py index 55df3d3e9..d5f82d2ab 100644 --- a/epi_judge_python/test_framework/console_color.py +++ b/epi_judge_python/test_framework/console_color.py @@ -12,18 +12,18 @@ class ConsoleColor: def get_color_code_win(color): - values = {ConsoleColor.FG_RED: 4 | 8, - ConsoleColor.FG_GREEN: 2 | 8, - ConsoleColor.FG_BLUE: 1 | 8, - ConsoleColor.FG_DEFAULT: 7} + values = { + ConsoleColor.FG_RED: 4 | 8, ConsoleColor.FG_GREEN: 2 | 8, + ConsoleColor.FG_BLUE: 1 | 8, ConsoleColor.FG_DEFAULT: 7 + } return values[color] def get_color_code_unix(color): - values = {ConsoleColor.FG_RED: '\033[31m', - ConsoleColor.FG_GREEN: '\033[32m', - ConsoleColor.FG_BLUE: '\033[34m', - ConsoleColor.FG_DEFAULT: '\033[39m'} + values = { + ConsoleColor.FG_RED: '\033[31m', ConsoleColor.FG_GREEN: '\033[32m', + ConsoleColor.FG_BLUE: '\033[34m', ConsoleColor.FG_DEFAULT: '\033[39m' + } return values[color] @@ -43,7 +43,8 @@ def print_std_out_colored(color, value): platform.set_console_text_attribute(old_color_attrs) else: - print('{}{}{}'.format( - get_color_code_unix(color), value, - get_color_code_unix(ConsoleColor.FG_DEFAULT)), + print( + '{}{}{}'.format( + get_color_code_unix(color), value, + get_color_code_unix(ConsoleColor.FG_DEFAULT)), end='') diff --git a/epi_judge_python/test_framework/generic_test_handler.py b/epi_judge_python/test_framework/generic_test_handler.py index 537b75fff..87007729f 100644 --- a/epi_judge_python/test_framework/generic_test_handler.py +++ b/epi_judge_python/test_framework/generic_test_handler.py @@ -30,40 +30,37 @@ class GenericTestHandler: """ def __init__(self, func, comp): + self._func = func + self._has_timer_hook = test_utils.has_timer_hook(func) self._param_parsers = [] - self._function = func + self._param_names = [ + p.name + for p in inspect.signature(self._func).parameters.values() + if p.default is inspect.Parameter.empty + ][1 if self._has_timer_hook else 0:] self._comp = comp - self._has_timer_hook = test_utils.has_timer_hook(func) - def parse_signature(self, header): + def parse_signature(self, signature): """ This method initializes type parsers for all tested function arguments and expected value, - basing on test data header (see get_string_parser_for_type()). + basing on test data signature (see get_string_parser_for_type()). - :param header: test data header - :type header: List[str] + :param signature: the header from a test data file. + :type signature: List[str] """ - sig = inspect.signature(self._function) - min_arg_count = test_utils.nondefault_param_count(sig) - max_arg_count = sum(1 for _ in sig.parameters) - - if self._has_timer_hook: - min_arg_count -= 1 - max_arg_count -= 1 - - if not (min_arg_count <= (len(header) - 1) <= max_arg_count): + if len(signature) != len(self._param_names) + 1: raise RuntimeError("Signature parameter count mismatch") - header = [test_utils.filter_bracket_comments(s) for s in header] + signature = [test_utils.filter_bracket_comments(s) for s in signature] - for param in header[:-1]: + for param in signature[:-1]: self._param_parsers.append(get_string_parser_for_type(param)) if any(p is None for p in self._param_parsers): raise RuntimeError("Argument can't be of type void") - self._ret_value_parser = get_string_parser_for_type(header[-1]) + self._ret_value_parser = get_string_parser_for_type(signature[-1]) def run_test(self, test_args): """ @@ -88,14 +85,14 @@ def run_test(self, test_args): expected = self._ret_value_parser(test_args[-1]) timer.start() - result = self._function(*args) + result = self._func(*args) timer.stop() return TestOutput( self._comp(expected, result), timer, expected, result) else: timer.start() - self._function(*args) + self._func(*args) timer.stop() return TestOutput(True, timer) @@ -103,5 +100,5 @@ def run_test(self, test_args): def expected_is_void(self): return self._ret_value_parser is None - def argument_count(self): - return len(self._param_parsers) + def param_names(self): + return self._param_names diff --git a/epi_judge_python/test_framework/platform.py b/epi_judge_python/test_framework/platform.py index f3bb7daa5..6148742fd 100644 --- a/epi_judge_python/test_framework/platform.py +++ b/epi_judge_python/test_framework/platform.py @@ -43,7 +43,6 @@ class ConsoleScreenBufferInfo(Structure): ("dwMaximumWindowSize", COORD), ] - _GetStdHandle = windll.kernel32.GetStdHandle _GetStdHandle.argtypes = [ wintypes.DWORD, @@ -74,4 +73,3 @@ def get_console_screen_buffer_info(): def set_console_text_attribute(attrs): return _SetConsoleTextAttribute(stdout_handle, attrs) - diff --git a/epi_judge_python/test_framework/test_utils.py b/epi_judge_python/test_framework/test_utils.py index c31c79d08..aaf67e44f 100644 --- a/epi_judge_python/test_framework/test_utils.py +++ b/epi_judge_python/test_framework/test_utils.py @@ -27,29 +27,19 @@ def split_tsv_file(data_file): raise RuntimeError('Test data file not found') -def get_default_arg_names(count): - return ['arg {}'.format(i + 1) for i in range(count)] - - def run_tests(test_data_path, handler, timeout, stop_on_error, res_printer): test_data = split_tsv_file(test_data_path) handler.parse_signature(test_data[0]) - if len(test_data) >= 2 and len(test_data[1]) > 0 \ - and test_data[1][0] in {'@', '+'}: - arg_names = test_data[1][1:] - first_idx = 2 - else: - arg_names = get_default_arg_names(handler.argument_count()) - first_idx = 1 - + param_names = handler.param_names() + first_test_idx = 1 test_nr = 0 - total_tests = len(test_data) - first_idx + total_tests = len(test_data) - first_test_idx tests_passed = 0 durations = [] - for test_case in test_data[first_idx:]: + for test_case in test_data[first_test_idx:]: test_nr += 1 test_explanation = test_case.pop() @@ -98,7 +88,7 @@ def run_tests(test_data_path, handler, timeout, stop_on_error, res_printer): if result != TestResult.PASSED and stop_on_error: if not handler.expected_is_void(): test_case = test_case[:-1] - print_failed_test(arg_names, test_case, test_output, + print_failed_test(param_names, test_case, test_output, test_explanation, res_printer) break @@ -190,14 +180,6 @@ def filter_bracket_comments(s): return re.sub(bracket_enclosed_comment, '', s, 0).replace(' ', '') -def nondefault_param_count(s: inspect.Signature): - """ - Counts the number of function arguments that have no default value - """ - return sum(1 if p.default is inspect.Parameter.empty else 0 - for p in s.parameters.values()) - - def has_timer_hook(func): return hasattr(func, 'timer_hook') and func.timer_hook @@ -205,42 +187,3 @@ def has_timer_hook(func): def enable_timer_hook(func): func.timer_hook = True return func - - -def generate_arg_names_header(test_data_path, func): - sig = inspect.signature(func) - arg_names = [p for p in sig.parameters] - if has_timer_hook(func): - arg_names = arg_names[1:] - - try: - with open(test_data_path) as file: - test_data_lines = file.readlines() - except OSError: - raise RuntimeError('Test data file not found') - - header = test_data_lines[0].split('\t') - arg_count = len(header) - 1 - assert len(arg_names) >= arg_count - arg_names = arg_names[:arg_count] - print('Arg names for {}: {}'.format(func.__name__, arg_names)) - arg_names = '@\t' + '\t'.join(arg_names) + '\n' - # @ marks automatically generated header that can be overwritten, - # while + marks manual header that will be preserved - if test_data_lines[1][0] == '+': - console_color.print_std_out_colored( - console_color.ConsoleColor.FG_RED, 'SKIPPED\n') - else: - overwritten = False - if test_data_lines[1][0] == '@': - test_data_lines.pop(1) - overwritten = True - test_data_lines.insert(1, arg_names) - with open(test_data_path, 'w') as file: - file.writelines(test_data_lines) - if overwritten: - console_color.print_std_out_colored( - console_color.ConsoleColor.FG_BLUE, 'OVERWRITTEN\n') - else: - console_color.print_std_out_colored( - console_color.ConsoleColor.FG_GREEN, 'OK\n') diff --git a/epi_judge_python/test_framework/test_utils_console.py b/epi_judge_python/test_framework/test_utils_console.py index fd70769fb..80fe6ee0f 100644 --- a/epi_judge_python/test_framework/test_utils_console.py +++ b/epi_judge_python/test_framework/test_utils_console.py @@ -19,11 +19,14 @@ def return_caret_if_tty_output(): def print_test_result(test_result): - values = {TestResult.PASSED: ('PASSED', ConsoleColor.FG_GREEN), - TestResult.FAILED: ('FAILED', ConsoleColor.FG_RED), - TestResult.TIMEOUT: ('TIMEOUT', ConsoleColor.FG_BLUE), - TestResult.UNKNOWN_EXCEPTION: ('UNHANDLED EXCEPTION', ConsoleColor.FG_RED), - TestResult.STACK_OVERFLOW: ('STACK OVERFLOW', ConsoleColor.FG_RED)} + values = { + TestResult.PASSED: ('PASSED', ConsoleColor.FG_GREEN), + TestResult.FAILED: ('FAILED', ConsoleColor.FG_RED), TestResult.TIMEOUT: + ('TIMEOUT', ConsoleColor.FG_BLUE), TestResult.UNKNOWN_EXCEPTION: + ('UNHANDLED EXCEPTION', + ConsoleColor.FG_RED), TestResult.STACK_OVERFLOW: ('STACK OVERFLOW', + ConsoleColor.FG_RED) + } if test_result in values: print_std_out_colored(values[test_result][1], values[test_result][0]) @@ -39,11 +42,12 @@ def print_test_info(test_result, test_nr, total_tests, diagnostic, timer): total_tests_str = str(total_tests) print('Test ', end='') print_test_result(test_result) - print(' ({:>{test_nr_w}}/{})'.format( - test_nr, - total_tests_str, - diagnostic, - test_nr_w=len(total_tests_str)), + print( + ' ({:>{test_nr_w}}/{})'.format( + test_nr, + total_tests_str, + diagnostic, + test_nr_w=len(total_tests_str)), end='', flush=True) @@ -61,7 +65,8 @@ def gen_spaces(count): return ' ' * count -def print_failed_test(arg_names, arguments, test_output, test_explanation, res_printer): +def print_failed_test(param_names, arguments, test_output, test_explanation, + res_printer): expected_str = 'expected' result_str = 'result' explanation_str = 'explanation' @@ -76,9 +81,11 @@ def print_failed_test(arg_names, arguments, test_output, test_explanation, res_p len(result_str) if has_result else \ 0 - max_col_size = max(max_col_size, max(len(arg) for arg in arg_names)) + for param in param_names: + if len(param) > max_col_size: + max_col_size = len(param) - for (name, value) in zip(arg_names, arguments): + for (name, value) in zip(param_names, arguments): print('\t{}: {}{}'.format(name, gen_spaces(max_col_size - len(name)), escape_newline(str(value)))) @@ -89,14 +96,14 @@ def print_failed_test(arg_names, arguments, test_output, test_explanation, res_p (expected, result) = res_printer(expected, result) if has_expected: - print('\t{}: {}{}'.format(expected_str, - gen_spaces(max_col_size - len(expected_str)), - escape_newline(str(expected)))) + print('\t{}: {}{}'.format( + expected_str, gen_spaces(max_col_size - len(expected_str)), + escape_newline(str(expected)))) if has_result: - print('\t{}: {}{}'.format(result_str, - gen_spaces(max_col_size - len(result_str)), - escape_newline(str(result)))) + print('\t{}: {}{}'.format( + result_str, gen_spaces(max_col_size - len(result_str)), + escape_newline(str(result)))) if has_explanation: - print('\t{}: {}{}'.format(explanation_str, - gen_spaces(max_col_size - len(explanation_str)), - test_explanation)) + print('\t{}: {}{}'.format( + explanation_str, gen_spaces(max_col_size - len(explanation_str)), + test_explanation)) diff --git a/epi_judge_python/test_framework/test_utils_deserialization.py b/epi_judge_python/test_framework/test_utils_deserialization.py index 1ef85acce..7ee34bf05 100644 --- a/epi_judge_python/test_framework/test_utils_deserialization.py +++ b/epi_judge_python/test_framework/test_utils_deserialization.py @@ -144,7 +144,9 @@ def set_parser(data): def tuple_parse(data): if len(data) != len(parsers): - raise RuntimeError('Tuple parser: expected {} values, got {}'.format(len(parsers), len(data))) + raise RuntimeError( + "Tuple parser: expected {} values, got {}". + format(len(parsers), len(data))) return tuple([p(x) for (p, x) in zip(parsers, data)]) return tuple_parse diff --git a/epi_judge_python/test_framework/test_utils_generic_main.py b/epi_judge_python/test_framework/test_utils_generic_main.py index 844d66969..1140cddf2 100644 --- a/epi_judge_python/test_framework/test_utils_generic_main.py +++ b/epi_judge_python/test_framework/test_utils_generic_main.py @@ -20,8 +20,8 @@ def generic_test_main(filename, try: parser = argparse.ArgumentParser() parser.add_argument('--test_data_dir', nargs='?', const=True, type=str) - parser.add_argument('--run_all_tests', default=False, action='store_true') - parser.add_argument('--gen_arg_names_mode', default=False, action='store_true') + parser.add_argument( + '--run_all_tests', default=False, action='store_true') args = parser.parse_args() if args.test_data_dir: if not os.path.isdir(args.test_data_dir): @@ -32,15 +32,13 @@ def generic_test_main(filename, args.test_data_dir = test_utils.get_default_test_data_dir_path() test_data_path = os.path.join(args.test_data_dir, filename) - if args.gen_arg_names_mode: - test_utils.generate_arg_names_header(test_data_path, func) - return timeout = 0 stop_on_error = not args.run_all_tests test_utils.run_tests(test_data_path, - generic_test_handler.GenericTestHandler(func, comp=comp), - timeout, stop_on_error, res_printer) + generic_test_handler.GenericTestHandler( + func, comp=comp), timeout, stop_on_error, + res_printer) except RuntimeError as e: print('\nCritical error: {}'.format(e), file=sys.stderr) diff --git a/test_data/a_b_sqrt2.tsv b/test_data/a_b_sqrt2.tsv index 13d6b9b61..a39645f8a 100644 --- a/test_data/a_b_sqrt2.tsv +++ b/test_data/a_b_sqrt2.tsv @@ -1,5 +1,4 @@ int array(float) -@ k 1 [0.0] TODO 2 [0.0, 1.0] TODO 3 [0.0, 1.0, 1.4142135623730951] TODO diff --git a/test_data/absent_value_array.tsv b/test_data/absent_value_array.tsv index f47bfc0e3..73b7162b0 100644 --- a/test_data/absent_value_array.tsv +++ b/test_data/absent_value_array.tsv @@ -1,5 +1,4 @@ array(int) int -@ data [766, 992, 49, 258, 377, 539, 496, 114, 757, 284, 26, 928, 470, 327, 953, 383, 559, 516, 444, 537, 805, 795, 503, 277, 399, 664, 314, 533, 50, 359, 848, 959, 692, 222, 509, 806, 335, 920, 568, 631, 409, 188, 339, 221, 628, 262, 868, 522, 882, 31, 580, 927, 989, 468, 866, 141, 646, 358, 843, 313, 5, 557, 133, 797, 536, 281, 332, 226, 800, 564, 553, 538, 840, 90, 83, 973, 775, 390, 428, 433, 870, 488, 880, 413, 951, 143, 357, 711, 744, 256, 903, 672, 172, 44, 395, 983, 543, 492, 81, 847, 809, 46, 278, 144, 407, 591, 323, 727, 519, 620, 311, 29, 962, 128, 586, 57, 876, 563, 743, 767, 378, 836, 101, 289, 943, 774, 436, 493, 38, 266, 27, 224, 911, 624, 610, 11, 812, 912, 677, 126, 419, 10, 67, 177, 309, 615, 644, 14, 98, 481, 394, 100, 452, 307, 601, 269, 818, 202, 229, 87, 125, 913, 640, 764, 904, 276, 941, 45, 230, 259, 477, 111, 980, 704, 148, 167, 647, 883, 349, 54, 799, 373, 755, 302, 823, 865, 275, 356, 554, 124, 213, 82, 446, 86, 152, 669, 511, 25, 296, 996, 507, 541, 605, 329, 59, 594, 660, 715, 782, 39, 831, 255, 822, 423, 721, 976, 448, 130, 978, 643, 910, 949, 252, 633, 708, 64, 938, 572, 603, 247, 474, 139, 773, 306, 807, 612, 174, 238, 523, 668, 997, 855, 821, 466, 987, 21, 153, 681, 422, 587, 495, 145, 435, 283, 935, 118, 702, 802, 579, 2, 136, 635, 532, 33, 598, 80, 680, 0, 364, 376, 418, 734, 180, 482, 360, 986, 69, 107, 316, 739, 386, 737, 321, 897, 415, 424, 670, 616, 121, 944, 99, 408, 305, 899, 719, 663, 588, 417, 85, 732, 606, 41, 780, 154, 47, 199, 798, 389, 864, 898, 37, 225, 236, 264, 447, 194, 926, 463, 726, 637, 35, 439, 974, 165, 909, 385, 700, 629, 254, 597, 674, 20, 788, 365, 426, 869, 250, 642, 576, 895, 966, 384, 829, 380, 600, 828, 515, 137, 301, 661, 251, 729, 746, 534, 725, 838, 505, 317, 954, 527, 923, 190, 312, 801, 184, 830, 796, 379, 735, 161, 195, 979, 545, 765, 334, 353, 689, 93, 756, 43, 971, 240, 759, 176, 592, 619, 556, 104, 862, 324, 745, 632, 484, 550, 714, 900, 694, 182, 328, 888, 375, 885, 622, 464, 330, 772, 636, 453, 320, 142, 784, 52, 7, 22, 955, 214, 63, 441, 571, 105, 968, 208, 975, 102, 169, 544, 891, 61, 451, 479, 929, 832, 120, 149, 1, 206, 947, 487, 561, 582, 504, 243, 68, 617, 762, 123, 540, 387, 400, 952, 84, 220, 32, 916, 826, 525, 945, 751, 116, 988, 363, 92, 969, 412, 122, 303, 933, 758, 501, 666, 450, 457, 76, 483, 815, 750, 300, 713, 465, 70, 404, 878, 776, 921, 462, 608, 528, 837, 458, 239, 140, 162, 850, 998, 535, 595, 703, 956, 159, 431, 752, 326, 227, 712, 526, 961, 699, 932, 549, 599, 849, 23, 147, 216, 210, 398, 113, 267, 573, 185, 924, 270, 288, 78, 430, 355, 310, 106, 804, 860, 707, 871, 985, 192, 803, 371, 497, 212, 741, 948, 627, 813, 331, 506, 675, 119, 73, 205, 844, 109, 319, 79, 662, 827, 738, 151, 618, 575, 346, 793, 235, 134, 459, 811, 833, 678, 667, 574, 112, 402, 902, 425, 653, 367, 857, 234, 810, 555, 520, 698, 676, 272, 461, 325, 204, 548, 879, 957, 886, 53, 478, 350, 701, 286, 889, 845, 940, 761, 232, 60, 614, 649, 656, 577, 343, 24, 786, 146, 982, 336, 427, 613, 965, 218, 936, 905, 705, 420, 3, 183, 396, 115, 273, 589, 623, 445, 129, 449, 970, 429, 567, 931, 186, 97, 688, 245, 546, 274, 749, 471, 193, 157, 967, 62, 342, 348, 881, 333, 287, 894, 872, 569, 17, 560, 244, 372, 370, 919, 201, 257, 48, 513, 178, 341, 651, 368, 659, 285, 456, 351, 88, 207, 476, 34, 717, 696, 963, 873, 730, 960, 292, 771, 835, 401, 665, 369, 253, 679, 8, 578, 500, 405, 51, 66, 490, 297, 414, 685, 131, 596, 742, 884, 110, 652, 547, 785, 280, 846, 103, 856, 215, 36, 411, 790, 231, 999, 791, 485, 641, 887, 763, 842, 4, 472, 228, 16, 918, 858, 964, 219, 345, 156, 529, 820, 723, 825, 40, 720, 72, 604, 930, 814, 994, 237, 521, 473, 769, 163, 388, 438, 877, 695, 318, 908, 524, 241, 298, 393, 74, 593, 443, 340, 217, 397, 655, 13, 824, 565, 460, 246, 117, 261, 779, 728, 901, 914, 191, 562, 863, 242, 570, 494, 347, 18, 621, 733, 89, 602, 166, 30, 934, 747, 673, 179, 650, 709, 290, 454, 639, 991, 155, 223, 984, 168, 581, 645, 542, 42, 658, 792, 248, 132, 135, 841, 28, 874, 753, 374, 260, 77, 382, 770, 958, 626, 706, 638, 777, 282, 789, 950, 687, 410, 138, 819, 170, 731, 291, 915, 203, 906, 233, 875, 187, 896, 200, 890, 94, 760, 467, 512, 946, 6, 489, 816, 514, 566, 9, 861, 15, 486, 56, 718, 127, 434, 299, 817, 892, 175, 392, 150, 942, 75, 683, 158, 607, 583, 338, 508, 265, 502, 354, 437, 198, 530, 173, 625, 196, 209, 95, 859, 403, 362, 977, 263, 609, 654, 518, 315, 164, 585, 249, 189, 391, 271, 768, 671, 634, 65, 455, 748, 337, 710, 851, 907, 778, 71, 682, 58, 993, 344, 839, 939, 893, 366, 55, 697, 611, 853, 352, 584, 781, 852, 981, 475, 416, 469, 406, 716, 294, 268, 211, 510, 691, 308, 96, 361, 787, 917, 442, 108, 794, 925, 808, 736, 990, 498, 171, 440, 686, 693, 531, 91, 922, 197, 590, 740, 304, 972, 322, 834, 722, 295, 551, 867, 480, 381, 783, 181, 499, 754, 690, 517, 684, 12, 421] 19 TODO [21, 824, 263, 627, 775, 324, 708, 672, 588, 116, 123, 609, 154, 398, 920, 261, 478, 265, 160, 236, 908, 848, 705, 752, 82, 747, 89, 522, 960, 403, 231, 73, 413, 55, 351, 20, 6, 179, 192, 840, 993, 288, 161, 439, 80, 558, 153, 891, 323, 905, 451, 677, 125, 27, 393, 985, 737, 635, 710, 803, 305, 650, 340, 629, 615, 562, 464, 873, 819, 958, 264, 274, 742, 349, 997, 218, 888, 858, 335, 822, 479, 732, 0, 409, 180, 987, 815, 482, 320, 941, 785, 793, 364, 344, 508, 211, 843, 668, 617, 664, 833, 842, 551, 910, 173, 150, 520, 753, 197, 183, 223, 155, 772, 645, 167, 432, 205, 61, 864, 730, 763, 892, 613, 604, 982, 974, 290, 640, 202, 871, 530, 581, 67, 166, 215, 887, 663, 696, 44, 746, 371, 339, 133, 680, 54, 983, 854, 390, 939, 262, 637, 96, 994, 458, 776, 731, 607, 453, 594, 626, 489, 51, 849, 227, 931, 652, 583, 5, 922, 729, 176, 783, 945, 927, 168, 68, 172, 526, 740, 270, 540, 129, 455, 556, 128, 100, 649, 989, 573, 315, 979, 550, 545, 70, 564, 253, 653, 250, 952, 2, 820, 434, 431, 586, 621, 448, 480, 396, 193, 957, 60, 354, 977, 826, 870, 423, 595, 661, 673, 971, 115, 79, 582, 75, 743, 807, 325, 956, 415, 990, 827, 106, 639, 841, 78, 491, 618, 703, 515, 525, 603, 119, 494, 937, 488, 322, 64, 995, 934, 878, 163, 203, 330, 316, 641, 571, 523, 698, 903, 52, 744, 700, 805, 633, 99, 720, 757, 791, 715, 16, 622, 736, 857, 26, 712, 570, 29, 194, 252, 170, 92, 914, 996, 702, 443, 221, 898, 832, 418, 555, 428, 651, 642, 965, 302, 158, 885, 289, 694, 257, 851, 370, 942, 408, 207, 338, 543, 181, 277, 151, 623, 201, 85, 421, 953, 90, 499, 835, 884, 224, 377, 704, 665, 32, 336, 769, 951, 206, 130, 447, 303, 298, 420, 213, 374, 69, 880, 108, 331, 425, 928, 285, 30, 790, 49, 794, 247, 755, 256, 561, 382, 719, 114, 630, 529, 245, 506, 658, 304, 829, 187, 97, 186, 422, 981, 656, 127, 148, 535, 812, 401, 886, 399, 71, 599, 628, 904, 222, 517, 825, 238, 414, 468, 938, 749, 457, 758, 435, 272, 636, 23, 56, 440, 346, 404, 666, 477, 109, 608, 619, 814, 930, 528, 267, 319, 91, 714, 200, 490, 162, 15, 916, 674, 511, 232, 811, 47, 175, 733, 804, 748, 667, 657, 141, 646, 1, 593, 845, 509, 50, 195, 925, 784, 962, 438, 165, 734, 518, 143, 360, 723, 283, 113, 184, 907, 384, 467, 347, 301, 893, 321, 519, 789, 669, 350, 376, 514, 105, 766, 738, 486, 756, 292, 124, 177, 801, 578, 214, 966, 764, 345, 817, 293, 850, 539, 933, 280, 890, 781, 463, 31, 978, 196, 963, 964, 11, 379, 309, 606, 569, 707, 926, 895, 868, 391, 8, 686, 975, 46, 725, 917, 984, 234, 717, 866, 169, 774, 356, 834, 846, 45, 22, 86, 171, 395, 216, 625, 567, 362, 536, 42, 614, 492, 970, 899, 546, 647, 782, 777, 716, 779, 352, 76, 692, 876, 676, 311, 248, 461, 369, 929, 308, 980, 638, 590, 610, 361, 780, 276, 537, 572, 258, 542, 786, 137, 363, 690, 809, 244, 355, 444, 992, 695, 767, 230, 894, 111, 947, 433, 48, 424, 77, 445, 932, 575, 946, 152, 788, 631, 204, 63, 505, 93, 271, 882, 135, 481, 874, 986, 282, 896, 847, 456, 318, 808, 217, 430, 683, 386, 762, 394, 596, 497, 961, 911, 188, 14, 584, 359, 560, 24, 713, 334, 40, 504, 333, 65, 900, 254, 470, 881, 343, 495, 718, 655, 624, 527, 156, 190, 897, 944, 501, 372, 797, 142, 949, 682, 802, 94, 552, 273, 919, 300, 565, 13, 88, 697, 585, 25, 136, 400, 727, 771, 828, 875, 291, 721, 943, 684, 487, 709, 329, 693, 675, 516, 120, 859, 553, 879, 454, 498, 872, 563, 287, 185, 889, 806, 229, 883, 750, 557, 855, 909, 967, 566, 419, 416, 685, 358, 406, 373, 923, 648, 689, 104, 844, 711, 531, 228, 724, 474, 836, 472, 726, 294, 787, 538, 313, 34, 600, 475, 598, 146, 988, 266, 342, 976, 818, 521, 110, 831, 43, 446, 559, 754, 728, 72, 307, 191, 741, 679, 918, 235, 576, 442, 212, 466, 620, 284, 387, 701, 385, 580, 327, 241, 761, 877, 132, 242, 773, 375, 493, 240, 209, 722, 496, 357, 353, 348, 122, 405, 798, 18, 465, 549, 544, 587, 592, 863, 427, 924, 856, 296, 295, 189, 19, 605, 28, 103, 706, 810, 654, 312, 249, 328, 139, 225, 62, 687, 12, 547, 429, 145, 862, 662, 589, 452, 380, 770, 991, 182, 999, 541, 867, 286, 948, 10, 611, 164, 533, 483, 98, 912, 678, 476, 198, 906, 591, 35, 838, 392, 337, 57, 998, 459, 281, 441, 485, 58, 389, 471, 601, 226, 366, 383, 278, 53, 279, 410, 816, 513, 326, 102, 765, 368, 426, 397, 402, 7, 792, 117, 17, 660, 913, 821, 220, 131, 341, 199, 126, 507, 239, 659, 823, 140, 534, 861, 735, 901, 159, 865, 365, 112, 381, 275, 208, 959, 751, 107, 577, 554, 921, 681, 778, 219, 449, 378, 699, 837, 83, 4, 853, 688, 745, 268, 634, 138, 149, 852, 33, 39, 317, 799, 74, 36, 691, 670, 602, 973, 412, 59, 299, 800, 524, 66, 460, 796, 813, 500, 510, 940, 95, 388, 915, 955, 101, 616, 860, 174, 512, 437, 237, 548, 643, 297, 251, 532, 579, 503, 795, 332, 839, 246, 243, 969, 902, 9, 739, 38, 632, 81, 84, 411, 157, 210, 462, 935, 671, 178, 869, 644, 147, 144, 473, 612, 574, 830, 269, 954, 233, 597, 950, 87, 121, 936, 314, 260, 502, 768, 306, 3, 118, 568, 259, 968, 407, 469, 255, 972, 134, 41, 436, 760, 484, 367, 450, 310, 37, 417] 759 TODO [687, 292, 237, 951, 273, 607, 645, 454, 551, 411, 652, 740, 671, 466, 74, 67, 932, 316, 460, 621, 794, 747, 769, 834, 779, 814, 572, 651, 448, 83, 819, 565, 55, 69, 604, 540, 227, 805, 780, 68, 936, 198, 886, 333, 610, 194, 830, 883, 937, 641, 107, 490, 1, 774, 566, 161, 359, 383, 807, 397, 141, 302, 952, 220, 446, 402, 179, 547, 423, 217, 977, 251, 978, 663, 705, 818, 144, 562, 304, 488, 832, 822, 96, 90, 330, 469, 821, 361, 957, 193, 437, 731, 181, 165, 367, 673, 647, 938, 589, 843, 404, 189, 619, 224, 706, 733, 523, 800, 605, 993, 115, 541, 393, 793, 493, 751, 646, 279, 453, 675, 991, 579, 513, 464, 660, 511, 43, 398, 203, 537, 506, 114, 678, 108, 146, 447, 472, 885, 166, 622, 130, 858, 66, 311, 864, 903, 132, 685, 965, 618, 250, 117, 259, 665, 202, 315, 123, 236, 757, 716, 637, 766, 71, 200, 95, 899, 507, 928, 532, 214, 826, 994, 981, 950, 842, 301, 87, 925, 555, 63, 284, 470, 930, 298, 975, 782, 159, 502, 264, 23, 984, 649, 153, 958, 614, 721, 485, 41, 184, 718, 291, 106, 296, 388, 104, 255, 173, 401, 972, 180, 364, 119, 3, 416, 835, 419, 137, 983, 343, 866, 593, 8, 813, 215, 896, 192, 230, 569, 633, 517, 293, 350, 27, 852, 960, 696, 707, 955, 413, 35, 860, 542, 919, 26, 626, 280, 509, 533, 882, 599, 376, 312, 844, 909, 122, 612, 741, 480, 689, 809, 943, 261, 118, 543, 249, 654, 254, 422, 102, 546, 13, 636, 922, 461, 905, 711, 25, 129, 138, 801, 125, 467, 758, 910, 379, 24, 188, 103, 152, 307, 294, 329, 2, 901, 746, 940, 131, 964, 322, 99, 661, 556, 348, 91, 334, 592, 668, 150, 871, 760, 124, 473, 186, 338, 270, 28, 170, 52, 266, 810, 160, 134, 553, 496, 692, 73, 50, 677, 982, 500, 729, 195, 750, 176, 850, 289, 575, 56, 377, 274, 345, 201, 426, 863, 865, 0, 204, 615, 595, 989, 484, 772, 890, 732, 559, 868, 560, 320, 244, 825, 346, 667, 344, 738, 277, 319, 252, 935, 443, 207, 444, 710, 655, 149, 724, 522, 653, 921, 403, 990, 684, 962, 400, 57, 879, 414, 980, 598, 992, 59, 77, 726, 635, 666, 894, 682, 895, 340, 945, 475, 658, 877, 209, 228, 720, 728, 816, 973, 256, 948, 893, 489, 440, 407, 109, 714, 743, 438, 783, 730, 235, 878, 48, 854, 761, 781, 499, 62, 310, 468, 584, 283, 242, 20, 72, 548, 742, 784, 512, 590, 756, 417, 549, 857, 853, 12, 657, 567, 271, 693, 16, 240, 845, 581, 98, 309, 859, 824, 127, 394, 389, 934, 222, 788, 418, 439, 93, 791, 44, 787, 631, 916, 395, 5, 370, 308, 954, 281, 971, 717, 212, 606, 963, 262, 306, 267, 424, 94, 339, 78, 891, 698, 996, 368, 297, 362, 563, 126, 232, 128, 839, 53, 969, 456, 185, 987, 967, 347, 285, 765, 796, 505, 412, 959, 703, 881, 745, 526, 931, 213, 691, 156, 183, 568, 564, 985, 701, 763, 148, 961, 699, 384, 323, 870, 806, 586, 481, 873, 38, 966, 785, 708, 608, 441, 97, 342, 911, 616, 602, 396, 253, 142, 634, 558, 913, 949, 848, 17, 719, 223, 157, 508, 956, 968, 295, 226, 487, 248, 33, 887, 14, 578, 535, 620, 723, 486, 474, 163, 290, 65, 580, 875, 112, 318, 792, 803, 767, 510, 861, 168, 463, 688, 269, 82, 88, 736, 659, 288, 681, 105, 503, 390, 22, 363, 445, 40, 515, 354, 356, 591, 953, 197, 355, 900, 225, 970, 573, 777, 276, 75, 942, 529, 820, 196, 674, 778, 442, 365, 725, 171, 837, 539, 327, 410, 812, 988, 337, 287, 544, 627, 182, 278, 143, 30, 336, 561, 111, 862, 6, 498, 190, 432, 611, 836, 536, 629, 430, 476, 521, 241, 704, 265, 321, 851, 465, 880, 527, 257, 32, 169, 855, 744, 995, 357, 694, 369, 662, 941, 4, 92, 36, 85, 70, 326, 613, 735, 530, 151, 753, 358, 514, 768, 643, 912, 167, 802, 609, 116, 374, 907, 18, 847, 211, 974, 177, 639, 625, 366, 462, 642, 425, 15, 770, 669, 175, 42, 676, 929, 479, 683, 623, 76, 797, 833, 332, 477, 849, 904, 482, 245, 51, 884, 501, 650, 686, 324, 405, 231, 596, 84, 478, 582, 216, 229, 174, 313, 409, 933, 528, 218, 158, 328, 700, 874, 926, 795, 46, 145, 386, 387, 917, 406, 998, 219, 391, 576, 34, 433, 199, 908, 656, 300, 497, 644, 399, 54, 914, 349, 221, 709, 325, 594, 773, 534, 451, 640, 817, 299, 110, 31, 238, 372, 29, 101, 483, 737, 664, 360, 258, 147, 10, 341, 828, 986, 804, 597, 841, 89, 139, 243, 790, 601, 282, 263, 375, 577, 811, 421, 246, 939, 538, 385, 799, 823, 524, 550, 764, 495, 856, 37, 876, 61, 897, 233, 7, 458, 516, 869, 906, 429, 64, 749, 206, 427, 999, 695, 49, 436, 827, 275, 100, 239, 154, 892, 178, 331, 234, 520, 846, 947, 571, 789, 494, 976, 140, 979, 113, 829, 552, 428, 587, 889, 557, 133, 314, 888, 351, 272, 449, 162, 431, 915, 80, 867, 45, 924, 670, 120, 9, 923, 205, 155, 898, 798, 121, 381, 702, 172, 317, 690, 435, 135, 352, 838, 630, 531, 771, 840, 47, 164, 944, 519, 303, 628, 455, 697, 713, 81, 727, 574, 920, 371, 286, 60, 902, 759, 583, 786, 518, 335, 734, 191, 680, 382, 457, 739, 603, 715, 776, 762, 831, 450, 353, 927, 679, 946, 260, 648, 755, 208, 392, 58, 722, 997, 434, 554, 452, 525, 79, 638, 210, 11, 752, 918, 570, 545, 672, 775, 86, 600, 491, 632, 492, 187, 624, 471, 408, 19, 808, 504, 373, 136, 872, 588, 378, 585, 247, 21, 815, 268, 305, 754, 420, 380] 39 TODO diff --git a/test_data/add_binary.tsv b/test_data/add_binary.tsv index 66429dc91..536f79b01 100644 --- a/test_data/add_binary.tsv +++ b/test_data/add_binary.tsv @@ -1,5 +1,4 @@ string string string -@ a b 0 0 0 TODO 0 101 101 TODO 101 0 101 TODO diff --git a/test_data/adding_credits.tsv b/test_data/adding_credits.tsv index 2601f039d..525e7bdfe 100644 --- a/test_data/adding_credits.tsv +++ b/test_data/adding_credits.tsv @@ -1,5 +1,4 @@ array(tuple(string[operation], string[string arg], int[int arg])) void -@ ops [["ClientsCreditsInfo", "", 0], ["lookup", "David", -1], ["add_all", "", 30], ["add_all", "", 48], ["insert", "Vincent", 148], ["insert", "Larry", 107], ["lookup", "Zachary", -1], ["insert", "Thomas", 77], ["lookup", "Bob", -1], ["remove", "Carol", 0], ["lookup", "George", -1], ["add_all", "", 39], ["remove", "Frank", 0], ["insert", "Larry", 78], ["lookup", "Uncle", -1], ["add_all", "", 15], ["lookup", "Uncle", -1], ["insert", "Quincy", 23], ["add_all", "", 22], ["lookup", "Kenny", -1], ["insert", "Xavier", 56], ["remove", "Vincent", 1], ["remove", "Larry", 1], ["insert", "Vincent", 34], ["insert", "Quincy", 57], ["lookup", "Adam", -1], ["remove", "Thomas", 1], ["remove", "Vincent", 1], ["lookup", "Quincy", 57], ["remove", "Peter", 0], ["remove", "Vincent", 0], ["insert", "Nancy", 127], ["add_all", "", 20], ["insert", "Oliver", 107], ["lookup", "Jim", -1], ["insert", "David", 156], ["insert", "Carol", 47], ["remove", "Nancy", 1], ["insert", "Quincy", 84], ["add_all", "", 10], ["lookup", "George", -1], ["insert", "Sam", 82], ["insert", "Uncle", 113], ["remove", "Frank", 0], ["add_all", "", 25], ["remove", "Frank", 0], ["insert", "Kenny", 130], ["lookup", "Xavier", 111], ["insert", "Oliver", 60], ["insert", "Bob", 143], ["add_all", "", 30], ["remove", "Uncle", 1], ["remove", "Thomas", 0], ["lookup", "Jim", -1], ["lookup", "Eddie", -1], ["add_all", "", 46], ["insert", "David", 160], ["lookup", "Larry", -1], ["insert", "Kenny", 2], ["lookup", "Mary", -1], ["lookup", "David", 160], ["insert", "Thomas", 146], ["lookup", "William", -1], ["insert", "Thomas", 70], ["insert", "Yogi", 30], ["remove", "Harry", 0], ["remove", "David", 1], ["add_all", "", 30], ["remove", "Nancy", 0], ["insert", "Roger", 24], ["remove", "Carol", 1], ["add_all", "", 11], ["add_all", "", 16], ["insert", "Yogi", 40], ["add_all", "", 31], ["add_all", "", 12], ["insert", "Sam", 173], ["insert", "Zachary", 77], ["add_all", "", 26], ["insert", "Jim", 163], ["remove", "Larry", 0], ["add_all", "", 16], ["lookup", "Uncle", -1], ["lookup", "Oliver", 278], ["remove", "Peter", 0], ["add_all", "", 31], ["lookup", "Mary", -1], ["lookup", "Mary", -1], ["remove", "Eddie", 0], ["insert", "Ike", 144], ["insert", "Jim", 102], ["remove", "Harry", 0], ["remove", "Vincent", 0], ["remove", "Oliver", 1], ["remove", "Yogi", 1], ["remove", "Adam", 0], ["remove", "Frank", 0], ["remove", "Ike", 1], ["lookup", "Ike", -1], ["insert", "Zachary", 151], ["add_all", "", 31], ["insert", "Yogi", 24], ["insert", "Jim", 161], ["lookup", "Thomas", 274], ["add_all", "", 10], ["remove", "Vincent", 0], ["add_all", "", 15], ["remove", "Roger", 1], ["insert", "Uncle", 144], ["remove", "George", 0], ["add_all", "", 41], ["insert", "Eddie", 103], ["remove", "Thomas", 1], ["add_all", "", 45], ["insert", "Zachary", 8], ["add_all", "", 11], ["insert", "Thomas", 27], ["insert", "Quincy", 74], ["insert", "Nancy", 155], ["lookup", "Mary", -1], ["insert", "Frank", 117], ["insert", "Mary", 87], ["lookup", "Xavier", 513], ["insert", "Vincent", 115], ["add_all", "", 44], ["lookup", "Oliver", -1], ["remove", "Carol", 0], ["lookup", "Eddie", 203], ["insert", "Eddie", 133], ["add_all", "", 12], ["remove", "Frank", 1], ["insert", "Carol", 114], ["remove", "Zachary", 1], ["insert", "Oliver", 81], ["remove", "Thomas", 1], ["remove", "Quincy", 1], ["add_all", "", 21], ["insert", "Thomas", 165], ["insert", "Yogi", 6], ["insert", "Carol", 52], ["remove", "Zachary", 0], ["insert", "Zachary", 133]] TODO [["ClientsCreditsInfo", "", 0], ["add_all", "", 13], ["lookup", "Frank", -1], ["insert", "Nancy", 39], ["insert", "Sam", 39], ["add_all", "", 39], ["lookup", "Thomas", -1], ["remove", "Bob", 0], ["insert", "Larry", 34], ["lookup", "Harry", -1], ["lookup", "Frank", -1], ["lookup", "Roger", -1], ["remove", "Yogi", 0], ["add_all", "", 44], ["add_all", "", 43], ["add_all", "", 14], ["add_all", "", 25], ["remove", "Frank", 0], ["add_all", "", 49], ["insert", "Ike", 6], ["lookup", "Yogi", -1], ["lookup", "Yogi", -1], ["remove", "Roger", 0], ["remove", "Quincy", 0], ["add_all", "", 50], ["lookup", "Larry", 259], ["remove", "Peter", 0], ["remove", "Thomas", 0], ["insert", "Ike", 26], ["remove", "George", 0], ["add_all", "", 40], ["remove", "Larry", 1], ["add_all", "", 47], ["lookup", "Carol", -1], ["add_all", "", 36], ["remove", "Ike", 1]] TODO [["ClientsCreditsInfo", "", 0], ["remove", "Frank", 0], ["lookup", "Adam", -1], ["remove", "Peter", 0], ["insert", "Quincy", 20], ["remove", "Thomas", 0], ["add_all", "", 34], ["insert", "Larry", 12], ["lookup", "Peter", -1], ["insert", "Adam", 7], ["remove", "David", 0], ["lookup", "Ike", -1], ["insert", "David", 3], ["lookup", "Frank", -1], ["remove", "Roger", 0], ["remove", "Carol", 0], ["add_all", "", 17], ["add_all", "", 19], ["lookup", "Sam", -1], ["add_all", "", 22], ["insert", "Jim", 21]] TODO diff --git a/test_data/advance_by_offsets.tsv b/test_data/advance_by_offsets.tsv index 236f483f1..388bb1736 100644 --- a/test_data/advance_by_offsets.tsv +++ b/test_data/advance_by_offsets.tsv @@ -1,5 +1,4 @@ array(int) bool -@ A [2, 3, 1, 1, 4] true TODO [3, 2, 1, 0, 4] false TODO [3, 2, 1, -10, 4] false TODO diff --git a/test_data/alternating_array.tsv b/test_data/alternating_array.tsv index 80862e977..b72a859bf 100644 --- a/test_data/alternating_array.tsv +++ b/test_data/alternating_array.tsv @@ -1,5 +1,4 @@ array(int) void -@ A [5, 6, 1, 7, 3, 8, 4, 8] TODO [2, 2] TODO [3, 5, 2, 4, 1, 4] TODO diff --git a/test_data/anagrams.tsv b/test_data/anagrams.tsv index e633c3ec3..a262f9282 100644 --- a/test_data/anagrams.tsv +++ b/test_data/anagrams.tsv @@ -1,5 +1,4 @@ array(string) array(array(string)) -@ dictionary ["debit card", "bad credit", "the morse code", "here come dots", "the eyes", "they see", "THL"] [["debit card", "bad credit"], ["the morse code", "here come dots"], ["the eyes", "they see"]] TODO ["aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "ay", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "av", "aw", "ax", "az", "ba", "bb", "bd", "be", "bf", "bg", "bi", "by", "bk", "bl", "bm", "bn", "bo", "bp", "br", "bs", "bt", "bu", "bv", "bx", "bz", "ca", "cb", "cc", "cd", "ce", "cf", "cg", "ch", "cy", "ck", "cl", "cm", "co", "cp", "cq", "cr", "cs", "ct", "cu", "cv", "da", "db", "dc", "dd", "de", "dg", "di", "dy", "dj", "dk", "dl", "dm", "dn", "do", "dp", "dr", "ds", "dt", "du", "dx", "dz", "ea", "ec", "ed", "ee", "ef", "eg", "eh", "ey", "el", "em", "en", "eo", "ep", "eq", "er", "es", "et", "eu", "ew", "ex", "fa", "fb", "fc", "fe", "ff", "fg", "fi", "fy", "fl", "fm", "fn", "fo", "fp", "fr", "fs", "ft", "fu", "fv", "fw", "fz", "ga", "gd", "ge", "gi", "gl", "gm", "gn", "go", "gp", "gr", "gs", "gt", "gu", "gv", "ha", "hb", "hd", "he", "hf", "hg", "hi", "hy", "hl", "hm", "ho", "hp", "hq", "hr", "hs", "ht", "hu", "hv", "hw", "ia", "ya", "ib", "ic", "id", "yd", "ie", "ye", "if", "ii", "yi", "ik", "il", "im", "ym", "in", "yn", "io", "yo", "iq", "ir", "yr", "is", "ys", "it", "yt", "iv", "iw", "ix", "ja", "jg", "ji", "jo", "jr", "js", "jt", "ju", "ka", "kb", "kc", "kg", "ki", "ky", "kl", "km", "kn", "ko", "kr", "kt", "kv", "kw", "la", "lb", "lc", "ld", "le", "lf", "lg", "lh", "li", "ly", "ll", "lm", "ln", "lo", "lp", "lr", "ls", "lt", "lu", "lv", "lx", "ma", "mb", "mc", "md", "me", "mf", "mg", "mh", "mi", "my", "mk", "ml", "mm", "mn", "mo", "mp", "mr", "ms", "mt", "mu", "mv", "mw", "na", "nb", "nd", "ne", "ng", "ni", "ny", "nj", "nl", "nm", "no", "np", "nr", "ns", "nt", "nu", "nv", "ob", "oc", "od", "oe", "of", "og", "oh", "oy", "ok", "ol", "om", "on", "op", "or", "os", "ot", "ow", "ox", "oz", "pa", "pc", "pd", "pe", "pf", "pg", "ph", "pi", "pk", "pl", "pm", "po", "pp", "pq", "pr", "ps", "pt", "pu", "qe", "qh", "qy", "ql", "qm", "qn", "qp", "qr", "qs", "qt", "qu", "qv", "ra", "rc", "rd", "re", "rf", "rg", "rh", "rm", "rn", "ro", "rs", "rt", "sa", "sb", "sc", "sd", "se", "sf", "sg", "sh", "si", "sk", "sl", "sm", "sn", "so", "sp", "sq", "sr", "ss", "st", "su", "sv", "sw", "ta", "tb", "tc", "td", "te", "tg", "th", "ti", "tk", "tm", "tn", "to", "tp", "tr", "ts", "tu", "tv", "tx", "uc", "ud", "ug", "uh", "ui", "um", "un", "up", "ur", "us", "ut", "ux", "va", "vb", "vc", "vd", "vg", "vi", "vl", "vo", "vp", "vr", "vs", "vt", "vu", "vv", "wa", "wb", "wc", "wd", "we", "wf", "wg", "wh", "wi", "wy", "wk", "wl", "wm", "wo", "wr", "ws", "wt", "wu", "xc", "xd", "xi", "xr", "xs", "xu", "xw", "xx", "za", "zn", "zo", "zs"] [["dl", "ld"], ["do", "od"], ["rs", "sr"], ["rt", "tr"], ["gv", "vg"], ["gs", "sg"], ["em", "me"], ["sw", "ws"], ["dt", "td"], ["fl", "lf"], ["gr", "rg"], ["dm", "md"], ["pt", "tp"], ["de", "ed"], ["hl", "lh"], ["hq", "qh"], ["et", "te"], ["nt", "tn"], ["eg", "ge"], ["ln", "nl"], ["ai", "ia"], ["ow", "wo"], ["pq", "qp"], ["cs", "sc"], ["bl", "lb"], ["ym", "my"], ["es", "se"], ["fw", "wf"], ["cl", "lc"], ["lm", "ml"], ["dg", "gd"], ["mu", "um"], ["lp", "pl"], ["cr", "rc"], ["fo", "of"], ["ho", "oh"], ["lo", "ol"], ["ep", "pe"], ["ds", "sd"], ["tv", "vt"], ["bt", "tb"], ["er", "re"], ["cu", "uc"], ["fp", "pf"], ["ah", "ha"], ["ix", "xi"], ["bs", "sb"], ["ac", "ca"], ["dn", "nd"], ["eh", "he"], ["ck", "kc"], ["mt", "tm"], ["dr", "rd"], ["hu", "uh"], ["ad", "da"], ["ce", "ec"], ["af", "fa"], ["tu", "ut"], ["ap", "pa"], ["mo", "om"], ["dp", "pd"], ["fm", "mf"], ["or", "ro"], ["cm", "mc"], ["yn", "ny"], ["sv", "vs"], ["ls", "sl"], ["ae", "ea"], ["kt", "tk"], ["su", "us"], ["ew", "we"], ["kw", "wk"], ["ot", "to"], ["in", "ni"], ["fi", "if"], ["eq", "qe"], ["ht", "th"], ["gp", "pg"], ["hm", "mh"], ["lv", "vl"], ["bd", "db"], ["nr", "rn"], ["ct", "tc"], ["as", "sa"], ["pu", "up"], ["bn", "nb"], ["eo", "oe"], ["al", "la"], ["qs", "sq"], ["gu", "ug"], ["bk", "kb"], ["mp", "pm"], ["dx", "xd"], ["bv", "vb"], ["cp", "pc"], ["os", "so"], ["bm", "mb"], ["iv", "vi"], ["az", "za"], ["gl", "lg"], ["bo", "ob"], ["op", "po"], ["co", "oc"], ["fs", "sf"], ["ay", "ya"], ["bi", "ib"], ["am", "ma"], ["en", "ne"], ["ag", "ga"], ["gm", "mg"], ["it", "ti"], ["at", "ta"], ["hw", "wh"], ["is", "si"], ["bf", "fb"], ["cv", "vc"], ["mw", "wm"], ["el", "le"], ["ak", "ka"], ["st", "ts"], ["hr", "rh"], ["mn", "nm"], ["go", "og"], ["fr", "rf"], ["gn", "ng"], ["nu", "un"], ["ux", "xu"], ["ns", "sn"], ["ab", "ba"], ["an", "na"], ["av", "va"], ["ar", "ra"], ["aw", "wa"], ["oz", "zo"], ["di", "id"], ["ey", "ye"], ["hp", "ph"], ["dy", "yd"], ["gt", "tg"], ["du", "ud"], ["cf", "fc"], ["iw", "wi"], ["im", "mi"], ["ko", "ok"], ["il", "li"], ["ik", "ki"], ["yo", "oy"], ["cd", "dc"], ["no", "on"], ["mr", "rm"], ["ef", "fe"], ["ms", "sm"], ["km", "mk"], ["hs", "sh"], ["ps", "sp"]] TODO ["aaa", "aah", "aal", "aam", "aas", "aba", "abb", "abc", "abd", "abe", "aby", "abl", "abn", "abo", "abp", "abr", "abs", "abt", "abu", "abv", "acc", "ace", "ach", "acy", "ack", "act", "ada", "adc", "add", "ade", "ady", "adj", "adm", "ado", "adp", "ads", "adv", "adz", "aeq", "aer", "aes", "aet", "afb", "afd", "aff", "aft", "aga", "age", "agy", "ago", "agr", "agt", "aha", "ahi", "aho", "ahs", "aht", "ahu", "aid", "aye", "aik", "ail", "aim", "ain", "air", "ais", "ays", "ait", "ayu", "aix", "aka", "ake", "ako", "aku", "ala", "alb", "alc", "ald", "ale", "alf", "alg", "aly", "alk", "all", "aln", "alo", "alp", "als", "alt", "alw", "ama", "amb", "ame", "ami", "amy", "amp", "amt", "amu", "ana", "anc", "and", "ane", "ani", "any", "ann", "ans", "ant", "aob", "aor", "apa", "ape", "aph", "apl", "app", "apr", "apt", "apx", "ara", "arb", "arc", "are", "arf", "arg", "ary", "ark", "arm", "arn", "aro", "arr", "ars", "art", "aru", "arx", "asa", "asb", "ase", "asg", "ash", "ask", "asp", "ass", "ast", "ata", "ate", "ati", "atm", "att", "aud", "auf", "aug", "auh", "auk", "aul", "aum", "aus", "aux", "ava", "ave", "avg", "avn", "avo", "awa", "awd", "awe", "awk", "awl", "awm", "awn", "axe", "azo", "baa", "bab", "bac", "bad", "bae", "bag", "bah", "bai", "bay", "bal", "bam", "ban", "bap", "bar", "bas", "bat", "baw", "bbl", "bbs", "bcd", "bcf", "bch", "bde", "bdl", "bds", "bea", "bec", "bed", "bee", "bef", "beg", "bey", "bel", "ben", "ber", "bes", "bet", "bhd", "bhp", "bib", "bid", "bye", "big", "bim", "bin", "bio", "byp", "bis", "bys", "bit", "biz", "bkg", "bks", "bkt", "bld", "blk", "blo", "bls", "bnf", "boa", "bob", "boc", "bod", "boe", "bog", "boh", "boy", "bol", "bom", "bon", "boo", "bop", "bor", "bos", "bot", "bow", "box", "bpi", "bps", "bpt", "bra", "brl", "bro", "brr", "bsf", "bsh", "btl", "btu", "bub", "bud", "bug", "buy", "bul", "bum", "bun", "bur", "bus", "but", "buz", "bvt", "bxs", "cab", "cad", "caf", "cag", "cai", "cay", "cal", "cam", "can", "cap", "car", "cat", "cav", "caw", "ccm", "ccw", "cdf", "cdg", "cdr", "cee", "cen", "cep", "cfd", "cfh", "cfi", "cfm", "cfs", "cgm", "cgs", "cha", "che", "chg", "chi", "chm", "chn", "cho", "chs", "cia", "cyc", "cid", "cie", "cif", "cig", "cyl", "cyp", "cir", "cis", "cit", "civ", "ckw", "cli", "cly", "clk", "clo", "clr", "cmd", "cml", "cob", "cod", "coe", "cog", "coy", "col", "com", "con", "coo", "cop", "cor", "cos", "cot", "cow", "cox", "coz", "cpd", "cpi", "cpl", "cpm", "cpo", "cps", "cpt", "cpu", "crc", "cre", "cry", "crl", "cro", "crs", "cru", "csc", "csi", "csk", "csp", "cst", "csw", "cte", "ctf", "ctg", "ctn", "cto", "ctr", "cts", "cub", "cud", "cue", "cuj", "cul", "cum", "cun", "cup", "cur", "cut", "cwm", "cwo", "cwt", "dab", "dad", "dae", "dag", "dah", "day", "dak", "dal", "dam", "dan", "dao", "dap", "dar", "das", "dat", "dau", "daw", "dbl", "dca", "dcb", "ddt", "dea", "deb", "dec", "dee", "def", "deg", "dei", "dey", "del", "dem", "den", "dep", "der", "des", "det", "dev", "dew", "dex", "dft", "dha", "dhu", "dia", "dib", "did", "die", "dye", "dif", "dig", "dil", "dim", "din", "dyn", "dip", "dir", "dis", "dys", "dit", "div", "dix", "dkg", "dkl", "dkm", "dks", "dlr", "doa", "dob", "doc", "dod", "doe", "dog", "doh", "dol", "dom", "don", "doo", "dop", "dor", "dos", "dot", "dow", "doz", "dpt", "dry", "dsp", "dsr", "dtd", "dub", "duc", "dud", "due", "dug", "dui", "dum", "dun", "duo", "dup", "dur", "dux", "dwt", "dzo", "ead", "eam", "ean", "ear", "eat", "eau", "ebb", "ecb", "eco", "ecu", "edh", "edo", "edp", "eds", "eel", "een", "eer", "eff", "efl", "efs", "eft", "egg", "ego", "eye", "eyl", "eyn", "eir", "eyr", "eke", "ela", "elb", "eld", "elf", "eli", "elk", "ell", "elm", "els", "elt", "eme", "emf", "emm", "emp", "ems", "emu", "enc", "end", "eng", "enl", "ens", "env", "eof", "eom", "eon", "eos", "epa", "epi", "era", "erd", "ere", "erf", "erg", "erk", "ern", "err", "ers", "esc", "esd", "ese", "esp", "esq", "ess", "est", "esu", "eta", "etc", "eth", "ety", "eva", "eve", "evg", "ewe", "exp", "exr", "ext", "fab", "fac", "fad", "fae", "fag", "fay", "fam", "fan", "faq", "far", "fas", "fat", "fax", "fbi", "fcy", "fcp", "fcs", "fec", "fed", "fee", "feh", "fei", "fey", "fem", "fen", "fer", "fet", "feu", "few", "fez", "ffa", "fgn", "fib", "fid", "fie", "fig", "fil", "fin", "fip", "fir", "fit", "fix", "fiz", "flb", "fld", "fly", "fll", "flo", "flu", "fmt", "fob", "fod", "foe", "fog", "foh", "foy", "fol", "fon", "foo", "fop", "for", "fot", "fou", "fow", "fox", "fpm", "fps", "fra", "fry", "fro", "frs", "frt", "fth", "fub", "fud", "fug", "fum", "fun", "fur", "fut", "fwd", "gab", "gad", "gae", "gag", "gay", "gaj", "gal", "gam", "gan", "gap", "gar", "gas", "gat", "gau", "gaw", "gaz", "gcd", "gds", "geb", "ged", "gee", "gey", "gel", "gem", "gen", "geo", "ger", "ges", "get", "gez", "ggr", "ghi", "gib", "gid", "gie", "gye", "gif", "gig", "gil", "gim", "gym", "gin", "gyn", "gio", "gip", "gyp", "gis", "git", "glb", "gld", "glt", "gns", "gnu", "goa", "gob", "god", "gog", "goi", "goy", "gol", "gon", "goo", "gor", "gos", "got", "gou", "gov", "gox", "gpd", "gph", "gpm", "gps", "gra", "gre", "grf", "gry", "gro", "grr", "grs", "grx", "gtc", "gtd", "gte", "gtt", "gud", "gue", "guy", "gul", "gum", "gun", "gup", "gur", "gus", "gut", "guv", "guz", "hab", "had", "hae", "haf", "hag", "hah", "hay", "haj", "hak", "hal", "ham", "han", "hao", "hap", "has", "hat", "hau", "hav", "haw", "hcb", "hcf", "hcl", "hed", "hee", "heh", "hei", "hey", "hel", "hem", "hen", "heo", "hep", "her", "hes", "het", "hew", "hex", "hgt", "hhd", "hia", "hic", "hid", "hyd", "hie", "hye", "him", "hin", "hip", "hyp", "hir", "his", "hit", "hld", "hny", "hob", "hoc", "hod", "hoe", "hog", "hoi", "hoy", "hol", "hom", "hon", "hoo", "hop", "hor", "hot", "how", "hox", "hrs", "hsi", "hts", "hub", "hud", "hue", "hug", "huh", "hui", "huk", "hum", "hun", "hup", "hut", "hvy", "hwa", "hwy", "hwt", "yad", "yah", "yay", "yak", "yam", "ian", "yan", "iao", "yao", "yap", "yar", "yas", "yat", "yaw", "iba", "ibm", "ibo", "ice", "ich", "icy", "ida", "ide", "ido", "ids", "yds", "yea", "yed", "yee", "yeh", "yen", "yeo", "yep", "yer", "yes", "yet", "yew", "yex", "yez", "ife", "iff", "ifs", "ign", "ihi", "ihp", "ihs", "yid", "iii", "yin", "iyo", "yip", "yis", "ijo", "ike", "ila", "ile", "ilk", "ill", "ima", "imi", "imp", "imu", "inc", "ind", "inf", "ing", "ink", "inn", "ino", "ins", "int", "inv", "yob", "yod", "yoe", "iof", "yoi", "yoy", "yok", "yom", "ion", "yon", "yor", "ios", "yot", "iou", "you", "yow", "yox", "iph", "ipl", "ipm", "ipr", "ips", "iqs", "ira", "ire", "irk", "irs", "yrs", "ise", "ish", "isl", "ism", "isn", "iso", "ist", "isz", "ita", "itd", "ito", "its", "iud", "yug", "yuh", "yuk", "yum", "yun", "yup", "yus", "iva", "ive", "ivy", "iwa", "jab", "jad", "jag", "jah", "jai", "jay", "jak", "jam", "jan", "jap", "jar", "jat", "jaw", "jcl", "jct", "jed", "jee", "jef", "jeg", "jem", "jen", "jer", "jet", "jeu", "jew", "jib", "jig", "jim", "jin", "jms", "jnd", "jnt", "job", "joe", "jog", "joy", "jon", "jos", "jot", "jow", "jud", "jug", "jun", "jur", "jus", "jut", "juv", "kab", "kae", "kaf", "kai", "kay", "kaj", "kal", "kam", "kan", "kas", "kat", "kaw", "kea", "keb", "ked", "kee", "kef", "keg", "key", "ken", "kep", "ker", "ket", "kex", "kgf", "kgr", "kha", "khi", "khu", "kid", "kyd", "kie", "kye", "kif", "kil", "kyl", "kim", "kin", "kip", "kit", "kyu", "kln", "koa", "kob", "koi", "kol", "kon", "kop", "kor", "kos", "kou", "kpc", "kph", "kra", "krs", "kru", "ksi", "kua", "kue", "kui", "lab", "lac", "lad", "lag", "lah", "lai", "lay", "lak", "lam", "lan", "lao", "lap", "lar", "las", "lat", "lav", "law", "lax", "laz", "lbf", "lbs", "lbw", "lca", "lcd", "lcm", "ldg", "lea", "led", "lee", "leg", "lei", "ley", "lek", "len", "leo", "lep", "ler", "les", "let", "leu", "lev", "lew", "lex", "lhb", "lhd", "lib", "lyc", "lid", "lie", "lye", "lif", "lig", "lim", "lym", "lin", "lyn", "lip", "liq", "lir", "lis", "lys", "lit", "liv", "liz", "llb", "lnr", "loa", "lob", "loc", "lod", "loe", "lof", "log", "loy", "loo", "lop", "loq", "lor", "lot", "lou", "low", "lox", "lpm", "lsc", "lst", "ltr", "lub", "luc", "lud", "lue", "lug", "lui", "lum", "luo", "lur", "lut", "lux", "lwl", "lwm", "lwo", "lwp", "lxx", "mab", "mac", "mad", "mae", "mag", "mah", "may", "mal", "mam", "man", "mao", "map", "mar", "mas", "mat", "mau", "maw", "max", "mbd", "mcf", "mcg", "mea", "med", "mee", "meg", "mel", "mem", "men", "meo", "meq", "mer", "mes", "met", "meu", "mev", "mew", "mfd", "mfg", "mfr", "mgd", "mgr", "mgt", "mhg", "mho", "mhz", "mia", "mya", "mib", "myc", "mid", "mig", "myg", "mil", "mim", "mym", "min", "mir", "mis", "mit", "mix", "mks", "mkt", "mlx", "mmf", "mna", "moa", "mob", "moc", "mod", "moe", "mog", "moi", "moy", "mol", "mom", "mon", "moo", "mop", "mor", "mos", "mot", "mou", "mow", "mpb", "mpg", "mph", "mrs", "mru", "msg", "msl", "mss", "mtd", "mtg", "mtn", "mts", "mtx", "mud", "mug", "mum", "mun", "mus", "mut", "mux", "mwa", "mxd", "naa", "nab", "nad", "nae", "naf", "nag", "nay", "nak", "nam", "nan", "nap", "nar", "nat", "nav", "naw", "nbg", "nco", "nea", "neb", "ned", "nee", "nef", "neg", "nei", "nek", "neo", "nep", "net", "new", "nib", "nid", "nye", "nig", "nil", "nim", "nip", "nis", "nit", "nix", "noa", "nob", "nod", "nog", "noh", "noy", "nol", "nom", "non", "noo", "nor", "nos", "not", "nou", "nov", "now", "nox", "nth", "nub", "nul", "num", "nun", "nus", "nut", "oad", "oaf", "oak", "oam", "oar", "oat", "oba", "obb", "obe", "obi", "obj", "obl", "obs", "obv", "oca", "och", "ock", "oct", "oda", "odd", "ode", "ods", "odz", "oer", "oes", "off", "ofo", "oft", "ohm", "oho", "ohs", "ohv", "oie", "oii", "oik", "oil", "oka", "oke", "oki", "ola", "old", "ole", "olm", "olp", "oms", "ona", "one", "oni", "ony", "ono", "ons", "ont", "oof", "ooh", "oos", "oot", "opa", "ope", "opp", "ops", "opt", "ora", "orb", "orc", "ord", "ore", "orf", "org", "ory", "orl", "ors", "ort", "osc", "ose", "osi", "otc", "oto", "oud", "ouf", "oui", "our", "out", "ova", "owd", "owe", "owk", "owl", "own", "owt", "oxy", "ozs", "pac", "pad", "pah", "pay", "pal", "pam", "pan", "pap", "par", "pas", "pat", "pau", "pav", "paw", "pax", "pbx", "pcf", "pci", "pcm", "pct", "pdl", "pdn", "pdq", "pea", "ped", "pee", "peg", "peh", "pen", "pep", "per", "pes", "pet", "pew", "pfc", "pfd", "pfg", "pfx", "phi", "pho", "phr", "pht", "phu", "pia", "pya", "pic", "pie", "pye", "pig", "pik", "pil", "pim", "pin", "pip", "pir", "pyr", "pis", "pit", "piu", "pix", "pyx", "pkg", "pks", "pkt", "plf", "pli", "ply", "plu", "pmk", "pmt", "poa", "pob", "pod", "poe", "poh", "poi", "poy", "pol", "pom", "pon", "pop", "por", "pos", "pot", "pow", "pox", "poz", "ppa", "ppb", "ppd", "pph", "ppi", "ppl", "ppm", "ppr", "pps", "ppt", "pre", "prf", "pry", "prn", "pro", "prp", "prs", "psf", "psi", "pst", "psw", "pta", "pte", "ptg", "pty", "ptp", "pts", "ptt", "pua", "pub", "pud", "pug", "puy", "pul", "pun", "pup", "pur", "pus", "put", "pvt", "pwr", "pwt", "qaf", "qat", "qed", "qid", "qqv", "qrs", "qtd", "qty", "qto", "qtr", "qts", "qua", "que", "qui", "quo", "rab", "rad", "rag", "rah", "ray", "raj", "ram", "ran", "rap", "ras", "rat", "raw", "rax", "rcd", "rct", "rea", "reb", "rec", "red", "ree", "ref", "reg", "reh", "rei", "rel", "rem", "ren", "rep", "req", "res", "ret", "rev", "rew", "rex", "rfb", "rfs", "rfz", "rha", "rhb", "rhd", "rhe", "rho", "ria", "rya", "rib", "ric", "rid", "rie", "rye", "rig", "rik", "rim", "rin", "rio", "rip", "rit", "riv", "rix", "rld", "rle", "rly", "rms", "rnd", "rob", "roc", "rod", "roe", "rog", "roi", "roy", "rok", "rom", "ron", "roo", "ros", "rot", "row", "rox", "rpm", "rps", "rpt", "rte", "rti", "rtw", "rua", "rub", "rud", "rue", "rug", "rum", "run", "rus", "rut", "rux", "rwd", "rwy", "saa", "sab", "sac", "sad", "sae", "sag", "sah", "sai", "say", "saj", "sak", "sal", "sam", "san", "sao", "sap", "sar", "sat", "sau", "sav", "saw", "sax", "scf", "sch", "sci", "scr", "sct", "sds", "sea", "sec", "sed", "see", "seg", "sei", "sey", "sel", "sem", "sen", "sep", "seq", "ser", "set", "sew", "sex", "sfm", "sfz", "sgd", "sha", "she", "shh", "shi", "shy", "sho", "shp", "shr", "sht", "shu", "sia", "sib", "sic", "sid", "syd", "sie", "sye", "sig", "sil", "syl", "sim", "sym", "sin", "syn", "sip", "sir", "syr", "sis", "sit", "six", "ski", "sky", "sla", "sld", "sly", "slt", "sma", "sml", "sny", "sob", "soc", "sod", "soe", "sog", "soh", "soy", "sok", "sol", "son", "sop", "sos", "sot", "sou", "sov", "sow", "sox", "spa", "spy", "spl", "spp", "sps", "spt", "sqd", "sqq", "sri", "ssi", "ssp", "ssu", "sta", "std", "stg", "sty", "stk", "stm", "str", "stu", "sub", "sud", "sue", "suf", "sui", "suk", "sum", "sun", "sup", "suq", "sur", "sus", "suu", "suz", "svc", "swa", "swy", "taa", "tab", "tad", "tae", "tag", "tai", "tay", "taj", "tal", "tam", "tan", "tao", "tap", "tar", "tas", "tat", "tau", "tav", "taw", "tax", "tbs", "tch", "tck", "tdr", "tea", "tec", "ted", "tee", "tef", "teg", "tel", "tem", "ten", "ter", "tew", "tex", "tez", "tfr", "tgn", "tgt", "tha", "the", "thy", "tho", "tib", "tic", "tid", "tie", "tye", "tig", "tyg", "til", "tim", "tin", "tip", "typ", "tyr", "tis", "tit", "tyt", "tiu", "tji", "tkt", "tln", "tlo", "tlr", "tmh", "tng", "tnt", "toa", "tob", "tod", "toe", "tog", "toi", "toy", "tol", "tom", "ton", "too", "top", "tor", "tos", "tot", "tou", "tov", "tow", "tox", "tpd", "tph", "tpi", "tpk", "tpm", "tps", "tra", "trf", "tri", "try", "trp", "trs", "trt", "tsi", "tsk", "tsp", "tss", "tst", "tty", "tua", "tub", "tue", "tug", "tui", "tuy", "tum", "tun", "tup", "tur", "tut", "tux", "twa", "twi", "two", "twp", "txt", "ubc", "ubi", "uca", "udi", "udo", "uds", "ufo", "ufs", "ugh", "ugt", "uhs", "uit", "uji", "uke", "ula", "ule", "ull", "ult", "ulu", "ume", "umm", "ump", "umu", "una", "unb", "unc", "ung", "uni", "unl", "unn", "unp", "uns", "upo", "ups", "ura", "urb", "urd", "ure", "urf", "uri", "urn", "uro", "urs", "uru", "usa", "use", "ush", "ust", "usu", "usw", "uta", "ute", "uti", "uts", "utu", "uva", "vac", "vag", "vai", "val", "van", "var", "vas", "vat", "vau", "vav", "vaw", "vax", "vee", "veg", "vei", "vel", "ver", "vet", "vex", "via", "vic", "vie", "vii", "vil", "vim", "vin", "vip", "vis", "viz", "voc", "vod", "voe", "vog", "vol", "von", "vow", "vox", "vss", "vug", "vum", "wab", "wac", "wad", "wae", "waf", "wag", "wah", "way", "wan", "wap", "war", "was", "wat", "waw", "wax", "wea", "web", "wed", "wee", "wef", "wei", "wey", "wem", "wen", "wer", "wes", "wet", "wha", "whf", "why", "who", "whr", "whs", "wid", "wye", "wig", "wim", "win", "wyn", "wir", "wis", "wit", "wiz", "wjc", "wmk", "woa", "wob", "wod", "woe", "wog", "woy", "wok", "won", "woo", "wop", "wos", "wot", "wow", "wpm", "wry", "wro", "wud", "wun", "wup", "wur", "wus", "wut", "xat", "xcl", "xed", "xii", "xis", "xiv", "xix", "xyz", "xvi", "xxi", "xxv", "xxx", "zac", "zad", "zag", "zak", "zan", "zap", "zar", "zat", "zax", "zea", "zed", "zee", "zek", "zel", "zen", "zep", "zer", "zho", "zig", "zip", "zit", "zoa", "zod", "zoo"] [["fin", "inf"], ["cml", "lcm"], ["mew", "wem"], ["awe", "wae", "wea"], ["mol", "olm"], ["lav", "val"], ["agy", "gay"], ["fps", "psf"], ["dom", "mod"], ["ppt", "ptp"], ["imp", "ipm", "pim"], ["mot", "tom"], ["twi", "wit"], ["aye", "yea"], ["opa", "poa"], ["bey", "bye"], ["rus", "sur", "urs"], ["por", "pro"], ["doz", "dzo", "odz", "zod"], ["haj", "jah"], ["ewe", "wee"], ["six", "xis"], ["arc", "car"], ["aes", "ase", "sae", "sea"], ["bin", "nib"], ["eli", "ile", "lei", "lie"], ["pyr", "pry"], ["eer", "ere", "ree"], ["alg", "gal", "lag"], ["bus", "sub"], ["epi", "pie"], ["ber", "reb"], ["amt", "atm", "mat", "tam"], ["hal", "lah"], ["eft", "fet", "tef"], ["man", "mna", "nam"], ["mrs", "rms"], ["tgn", "tng"], ["ays", "yas", "say"], ["cdg", "gcd"], ["git", "tig"], ["bde", "bed", "deb"], ["adj", "jad"], ["bod", "dob"], ["ane", "ean", "nae", "nea"], ["ant", "nat", "tan"], ["rio", "roi"], ["ach", "cha"], ["fcp", "pcf", "pfc"], ["gis", "sig"], ["rwy", "wry"], ["her", "reh", "rhe"], ["syn", "sny"], ["abe", "bae", "bea"], ["act", "cat"], ["inv", "vin"], ["ata", "taa"], ["nap", "pan"], ["bah", "hab"], ["pun", "unp"], ["pow", "wop"], ["con", "nco"], ["gey", "gye"], ["nos", "ons", "son"], ["ios", "iso", "osi"], ["cun", "unc"], ["ark", "kra"], ["low", "lwo", "owl"], ["ana", "naa"], ["blo", "bol", "lob", "obl"], ["ann", "nan"], ["cru", "cur"], ["fur", "urf"], ["bag", "gab"], ["ask", "kas", "sak"], ["koi", "oik", "oki"], ["sav", "vas"], ["iou", "oui"], ["frt", "tfr", "trf"], ["yup", "puy"], ["aug", "gau"], ["ipl", "lip", "pil", "pli"], ["gym", "myg"], ["ism", "mis", "sim"], ["pkt", "tpk"], ["aly", "lay"], ["hep", "peh"], ["lop", "olp", "pol"], ["lin", "nil"], ["boc", "cob"], ["pau", "pua"], ["arn", "nar", "ran"], ["ink", "kin"], ["dot", "tod"], ["ast", "sat", "sta", "tas"], ["elm", "mel"], ["dhu", "hud"], ["eyn", "yen", "nye"], ["oot", "oto", "too"], ["afb", "fab"], ["rit", "rti", "tri"], ["den", "end", "ned"], ["tax", "xat"], ["jar", "raj"], ["ort", "rot", "tor"], ["ape", "epa", "pea"], ["aho", "hao"], ["avn", "nav", "van"], ["aer", "are", "ear", "era", "rea"], ["cit", "tic"], ["doh", "hod"], ["abl", "alb", "bal", "lab"], ["sow", "wos"], ["hup", "phu"], ["eve", "vee"], ["bow", "wob"], ["els", "les", "sel"], ["gut", "tug", "ugt"], ["ado", "dao", "doa", "oad", "oda"], ["mut", "tum"], ["ctr", "rct"], ["sot", "tos"], ["ern", "ren"], ["jak", "kaj"], ["dui", "iud", "udi"], ["lim", "mil"], ["gio", "goi"], ["cfs", "fcs", "scf"], ["ppr", "prp"], ["nor", "ron"], ["isl", "lis", "sil"], ["lit", "til"], ["baw", "wab"], ["hug", "ugh"], ["dug", "gud"], ["doe", "edo", "ode"], ["gaz", "zag"], ["civ", "vic"], ["mas", "sam", "sma"], ["cor", "cro", "orc", "roc"], ["for", "fro", "orf"], ["adp", "dap", "pad"], ["aid", "dia", "ida"], ["hon", "noh"], ["mop", "pom"], ["ipr", "pir", "rip"], ["dis", "ids", "sid"], ["est", "set"], ["aet", "ate", "eat", "eta", "tae", "tea"], ["nul", "unl"], ["dop", "pod"], ["str", "trs"], ["plu", "pul"], ["ins", "isn", "nis", "sin"], ["usw", "wus"], ["don", "nod"], ["hts", "sht"], ["few", "wef"], ["eel", "lee"], ["esc", "sec"], ["dah", "dha", "had"], ["tiu", "tui", "uit", "uti"], ["ben", "neb"], ["emm", "mem"], ["bch", "hcb"], ["cud", "duc"], ["cgm", "mcg"], ["key", "kye"], ["cpu", "cup"], ["een", "nee"], ["asg", "gas", "sag"], ["caw", "wac"], ["bel", "elb"], ["pty", "typ"], ["gds", "sgd"], ["bit", "tib"], ["new", "wen"], ["lev", "vel"], ["yot", "toy"], ["caf", "fac"], ["ino", "ion", "oni"], ["mun", "num"], ["apr", "par", "rap"], ["hes", "she"], ["aby", "bay"], ["abd", "bad", "dab"], ["cdf", "cfd"], ["hld", "lhd"], ["hip", "ihp", "iph", "phi"], ["mao", "moa", "oam"], ["pip", "ppi"], ["ddt", "dtd"], ["cue", "ecu"], ["pst", "pts", "spt", "tps", "tsp"], ["cyl", "cly", "lyc"], ["ret", "rte", "ter"], ["dem", "med"], ["yes", "sey", "sye"], ["abb", "bab"], ["yor", "ory", "roy"], ["his", "hsi", "ihs", "ish", "shi"], ["uva", "vau"], ["mru", "rum"], ["shu", "uhs", "ush"], ["arm", "mar", "ram"], ["efl", "elf"], ["aft", "fat"], ["per", "pre", "rep"], ["guv", "vug"], ["dey", "dye", "yed"], ["bim", "ibm", "mib"], ["aor", "aro", "oar", "ora"], ["sis", "ssi"], ["cub", "ubc"], ["abt", "bat", "tab"], ["aam", "ama"], ["bcd", "dcb"], ["erf", "fer", "ref"], ["eof", "foe"], ["amu", "aum", "mau"], ["lor", "orl"], ["haw", "hwa", "wah", "wha"], ["esu", "sue", "use"], ["cfh", "hcf"], ["app", "pap", "ppa"], ["elt", "let", "tel"], ["gur", "rug"], ["faq", "qaf"], ["aal", "ala"], ["ito", "toi"], ["cos", "osc", "soc"], ["pus", "sup", "ups"], ["awn", "naw", "wan"], ["yap", "pay", "pya"], ["fei", "fie", "ife"], ["tew", "wet"], ["amb", "bam", "mab"], ["ako", "koa", "oak", "oka"], ["fbi", "fib"], ["alo", "lao", "loa", "ola"], ["nip", "pin"], ["gaj", "jag"], ["fou", "ouf", "ufo"], ["agr", "arg", "gar", "gra", "rag"], ["gum", "mug"], ["xix", "xxi"], ["awd", "daw", "wad"], ["hak", "kha"], ["gon", "nog"], ["nun", "unn"], ["eyr", "yer", "rye"], ["int", "nit", "tin"], ["iyo", "yoi"], ["ahs", "ash", "has", "sah", "sha"], ["gem", "meg"], ["and", "dan", "nad"], ["ais", "sai", "sia"], ["sud", "uds"], ["guy", "yug"], ["paw", "wap"], ["azo", "zoa"], ["iva", "vai", "via"], ["alt", "lat", "tal"], ["aln", "lan"], ["lam", "mal"], ["ler", "rel", "rle"], ["gup", "pug"], ["hwy", "why"], ["hot", "tho"], ["yrs", "syr"], ["ake", "kae", "kea"], ["met", "tem"], ["huk", "khu"], ["ham", "mah"], ["cdr", "rcd"], ["irs", "sir", "sri"], ["fan", "naf"], ["beg", "geb"], ["ade", "dae", "dea", "ead"], ["bon", "nob"], ["kan", "nak"], ["hor", "rho"], ["gul", "lug"], ["bor", "bro", "orb", "rob"], ["flb", "lbf"], ["eos", "oes", "ose", "soe"], ["dup", "pud"], ["amy", "yam", "may", "mya"], ["acy", "cay"], ["kip", "pik"], ["ist", "its", "sit", "tis", "tsi"], ["dow", "owd", "wod"], ["saw", "swa", "was"], ["cav", "vac"], ["bid", "dib"], ["nep", "pen"], ["owk", "wok"], ["lys", "syl", "sly"], ["kos", "sok"], ["ago", "goa"], ["ems", "mes", "sem"], ["prs", "rps"], ["eyl", "ley", "lye"], ["dil", "lid"], ["ads", "das", "sad"], ["hom", "mho", "ohm"], ["ges", "seg"], ["mir", "rim"], ["dig", "gid"], ["bai", "iba"], ["sps", "ssp"], ["aph", "hap", "pah"], ["tue", "ute"], ["ive", "vei", "vie"], ["run", "urn"], ["pet", "pte"], ["cop", "cpo"], ["gnu", "gun", "ung"], ["hrs", "shr"], ["alc", "cal", "lac", "lca"], ["kor", "rok"], ["cir", "ric"], ["cpt", "pct"], ["tyt", "tty"], ["cis", "csi", "sci", "sic"], ["aht", "hat", "tha"], ["chs", "sch"], ["dew", "wed"], ["bob", "obb"], ["tav", "vat"], ["eom", "meo", "moe"], ["kue", "uke"], ["ahi", "hia"], ["bec", "ecb"], ["cen", "enc"], ["mts", "stm"], ["att", "tat"], ["alw", "awl", "law"], ["dod", "odd"], ["dpt", "tpd"], ["stk", "tsk"], ["ety", "yet", "tye"], ["awk", "kaw"], ["yom", "moy"], ["art", "rat", "tar", "tra"], ["det", "ted"], ["gan", "nag"], ["mos", "oms"], ["cai", "cia"], ["awm", "maw", "mwa"], ["gil", "lig"], ["leu", "lue", "ule"], ["yaw", "way"], ["dog", "god"], ["gim", "mig"], ["pwt", "twp"], ["flo", "fol", "lof"], ["not", "ont", "ton"], ["dlr", "rld"], ["hoo", "oho", "ooh"], ["cie", "ice"], ["crs", "scr"], ["ise", "sei", "sie"], ["bls", "lbs"], ["big", "gib"], ["anc", "can"], ["cpi", "pci", "pic"], ["enl", "len"], ["ans", "san"], ["bom", "mob"], ["any", "yan", "nay"], ["abc", "bac", "cab"], ["jat", "taj"], ["dol", "lod", "old"], ["gip", "pig"], ["apx", "pax"], ["put", "tup"], ["tau", "tua", "uta"], ["cul", "luc"], ["boe", "obe"], ["lot", "tlo", "tol"], ["lou", "luo"], ["taw", "twa", "wat"], ["pht", "tph"], ["als", "las", "sal", "sla"], ["aba", "baa"], ["mus", "sum"], ["cot", "cto", "oct", "otc"], ["ary", "yar", "ray", "rya"], ["ahu", "auh", "hau"], ["hei", "hie"], ["eng", "gen", "neg"], ["amp", "map", "pam"], ["cps", "csp"], ["yew", "wey", "wye"], ["yat", "tay"], ["bog", "gob"], ["boy", "yob"], ["aff", "ffa"], ["nus", "sun", "uns"], ["alp", "apl", "lap", "pal"], ["cre", "rec"], ["oer", "ore", "roe"], ["ken", "nek"], ["mum", "umm"], ["cte", "etc", "tec"], ["dat", "tad"], ["ope", "poe"], ["abp", "bap"], ["owe", "woe"], ["fen", "nef"], ["adc", "cad", "dca"], ["eir", "ire", "rei", "rie"], ["mgt", "mtg"], ["aas", "asa", "saa"], ["pit", "tip", "tpi"], ["msl", "sml"], ["yow", "woy"], ["noo", "ono"], ["mit", "tim"], ["bun", "nub", "unb"], ["der", "erd", "red"], ["aru", "rua", "ura"], ["suf", "ufs"], ["stu", "ust", "uts"], ["ops", "pos", "sop"], ["des", "eds", "esd", "sed"], ["arf", "far", "fra"], ["avo", "ova"], ["cpm", "pcm"], ["ame", "eam", "mae", "mea"], ["lst", "slt"], ["rut", "tur"], ["dor", "ord", "rod"], ["our", "uro"], ["now", "own", "won"], ["ego", "geo"], ["yox", "oxy"], ["mer", "rem"], ["coe", "eco"], ["afd", "fad"], ["suu", "usu"], ["sew", "wes"], ["dim", "mid"], ["raw", "war"], ["esq", "seq"], ["dit", "itd", "tid"], ["ave", "eva"], ["adm", "dam", "mad"], ["cam", "mac"], ["add", "dad"], ["rah", "rha"], ["dir", "rid"], ["aah", "aha"], ["bul", "lub"], ["ssu", "sus"], ["job", "obj"], ["ips", "pis", "psi", "sip"], ["dos", "ods", "sod"], ["ain", "ani", "ian"], ["fot", "oft"], ["ltr", "tlr"], ["nut", "tun"], ["ens", "sen"], ["pps", "spp"], ["asp", "pas", "sap", "spa"], ["rev", "ver"], ["ald", "dal", "lad"], ["aku", "auk", "kua"], ["def", "fed"], ["exr", "rex"], ["din", "ind", "nid"], ["bot", "tob"], ["fil", "lif"], ["rpt", "trp"], ["opt", "pot", "top"], ["ail", "ila", "lai"], ["mor", "rom"], ["net", "ten"], ["bop", "pob"], ["cfi", "cif"], ["dag", "gad"], ["eke", "kee"], ["apt", "pat", "pta", "tap"], ["get", "gte", "teg"], ["gpm", "mpg"], ["ilk", "kil"], ["bos", "obs", "sob"], ["bdl", "bld", "dbl"], ["hay", "yah"], ["ese", "see"], ["yeo", "yoe"], ["nov", "von"], ["chi", "hic", "ich"], ["emu", "meu", "ume"], ["xiv", "xvi"], ["cfm", "mcf"], ["dar", "rad"], ["gos", "sog"], ["noa", "ona"], ["alk", "kal", "lak"], ["erg", "ger", "gre", "reg"], ["gld", "ldg"], ["tyr", "try"], ["gaw", "wag"], ["emf", "fem"], ["aus", "sau", "usa"], ["ars", "ras", "sar"], ["dei", "die", "ide"], ["gel", "leg"], ["ohs", "sho", "soh"], ["eon", "neo", "one"], ["aud", "dau"], ["aim", "ami", "ima", "mia"], ["del", "eld", "led"], ["rew", "wer"], ["dep", "edp", "ped"], ["hey", "hye", "yeh"], ["bis", "sib"], ["cap", "pac"], ["dif", "fid"], ["esp", "pes", "sep"], ["yuk", "kyu"], ["gam", "mag"], ["cst", "cts", "sct"], ["age", "gae"], ["ors", "ros"], ["foo", "ofo", "oof"], ["dur", "rud", "urd"], ["evg", "veg"], ["agt", "gat", "tag"], ["yak", "kay"], ["ctg", "gtc"], ["eth", "het", "the"], ["bur", "rub", "urb"], ["heo", "hoe"], ["abo", "aob", "boa", "oba"], ["yon", "noy", "ony"], ["dex", "xed"], ["bud", "dub"], ["dys", "yds", "syd"], ["fig", "gif"], ["aik", "kai"], ["pmt", "tpm"], ["boh", "hob"], ["ike", "kie"], ["frs", "rfs"], ["clr", "crl"], ["clo", "col", "loc"], ["oat", "tao", "toa"], ["gov", "vog"], ["ksi", "ski"], ["gor", "gro", "org", "rog"], ["mon", "nom"], ["abs", "asb", "bas", "sab"], ["row", "wro"], ["rue", "ure"], ["eye", "yee"], ["gin", "ign", "ing", "nig"], ["bio", "ibo", "obi"], ["leo", "loe", "ole"], ["cho", "hoc", "och"], ["cod", "doc"], ["ait", "ati", "ita", "tai"], ["cow", "cwo"], ["got", "tog"], ["erk", "ker"], ["out", "tou"], ["hop", "pho", "poh"], ["ady", "day", "yad"], ["liv", "vil"], ["opp", "pop"], ["abn", "ban", "nab"], ["dum", "mud"], ["air", "ira", "ria"], ["how", "who"], ["com", "moc"], ["lut", "ult"], ["deg", "ged"], ["btu", "but", "tub"], ["adz", "zad"], ["edh", "hed"], ["avg", "vag"], ["duo", "oud", "udo"], ["eme", "mee"], ["ext", "tex"], ["aul", "ula"], ["arx", "rax"], ["owt", "tow", "two", "wot"], ["ers", "res", "ser"], ["elk", "lek"], ["yep", "pye"], ["gtt", "tgt"], ["abr", "arb", "bar", "bra", "rab"], ["min", "nim"], ["ale", "ela", "lea"], ["gol", "log"], ["irk", "rik"]] TODO diff --git a/test_data/apply_permutation.tsv b/test_data/apply_permutation.tsv index aca5465a6..02cd5916f 100644 --- a/test_data/apply_permutation.tsv +++ b/test_data/apply_permutation.tsv @@ -1,5 +1,4 @@ array(int)[permutation] array(int)[data] array(int)[result] -@ perm A [7, 2, 11, 10, 4, 1, 15, 3, 9, 17, 18, 16, 14, 5, 0, 8, 6, 12, 13] [7, 10, 14, 1, 15, 9, 16, 4, 0, 11, 12, 18, 3, 13, 5, 8, 17, 2, 6] [5, 9, 10, 4, 15, 13, 17, 7, 8, 0, 1, 14, 2, 6, 3, 16, 18, 11, 12] TODO [14, 13, 3, 23, 18, 16, 20, 15, 22, 8, 10, 21, 7, 24, 1, 0, 9, 4, 6, 12, 2, 11, 5, 19, 17] [11, 22, 15, 16, 2, 9, 21, 14, 13, 12, 5, 18, 7, 6, 10, 17, 24, 1, 8, 20, 0, 23, 19, 3, 4] [17, 10, 0, 15, 1, 19, 8, 7, 12, 24, 5, 23, 20, 22, 11, 14, 9, 4, 2, 3, 21, 18, 13, 16, 6] TODO [8, 15, 24, 28, 7, 20, 1, 3, 21, 6, 23, 29, 16, 30, 19, 9, 17, 2, 11, 0, 25, 27, 31, 12, 4, 10, 32, 26, 13, 5, 18, 14, 22] [20, 18, 28, 22, 14, 26, 4, 1, 17, 9, 23, 0, 7, 5, 24, 29, 12, 21, 3, 13, 32, 19, 2, 11, 25, 27, 6, 16, 30, 10, 15, 31, 8] [13, 4, 21, 1, 25, 10, 9, 14, 20, 29, 27, 3, 11, 30, 31, 18, 7, 12, 15, 24, 26, 17, 8, 23, 28, 32, 16, 19, 22, 0, 5, 2, 6] TODO diff --git a/test_data/arbitrage.tsv b/test_data/arbitrage.tsv index 3b9d0481c..2ccf86df5 100644 --- a/test_data/arbitrage.tsv +++ b/test_data/arbitrage.tsv @@ -1,5 +1,4 @@ array(array(float)) bool -@ G [[1, 2, 1], [0.5, 1, 4], [1, 0.25, 1]] true TODO [[1.0, 0.34, 0.42, 0.16, 0.7, 0.46, 0.15, 0.19, 0.38, 0.72, 0.63, 0.93, 0.28], [0.33, 1.0, 0.43, 0.71, 0.41, 0.54, 0.84, 0.26, 0.31, 0.75, 0.16, 0.69, 0.99], [0.25, 0.85, 1.0, 0.32, 0.04, 0.2, 0.29, 0.19, 0.09, 0.98, 0.52, 0.82, 0.87], [0.43, 0.73, 0.05, 1.0, 0.21, 0.07, 0.46, 0.56, 0.74, 0.28, 0.63, 0.03, 0.79], [0.77, 0.47, 0.73, 0.62, 1.0, 0.03, 0.07, 0.32, 0.03, 0.08, 0.12, 0.87, 0.28], [0.03, 0.89, 0.57, 0.57, 0.21, 1.0, 0.11, 0.23, 0.44, 0.99, 0.52, 0.37, 0.92], [0.37, 0.09, 0.57, 0.52, 0.85, 0.03, 1.0, 0.78, 0.21, 0.54, 0.42, 0.99, 0.85], [0.94, 0.97, 0.74, 0.89, 0.65, 0.67, 0.01, 1.0, 0.36, 0.03, 0.82, 0.8, 0.1], [0.93, 0.78, 0.09, 0.41, 0.17, 0.1, 0.71, 0.47, 1.0, 0.49, 0.76, 0.03, 0.95], [0.76, 1.52, 0.79, 0.95, 0.06, 0.17, 0.03, 0.61, 0.79, 1.0, 1.08, 0.37, 0.23], [0.08, 0.99, 0.38, 0.48, 0.81, 0.87, 0.98, 0.18, 0.56, 0.98, 1.0, 0.34, 0.63], [0.21, 0.89, 0.8, 0.03, 0.16, 0.19, 0.06, 0.13, 0.86, 0.45, 0.06, 1.0, 0.14], [0.64, 1.45, 0.33, 0.96, 0.38, 0.03, 0.87, 0.76, 0.69, 0.7, 0.72, 0.05, 1.0]] true TODO [[1.0, 1.35, 0.58, 0.98, 0.03], [0.48, 1.0, 0.2, 0.9, 0.51], [0.24, 0.01, 1.0, 0.89, 0.86], [0.29, 0.04, 0.45, 1.0, 0.38], [0.63, 0.45, 0.18, 0.17, 1.0]] false TODO diff --git a/test_data/bentley_bsearch.tsv b/test_data/bentley_bsearch.tsv index 922b9cf53..97e34a04e 100644 --- a/test_data/bentley_bsearch.tsv +++ b/test_data/bentley_bsearch.tsv @@ -1,5 +1,4 @@ int array(int) array(int) -@ t A 1 [1, 2, 3] [0, 0] TODO 2 [1, 2, 3] [1, 1] TODO 3 [1, 2, 3] [2, 2] TODO diff --git a/test_data/binary_search_ai=i.tsv b/test_data/binary_search_ai=i.tsv index 68814c942..c2206a433 100644 --- a/test_data/binary_search_ai=i.tsv +++ b/test_data/binary_search_ai=i.tsv @@ -1,5 +1,4 @@ array(int) void -@ A [-7, -4, -3, -1, 1, 2, 3, 4, 7, 8, 9, 10, 11] TODO [-15, -14, -12, -11, -10, -9, -8, -6, -4, 2, 3, 4, 5, 7, 9, 10, 11, 15, 16, 17, 18, 19, 20, 22, 23, 25, 26, 27, 28] TODO [-3, -2, -1, 1, 2, 3] TODO diff --git a/test_data/binary_search_circular_array_with_duplicates.tsv b/test_data/binary_search_circular_array_with_duplicates.tsv index a57a9e8e8..76f29ff3c 100644 --- a/test_data/binary_search_circular_array_with_duplicates.tsv +++ b/test_data/binary_search_circular_array_with_duplicates.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [3, 1, 2] 1 TODO [0, 2, 4, 8] 0 TODO [16, 2, 4, 8] 1 TODO diff --git a/test_data/binary_search_larger_k.tsv b/test_data/binary_search_larger_k.tsv index 575187795..8f06ad288 100644 --- a/test_data/binary_search_larger_k.tsv +++ b/test_data/binary_search_larger_k.tsv @@ -1,5 +1,4 @@ array(int) int int -@ A k [0, 1, 2, 3, 4, 5, 6, 7] 0 1 TODO [0, 1, 2, 3, 4, 5, 6, 7] 1 2 TODO [0, 1, 2, 3, 4, 5, 6, 7] 4 5 TODO diff --git a/test_data/binomial_coefficients.tsv b/test_data/binomial_coefficients.tsv index cb39b4dcc..01fb62026 100644 --- a/test_data/binomial_coefficients.tsv +++ b/test_data/binomial_coefficients.tsv @@ -1,5 +1,4 @@ int int int -@ n k 1 0 1 TODO 1 1 1 TODO 2 0 1 TODO diff --git a/test_data/bonus.tsv b/test_data/bonus.tsv index 6240e48f2..ac58e5d27 100644 --- a/test_data/bonus.tsv +++ b/test_data/bonus.tsv @@ -1,5 +1,4 @@ array(int) int -@ productivity [1, 2, 2] 4 TODO [1, 2, 3, 2, 1] 9 TODO [300, 400, 500, 200] 7 TODO diff --git a/test_data/bst_from_preorder.tsv b/test_data/bst_from_preorder.tsv index da2427377..042b0b9cf 100644 --- a/test_data/bst_from_preorder.tsv +++ b/test_data/bst_from_preorder.tsv @@ -1,5 +1,4 @@ array(int) binary_tree(int) -@ preorder_sequence [3, 2, 1, 5, 4, 6] ["3", "2", "5", "1", "null", "4", "6"] TODO [1] ["1"] TODO [4, 1] ["4", "1"] TODO diff --git a/test_data/bst_from_sorted_array.tsv b/test_data/bst_from_sorted_array.tsv index 5c763ddce..f0bfb6a80 100644 --- a/test_data/bst_from_sorted_array.tsv +++ b/test_data/bst_from_sorted_array.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [-36, -35, -33, -28, -27, -25, -24, -22, -21, -20, -19, -16, -15, -12, -11, -7, -6, -2, -1, 1, 2, 3, 4, 6, 7, 8, 12, 14, 15, 16, 18, 20, 21, 25, 29, 30, 32, 33, 36, 37] 5 TODO [-89, -86, -84, -83, -82, -80, -78, -77, -75, -73, -70, -68, -65, -64, -63, -60, -58, -57, -56, -55, -54, -53, -52, -50, -49, -48, -45, -44, -42, -40, -39, -38, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -22, -20, -16, -15, -11, -9, -8, -3, 10, 12, 13, 18, 19, 20, 21, 24, 27, 28, 29, 30, 33, 37, 38, 39, 42, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 69, 73, 77, 80, 81, 86, 87] 6 TODO [-36, -31, -28, -27, -26, -25, -24, -23, -20, -15, -14, -13, -12, -11, -10, -9, -6, -5, -4, 0, 1, 2, 7, 12, 14, 15, 19, 21, 23, 25, 26, 27, 31, 32, 33, 34] 5 TODO diff --git a/test_data/bst_merge.tsv b/test_data/bst_merge.tsv index 4d27ca362..dfc7d86e1 100644 --- a/test_data/bst_merge.tsv +++ b/test_data/bst_merge.tsv @@ -1,5 +1,4 @@ binary_tree(int) binary_tree(int) binary_tree(int) -@ A B ["3", "2", "5", "1", "null", "4", "6"] ["7", "2", "8", "0"] ["4", "2", "7", "1", "3", "6", "8", "0", "null", "2", "null", "5"] TODO ["152", "72", "241", "22", "86", "214", "282", "17", "44", "73", "132", "180", "215", "271", "294", "14", "null", "26", "56", "null", "85", "108", "136", "166", "198", "null", "237", "256", "274", "283", "297", "5", "null", "null", "39", "53", "67", "75", "null", "98", "121", "null", "139", "155", "178", "191", "201", "226", "null", "248", "261", "null", "276", "null", "286", "null", "301", "3", "8", "35", "null", "50", "null", "62", "null", "null", "77", "90", "103", "116", "123", "null", "148", "null", "162", "171", "null", "183", "193", "null", "207", "218", "234", "244", "250", "258", "266", "null", "281", "null", "289", "null", "304", "1", "4", "6", "12", "30", "38", "46", "null", "57", "64", "null", "81", "null", "95", "100", "105", "113", "117", "null", "128", "143", "151", "157", "null", "null", "176", "null", "186", "null", "195", "202", "211", "null", "221", "230", "null", "null", "246", "null", "255", "null", "260"] ["182", "96", "322", "30", "177", "270", "379", "25", "73", "172", "null", "231", "290", "361", "412", "24", "null", "55", "75", "143", "null", "194", "250", "275", "305", "344", "375", "395", "433", "1", "null", "50", "60", "null", "88", "122", "163", "187", "205", "243", "264", "null", "283", "292", "307", "331", "356", "368", "null", "381", "405", "421", "444", "null", "12", "38", "null", "null", "64", "86", "95", "107", "131", "154", "168", "null", "189", "195", "220", "237", "247", "259", "266", "279", "287", "null", "296", "null", "314", "329", "337", "351", "null", "365", "373", "null", "386", "402", "410", "416", "424", "438", "445", "7", "17", "33", "45", "null", "67", "79", "null", "92", "null", "103", "115", "128", "139", "147", "158", "null", "171", "null", "191", "null", "199", "213", "227", "236", "238", "null", "248", "255", "null", "265", "269", "277", "null", "286", "null", "295", "300", "312", "319", "324", "null", "336", "342", "349", "352", "362", "null", "null", "374", "null", "391", "398", "null", "409", "null", "415", "null", "423", "428", "null", "439", "null", "446", "2", "null", "null", "20", "null", "35", "41", "null", "66", "69", "77", "82", "89", "94", "100", "104", "111", "120", "126", "null", "135", "null", "146", "152", "155", "162", "170", "null", "null", "193", "null", "203", "210", "218", "222", "230"] ["191", "94", "283", "50", "143", "238", "356", "22", "73", "116", "168", "214", "261", "307", "409", "7", "35", "64", "85", "103", "128", "155", "180", "201", "227", "250", "274", "294", "336", "379", "428", "3", "14", "30", "41", "56", "67", "77", "89", "98", "108", "122", "136", "151", "162", "172", "187", "195", "207", "220", "234", "246", "256", "266", "279", "287", "300", "322", "349", "368", "395", "416", "444", "1", "5", "12", "17", "25", "33", "38", "45", "53", "60", "66", "72", "75", "81", "86", "92", "95", "100", "105", "113", "120", "126", "132", "139", "147", "152", "157", "163", "171", "177", "183", "191", "193", "198", "203", "211", "218", "222", "230", "237", "243", "248", "255", "259", "265", "270", "276", "282", "286", "290", "296", "304", "314", "329", "342", "352", "362", "374", "386", "402", "412", "423", "438", "446", "1", "2", "4", "6", "8", "12", "17", "20", "24", "26", "30", "35", "38", "39", "44", "46", "50", "55", "57", "62", "64", "67", "69", "73", "75", "77", "79", "82", "86", "88", "90", "null", "95", "96", "100", "103", "104", "107", "111", "115", "117", "121", "123", "128", "131", "135", "139", "143", "146", "148", "152", "154", "155", "158", "162", "166", "170", "171", "176", "178", "182", "186", "189", "null", "193", "194", "195", "199", "202", "205", "210", "213", "215", "218", "221", "226", "230", "231", "236", "237", "241", "244", "247", "248", "250", "255", "258", "260", "264", "266", "269", "271", "275", "277", "281", "null", "283", "286", "289", "292", "295", "297", "301", "305", "312", "319", "324", "331", "337", "344", "351", "null", "361", "365", "373", "375", "381", "391", "398", "405", "410", "415", "421", "424", "433", "439", "445"] TODO ["293", "135", "401", "36", "222", "366", "448", "35", "118", "189", "244", "324", "369", "428", "null", "1", "null", "81", "134", "163", "209", "242", "267", "317", "342", "null", "384", "420", "434", "null", "16", "55", "105", "123", "null", "150", "178", "198", "212", "229", "null", "255", "280", "303", "322", "334", "355", "381", "389", "405", "427", "432", "445", "4", "17", "40", "69", "96", "106", "null", "133", "138", "158", "174", "182", "191", "203", "null", "218", "225", "233", "248", "259", "273", "285", "299", "309", "320", "null", "328", "339", "348", "363", "375", "null", "null", "396", "null", "410", "426", "null", "430", "null", "438", "null", "null", "10", "null", "25", "null", "46", "62", "72", "89", "104", "null", "109", "128", "null", "null", "146", "153", "null", "170", "null", "null", "188", "null", "194", "202", "208", "213", "221", "224", "226", "null", "237", "null", "253", "258", "264", "270", "276", "284", "290", "294", "null", "304", "312", "null", "321", "null", "330", "null", "341", "345", "352", "359", "null", "373", "380", "392", "398", "null", "415", "423", "null", "429", "431", "436", "442", "6", "14", "21", "30", "44", "51", "57", "67", "null", "77", "84", "94", "100", "null", "108", "114", "127", "132", "142", "147", "null", "157", "168", "null", "186", "null", "null", "197", "201"] ["280", "90", "362", "57", "195", "283", "399", "1", "87", "133", "227", "null", "305", "363", "446", "null", "14", "85", "null", "119", "154", "203", "245", "286", "323", "null", "394", "431", "null", "12", "36", "68", "null", "94", "120", "137", "178", "199", "215", "228", "272", "null", "303", "322", "351", "378", "null", "411", "438", "2", "null", "21", "44", "62", "82", "null", "109", "null", "122", "null", "146", "167", "186", "null", "202", "212", "216", "null", "241", "257", "274", "291", "null", "307", "null", "340", "361", "367", "392", "407", "421", "434", "443", "null", "7", "19", "31", "42", "52", "null", "63", "74", "null", "103", "114", "null", "127", "141", "150", "162", "168", "179", "190", "201", "null", "205", "null", "null", "225", "236", "null", "253", "266", "null", "277", "289", "298", "null", "315", "333", "343", "355", "null", "null", "371", "386", "null", "402", "null", "415", "425", "433", "null", "null", "445", "null", "10", "15", "null", "26", "33", "41", "null", "47", "null", "null", "67", "69", "77", "98", "104", "111", "null", "null", "129", "138", "142", "147", "null", "159", "null", "null", "173", "null", "181", "null", "192", "200", "null", "204", "208", "220", "null", "232", "null", "250", "256", "261", "270", "276", "null", "null", "290", "296", "301", "312", "320", "328", "337", "341", "347", "null", "356", "null", "376", "382", "387", "400", "406", "null", "416", "null", "430"] ["225", "122", "340", "62", "179", "284", "399", "26", "94", "147", "202", "256", "312", "367", "429", "14", "44", "77", "108", "135", "163", "194", "212", "241", "272", "298", "323", "355", "384", "415", "436", "6", "19", "36", "52", "68", "85", "103", "114", "129", "142", "154", "173", "188", "200", "208", "220", "229", "250", "264", "277", "290", "304", "320", "333", "345", "362", "376", "392", "406", "425", "432", "445", "2", "10", "16", "21", "33", "41", "47", "57", "67", "72", "82", "89", "98", "105", "111", "119", "127", "133", "138", "146", "150", "159", "168", "178", "186", "191", "198", "201", "204", "209", "216", "222", "227", "236", "245", "253", "259", "270", "276", "280", "289", "294", "303", "307", "317", "322", "328", "337", "342", "351", "359", "363", "373", "381", "389", "396", "402", "411", "421", "427", "431", "434", "442", "446", "1", "4", "10", "12", "15", "17", "21", "25", "31", "35", "40", "42", "46", "51", "55", "57", "63", "67", "69", "74", "81", "84", "87", "90", "96", "100", "104", "106", "109", "114", "118", "120", "127", "128", "133", "134", "138", "141", "142", "146", "150", "153", "158", "162", "168", "170", "174", "178", "182", "186", "190", "192", "197", "199", "201", "202", "203", "205", "208", "212", "215", "218", "221", "224", "226", "228", "233", "237", "244", "248", "253", "255", "258", "261", "267", "270", "274", "276", "280", "283", "286", "290", "293", "296", "301", "303", "305", "309", "315", "320", "321", "322", "328", "330", "334", "339", "341", "343", "348", "352", "356", "361", "363", "366", "371", "375", "380", "382", "387", "392", "394", "398", "401", "405", "410", "415", "420", "423", "426", "428", "430", "431", "433", "434", "438", "443", "445", "448", "1", "null", "null", "null", "7", "null", "null", "null", "14", "null", "null", "null", "null", "null", "null", "null", "30", "null", "null", "null", "36", "null", "null", "null", "44", "null", "null", "null", "null", "null", "null", "null", "62", "null", "null", "null", "69", "null", "null", "null", "77", "null", "null", "null", "null", "null", "null", "null", "94", "null", "null", "null", "104", "null", "null", "null", "109", "null", "null", "null", "null", "null", "null", "null", "123", "null", "null", "null", "132", "null", "null", "null", "137", "null", "null", "null", "null", "null", "null", "null", "147", "null", "null", "null", "157", "null", "null", "null", "167", "null", "null", "null", "null", "null", "null", "null", "181", "null", "null", "null", "189", "null", "null", "null", "195", "null", "null", "null", "null", "null", "null", "null", "203", "null", "null", "null", "null", "null", "null", "null", "213", "null", "null", "null", "null", "null", "null", "null", "225", "null", "null", "null", "232", "null", "null", "null", "242", "null", "null", "null", "null", "null", "null", "null", "257", "null", "null", "null", "266", "null", "null", "null", "273", "null", "null", "null", "null", "null", "null", "null", "285", "null", "null", "null", "291", "null", "null", "null", "299", "null", "null", "null", "null", "null", "null", "null", "312", "null", "null", "null", "null", "null", "null", "null", "324", "null", "null", "null", "null", "null", "null", "null", "341", "null", "null", "null", "347", "null", "null", "null", "355", "null", "null", "null", "null", "null", "null", "null", "369", "null", "null", "null", "378", "null", "null", "null", "386", "null", "null", "null", "null", "null", "null", "null", "400", "null", "null", "null", "407", "null", "null", "null", "416", "null", "null", "null", "null", "null", "null", "null", "430", "null", "null", "null", "null", "null", "null", "null", "438"] TODO diff --git a/test_data/bst_to_sorted_list.tsv b/test_data/bst_to_sorted_list.tsv index 4f832fccc..6f017b959 100644 --- a/test_data/bst_to_sorted_list.tsv +++ b/test_data/bst_to_sorted_list.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["3", "2", "5", "1", "null", "4", "6"] [1, 2, 3, 4, 5, 6] TODO ["1"] [1] TODO ["5", "1"] [1, 5] TODO diff --git a/test_data/buy_and_sell_stock.tsv b/test_data/buy_and_sell_stock.tsv index 74a77d6b2..1af016e3a 100644 --- a/test_data/buy_and_sell_stock.tsv +++ b/test_data/buy_and_sell_stock.tsv @@ -1,5 +1,4 @@ array(float) float -@ prices [1,2,3,4] 3 Basic check, monotonic increasing [1,5,4,6] 5 Simple test case [0.2, 0.1] 0.0 TODO diff --git a/test_data/buy_and_sell_stock_k_times.tsv b/test_data/buy_and_sell_stock_k_times.tsv index a4a5888d7..4e0d3ed87 100644 --- a/test_data/buy_and_sell_stock_k_times.tsv +++ b/test_data/buy_and_sell_stock_k_times.tsv @@ -1,5 +1,4 @@ array(float) int float -@ prices k [11.1, 13.4, 16.9, 6.1, 1.9, 9.4, 3.9, 4.1, 15.7, 1.4, 2.6, 10.7, 13.1, 6.7, 8.6, 13.8, 5.1, 5.2, 4.8, 7.9, 10.9, 9.2, 14.3, 14.5, 7.6, 13.3, 13.4, 11.3, 16.7, 9.8, 6.7, 17.7, 16.6, 17.7, 2.3, 3.5, 5.2, 17.4, 5.5, 10.0, 15.0, 11.7, 10.5, 1.1, 13.2, 5.8, 15.9, 7.4, 7.8, 1.7, 12.0, 5.2, 5.2, 5.6, 4.4, 11.6, 11.0, 17.8, 12.5, 16.6, 5.7, 17.8, 17.7, 15.6, 4.0, 8.7, 12.7, 16.5, 0.9, 7.4, 1.5, 8.3, 4.7, 12.6, 11.2, 3.2, 13.1, 7.3, 15.6, 6.8, 8.7, 9.0, 7.0, 0.7, 1.4, 7.8, 10.7, 1.3, 3.3, 14.7, 3.7, 4.6, 13.3, 17.3, 11.3, 11.2, 10.2, 9.8, 4.0, 5.8, 5.9, 4.0, 3.9, 11.5, 5.7, 10.2, 16.8, 6.3, 0.8, 15.4, 6.0, 2.8, 1.7, 4.2, 3.4, 8.5, 16.7, 9.5, 7.3, 6.8, 16.0, 1.7, 15.6, 17.9, 17.5, 10.1, 17.8, 6.7, 8.0, 1.9, 16.7, 10.3, 7.3, 13.0, 11.8, 10.3, 18.1, 8.5, 15.9, 4.1, 4.4, 13.3, 14.8, 13.8, 11.7, 3.4, 1.0, 10.3, 17.7, 10.0, 15.1, 6.2, 3.6, 7.5, 10.8, 4.0, 15.5, 4.4, 17.1, 0.9, 11.4, 5.0, 14.6, 0.1, 15.9, 17.2, 11.2, 17.8, 4.8, 9.5, 17.4, 4.6, 2.3, 13.2, 11.6, 0.3, 7.1, 4.2, 11.5, 1.9, 8.0] 62 530.4 TODO [0.2, 1.0, 0.8, 1.0, 0.7, 1.0, 0.3, 0.1, 0.7, 0.6] 4 1.9 TODO [1.1, 0.9, 0.8, 0.2, 0.2, 0.9, 0.3, 0.9, 0.1, 1.1, 0.1, 0.6] 1 1.0 TODO diff --git a/test_data/buy_and_sell_stock_twice.tsv b/test_data/buy_and_sell_stock_twice.tsv index a2d3f178e..a6b8327e0 100644 --- a/test_data/buy_and_sell_stock_twice.tsv +++ b/test_data/buy_and_sell_stock_twice.tsv @@ -1,5 +1,4 @@ array(float) float -@ prices [2.5, 2.6, 1.4, 0.1, 0.7, 1.8, 1.0, 2.5, 0.8, 2.4, 1.0, 3.0, 1.8, 0.2, 1.2, 0.1, 2.0, 1.1, 3.2, 3.4, 0.4, 1.3, 2.6, 0.8, 3.4, 3.3, 3.6, 0.7, 0.7, 0.5, 3.6, 2.1, 0.6, 2.6, 2.3, 3.5, 3.2] 6.6 TODO [0.2, 0.2, 0.2, 0.4] 0.2 TODO [27.4, 7.5, 14.7, 25.9, 14.3, 11.6, 6.7, 20.5, 21.3, 0.1, 3.7, 2.1, 13.0, 20.3, 19.8, 17.9, 0.8, 2.7, 11.0, 10.8, 16.4, 1.5, 8.8, 16.1, 1.5, 0.1, 3.5, 2.1, 20.5, 6.2, 27.4, 3.4, 25.6, 19.6, 27.2, 2.9, 3.1, 12.9, 14.7, 16.4, 3.5, 10.8, 7.7, 27.3, 16.7, 10.6, 24.4, 13.2, 19.8, 14.1, 23.5, 13.0, 8.8, 18.4, 25.0, 20.8, 21.8, 3.2, 9.1, 24.5, 26.2, 24.0, 18.8, 15.9, 24.9, 5.6, 22.4, 10.1, 19.7, 24.6, 10.3, 1.3, 22.6, 2.9, 22.7, 22.0, 6.6, 23.0, 13.6, 15.1, 10.6, 2.2, 1.2, 24.5, 12.3, 24.7, 23.2, 20.9, 5.5, 12.3, 26.2, 21.9, 27.4, 26.6, 13.7, 23.8, 20.2, 22.7, 8.7, 7.2, 24.2, 25.3, 20.9, 11.5, 0.5, 21.4, 8.2, 8.4, 18.0, 23.6, 14.6, 19.4, 5.0, 12.1, 13.6, 26.1, 27.1, 22.1, 2.2, 5.3, 15.1, 22.5, 14.5, 17.1, 23.7, 17.3, 17.9, 24.1, 15.4, 15.7, 2.0, 16.8, 23.8, 1.8, 25.1, 20.9, 16.5, 5.0, 6.5, 15.1, 20.6, 15.3, 18.0, 18.6, 6.2, 17.7, 18.3, 6.0, 27.6, 13.0, 12.5, 16.6, 11.2, 9.9, 6.6, 21.2, 12.2, 20.6, 25.8, 15.4, 15.6, 1.2, 26.8, 12.7, 21.7, 27.1, 16.9, 16.5, 10.6, 1.0, 4.6, 22.4, 16.8, 0.3, 6.4, 9.1, 0.7, 16.0, 20.9, 21.6, 0.4, 25.5, 26.1, 11.4, 27.4, 19.2, 4.9, 6.4, 5.7, 10.0, 15.3, 0.9, 2.8, 4.9, 5.9, 2.5, 11.4, 13.5, 19.6, 0.5, 12.5, 19.3, 11.0, 14.7, 15.4, 22.6, 10.6, 18.6, 13.6, 6.0, 26.5, 1.6, 8.8, 5.8, 8.2, 21.2, 12.5, 10.4, 22.6, 6.6, 8.9, 5.6, 16.6, 23.2, 13.8, 20.8, 13.5, 19.6, 11.3, 17.2, 12.9, 10.8, 26.7, 2.1, 27.1, 2.9, 19.7, 24.8, 7.3, 1.7, 1.6, 14.3, 2.4, 0.8, 11.2, 4.7, 16.8, 19.4, 19.1, 4.2, 15.1, 6.2, 12.0, 24.8, 13.2, 15.3, 3.0, 13.1, 8.8, 18.2, 0.2, 16.4, 23.1, 2.3, 0.2, 24.8, 14.0, 0.9, 3.4, 14.7, 11.3, 15.1, 15.2, 2.7, 18.0, 15.2] 54.6 TODO diff --git a/test_data/calendar_rendering.tsv b/test_data/calendar_rendering.tsv index 43533b5f5..6676cbd65 100644 --- a/test_data/calendar_rendering.tsv +++ b/test_data/calendar_rendering.tsv @@ -1,5 +1,4 @@ array(tuple(int[start], int[finish])) int -@ events [[1, 5], [2, 7], [4, 5], [6, 10], [8, 9], [9, 17], [11, 13], [12, 15], [14, 15]] 3 TODO [[1, 5], [2, 7], [4, 5], [6, 10], [8, 9], [9, 17], [11, 13], [12, 15], [14, 15], [9, 10]] 4 TODO [[5, 27], [20, 26], [0, 24], [1, 9], [19, 25], [17, 24], [0, 12], [7, 13], [5, 31], [4, 17], [6, 8], [4, 17], [2, 11], [11, 12], [5, 14]] 11 TODO diff --git a/test_data/can_string_be_palindrome.tsv b/test_data/can_string_be_palindrome.tsv index f4f068043..b526c0e0b 100644 --- a/test_data/can_string_be_palindrome.tsv +++ b/test_data/can_string_be_palindrome.tsv @@ -1,5 +1,4 @@ string bool -@ s itnrsg false TODO a planaamnnaaa mcpaala n true TODO ibaal b awr lsewesei ea true TODO diff --git a/test_data/circular_queue.tsv b/test_data/circular_queue.tsv index 0943feedd..608ce747e 100644 --- a/test_data/circular_queue.tsv +++ b/test_data/circular_queue.tsv @@ -1,5 +1,4 @@ array(tuple(string[op], int[argument])) void -@ ops [["Queue", 1], ["enqueue", -394], ["enqueue", -304], ["dequeue", -394], ["enqueue", -65], ["dequeue", -304], ["dequeue", -65], ["enqueue", 513], ["dequeue", 513], ["size", 0], ["enqueue", 987], ["size", 1], ["dequeue", 987], ["enqueue", 767], ["enqueue", 866], ["enqueue", 717], ["size", 3], ["enqueue", 228], ["enqueue", -399], ["dequeue", 767], ["enqueue", 232], ["enqueue", -546], ["enqueue", 329], ["enqueue", 456], ["enqueue", 530], ["dequeue", 866], ["dequeue", 717], ["dequeue", 228], ["dequeue", -399], ["dequeue", 232], ["enqueue", 703], ["dequeue", -546], ["size", 4], ["dequeue", 329], ["dequeue", 456], ["dequeue", 530], ["enqueue", -962], ["dequeue", 703], ["dequeue", -962], ["enqueue", 839], ["enqueue", -972], ["enqueue", 537], ["size", 3], ["size", 3], ["enqueue", 808], ["dequeue", 839], ["dequeue", -972], ["dequeue", 537], ["enqueue", 542], ["dequeue", 808], ["dequeue", 542], ["enqueue", -176], ["dequeue", -176], ["size", 0]] TODO [["Queue", 11], ["enqueue", 622], ["enqueue", 502], ["enqueue", 241], ["enqueue", -806], ["dequeue", 622], ["dequeue", 502], ["enqueue", -381], ["size", 3], ["dequeue", 241], ["enqueue", 442], ["enqueue", 964], ["enqueue", -965], ["enqueue", -6], ["enqueue", 836], ["enqueue", 18], ["dequeue", -806], ["enqueue", 872], ["size", 8], ["dequeue", -381], ["size", 7], ["dequeue", 442], ["enqueue", -740], ["enqueue", -797], ["enqueue", 757], ["enqueue", -951], ["enqueue", -477], ["enqueue", -806], ["dequeue", 964], ["size", 11], ["dequeue", -965], ["enqueue", 566], ["dequeue", -6], ["dequeue", 836], ["dequeue", 18], ["dequeue", 872], ["dequeue", -740], ["dequeue", -797], ["dequeue", 757], ["dequeue", -951], ["dequeue", -477], ["dequeue", -806], ["dequeue", 566], ["size", 0]] TODO [["Queue", 10], ["size", 0], ["size", 0], ["enqueue", 540], ["size", 1], ["dequeue", 540], ["size", 0], ["enqueue", -715], ["dequeue", -715], ["enqueue", -48], ["enqueue", 25], ["dequeue", -48], ["dequeue", 25], ["size", 0], ["size", 0], ["enqueue", 627], ["enqueue", 97], ["enqueue", 976], ["dequeue", 627], ["dequeue", 97], ["dequeue", 976], ["enqueue", -113], ["dequeue", -113], ["enqueue", -116], ["size", 1], ["enqueue", 417], ["dequeue", -116], ["dequeue", 417], ["size", 0], ["enqueue", 702], ["enqueue", -70], ["enqueue", 903], ["enqueue", -61], ["enqueue", -777], ["dequeue", 702], ["enqueue", -834], ["enqueue", -645], ["dequeue", -70], ["dequeue", 903], ["enqueue", -871], ["enqueue", 672], ["enqueue", -140], ["enqueue", -418], ["enqueue", 59], ["dequeue", -61], ["enqueue", 120], ["enqueue", 719], ["dequeue", -777], ["enqueue", -585], ["enqueue", 971], ["dequeue", -834], ["dequeue", -645], ["enqueue", -41], ["enqueue", 470], ["dequeue", -871], ["enqueue", -226], ["dequeue", 672], ["dequeue", -140], ["dequeue", -418], ["dequeue", 59], ["dequeue", 120], ["size", 6], ["enqueue", 431], ["dequeue", 719], ["enqueue", -336], ["size", 7], ["enqueue", 270], ["dequeue", -585], ["enqueue", 973], ["size", 8], ["dequeue", 971], ["dequeue", -41], ["enqueue", -646], ["size", 7], ["size", 7], ["size", 7], ["dequeue", 470], ["dequeue", -226], ["enqueue", -571], ["dequeue", 431], ["enqueue", -17], ["dequeue", -336], ["dequeue", 270], ["dequeue", 973], ["dequeue", -646], ["dequeue", -571], ["dequeue", -17], ["size", 0]] TODO diff --git a/test_data/climb_stairs.tsv b/test_data/climb_stairs.tsv index 53ed10c3c..05b94a0e1 100644 --- a/test_data/climb_stairs.tsv +++ b/test_data/climb_stairs.tsv @@ -1,5 +1,4 @@ int int -@ n 1 1 TODO 2 2 TODO 3 3 TODO diff --git a/test_data/closest_int_same_weight.tsv b/test_data/closest_int_same_weight.tsv index bd8ceb884..5a0e0f258 100644 --- a/test_data/closest_int_same_weight.tsv +++ b/test_data/closest_int_same_weight.tsv @@ -1,5 +1,4 @@ long long -@ x 4955 4957 TODO 28841587333 28841587334 TODO 1462096516430109 1462096516430110 TODO diff --git a/test_data/collatz_checker.tsv b/test_data/collatz_checker.tsv index 9749d0ece..87afde5ad 100644 --- a/test_data/collatz_checker.tsv +++ b/test_data/collatz_checker.tsv @@ -1,5 +1,4 @@ int bool -@ n 1 true TODO 10 true TODO 100 true TODO diff --git a/test_data/combinations.tsv b/test_data/combinations.tsv index b52bb5199..80230eb49 100644 --- a/test_data/combinations.tsv +++ b/test_data/combinations.tsv @@ -1,5 +1,4 @@ int int array(array(int)) -@ n k 0 0 [[]] TODO 1 0 [[]] TODO 1 1 [[1]] TODO diff --git a/test_data/convert_base.tsv b/test_data/convert_base.tsv index 3aa642a4b..d27e26613 100644 --- a/test_data/convert_base.tsv +++ b/test_data/convert_base.tsv @@ -1,5 +1,4 @@ string int int string -@ num_as_string b1 b2 511288644 10 3 1022122002011011110 TODO -1196028 10 12 -498190 TODO 9536378 10 16 91837A TODO diff --git a/test_data/copy_posting_list.tsv b/test_data/copy_posting_list.tsv index 481aaa643..e36862576 100644 --- a/test_data/copy_posting_list.tsv +++ b/test_data/copy_posting_list.tsv @@ -1,5 +1,4 @@ array(tuple(int, int)) void -@ serialized [] TODO [[0, 0]] TODO [[0, 0], [1, -1]] TODO diff --git a/test_data/count_bits.tsv b/test_data/count_bits.tsv index 8add1a2a9..85a5a389f 100644 --- a/test_data/count_bits.tsv +++ b/test_data/count_bits.tsv @@ -1,5 +1,4 @@ int int -@ x 0 0 0 in binary is 0b0 1 1 1 in binary is 0b1 2 1 2 in binary is 0b10 diff --git a/test_data/count_inversions.tsv b/test_data/count_inversions.tsv index 35e38b162..02fac2871 100644 --- a/test_data/count_inversions.tsv +++ b/test_data/count_inversions.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [26, 11, -31, -2, -24, 10, -1, 24, -16, -11, -29, -26, 19, -1, 5, -16, -6, -23, 9, 0, -26, 18, -5, 0, -3, -29, 8, 0, 6, 26, -9] 220 TODO [-4, -28, 2, -4, -9, 21, -13, -27, -24, 16, -21, 21, -5, -5, -23, -8, 14, -30, -1, 12, -6, 29, -15, 31, -22, 22, -8, -28, 4, -14, 4] 214 TODO [114, 353, 99, -326, -160, -156, -50, 98, 240, 310, -249, 350, -162, -55, 273, -230, -399, -340, 56, -259, -400, -66, 318, 281, 7, -382, -228, 351, -303, -358, -139, 354, 7, 387, -251, 386, -83, -388, 321, -223, -321, -355, -382, -72, 0, -67, 410, -134, 91, 152, -164, 116, 414, 76, 344, 230, -127, -314, -233, 327, 237, -161, 225, -375, 331, 156, 320, -368, -348, 270, -99, -348, 126, 192, 207, -386, 97, -133, -334, 244, 203, 27, -337, 386, 203, -29, -190, -131, 209, -345, 382, -142, 124, -183, -95, 57, -349, -97, 39, -309, 172, 327, 200, 294, 57, -283, 184, -211, -44, -10, -69, -208, 177, -143, 214, -35, -71, 378, -20, 160, 309, 318, -372, -43, -70, 156, 36, 313, 303, -212, -409, -164, 369, 44, 130, -254, -293, 149, 102, 383, -388, 101, -364, 333, -246, -365, 235, -196, -185, 91, -332, 194, -366, 315, -396, -73, -317, 284, -188, 228, -399, -8, 46, -378, -380, 68, 146, -382, -349, -21, -264, -10, -262, 7, 250, -79, -365, -383, 360, -30, -302, -350, -341, -171, -14, 98, -354, -66, -377, -111, -296, -264, 352, 114, -51, -217, 367, -208, -279, -385, 318, -42, -45, -55, 81, -40, 177, -40, -399, 124, -65, -160, -223, -285, -365, -50, -31, -269, -88, -272, 368, -88, 50, -169, -78, 133, 397, 237, -281, -191, 387, 212, 174, 205, -324, 325, -373, -149, 19, -262, 296, -258, -314, 185, 326, -227, -9, -63, -264, 90, -185, -124, -105, -76, 135, -308, 341, 173, 307, 405, 61, -182, -365, -20, 357, 97, -281, 183, -363, 218, 349, -202, 25, -119, 250, 359, 9, 397, -375, 93, -334, 208, 84, -161, -217, -87, 13, -127, 291, -338, -286, 398, -225, 399, 122, 232, -159, -94, 303, -291, 17, 189, -89, -167, 272, -349, 410, 362, 313, 235, 209, -193, -387, 256, -256, 163, 90, 131, 48, 327, 281, 142, 80, -361, -5, -100, 329, -198, 119, -99, -174, -252, -98, -96, 138, -24, 100, 161, 144, -190, 67, 232, -22, 35, 313, 294, 144, -338, 59, -73, 320, 30, 56, -12, -128, 358, 156, -309, 291, -372, -51, -402, 332, 104, -38, -382, -55, -204, 253, 284, 381, 287, -107, -102, -60, -362, -301, -92, 318, 333, -59, 128, -402, -366, 73, -161, -271, 22, 24, 142, 345, -130, -336, 137, 137, 183, -46, 383, 220, -394, -204, -330, -307, -86, 69, 293, 185, 214, 70, -16, 365, 144, -288, 105, -179] 41321 TODO diff --git a/test_data/deadlock_detection.tsv b/test_data/deadlock_detection.tsv index d34f6e4ba..c95c010e0 100644 --- a/test_data/deadlock_detection.tsv +++ b/test_data/deadlock_detection.tsv @@ -1,5 +1,4 @@ int array(tuple(int[from], int[to])[edge])[graph] bool -@ k edges 2 [[0, 1], [1, 0]] true A simple two nodes cycle 3 [[0, 1], [1, 2], [2, 0]] true A simple three nodes cycle 4 [[0, 1], [0, 2], [0, 3]] false A star tree diff --git a/test_data/defective_jugs.tsv b/test_data/defective_jugs.tsv index 289e2e8c7..5a42b8294 100644 --- a/test_data/defective_jugs.tsv +++ b/test_data/defective_jugs.tsv @@ -1,5 +1,4 @@ array(tuple(int[low], int[high])[jug]) int[L] int[H] bool -@ A l h [[45, 37], [132, 123], [133, 120], [199, 195], [133, 120], [114, 99], [102, 92], [148, 147], [187, 180], [183, 174], [35, 17], [190, 175], [50, 40], [214, 197], [76, 67], [132, 131], [75, 68], [128, 123], [170, 160], [111, 98], [126, 107], [80, 70]] 417 614 true TODO [[185, 165], [64, 50], [13, 12], [199, 185], [27, 17], [36, 32], [20, 0], [163, 155], [125, 113], [57, 55], [128, 114], [68, 65], [73, 68], [37, 28], [123, 109], [148, 131], [107, 88], [38, 26], [75, 58], [115, 100], [139, 119], [63, 43], [140, 129], [143, 141], [54, 38], [190, 185], [76, 60], [73, 58], [93, 78]] 1876 2010 true TODO [[78, 60], [164, 147]] 120 133 true TODO diff --git a/test_data/delete_from_list.tsv b/test_data/delete_from_list.tsv index 810a69491..9a332d179 100644 --- a/test_data/delete_from_list.tsv +++ b/test_data/delete_from_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int linked_list(int) -@ head i [4, 7, 15, 8, 10, 2, 11, 13, 5, 3, 9, 12, 1, 14, 6] 7 [4, 7, 15, 8, 10, 2, 11, 5, 3, 9, 12, 1, 14, 6] TODO [8, 7, 9, 5, 10, 2, 3, 1, 4, 6, 12, 11] 1 [8, 9, 5, 10, 2, 3, 1, 4, 6, 12, 11] TODO [10, 13, 6, 5, 8, 12, 11, 1, 9, 7, 3, 4, 2] 3 [10, 13, 6, 8, 12, 11, 1, 9, 7, 3, 4, 2] TODO diff --git a/test_data/delete_kth_last_from_list.tsv b/test_data/delete_kth_last_from_list.tsv index 172073282..5fb413a35 100644 --- a/test_data/delete_kth_last_from_list.tsv +++ b/test_data/delete_kth_last_from_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int linked_list(int) -@ L k [9, 12, 11, 5, 18, 10, 4, 15, 7, 8, 2, 17, 14, 3, 13, 16, 1, 6] 5 [9, 12, 11, 5, 18, 10, 4, 15, 7, 8, 2, 17, 14, 13, 16, 1, 6] TODO [1, 22, 14, 9, 23, 28, 11, 31, 25, 4, 27, 30, 16, 20, 5, 12, 17, 13, 26, 7, 8, 15, 19, 18, 3, 24, 10, 29, 2, 21, 6] 6 [1, 22, 14, 9, 23, 28, 11, 31, 25, 4, 27, 30, 16, 20, 5, 12, 17, 13, 26, 7, 8, 15, 19, 18, 3, 10, 29, 2, 21, 6] TODO [1, 6, 11, 3, 8, 2, 7, 5, 9, 12, 14, 4, 10, 13] 11 [1, 6, 11, 8, 2, 7, 5, 9, 12, 14, 4, 10, 13] TODO diff --git a/test_data/delete_node_from_list.tsv b/test_data/delete_node_from_list.tsv index c332f34f5..57b9c7c15 100644 --- a/test_data/delete_node_from_list.tsv +++ b/test_data/delete_node_from_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int linked_list(int) -@ head i [4, 7, 15, 8, 10, 2, 11, 13, 5, 3, 9, 12, 1, 14, 6] 7 [4, 7, 15, 8, 10, 2, 11, 5, 3, 9, 12, 1, 14, 6] TODO [8, 7, 9, 5, 10, 2, 3, 1, 4, 6, 12, 11] 1 [8, 9, 5, 10, 2, 3, 1, 4, 6, 12, 11] TODO [10, 13, 6, 5, 8, 12, 11, 1, 9, 7, 3, 4, 2] 3 [10, 13, 6, 8, 12, 11, 1, 9, 7, 3, 4, 2] TODO diff --git a/test_data/descendant_and_ancestor_in_bst.tsv b/test_data/descendant_and_ancestor_in_bst.tsv index 25dcfab35..a534c0a6a 100644 --- a/test_data/descendant_and_ancestor_in_bst.tsv +++ b/test_data/descendant_and_ancestor_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) int[possible anc or desc 1] int[possible anc or desc 2] int[middle node] bool -@ tree candidate1_idx candidate2_idx middle_idx ["5"] 5 5 5 false TODO ["5", "2", "null", "null", "4"] 5 2 4 false TODO ["5", "2", "null", "null", "4"] 5 4 2 true TODO diff --git a/test_data/directory_path_normalization.tsv b/test_data/directory_path_normalization.tsv index 2f3c86a20..191ce5e21 100644 --- a/test_data/directory_path_normalization.tsv +++ b/test_data/directory_path_normalization.tsv @@ -1,5 +1,4 @@ string string -@ path 123/456 123/456 TODO /123/456 /123/456 TODO usr/lib/../bin/gcc usr/bin/gcc TODO diff --git a/test_data/do_lists_overlap.tsv b/test_data/do_lists_overlap.tsv index 487cae058..81f8ed9dc 100644 --- a/test_data/do_lists_overlap.tsv +++ b/test_data/do_lists_overlap.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) linked_list(int) int int void -@ l1 l2 common cycle1 cycle2 [] [] [] -1 -1 TODO [8, 1, 4, 3, 9, 0, 7, 5, 2, 6] [] [] -1 -1 TODO [] [0, 3, 5, 9, 1, 8, 4, 7, 2, 6] [] -1 -1 TODO diff --git a/test_data/do_terminated_lists_overlap.tsv b/test_data/do_terminated_lists_overlap.tsv index 2e202a41f..2b5a99e9d 100644 --- a/test_data/do_terminated_lists_overlap.tsv +++ b/test_data/do_terminated_lists_overlap.tsv @@ -1,5 +1,4 @@ linked_list(int)[first prefix] linked_list(int)[second prefix] linked_list(int)[common part] void -@ p1 p2 common [] [] [] TODO [] [3] [] TODO [2] [] [] TODO diff --git a/test_data/drawing_skyline.tsv b/test_data/drawing_skyline.tsv index 9954f5467..e5a11a13a 100644 --- a/test_data/drawing_skyline.tsv +++ b/test_data/drawing_skyline.tsv @@ -1,5 +1,4 @@ array(tuple(int[left], int[right], int[height])) array(tuple(int[left], int[right], int[height])) -@ buildings [[469, 479, 47], [317, 384, 26], [611, 649, 26], [983, 1138, 32], [8, 54, 0], [146, 198, 70], [216, 297, 65], [856, 972, 94], [386, 421, 59], [490, 614, 30], [129, 201, 12], [229, 313, 75], [699, 761, 2], [373, 430, 16], [382, 542, 38], [934, 959, 24], [439, 582, 66], [821, 867, 84], [247, 372, 52], [192, 212, 41], [288, 341, 0], [60, 103, 41], [456, 585, 19], [851, 1004, 51], [5, 181, 18], [598, 718, 17], [480, 559, 64], [627, 777, 76], [772, 894, 95], [30, 147, 97], [841, 992, 12], [358, 381, 25], [86, 258, 84], [922, 1032, 75], [234, 342, 71], [127, 283, 73], [912, 920, 24], [952, 1043, 86], [672, 852, 46], [533, 623, 46], [450, 476, 32], [69, 185, 15], [109, 210, 13], [235, 348, 95], [456, 561, 65], [719, 917, 5], [608, 650, 51], [451, 606, 22], [554, 749, 2], [944, 1087, 85], [380, 471, 41], [154, 289, 69], [194, 324, 42], [323, 463, 34], [797, 909, 96], [111, 220, 85], [490, 585, 72], [566, 644, 3], [10, 85, 84], [527, 606, 7], [93, 129, 15], [885, 1062, 37], [986, 1163, 57], [58, 217, 19], [730, 884, 52], [470, 489, 1], [317, 381, 48], [93, 123, 53], [10, 198, 22], [867, 972, 41], [391, 407, 63], [954, 1132, 25], [203, 232, 84], [836, 924, 43], [402, 591, 90], [818, 842, 1], [516, 682, 9], [249, 362, 22], [211, 227, 37], [725, 844, 88], [71, 172, 89], [196, 326, 34], [846, 1039, 86], [791, 953, 52], [113, 134, 17], [874, 1049, 39], [148, 320, 47], [954, 1151, 36], [59, 75, 72], [80, 215, 3], [628, 672, 97], [284, 299, 35], [630, 685, 38], [568, 733, 90], [404, 462, 69], [967, 1023, 10], [433, 536, 45], [569, 719, 73], [946, 971, 46], [927, 1027, 34], [980, 987, 77], [874, 1021, 31], [214, 358, 9], [271, 342, 66], [631, 728, 59], [351, 515, 63], [574, 704, 61], [107, 161, 77], [473, 637, 73], [435, 555, 52], [851, 954, 31], [306, 489, 41], [978, 1136, 21], [467, 526, 62], [969, 974, 87], [682, 864, 57], [311, 401, 40], [234, 276, 62], [427, 622, 64], [183, 236, 97], [973, 1095, 54], [114, 243, 71], [473, 576, 54], [166, 217, 87], [39, 97, 75], [171, 244, 59], [949, 1045, 84], [224, 395, 98], [647, 823, 71], [583, 673, 12], [925, 927, 77], [274, 279, 84], [633, 771, 42], [290, 347, 75], [876, 1056, 69], [252, 270, 86], [133, 154, 5], [913, 982, 7], [120, 166, 77], [688, 701, 45], [97, 112, 8], [590, 635, 10], [615, 756, 76], [64, 235, 92], [281, 410, 8], [622, 816, 83], [520, 704, 3], [15, 29, 6], [310, 387, 82], [895, 924, 26], [269, 369, 56], [602, 637, 63], [954, 954, 0], [636, 767, 67], [353, 395, 85], [522, 639, 90], [118, 300, 94], [178, 236, 12], [575, 716, 88], [736, 756, 21], [116, 313, 40], [569, 725, 96], [391, 512, 84], [705, 880, 42], [293, 479, 35], [258, 362, 53], [767, 908, 27], [531, 671, 8], [286, 389, 33], [455, 539, 15], [391, 508, 47], [619, 774, 51], [19, 183, 74], [588, 699, 33], [863, 932, 66], [118, 207, 49], [31, 47, 88], [297, 324, 61], [285, 459, 32], [778, 811, 48], [824, 956, 13], [671, 771, 60], [606, 802, 84], [854, 1001, 47], [595, 646, 26], [783, 970, 98], [364, 385, 78], [253, 307, 2], [429, 473, 99], [476, 477, 17], [204, 232, 51], [723, 918, 72], [448, 598, 10], [814, 983, 13], [580, 680, 74], [246, 283, 18], [228, 250, 76], [630, 769, 67], [770, 803, 68], [978, 1086, 84], [33, 151, 94], [199, 202, 76], [361, 530, 69], [648, 680, 29], [392, 579, 71], [927, 1102, 22], [509, 640, 42], [654, 812, 56], [203, 321, 96], [220, 349, 26], [140, 284, 10], [136, 285, 66], [417, 582, 90], [834, 897, 45], [882, 1058, 98], [991, 1031, 3], [319, 418, 98], [298, 452, 24], [12, 57, 67], [476, 637, 40], [914, 974, 54], [159, 342, 39], [953, 989, 63], [788, 794, 98], [314, 387, 60], [615, 723, 57], [786, 925, 7], [525, 542, 66], [964, 1092, 42], [693, 816, 97], [560, 650, 53], [73, 109, 99], [448, 561, 17], [188, 333, 89], [578, 777, 81], [234, 369, 71], [192, 259, 47], [746, 784, 1], [730, 860, 60], [932, 988, 33], [718, 901, 84], [985, 1149, 45], [537, 592, 46], [240, 402, 29], [463, 578, 54], [163, 167, 2], [333, 381, 22], [87, 223, 24], [944, 1127, 87], [6, 58, 24], [532, 603, 58], [556, 647, 68], [980, 1068, 90], [211, 392, 40], [790, 898, 71], [427, 450, 77], [15, 33, 48], [672, 793, 74], [289, 487, 78], [420, 425, 73], [834, 953, 36], [896, 986, 25], [131, 170, 94], [213, 313, 25], [730, 926, 74], [824, 982, 52], [928, 983, 97], [604, 714, 19], [948, 1093, 97], [288, 396, 1], [274, 314, 16], [754, 905, 72], [148, 318, 42], [892, 1058, 56], [270, 345, 31], [932, 1090, 4], [245, 423, 95], [150, 198, 55], [861, 920, 29], [447, 477, 12], [97, 200, 58], [948, 1095, 78], [59, 154, 3], [731, 902, 70], [376, 409, 62], [840, 897, 9], [510, 691, 96], [993, 1011, 56], [338, 382, 79], [417, 561, 46], [432, 438, 25], [945, 1069, 26], [17, 24, 98], [930, 1012, 33], [827, 882, 5], [509, 615, 60], [296, 350, 29], [728, 730, 64], [616, 644, 98], [973, 1167, 43], [54, 77, 28], [953, 960, 76], [730, 876, 42], [410, 518, 32], [157, 279, 21], [546, 636, 57], [842, 1023, 77], [513, 621, 76], [82, 186, 81], [747, 805, 93], [583, 772, 21], [653, 757, 89], [497, 593, 96], [371, 401, 46], [62, 202, 66], [50, 169, 37], [942, 1095, 38], [161, 288, 91], [561, 745, 36], [604, 772, 59], [396, 423, 53], [305, 333, 5], [748, 852, 20], [181, 195, 15], [166, 321, 20], [567, 736, 4], [831, 862, 90], [808, 937, 72], [582, 773, 63], [928, 1047, 71], [199, 244, 84], [574, 701, 10], [142, 185, 44], [967, 980, 55], [376, 479, 86], [431, 519, 35], [174, 356, 62], [124, 148, 55], [20, 189, 48], [821, 1016, 81], [317, 391, 75], [153, 271, 11], [157, 238, 36], [915, 1030, 81], [651, 691, 85], [160, 180, 9], [528, 551, 51], [645, 729, 76], [763, 829, 89], [710, 733, 94], [738, 792, 6], [392, 494, 63], [652, 793, 6], [604, 653, 36], [199, 367, 20], [686, 710, 79], [800, 961, 46], [955, 1022, 84], [432, 575, 92], [643, 783, 54], [863, 975, 23], [728, 744, 24], [710, 839, 77], [182, 210, 25], [348, 427, 60], [880, 1021, 22], [635, 727, 13], [538, 693, 0], [726, 851, 64], [486, 650, 30], [589, 682, 34], [255, 286, 74], [351, 387, 75], [660, 765, 63], [612, 687, 22], [253, 344, 62], [237, 433, 29], [23, 82, 34], [654, 821, 37], [625, 713, 5], [918, 986, 58], [353, 401, 52], [512, 707, 31], [188, 382, 43], [435, 577, 57], [59, 164, 3], [269, 423, 7], [503, 512, 75], [404, 492, 49], [476, 481, 42], [488, 609, 3], [366, 558, 16], [412, 508, 11], [398, 442, 94], [295, 371, 64], [416, 607, 21], [157, 235, 15], [566, 747, 69], [583, 621, 20], [604, 696, 92], [711, 751, 73], [170, 294, 96], [165, 229, 47], [175, 251, 77], [213, 374, 30], [470, 656, 77], [463, 607, 57], [264, 439, 9], [276, 368, 1], [943, 1039, 54], [872, 971, 3], [599, 733, 33], [815, 841, 81], [618, 746, 24], [728, 855, 69], [5, 153, 64], [805, 965, 12], [73, 152, 59], [522, 651, 62], [711, 801, 81], [634, 719, 70], [448, 634, 81], [414, 426, 35], [425, 495, 86], [119, 284, 85], [424, 603, 13], [959, 1097, 2], [810, 839, 59], [811, 980, 52], [37, 203, 12], [805, 896, 22], [360, 557, 53], [473, 654, 39], [752, 889, 34], [847, 1029, 14], [114, 240, 66], [517, 687, 5], [999, 1061, 51], [587, 728, 33], [351, 401, 85], [989, 1058, 92], [358, 505, 4], [732, 791, 84], [144, 214, 87], [105, 135, 14], [558, 693, 4], [147, 269, 31], [900, 1100, 46], [763, 797, 67], [105, 123, 86], [175, 206, 98], [229, 317, 44], [352, 453, 44], [874, 967, 46], [446, 591, 36], [383, 575, 83], [382, 400, 64], [851, 897, 20], [540, 708, 37], [273, 309, 50], [707, 823, 3], [727, 828, 84], [638, 809, 11], [3, 158, 0], [822, 1000, 41], [672, 793, 10], [717, 855, 27], [426, 534, 47], [607, 721, 76], [549, 689, 23], [481, 518, 74], [163, 302, 93], [135, 311, 59], [982, 1004, 22], [39, 164, 88], [591, 748, 85], [672, 865, 88], [420, 445, 50], [600, 631, 70], [221, 366, 54], [141, 315, 77], [993, 1107, 29], [497, 567, 36], [120, 260, 92], [198, 300, 34], [77, 175, 50], [491, 507, 31], [418, 573, 32], [776, 951, 54], [128, 267, 25], [93, 266, 29], [612, 803, 84], [506, 566, 93], [233, 402, 88], [2, 69, 37], [540, 700, 77], [3, 5, 95], [376, 549, 71], [546, 668, 86], [508, 688, 80], [994, 1153, 76], [374, 383, 86], [407, 435, 75], [198, 368, 70], [421, 506, 83], [264, 460, 93], [849, 958, 66], [351, 521, 36], [535, 716, 90], [1, 169, 30], [762, 885, 13], [494, 590, 3], [424, 457, 57], [51, 96, 93], [470, 633, 79], [16, 34, 33], [204, 396, 73], [706, 735, 12], [209, 385, 27], [70, 228, 94], [355, 396, 23], [931, 960, 50], [849, 922, 62], [229, 362, 57], [294, 357, 84], [102, 118, 82], [367, 467, 18], [132, 186, 31], [815, 848, 59], [596, 783, 89], [100, 113, 96], [706, 825, 81], [186, 295, 31], [210, 357, 59], [372, 445, 23], [263, 456, 51], [428, 525, 53], [114, 267, 45], [571, 646, 75], [384, 527, 70], [285, 312, 61], [769, 799, 45], [166, 256, 73], [793, 856, 58], [314, 372, 2], [6, 112, 3], [588, 644, 2], [343, 453, 44], [65, 241, 18], [549, 602, 11], [485, 543, 10], [137, 257, 38], [238, 356, 16], [237, 387, 94], [404, 464, 21], [493, 624, 88], [602, 727, 9], [418, 522, 94], [651, 664, 47], [522, 626, 32], [154, 220, 36], [492, 523, 32], [434, 579, 82], [171, 318, 95], [497, 628, 64], [307, 368, 2], [77, 159, 68], [93, 95, 50], [888, 1006, 14], [924, 1070, 35], [853, 1012, 88], [832, 863, 3], [681, 713, 65], [840, 994, 77], [97, 164, 11], [157, 264, 84], [538, 591, 39], [370, 480, 8], [349, 434, 86], [937, 1030, 56], [970, 976, 13], [500, 521, 53], [297, 470, 61], [289, 459, 18], [281, 470, 87], [124, 262, 97], [667, 767, 64], [921, 1040, 92], [69, 130, 40], [144, 148, 23], [735, 850, 47], [836, 931, 1], [308, 422, 4], [303, 361, 44], [900, 987, 60], [544, 565, 73], [898, 911, 89]] [[1, 1, 30], [2, 2, 37], [3, 5, 95], [6, 9, 64], [10, 16, 84], [17, 24, 98], [25, 29, 84], [30, 72, 97], [73, 109, 99], [110, 174, 97], [175, 206, 98], [207, 223, 97], [224, 418, 98], [419, 423, 95], [424, 428, 94], [429, 473, 99], [474, 496, 94], [497, 615, 96], [616, 644, 98], [645, 672, 97], [673, 692, 96], [693, 782, 97], [783, 1058, 98], [1059, 1093, 97], [1094, 1127, 87], [1128, 1153, 76], [1154, 1163, 57], [1164, 1167, 43]] TODO [[439, 444, 56], [350, 484, 84], [150, 296, 53], [609, 768, 44], [529, 622, 38], [791, 953, 73], [174, 266, 37], [485, 489, 33], [334, 374, 25], [333, 412, 32], [466, 639, 24], [658, 856, 77], [0, 184, 77], [647, 808, 25], [637, 754, 88], [743, 863, 58], [737, 738, 18], [245, 250, 31], [746, 794, 32], [628, 769, 34], [19, 36, 31], [157, 162, 91], [483, 670, 29], [737, 837, 84], [693, 842, 71], [908, 1050, 17], [264, 341, 5], [857, 1014, 14], [410, 490, 69], [640, 718, 19], [775, 834, 86], [542, 700, 92], [119, 278, 3], [145, 336, 29], [131, 247, 75], [89, 152, 89], [577, 706, 40], [874, 976, 73], [971, 1048, 85], [604, 692, 71], [757, 905, 57], [777, 831, 87], [822, 892, 20], [76, 152, 64], [958, 990, 42], [55, 233, 90], [380, 382, 3], [0, 89, 64], [971, 1112, 0], [77, 146, 71], [51, 218, 72], [869, 1059, 84], [109, 154, 31], [852, 880, 49], [115, 218, 75], [877, 906, 91], [779, 908, 75], [348, 404, 55], [568, 732, 50], [760, 832, 7], [495, 565, 40], [844, 1013, 75], [474, 529, 0], [134, 315, 46], [860, 871, 96], [605, 652, 84], [364, 484, 66], [155, 265, 40], [271, 385, 22], [157, 179, 26], [751, 802, 40], [843, 979, 87], [496, 509, 78], [521, 659, 47], [213, 241, 62], [300, 429, 91], [771, 961, 45], [722, 765, 73], [834, 873, 16], [686, 800, 47], [703, 847, 27], [606, 676, 43], [694, 776, 16], [1, 76, 38], [111, 257, 66], [367, 546, 84], [660, 734, 47], [181, 239, 28], [286, 446, 58], [582, 746, 42], [614, 662, 52], [165, 301, 1], [62, 141, 61], [422, 594, 96], [681, 810, 29], [857, 946, 0], [140, 333, 86], [198, 395, 84], [681, 812, 98], [975, 1045, 48], [710, 727, 68], [875, 959, 52], [343, 373, 74], [4, 142, 54], [304, 488, 11], [339, 433, 91], [841, 893, 8], [687, 817, 5], [475, 530, 99], [495, 626, 24], [944, 1096, 15], [239, 393, 0], [265, 453, 6], [709, 859, 78], [467, 571, 73], [852, 974, 19], [852, 926, 12], [663, 804, 32], [300, 408, 97], [222, 417, 39], [550, 561, 94], [484, 542, 36], [224, 360, 34], [812, 864, 21], [16, 86, 69], [851, 964, 70], [565, 580, 43], [129, 258, 21], [92, 106, 48], [679, 803, 87], [45, 215, 50], [158, 316, 29], [811, 1008, 89], [126, 220, 73], [896, 1000, 34], [894, 996, 36], [280, 341, 12], [185, 246, 81], [664, 664, 73], [190, 348, 15], [839, 846, 56], [683, 787, 99], [39, 239, 6], [733, 777, 20], [696, 869, 93], [837, 970, 39], [144, 193, 75], [952, 957, 39], [346, 484, 14], [783, 887, 53], [122, 159, 52], [845, 1024, 95], [304, 415, 54], [979, 989, 78], [390, 487, 43], [604, 649, 31], [942, 1067, 55], [424, 448, 58], [363, 542, 27], [614, 681, 17], [57, 116, 64], [4, 178, 51], [650, 682, 79], [783, 949, 74], [577, 733, 77], [647, 827, 2], [854, 947, 1], [101, 161, 54], [975, 1012, 36], [674, 815, 1], [6, 81, 19], [468, 572, 17], [398, 547, 83], [905, 1066, 17], [395, 417, 60], [514, 578, 34], [754, 848, 1], [969, 1021, 93], [89, 169, 62], [12, 138, 90], [863, 1027, 43], [482, 526, 7], [212, 224, 13], [809, 966, 9], [896, 1086, 40], [665, 769, 34], [660, 822, 81], [570, 646, 37], [427, 615, 54], [621, 784, 63], [70, 129, 33], [150, 264, 53], [106, 178, 28], [744, 795, 84], [265, 332, 52], [80, 197, 75], [609, 677, 68], [829, 1000, 33], [618, 792, 59], [909, 970, 38], [517, 632, 37], [228, 410, 82], [710, 870, 60], [693, 796, 37], [967, 1147, 3], [218, 233, 0], [237, 391, 84], [591, 738, 63], [46, 182, 41], [618, 646, 0], [547, 686, 66], [870, 1020, 74], [533, 716, 16], [801, 899, 78], [922, 1063, 79], [78, 224, 97], [728, 787, 36], [443, 632, 56], [488, 646, 82], [365, 440, 84], [33, 105, 51], [411, 478, 94], [158, 285, 61], [28, 116, 91], [568, 597, 89], [782, 975, 2], [251, 451, 86], [309, 506, 1], [367, 473, 18], [925, 929, 39], [816, 1015, 78], [918, 946, 19], [438, 547, 81], [981, 1016, 77], [73, 115, 11], [898, 972, 79], [525, 720, 4], [467, 555, 81], [517, 671, 32], [284, 370, 83], [551, 607, 95], [894, 1063, 80], [841, 918, 81], [904, 1001, 71], [671, 854, 38], [661, 716, 48], [652, 777, 78], [274, 325, 46], [931, 967, 88], [969, 1000, 33], [270, 466, 4], [162, 289, 39], [492, 605, 56], [362, 493, 64], [479, 495, 0], [957, 1151, 18], [969, 1079, 82], [505, 507, 13], [946, 1099, 42], [57, 197, 54], [482, 506, 11], [914, 919, 27], [149, 341, 86], [86, 107, 11], [40, 188, 85], [662, 671, 19], [864, 952, 41], [23, 65, 45], [824, 913, 96], [990, 1176, 63], [872, 999, 38], [593, 600, 4], [869, 985, 38], [894, 1005, 89], [375, 527, 6], [760, 800, 27], [349, 393, 5], [352, 368, 45], [187, 249, 61], [213, 222, 57], [382, 581, 18], [912, 919, 47], [990, 1154, 56], [182, 379, 14], [202, 310, 76], [452, 524, 40], [540, 590, 1], [376, 491, 57], [328, 418, 23], [247, 299, 13], [812, 942, 67], [784, 912, 8], [788, 987, 32], [400, 505, 19], [335, 410, 67], [697, 834, 77], [767, 966, 69], [790, 910, 18], [547, 696, 32], [205, 247, 25], [919, 1014, 93], [731, 770, 0], [237, 421, 32], [358, 445, 86], [587, 630, 55], [612, 648, 98], [248, 365, 59], [131, 141, 42], [44, 232, 88], [508, 677, 55], [313, 428, 77], [10, 174, 73], [741, 923, 36], [378, 414, 44], [50, 245, 77], [716, 829, 48], [679, 841, 7], [37, 151, 63], [454, 618, 96], [552, 571, 1], [256, 268, 50], [47, 166, 12], [734, 842, 69], [312, 332, 36], [619, 662, 87], [532, 682, 49], [451, 486, 58], [929, 1117, 63], [564, 738, 81], [222, 407, 71], [598, 714, 79], [37, 107, 80], [55, 113, 53], [851, 902, 98], [582, 747, 71], [934, 1040, 28], [35, 99, 74], [484, 515, 88], [737, 881, 8], [486, 647, 90], [657, 784, 20], [765, 838, 93], [515, 669, 67], [469, 538, 49], [420, 532, 36], [666, 818, 90], [168, 255, 90], [579, 717, 80], [301, 401, 32], [848, 940, 88], [273, 419, 78], [928, 1039, 86], [555, 629, 44], [964, 1119, 95], [754, 782, 47], [155, 311, 96], [705, 891, 18], [729, 847, 16], [108, 124, 52], [139, 253, 63], [236, 393, 30], [590, 653, 90], [268, 287, 66], [239, 339, 10], [637, 777, 69], [722, 897, 73], [807, 876, 14], [167, 330, 66], [340, 449, 2], [953, 1038, 25], [391, 562, 92], [251, 387, 60], [539, 565, 94], [376, 479, 34], [2, 25, 51], [607, 771, 7], [178, 180, 1], [215, 267, 18], [843, 971, 28], [531, 548, 58], [694, 835, 2], [546, 712, 61], [655, 695, 4], [63, 153, 48], [904, 951, 52], [831, 894, 68], [170, 191, 79], [334, 440, 14], [224, 233, 37], [262, 446, 4], [94, 144, 70], [749, 915, 93], [110, 272, 76], [185, 310, 34], [820, 900, 29], [852, 1032, 21], [186, 218, 2], [991, 1097, 87], [668, 765, 63], [899, 1057, 96], [764, 885, 41], [602, 623, 86], [424, 437, 59], [462, 656, 17], [280, 314, 18], [674, 747, 22], [920, 981, 56], [499, 538, 15], [629, 775, 83], [412, 587, 32], [589, 722, 16], [917, 1091, 8], [199, 259, 66], [634, 650, 37], [950, 1137, 92], [279, 304, 5], [229, 293, 54], [804, 887, 63], [472, 542, 71], [565, 593, 82], [402, 484, 4], [298, 375, 89], [303, 413, 65], [241, 386, 55], [853, 868, 24], [249, 299, 95], [720, 915, 92], [499, 515, 40], [244, 342, 75], [753, 831, 93], [187, 225, 57], [874, 1044, 56], [375, 511, 52], [31, 134, 91], [729, 751, 19], [430, 556, 33], [805, 996, 13], [780, 960, 75], [592, 620, 47], [901, 1032, 37], [235, 422, 1], [629, 740, 23], [951, 1089, 59], [668, 683, 10], [347, 434, 60], [442, 488, 41], [563, 752, 92], [576, 768, 70], [474, 508, 9], [118, 205, 9], [638, 770, 36], [279, 448, 72], [175, 277, 74], [632, 683, 97], [853, 924, 14], [683, 691, 40], [949, 1060, 90], [38, 189, 39], [876, 964, 50], [716, 850, 90], [474, 543, 30], [743, 926, 53], [7, 88, 38], [40, 100, 45], [477, 518, 96], [736, 880, 18], [70, 244, 61], [495, 516, 45], [746, 888, 14], [641, 823, 4], [217, 243, 96], [43, 241, 99], [675, 726, 81], [244, 440, 78], [428, 581, 68], [25, 221, 37], [150, 267, 27], [890, 1014, 83], [190, 248, 2], [813, 845, 34], [247, 291, 26], [715, 852, 99], [17, 135, 91], [954, 1088, 75], [491, 678, 89], [554, 692, 93], [371, 542, 8], [461, 531, 38], [361, 501, 1], [247, 429, 76], [155, 225, 68], [487, 514, 4], [336, 490, 36], [706, 713, 79], [483, 572, 11], [546, 663, 72], [390, 495, 88], [220, 229, 69], [473, 641, 80], [141, 285, 84], [283, 348, 13], [384, 409, 1], [344, 436, 58], [800, 986, 4], [821, 927, 37], [711, 861, 32], [192, 390, 7], [567, 663, 22], [826, 869, 85], [931, 1008, 10], [840, 1021, 50], [71, 201, 92], [199, 207, 83], [3, 193, 18], [472, 579, 30], [300, 326, 6], [912, 979, 76], [282, 459, 52], [930, 996, 35], [503, 650, 68], [792, 814, 81], [35, 73, 85], [736, 759, 87], [772, 970, 84], [584, 613, 82], [274, 387, 58], [343, 365, 95], [104, 247, 60], [120, 137, 91], [494, 604, 67], [298, 465, 87], [782, 904, 10], [107, 193, 54], [295, 491, 34], [448, 596, 33], [343, 431, 92], [182, 350, 83], [809, 998, 7], [770, 908, 26], [401, 543, 25], [545, 559, 65], [450, 554, 50], [77, 95, 48], [988, 1178, 2], [869, 1044, 11], [12, 120, 8], [77, 208, 93], [122, 134, 44], [393, 589, 83], [92, 276, 46], [611, 774, 8], [868, 1046, 83], [767, 921, 71], [348, 529, 17], [244, 427, 37], [501, 664, 65], [967, 1076, 42], [703, 859, 82], [213, 254, 66], [119, 121, 59], [523, 564, 70], [300, 471, 17], [715, 850, 56], [478, 613, 74], [680, 788, 36], [326, 477, 6], [320, 446, 45], [342, 407, 13], [390, 571, 17], [777, 856, 57], [441, 549, 4], [282, 444, 63], [170, 227, 22], [299, 476, 97], [800, 921, 27], [79, 224, 26], [924, 1078, 55], [539, 654, 76], [217, 291, 14], [399, 552, 75], [848, 936, 29], [771, 797, 55], [253, 390, 24], [731, 834, 54], [631, 779, 3], [876, 908, 35], [637, 815, 30], [279, 312, 22], [332, 445, 99], [481, 592, 57], [632, 769, 67], [625, 685, 59], [186, 186, 94], [65, 143, 1], [576, 612, 21], [340, 489, 27], [639, 768, 21], [80, 142, 77], [225, 312, 51], [818, 969, 36], [490, 624, 42], [723, 902, 61], [88, 175, 54], [648, 658, 60], [767, 904, 29], [208, 311, 6], [339, 409, 88], [169, 312, 31], [608, 685, 48], [482, 637, 56], [549, 699, 12], [231, 234, 37], [487, 531, 78], [376, 545, 3], [775, 968, 76], [688, 719, 87], [952, 962, 68], [290, 393, 89], [135, 283, 67], [727, 815, 29], [881, 968, 22], [193, 209, 98], [621, 777, 74], [614, 784, 84], [981, 1089, 8], [715, 798, 91], [443, 472, 0], [276, 354, 41], [835, 906, 22], [534, 676, 86], [613, 749, 77], [107, 187, 6], [739, 819, 43], [301, 383, 74], [850, 1024, 14], [1, 62, 94], [931, 1048, 51], [236, 298, 17], [409, 519, 61], [314, 496, 65], [801, 875, 86], [642, 731, 5], [577, 702, 54], [941, 969, 42], [801, 966, 52], [799, 973, 71], [157, 340, 65], [102, 260, 17], [695, 867, 61], [454, 525, 46], [503, 652, 6], [642, 737, 25], [555, 663, 59], [447, 573, 44], [465, 651, 67], [92, 276, 17], [880, 1015, 2], [24, 25, 39], [993, 1019, 49], [619, 677, 33], [297, 345, 67], [699, 856, 18], [309, 331, 2], [398, 502, 73], [952, 982, 29], [515, 563, 14], [863, 935, 64], [492, 564, 8], [378, 411, 27], [443, 492, 53], [585, 696, 29], [570, 647, 79], [102, 299, 41], [610, 639, 17], [665, 671, 0], [137, 145, 33], [509, 671, 84], [231, 306, 92], [723, 803, 77], [754, 839, 15], [219, 281, 35], [388, 549, 34], [89, 144, 10], [419, 425, 82], [571, 660, 12], [522, 722, 33], [535, 663, 19], [611, 624, 6], [570, 606, 52], [562, 610, 28], [496, 619, 78], [685, 818, 0], [347, 535, 64], [6, 12, 37], [120, 263, 98], [628, 688, 17], [125, 256, 59], [790, 983, 78], [761, 910, 70], [150, 258, 7], [708, 854, 18], [239, 351, 10], [952, 1036, 88], [528, 605, 24], [816, 995, 69], [91, 140, 5], [594, 758, 16], [107, 230, 55], [253, 342, 86], [972, 1069, 85], [980, 991, 74], [494, 517, 53], [77, 156, 20], [103, 180, 8], [658, 786, 88], [651, 707, 58], [273, 285, 99], [441, 461, 2], [930, 1021, 11], [307, 483, 66], [668, 695, 20], [189, 387, 63], [357, 395, 55], [989, 1092, 3], [215, 349, 16], [560, 670, 97], [890, 995, 90], [336, 493, 97], [336, 536, 68], [67, 177, 37], [317, 397, 35], [200, 276, 8], [273, 340, 70], [806, 995, 9], [338, 521, 23], [388, 409, 21], [819, 913, 41], [843, 893, 52], [819, 937, 47], [191, 301, 51], [873, 943, 23], [336, 529, 81], [168, 356, 92], [996, 1066, 94], [806, 881, 49], [677, 715, 15], [875, 1050, 7], [796, 953, 9], [104, 211, 46], [993, 1035, 14], [396, 524, 73], [610, 722, 5], [995, 1011, 22], [684, 762, 95], [702, 812, 13], [376, 388, 19], [157, 161, 48], [861, 982, 99], [84, 175, 95], [909, 1025, 3], [836, 871, 26], [52, 152, 31], [522, 631, 71], [147, 246, 66], [272, 298, 55], [641, 645, 28], [12, 156, 94], [264, 453, 3], [523, 555, 53], [716, 764, 21], [206, 329, 93], [909, 919, 1], [520, 618, 70], [558, 699, 42], [104, 287, 32], [797, 914, 94], [31, 188, 32], [223, 394, 44], [716, 894, 3], [73, 155, 45], [399, 537, 2], [435, 571, 40], [312, 440, 25], [261, 286, 13], [837, 898, 99], [334, 517, 37], [720, 778, 68], [36, 131, 9], [873, 1002, 18], [401, 487, 21], [526, 537, 5], [961, 1007, 50], [948, 1069, 11], [370, 471, 22], [145, 286, 96], [246, 263, 44], [625, 797, 34], [970, 1146, 74], [62, 81, 19], [230, 360, 87], [599, 799, 78], [340, 409, 52], [428, 599, 27], [478, 519, 82], [610, 760, 26], [281, 350, 97], [776, 939, 32], [545, 625, 28], [511, 596, 39], [414, 545, 56], [769, 782, 92], [160, 275, 80], [1, 34, 23], [904, 1083, 62], [364, 481, 44], [289, 384, 76], [252, 356, 77], [474, 632, 15], [684, 872, 16], [744, 829, 11], [109, 145, 64], [376, 524, 35], [102, 255, 11], [426, 504, 9], [169, 191, 86], [763, 941, 4], [444, 576, 41], [413, 532, 24], [309, 370, 16], [343, 503, 57], [362, 378, 22], [19, 210, 73], [906, 995, 84], [36, 56, 33], [495, 595, 45], [960, 1107, 50], [969, 1028, 70], [553, 646, 55], [813, 882, 6], [545, 730, 13], [309, 376, 68], [381, 392, 93], [117, 139, 70], [77, 98, 67], [368, 425, 19], [291, 435, 37], [586, 718, 53], [164, 311, 41], [940, 1048, 5], [73, 158, 47], [713, 742, 16], [536, 623, 16], [588, 786, 68], [867, 907, 24], [607, 668, 12], [747, 944, 33], [942, 965, 88], [710, 777, 15], [174, 269, 41], [894, 1075, 83], [875, 908, 6], [733, 907, 32], [698, 807, 43], [239, 398, 80], [457, 599, 20], [195, 305, 69], [964, 1023, 82], [191, 370, 39], [262, 262, 53], [868, 926, 30], [815, 936, 72], [854, 908, 20], [242, 362, 77], [131, 218, 22], [648, 662, 79], [616, 666, 45], [215, 410, 60], [938, 1104, 49], [635, 835, 95], [292, 368, 23], [933, 1018, 98], [338, 517, 60], [365, 463, 4], [607, 671, 62], [116, 308, 47], [153, 288, 90], [704, 727, 56], [107, 290, 97], [683, 808, 81], [616, 636, 65], [951, 997, 49], [931, 1130, 72], [19, 47, 98], [44, 212, 95], [617, 632, 47], [15, 115, 22], [229, 377, 91], [840, 863, 99], [677, 871, 55], [394, 490, 96], [467, 625, 23], [532, 667, 67], [10, 210, 44], [533, 581, 44], [536, 571, 63], [514, 599, 98], [264, 358, 46], [105, 243, 6], [808, 854, 97], [303, 304, 12], [381, 455, 20], [326, 335, 67], [637, 738, 31], [979, 1164, 72], [99, 298, 14], [388, 505, 98], [920, 988, 13], [552, 606, 64], [193, 303, 56], [665, 727, 45], [267, 407, 11], [639, 824, 25], [558, 562, 69], [12, 184, 81], [164, 328, 41], [570, 660, 77], [941, 1099, 36], [836, 900, 54], [780, 942, 65], [730, 774, 61], [133, 180, 64], [564, 683, 13], [940, 1092, 6], [101, 130, 87], [4, 27, 87], [436, 615, 33], [736, 747, 32], [603, 791, 77], [33, 131, 20], [625, 739, 25], [94, 284, 93], [515, 534, 46], [355, 363, 24], [994, 1007, 33], [651, 805, 66], [537, 543, 31], [831, 970, 21], [497, 692, 63], [506, 514, 64], [630, 805, 28], [97, 200, 39], [304, 467, 78], [406, 463, 31], [16, 79, 75], [6, 123, 12], [221, 334, 23], [567, 724, 48], [628, 681, 61], [69, 243, 48], [538, 641, 55], [830, 835, 8], [360, 522, 38], [9, 54, 75], [184, 193, 97], [575, 608, 80], [703, 795, 1], [99, 266, 79], [98, 162, 74], [416, 521, 56], [225, 353, 42], [787, 890, 44], [601, 783, 0], [757, 782, 40], [902, 983, 65], [7, 38, 46], [113, 136, 40], [345, 423, 39]] [[0, 0, 77], [1, 18, 94], [19, 42, 98], [43, 241, 99], [242, 263, 98], [264, 272, 97], [273, 285, 99], [286, 331, 97], [332, 445, 99], [446, 474, 98], [475, 530, 99], [531, 599, 98], [600, 611, 97], [612, 648, 98], [649, 680, 97], [681, 682, 98], [683, 982, 99], [983, 1018, 98], [1019, 1057, 96], [1058, 1119, 95], [1120, 1137, 92], [1138, 1146, 74], [1147, 1164, 72], [1165, 1176, 63], [1177, 1178, 2]] TODO [[894, 1023, 61], [938, 1012, 53], [74, 207, 42], [303, 437, 9], [822, 947, 28], [870, 1042, 3], [41, 86, 64], [606, 766, 69], [628, 816, 42], [690, 860, 10], [245, 274, 77], [904, 1026, 25], [710, 780, 18], [58, 103, 81], [456, 466, 8], [325, 495, 9], [636, 805, 51], [517, 585, 15], [925, 1015, 6], [850, 1005, 16], [291, 428, 56], [752, 896, 83], [852, 876, 33], [572, 673, 84], [867, 923, 94], [443, 507, 55], [73, 272, 1], [970, 1090, 55], [520, 562, 2], [954, 999, 91], [351, 425, 6], [656, 696, 58], [268, 294, 96], [162, 299, 69], [885, 1005, 68], [876, 1016, 26], [990, 1000, 42], [31, 154, 54], [959, 1105, 9], [289, 375, 48], [315, 428, 5], [962, 1113, 37], [925, 1067, 54], [62, 112, 37], [322, 448, 19], [735, 931, 85], [983, 1166, 14], [372, 427, 70], [246, 359, 3], [125, 165, 32], [674, 855, 11], [909, 1007, 80], [137, 331, 68], [402, 460, 24], [870, 943, 36], [915, 1041, 79], [397, 415, 4], [6, 30, 11], [964, 1036, 63], [840, 1015, 18], [476, 646, 19], [921, 935, 68], [154, 345, 87], [285, 369, 48], [645, 732, 2], [741, 800, 99], [846, 883, 77], [405, 413, 30], [897, 1039, 34], [305, 473, 46], [438, 468, 75], [146, 190, 19], [479, 593, 61], [843, 887, 86], [267, 315, 88], [539, 711, 71], [463, 478, 30], [388, 496, 95], [429, 595, 20], [191, 325, 74], [351, 377, 88], [581, 648, 77], [252, 317, 42], [152, 328, 84], [956, 1042, 68], [9, 112, 82], [977, 1101, 30], [293, 366, 18], [881, 1074, 67], [695, 765, 83], [138, 261, 18], [759, 765, 28], [670, 696, 96], [283, 305, 90], [499, 556, 65], [550, 588, 62], [131, 250, 93], [399, 432, 42], [136, 310, 33], [887, 1027, 90], [246, 255, 64], [421, 424, 76], [185, 318, 48], [91, 290, 76], [220, 221, 57], [263, 363, 68], [29, 96, 42], [50, 167, 23], [779, 915, 94], [877, 891, 75], [203, 266, 21], [705, 824, 33], [517, 652, 16], [103, 241, 84], [314, 424, 15], [946, 1031, 82], [856, 1051, 77], [844, 921, 82], [628, 770, 72], [178, 344, 90], [549, 731, 95], [771, 915, 87], [31, 193, 48], [892, 1053, 3], [913, 1036, 32], [470, 662, 51], [951, 1103, 63], [974, 1084, 42], [387, 548, 9], [821, 854, 18], [392, 558, 18], [4, 78, 22], [583, 616, 44], [956, 1018, 63], [631, 721, 14], [612, 642, 98], [194, 221, 4], [88, 148, 72], [281, 453, 14], [642, 835, 12], [924, 1085, 61], [326, 382, 87], [945, 963, 65], [43, 232, 43], [499, 598, 85], [777, 805, 8], [955, 962, 30], [660, 853, 99], [810, 864, 28], [206, 266, 22], [235, 313, 42], [928, 949, 86], [93, 282, 5], [712, 778, 19], [820, 1016, 41], [172, 316, 0], [580, 675, 16], [632, 754, 90], [39, 119, 17], [733, 853, 65], [73, 219, 72], [188, 211, 73], [107, 226, 23], [577, 689, 38], [544, 622, 99], [373, 478, 49], [161, 306, 96], [222, 372, 62], [61, 130, 98], [697, 862, 59], [344, 515, 96], [726, 863, 14], [627, 772, 49], [248, 415, 91], [460, 655, 91], [770, 846, 34], [339, 351, 11], [851, 1018, 87], [659, 755, 30], [424, 497, 58], [592, 711, 5], [131, 203, 50], [685, 795, 38], [487, 490, 60], [670, 680, 64], [418, 555, 55], [603, 666, 42], [13, 146, 47], [587, 750, 76], [654, 754, 98], [331, 496, 57], [365, 412, 59], [795, 934, 68], [731, 925, 9], [473, 487, 23], [118, 271, 18], [956, 959, 22], [349, 509, 42], [869, 896, 16], [858, 963, 85], [970, 1060, 74], [811, 974, 21], [124, 227, 47], [835, 875, 73], [285, 304, 54], [899, 912, 93], [782, 875, 86], [993, 1026, 55], [955, 1096, 66], [951, 1005, 94], [678, 839, 14], [557, 664, 14], [384, 583, 6], [893, 1050, 85], [410, 520, 34], [579, 729, 72], [183, 267, 14], [924, 994, 67], [917, 1051, 42], [160, 191, 94], [187, 382, 72], [949, 1124, 38], [261, 428, 99], [388, 417, 4], [956, 1028, 1], [986, 1055, 94], [262, 340, 82], [513, 654, 92], [168, 309, 89], [354, 528, 0], [894, 981, 16], [814, 1002, 17], [490, 577, 85], [743, 930, 18], [597, 639, 18], [518, 581, 48], [244, 362, 34], [616, 623, 21], [718, 813, 36], [544, 592, 83], [376, 568, 40], [68, 244, 98], [190, 330, 30], [415, 511, 82], [432, 498, 31], [494, 572, 6], [291, 372, 58], [17, 25, 34], [757, 816, 99], [740, 832, 90], [530, 696, 92], [106, 245, 31], [210, 291, 43], [518, 530, 0], [678, 844, 33], [818, 997, 5], [904, 1021, 64], [614, 781, 81], [273, 316, 48], [171, 268, 28], [382, 572, 26], [796, 926, 21], [436, 459, 22], [423, 517, 61], [122, 294, 23], [833, 987, 27], [470, 666, 79], [205, 235, 45], [757, 834, 18], [694, 891, 92], [209, 391, 12], [565, 755, 75], [247, 281, 62], [753, 841, 59], [832, 950, 13]] [[4, 8, 22], [9, 60, 82], [61, 244, 98], [245, 260, 96], [261, 428, 99], [429, 515, 96], [516, 543, 92], [544, 622, 99], [623, 642, 98], [643, 653, 95], [654, 659, 98], [660, 853, 99], [854, 923, 94], [924, 950, 90], [951, 1055, 94], [1056, 1060, 74], [1061, 1074, 67], [1075, 1096, 66], [1097, 1103, 63], [1104, 1124, 38], [1125, 1166, 14]] TODO diff --git a/test_data/dutch_national_flag.tsv b/test_data/dutch_national_flag.tsv index 39e415556..8eb1b3d9c 100644 --- a/test_data/dutch_national_flag.tsv +++ b/test_data/dutch_national_flag.tsv @@ -1,5 +1,4 @@ array(int) int void -@ data pivot_index [0, 1, 1, 2] 2 Basic test, unchanged [1, 1, 0, 2] 1 Basic test, one swap [1] 0 Corner-case input: single entry diff --git a/test_data/dutch_national_flag_small.tsv b/test_data/dutch_national_flag_small.tsv index 033eecec6..d307e943c 100644 --- a/test_data/dutch_national_flag_small.tsv +++ b/test_data/dutch_national_flag_small.tsv @@ -1,5 +1,4 @@ array(int) int void -@ data pivotIdx [0, 1, 1, 2] 2 Basic test, unchanged [1, 1, 0, 2] 1 Basic test, one swap [1] 0 Corner-case input: single entry diff --git a/test_data/element_appearing_once.tsv b/test_data/element_appearing_once.tsv index 617e8e670..3616921ed 100644 --- a/test_data/element_appearing_once.tsv +++ b/test_data/element_appearing_once.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [2, 4, 2, 5, 2, 5, 5] 4 Example in the book [-15, -22, 20, 13, -23, -7, -7, 27, -18, 4, 10, -19, -23, 28, -1, 2, 1, 6, 2, 15, 6, 13, 4, -16, 27, 9, 18, 0, -15, 18, -18, -22, -13, -19, -18, 13, 28, -13, -13, 6, 20, 2, -1, 1, 4, -7, -16, 9, 10, 20, -23, -16, -22, 28, -17, 18, -1, 0, 0, -15, 1, 9, -19, 15, 27, 15, 10] -17 TODO [15, 21, 25, -26, 0, 5, -20, -25, 1, 20, 9, -26, 27, -13, 13, -17, -17, 16, -18, 21, -26, -25, 16, 20, -18, 20, 15, 9, -13, 27, -11, -13, 25, -18, 1, 26, 5, -8, 21, 26, -12, 0, -20, 13, 27, 0, 16, -8, 5, -25, -17, -8, -12, 26, 9, 1, 8, -12, 13, 8, 25, 8, -20, 15] -11 TODO diff --git a/test_data/enumerate_balanced_parentheses.tsv b/test_data/enumerate_balanced_parentheses.tsv index eeec0140b..939b346da 100644 --- a/test_data/enumerate_balanced_parentheses.tsv +++ b/test_data/enumerate_balanced_parentheses.tsv @@ -1,5 +1,4 @@ int array(string) -@ num_pairs 0 [""] TODO 1 ["()"] TODO 2 ["(())", "()()"] TODO diff --git a/test_data/enumerate_palindromic_decompositions.tsv b/test_data/enumerate_palindromic_decompositions.tsv index e69c44086..431688cbc 100644 --- a/test_data/enumerate_palindromic_decompositions.tsv +++ b/test_data/enumerate_palindromic_decompositions.tsv @@ -1,5 +1,4 @@ string array(array(string)) -@ input pphhphihpi [["p", "p", "h", "h", "p", "h", "i", "h", "p", "i"], ["p", "p", "h", "h", "p", "hih", "p", "i"], ["p", "p", "h", "h", "phihp", "i"], ["p", "p", "h", "hph", "i", "h", "p", "i"], ["p", "p", "hh", "p", "h", "i", "h", "p", "i"], ["p", "p", "hh", "p", "hih", "p", "i"], ["p", "p", "hh", "phihp", "i"], ["p", "phhp", "h", "i", "h", "p", "i"], ["p", "phhp", "hih", "p", "i"], ["pp", "h", "h", "p", "h", "i", "h", "p", "i"], ["pp", "h", "h", "p", "hih", "p", "i"], ["pp", "h", "h", "phihp", "i"], ["pp", "h", "hph", "i", "h", "p", "i"], ["pp", "hh", "p", "h", "i", "h", "p", "i"], ["pp", "hh", "p", "hih", "p", "i"], ["pp", "hh", "phihp", "i"]] TODO zpp [["z", "p", "p"], ["z", "pp"]] TODO hhi [["h", "h", "i"], ["hh", "i"]] TODO diff --git a/test_data/enumerate_trees.tsv b/test_data/enumerate_trees.tsv index f52eeb737..8607ddbab 100644 --- a/test_data/enumerate_trees.tsv +++ b/test_data/enumerate_trees.tsv @@ -1,5 +1,4 @@ int array(array(int)) -@ i 0 [[0]] TODO 1 [[1, 0, 0]] TODO 2 [[1, 0, 1, 0, 0], [1, 1, 0, 0, 0]] TODO diff --git a/test_data/evaluate_rpn.tsv b/test_data/evaluate_rpn.tsv index 40588efea..835348658 100644 --- a/test_data/evaluate_rpn.tsv +++ b/test_data/evaluate_rpn.tsv @@ -1,5 +1,4 @@ string int -@ expression 7,7,/ 1 TODO 163,6035,5,/,74,/,+,14,10,*,-,21,6,*,-,58,49,*,+ 2755 TODO 209,140,+,10,27,*,5,*,+,278,+,1637,+ 3614 TODO diff --git a/test_data/even_odd_array.tsv b/test_data/even_odd_array.tsv index 662ed9509..797052090 100644 --- a/test_data/even_odd_array.tsv +++ b/test_data/even_odd_array.tsv @@ -1,5 +1,4 @@ array(int) void -@ A [39, 30, 220, 101, 95, 142, 105, 121, 130, 186, 172, 186, 224, 180, 107, 140, 43, 147, 77, 112, 183, 110, 112, 76, 220, 55, 113, 196, 109, 52, 25, 177, 21, 21, 154, 103, 64, 69, 93, 66, 170, 228, 46, 212, 41, 123, 152, 225, 175, 230, 163, 218, 9, 207, 64, 58, 17, 182, 107, 221, 108, 104, 231, 198, 189, 76, 55, 8, 61, 113, 233, 176, 77, 100, 129, 85, 65, 38, 60, 134, 118, 195, 18, 27, 170, 191, 203, 40, 20, 69, 141, 100, 99, 139, 9, 198, 111, 114, 105, 195, 27, 29, 53, 101, 56, 95, 79, 99, 80, 233, 140, 165, 128, 68, 63, 64, 60, 29, 130, 129, 152, 11, 204, 175, 226, 13, 135, 211, 69, 7, 219, 48, 116, 95, 23, 214, 168, 38, 102, 144, 213, 2, 82, 177, 95, 32, 49, 51, 117, 130, 24, 232, 233, 155, 168, 58, 88, 120, 139, 166, 69, 51, 91, 229, 191, 80, 101, 71, 229, 143, 215, 89, 190, 89, 16, 53, 88, 23, 191, 164, 79, 176, 139, 12, 161, 18, 174, 45, 74, 183, 207, 78, 184, 19, 106, 156, 207, 129, 181, 41, 144, 223, 168, 134, 60, 229, 110, 83, 6, 141, 234, 164, 218, 230, 35, 11, 125, 111, 97, 19, 106, 37, 10, 175, 113, 105, 11, 164, 165, 158, 137, 201, 85, 82] TODO [64, 249, 366, 449, 198, 291, 51, 136, 251, 374, 410, 429, 302, 182, 282, 32, 139, 184, 35, 278, 364, 132, 484, 174, 62, 189, 236, 144, 246, 99, 312, 317, 310, 145, 377, 12, 173, 318, 350, 0, 273, 99, 73, 495, 323, 48, 473, 269, 3, 14, 425, 213, 419, 420, 296, 375, 373, 103, 458, 290, 8, 262, 270, 458, 103, 380, 147, 30, 442, 24, 59, 153, 357, 77, 143, 376, 504, 412, 236, 5, 95, 475, 246, 315, 189, 271, 115, 143, 464, 422, 467, 242, 183, 442, 159, 349, 491, 212, 426, 246, 269, 155, 276, 314, 404, 50, 112, 271, 496, 238, 476, 283, 178, 494, 65, 105, 268, 115, 70, 243, 3, 88, 421, 327, 392, 303, 100, 6, 12, 51, 103, 312, 86, 83, 339, 128, 501, 214, 411, 84, 242, 492, 497, 159, 149, 112, 63, 126, 64, 400, 32, 378, 184, 199, 82, 131, 247, 344, 450, 418, 41, 101, 270, 164, 163, 205, 336, 338, 312, 421, 102, 113, 191, 271, 122, 119, 332, 157, 380, 274, 298, 241, 433, 112, 408, 302, 481, 261, 313, 227, 178, 155, 68, 301, 211, 102, 304, 358, 370, 3, 207, 99, 138, 427, 508, 252, 230, 3, 271, 434, 407, 52, 168, 58, 75, 179, 163, 206, 501, 60, 136, 139, 195, 56, 412, 449, 333, 416, 248, 467, 73, 483, 490, 316, 432, 255, 268, 124, 226, 53, 426, 348, 21, 132, 55, 501, 242, 349, 447, 427, 495, 428, 100, 282, 72, 391, 139, 368, 216, 363, 244, 207, 169, 485, 396, 176, 208, 341, 232, 214, 237, 116, 221, 183, 368, 447, 181, 277, 253, 370, 250, 99, 362, 207, 110, 197, 103, 127, 161, 100, 437, 157, 312, 221, 336, 350, 79, 56, 150, 165, 53, 496, 311, 460, 152, 39, 154, 18, 459, 361, 46, 84, 246, 173, 2, 466, 336, 480, 382, 127, 332, 153, 425, 325, 239, 255, 116, 94, 140, 105, 52, 84, 452, 412, 81, 312, 146, 255, 51, 418, 321, 175, 129, 257, 412, 232, 338, 275, 66, 408, 401, 303, 90, 275, 292, 39, 52, 2, 411, 466, 236, 343, 437, 218, 455, 189, 315, 508, 309, 217, 15, 384, 105, 502, 148, 202, 479, 71, 377, 461, 497, 149, 319, 401, 195, 224, 252, 210, 333, 382, 111, 271, 169, 295, 87, 312, 441, 197, 235, 337, 140, 350, 380, 209, 370, 78, 186, 16, 95, 149, 126, 14, 498, 440, 356, 281, 347, 477, 345, 8, 0, 81, 290, 8, 268, 357, 0, 292, 153, 38, 394, 141, 230, 91, 218, 4, 445, 345, 393, 248, 248, 248, 57, 86, 142, 225, 174, 232, 344, 77, 254, 149, 67, 346, 105, 238, 142, 342, 65, 65, 275, 291, 196, 427, 215, 128, 507, 401, 190, 376, 219, 384, 281, 211, 142, 59, 235, 13, 34, 174, 463, 180, 135, 289, 254, 244, 23, 182, 272, 173, 108, 48, 493, 502, 295, 315, 181, 28, 85, 351, 253, 343, 222, 28, 102, 208, 12, 447] TODO [4, 3, 4, 1, 2] TODO diff --git a/test_data/even_odd_list_merge.tsv b/test_data/even_odd_list_merge.tsv index ba0c24e1c..335413873 100644 --- a/test_data/even_odd_list_merge.tsv +++ b/test_data/even_odd_list_merge.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) -@ L [] [] TODO [214, 113, 315, 38, 20, 293, 163, 306, 204, 302, 234, 71, 1, 236, 112, 114, 251, 111, 333, 222, 8, 130, 146, 84, 55, 177, 133, 351, 244, 15, 295, 198, 27, 384, 344, 271, 278, 256, 200, 382, 59, 25, 357, 307, 274, 311, 317, 74, 125, 36, 185, 374, 230, 24, 69, 292, 21, 153, 243, 7, 134, 186, 92, 40, 60, 37, 150, 308, 376, 253, 221, 365, 363, 136, 219, 117, 258, 14, 267, 304, 156, 49, 31, 248, 319, 35, 362, 355, 138, 325, 207, 189, 16, 98, 201, 34, 303, 44, 80, 275, 46, 29, 122, 48, 151, 124, 212, 135, 119, 358, 18, 175, 280, 47, 17, 199, 286, 137, 194, 79, 329, 93, 192, 322, 100, 380, 143, 157, 169, 367, 326, 368, 335, 164, 331, 197, 12, 202, 115, 283, 13, 19, 359, 179, 57, 346, 216, 232, 66, 257, 391, 245, 299, 174, 182, 378, 227, 129, 161, 231, 152, 290, 343, 91, 190, 324, 184, 318, 67, 225, 188, 97, 341, 105, 334, 89, 90, 68, 187, 3, 323, 96, 310, 273, 53, 76, 228, 388, 284, 249, 88, 104, 142, 215, 281, 61, 340, 352, 337, 288, 141, 62, 385, 233, 33, 300, 121, 264, 272, 70, 23, 32, 213, 56, 72, 160, 51, 218, 263, 240, 43, 63, 395, 181, 270, 39, 147, 77, 10, 383, 171, 330, 387, 285, 241, 297, 106, 95, 75, 354, 144, 390, 211, 107, 289, 42, 120, 353, 348, 154, 87, 336, 172, 73, 178, 94, 266, 83, 255, 191, 183, 162, 313, 349, 373, 242, 5, 81, 132, 58, 173, 328, 131, 379, 393, 369, 239, 64, 4, 11, 238, 168, 277, 140, 148, 85, 206, 296, 375, 116, 205, 28, 364, 110, 396, 350, 208, 82, 203, 276, 327, 394, 259, 356, 377, 312, 145, 41, 247, 338, 99, 196, 102, 268, 193, 252, 332, 139, 316, 262, 26, 261, 78, 86, 246, 109, 210, 101, 392, 287, 165, 65, 229, 159, 155, 320, 347, 282, 305, 158, 342, 250, 170, 370, 237, 149, 2, 22, 301, 260, 50, 6, 128, 386, 254, 298, 389, 54, 366, 118, 309, 180, 371, 123, 360, 209, 291, 372, 195, 126, 103, 9, 52, 217, 167, 345, 127, 224, 381, 314, 361, 269, 226, 223, 279, 45, 321, 265, 235, 220, 294, 166, 176, 30, 339, 108] [214, 315, 20, 163, 204, 234, 1, 112, 251, 333, 8, 146, 55, 133, 244, 295, 27, 344, 278, 200, 59, 357, 274, 317, 125, 185, 230, 69, 21, 243, 134, 92, 60, 150, 376, 221, 363, 219, 258, 267, 156, 31, 319, 362, 138, 207, 16, 201, 303, 80, 46, 122, 151, 212, 119, 18, 280, 17, 286, 194, 329, 192, 100, 143, 169, 326, 335, 331, 12, 115, 13, 359, 57, 216, 66, 391, 299, 182, 227, 161, 152, 343, 190, 184, 67, 188, 341, 334, 90, 187, 323, 310, 53, 228, 284, 88, 142, 281, 340, 337, 141, 385, 33, 121, 272, 23, 213, 72, 51, 263, 43, 395, 270, 147, 10, 171, 387, 241, 106, 75, 144, 211, 289, 120, 348, 87, 172, 178, 266, 255, 183, 313, 373, 5, 132, 173, 131, 393, 239, 4, 238, 277, 148, 206, 375, 205, 364, 396, 208, 203, 327, 259, 377, 145, 247, 99, 102, 193, 332, 316, 26, 78, 246, 210, 392, 165, 229, 155, 347, 305, 342, 170, 237, 2, 301, 50, 128, 254, 389, 366, 309, 371, 360, 291, 195, 103, 52, 167, 127, 381, 361, 226, 279, 321, 235, 294, 176, 339, 113, 38, 293, 306, 302, 71, 236, 114, 111, 222, 130, 84, 177, 351, 15, 198, 384, 271, 256, 382, 25, 307, 311, 74, 36, 374, 24, 292, 153, 7, 186, 40, 37, 308, 253, 365, 136, 117, 14, 304, 49, 248, 35, 355, 325, 189, 98, 34, 44, 275, 29, 48, 124, 135, 358, 175, 47, 199, 137, 79, 93, 322, 380, 157, 367, 368, 164, 197, 202, 283, 19, 179, 346, 232, 257, 245, 174, 378, 129, 231, 290, 91, 324, 318, 225, 97, 105, 89, 68, 3, 96, 273, 76, 388, 249, 104, 215, 61, 352, 288, 62, 233, 300, 264, 70, 32, 56, 160, 218, 240, 63, 181, 39, 77, 383, 330, 285, 297, 95, 354, 390, 107, 42, 353, 154, 336, 73, 94, 83, 191, 162, 349, 242, 81, 58, 328, 379, 369, 64, 11, 168, 140, 85, 296, 116, 28, 110, 350, 82, 276, 394, 356, 312, 41, 338, 196, 268, 252, 139, 262, 261, 86, 109, 101, 287, 65, 159, 320, 282, 158, 250, 370, 149, 22, 260, 6, 386, 298, 54, 118, 180, 123, 209, 372, 126, 9, 217, 345, 224, 314, 269, 223, 45, 265, 220, 166, 30, 108] TODO [7, 11, 37, 8, 19, 15, 34, 35, 23, 27, 12, 17, 16, 4, 21, 33, 24, 10, 9, 14, 28, 31, 20, 30, 3, 25, 18, 22, 13, 6, 26, 29, 5, 32, 1, 36, 2] [7, 37, 19, 34, 23, 12, 16, 21, 24, 9, 28, 20, 3, 18, 13, 26, 5, 1, 2, 11, 8, 15, 35, 27, 17, 4, 33, 10, 14, 31, 30, 25, 22, 6, 29, 32, 36] TODO diff --git a/test_data/fibonacci.tsv b/test_data/fibonacci.tsv index aa53546ba..5bca8648f 100644 --- a/test_data/fibonacci.tsv +++ b/test_data/fibonacci.tsv @@ -1,5 +1,4 @@ int int -@ n 0 0 TODO 1 1 TODO 2 1 TODO diff --git a/test_data/find_missing_and_duplicate.tsv b/test_data/find_missing_and_duplicate.tsv index 60a17970a..32db5ea59 100644 --- a/test_data/find_missing_and_duplicate.tsv +++ b/test_data/find_missing_and_duplicate.tsv @@ -1,5 +1,4 @@ array(int) tuple(int[duplicate], int[missing]) -@ A [0, 0] [0, 1] TODO [12, 14, 41, 74, 79, 22, 16, 11, 24, 76, 101, 27, 60, 31, 0, 13, 53, 90, 89, 1, 4, 85, 9, 77, 43, 93, 51, 86, 35, 5, 67, 71, 21, 46, 56, 95, 66, 19, 20, 44, 73, 91, 61, 69, 83, 34, 17, 29, 58, 78, 36, 49, 99, 38, 96, 40, 92, 37, 33, 15, 47, 5, 23, 3, 26, 64, 52, 81, 82, 8, 28, 25, 32, 65, 68, 70, 72, 94, 63, 7, 55, 10, 45, 100, 84, 2, 54, 98, 50, 39, 6, 88, 48, 97, 57, 59, 87, 62, 75, 30, 18, 42] [5, 80] TODO [183, 193, 69, 30, 46, 134, 28, 117, 50, 147, 49, 0, 85, 14, 101, 157, 76, 141, 9, 92, 6, 34, 127, 4, 184, 29, 51, 156, 2, 136, 106, 54, 196, 5, 90, 153, 25, 186, 84, 79, 63, 150, 114, 68, 175, 35, 87, 128, 140, 64, 148, 8, 86, 113, 32, 41, 154, 172, 116, 107, 155, 21, 48, 33, 181, 158, 115, 59, 10, 75, 56, 132, 78, 110, 170, 18, 151, 58, 99, 40, 81, 180, 52, 66, 144, 168, 142, 119, 73, 109, 93, 77, 105, 16, 13, 138, 163, 137, 125, 83, 80, 97, 123, 191, 118, 27, 146, 44, 164, 39, 126, 201, 190, 169, 160, 91, 98, 124, 108, 198, 60, 188, 197, 152, 200, 174, 95, 103, 7, 67, 65, 162, 100, 194, 187, 70, 37, 129, 38, 131, 12, 15, 96, 133, 53, 43, 71, 173, 47, 45, 72, 176, 192, 11, 189, 182, 177, 195, 1, 35, 24, 112, 166, 57, 179, 149, 31, 139, 121, 23, 104, 159, 167, 111, 165, 61, 122, 82, 22, 74, 102, 62, 120, 89, 88, 36, 161, 199, 143, 42, 135, 178, 17, 145, 94, 55, 20, 3, 26, 19, 130, 185] [35, 171] TODO diff --git a/test_data/find_salary_threshold.tsv b/test_data/find_salary_threshold.tsv index 8d1364f4c..47716f9e5 100644 --- a/test_data/find_salary_threshold.tsv +++ b/test_data/find_salary_threshold.tsv @@ -1,5 +1,4 @@ int array(int) float -@ target_payroll current_salaries 210 [20, 30, 40, 90, 100] 60.0 Example in the book 280 [20, 30, 40, 90, 100] 100.0 TODO 50 [20, 30, 40, 90, 100] 10.0 TODO diff --git a/test_data/first_missing_positive_entry.tsv b/test_data/first_missing_positive_entry.tsv index f84af7ebe..ba337017e 100644 --- a/test_data/first_missing_positive_entry.tsv +++ b/test_data/first_missing_positive_entry.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [9, 51, 15, 16, 14, -5, 13, 5, 37, 3, 36, 27, 7, 34, 50, 35, 37, 17, 40, 17, 9, 29, 33, -2, 24, 14, 10, 5, -1, 25, 45, 52, 39, 40, 32, 52, 19, 33, 6, 15, 32, -4, 7, -6, 12, -7, -6, 27, 27, 42, 10, 52] 1 TODO [-1, 3, 3, 3, 1] 2 TODO [117, -5, 115, 11, 109, 77, 87, 18, 11, 94, 67, 116, -2, 43, 28, 98, 51, 104, 105, 80, 16, 79, 118, 63, -6, 56, 105, 69, 55, 70, 80, 51, 23, 85, 40, 82, 87, 37, 84, 124, 42, 53, 83, 29, 50, 66, -11, 27, 88, 27, 38, 24, -2, 41, 5, -4, 55, 38, 46, 96, 74, 77, 42, 117, 43, 46, 69, 67, 32, 125, 97, 119, 2, 103, 50, 26, -11, 85, 56, 51, 61, 68, 85, 28, 118, 65, 66, 90, 69, 66, 91, 73, 76, 110, 2, 60, 110, 83, 3, 24, 17, 26, 36, 58, 5, 1, 47, -9, 110, 80, -3, 22, -2, 65, 76, 95, 88, 82, 94, 2, 47, 118, 25, -7, 55] 4 TODO diff --git a/test_data/gcd.tsv b/test_data/gcd.tsv index 3d14735ea..b4e2cb295 100644 --- a/test_data/gcd.tsv +++ b/test_data/gcd.tsv @@ -1,5 +1,4 @@ long long long -@ x y 424953311 11 1 TODO 10758471 200 1 TODO 167 82187317 1 TODO diff --git a/test_data/graph_clone.tsv b/test_data/graph_clone.tsv index 68a224178..56acfcf57 100644 --- a/test_data/graph_clone.tsv +++ b/test_data/graph_clone.tsv @@ -1,5 +1,4 @@ int[k] array(tuple(int[from], int[to])[edge]) void -@ k edges 15 [[0, 1], [1, 0], [1, 2], [2, 1], [2, 3], [3, 2], [3, 4], [4, 3], [4, 5], [5, 4], [5, 6], [6, 5], [6, 7], [7, 6], [7, 8], [8, 7], [8, 9], [9, 8], [9, 10], [10, 9], [10, 11], [11, 10], [11, 12], [12, 11], [12, 13], [13, 12], [13, 14], [14, 13], [7, 0], [0, 7], [0, 10], [10, 0], [5, 11], [11, 5], [13, 10], [10, 13], [6, 11], [11, 6], [14, 12], [12, 14], [6, 2], [2, 6], [14, 6], [6, 14], [9, 11], [11, 9], [3, 8], [8, 3], [3, 11], [11, 3], [0, 8], [8, 0], [13, 9], [9, 13], [9, 2], [2, 9], [14, 2], [2, 14], [5, 2], [2, 5], [14, 4], [4, 14], [6, 1], [1, 6], [0, 2], [2, 0], [3, 10], [10, 3], [14, 1], [1, 14], [3, 7], [7, 3], [14, 7], [7, 14], [12, 5], [5, 12], [10, 7], [7, 10], [10, 12], [12, 10], [8, 4], [4, 8], [4, 13], [13, 4], [14, 3], [3, 14], [11, 14], [14, 11], [7, 2], [2, 7], [12, 1], [1, 12], [1, 11], [11, 1], [9, 14], [14, 9], [6, 9], [9, 6], [12, 4], [4, 12], [6, 13], [13, 6], [9, 4], [4, 9], [10, 1], [1, 10], [14, 0], [0, 14], [8, 12], [12, 8], [12, 9], [9, 12], [2, 4], [4, 2], [7, 12], [12, 7], [4, 0], [0, 4], [2, 12], [12, 2], [13, 7], [7, 13], [12, 3], [3, 12], [10, 4], [4, 10], [7, 9], [9, 7], [1, 5], [5, 1], [9, 1], [1, 9], [14, 8], [8, 14], [7, 1], [1, 7], [8, 11], [11, 8], [9, 0], [0, 9], [8, 5], [5, 8], [0, 13], [13, 0], [0, 6], [6, 0], [9, 5], [5, 9], [10, 14], [14, 10], [6, 8], [8, 6], [13, 1], [1, 13], [4, 11], [11, 4], [1, 4], [4, 1], [7, 5], [5, 7], [5, 14], [14, 5], [1, 8], [8, 1], [2, 13], [13, 2], [13, 8], [8, 13], [4, 6], [6, 4], [5, 10], [10, 5], [0, 3], [3, 0], [3, 9], [9, 3], [11, 2], [2, 11], [10, 8], [8, 10], [2, 8], [8, 2], [5, 13], [13, 5], [3, 5], [5, 3], [12, 0], [0, 12], [5, 0], [0, 5], [6, 3], [3, 6], [6, 10], [10, 6]] TODO 6 [[0, 1], [1, 0], [1, 2], [2, 1], [2, 3], [3, 2], [3, 4], [4, 3], [4, 5], [5, 4], [5, 0], [0, 5], [3, 1], [1, 3]] TODO 12 [[0, 1], [1, 0], [1, 2], [2, 1], [2, 3], [3, 2], [3, 4], [4, 3], [4, 5], [5, 4], [5, 6], [6, 5], [6, 7], [7, 6], [7, 8], [8, 7], [8, 9], [9, 8], [9, 10], [10, 9], [10, 11], [11, 10], [2, 8], [8, 2], [10, 2], [2, 10], [2, 0], [0, 2]] TODO diff --git a/test_data/gray_code.tsv b/test_data/gray_code.tsv index 485cd8b85..5f28bb102 100644 --- a/test_data/gray_code.tsv +++ b/test_data/gray_code.tsv @@ -1,5 +1,4 @@ int void -@ num_bits 0 TODO 1 TODO 2 TODO diff --git a/test_data/group_equal_entries.tsv b/test_data/group_equal_entries.tsv index a9c9d2938..ebd39eba5 100644 --- a/test_data/group_equal_entries.tsv +++ b/test_data/group_equal_entries.tsv @@ -1,5 +1,4 @@ array(tuple(int[age], string[name])) void -@ v [[13, "Oliver"], [4, "Quincy"], [10, "Bob"], [27, "Quincy"], [11, "Sam"], [11, "Frank"], [15, "Mary"], [3, "Thomas"], [28, "William"], [26, "Adam"], [19, "Mary"], [14, "Vincent"], [29, "Harry"], [31, "Sam"], [9, "Vincent"], [5, "Vincent"], [11, "Vincent"], [20, "David"], [26, "Nancy"], [22, "William"], [8, "Adam"], [8, "Quincy"], [9, "Sam"], [5, "Thomas"], [13, "Quincy"], [11, "Eddie"], [20, "Adam"], [1, "Sam"], [27, "Zachary"], [19, "Bob"], [2, "Zachary"], [30, "Frank"], [3, "Quincy"], [17, "Peter"], [12, "Ike"], [24, "Xavier"], [5, "Harry"], [19, "Xavier"], [13, "Yogi"], [3, "Frank"], [30, "Eddie"], [1, "Thomas"], [29, "Thomas"], [19, "Larry"], [9, "Harry"], [10, "Ike"], [3, "Sam"], [24, "Vincent"], [2, "Roger"], [6, "David"], [10, "Jim"], [1, "Xavier"], [11, "Mary"], [6, "Oliver"], [21, "Nancy"], [31, "Zachary"], [16, "Peter"], [31, "Larry"], [4, "Oliver"], [2, "Kenny"], [29, "William"], [31, "David"], [17, "Ike"], [1, "Ike"], [18, "Thomas"], [19, "Xavier"], [31, "Zachary"], [7, "Roger"], [14, "Ike"], [18, "Adam"], [30, "Nancy"], [1, "Mary"], [30, "Adam"], [16, "Sam"], [22, "Thomas"], [3, "Kenny"], [15, "Ike"], [4, "Nancy"], [15, "Yogi"], [9, "Quincy"], [18, "Sam"], [22, "Roger"], [1, "Jim"], [2, "William"], [3, "Harry"], [19, "Adam"], [24, "Quincy"], [30, "Peter"], [24, "Quincy"], [27, "Ike"], [4, "Nancy"], [27, "Bob"], [13, "Oliver"], [11, "Vincent"], [20, "Mary"], [31, "Harry"], [14, "Larry"], [5, "Peter"], [17, "Sam"], [7, "Larry"], [2, "Quincy"], [30, "Ike"], [16, "Adam"], [8, "Peter"], [10, "David"], [19, "Mary"], [13, "Jim"], [29, "Peter"], [14, "David"], [13, "Carol"], [12, "Thomas"], [19, "Adam"], [12, "Mary"], [1, "Ike"], [28, "Nancy"], [17, "Frank"], [19, "Bob"], [11, "Uncle"], [25, "Roger"], [5, "Harry"], [16, "Zachary"], [15, "Peter"], [18, "Zachary"], [26, "Yogi"], [31, "Vincent"], [14, "Mary"], [23, "Sam"], [12, "Larry"], [6, "Peter"], [18, "Mary"], [2, "David"], [28, "Nancy"], [5, "Thomas"], [11, "Vincent"], [16, "Bob"], [26, "Frank"], [12, "Roger"], [5, "Roger"], [27, "Quincy"], [25, "Oliver"], [17, "Xavier"], [23, "Nancy"], [16, "Bob"], [9, "Uncle"], [10, "Uncle"], [16, "Larry"], [13, "Kenny"], [16, "Frank"], [17, "Carol"], [12, "Nancy"], [27, "Bob"], [23, "Adam"], [14, "Yogi"], [16, "Bob"], [19, "David"], [12, "Larry"], [15, "Bob"], [9, "Eddie"], [24, "Carol"], [9, "Ike"], [7, "George"], [11, "Larry"], [1, "Roger"], [14, "Zachary"], [4, "Vincent"], [16, "Quincy"], [13, "Eddie"], [2, "Jim"], [16, "Jim"], [28, "Vincent"], [13, "Bob"], [16, "Quincy"], [29, "David"], [17, "Kenny"], [12, "Roger"], [28, "Uncle"], [29, "Nancy"], [6, "Roger"], [15, "Roger"]] TODO [[5, "Quincy"], [4, "Jim"], [4, "Vincent"], [5, "Sam"], [3, "Quincy"], [4, "Zachary"], [3, "David"], [5, "Xavier"], [4, "David"], [5, "George"], [2, "Yogi"], [5, "Carol"], [4, "Jim"], [2, "Oliver"], [4, "Roger"], [4, "Vincent"], [1, "Quincy"], [3, "Frank"], [2, "Vincent"], [4, "Quincy"], [5, "Uncle"], [3, "Adam"], [4, "Jim"], [5, "Uncle"], [1, "Harry"], [3, "Thomas"], [5, "Vincent"], [3, "Ike"], [5, "William"], [2, "Xavier"], [2, "Uncle"], [5, "Adam"], [2, "Xavier"], [4, "Carol"], [5, "Sam"], [3, "Zachary"], [5, "Quincy"], [4, "Bob"], [2, "William"], [4, "Peter"], [4, "Carol"], [3, "Harry"], [3, "Oliver"], [1, "Ike"], [5, "Mary"], [3, "Zachary"], [2, "Uncle"], [4, "Mary"], [5, "Vincent"], [4, "Thomas"], [1, "Nancy"], [3, "Roger"], [2, "Adam"], [4, "Adam"], [5, "Harry"], [2, "Sam"], [1, "Peter"], [5, "Kenny"], [4, "Frank"], [4, "Adam"], [2, "Quincy"], [4, "Kenny"], [2, "Sam"], [2, "Mary"], [3, "Bob"], [4, "Bob"], [3, "Carol"], [2, "Bob"], [4, "Jim"], [2, "Adam"], [1, "Uncle"], [4, "Vincent"], [5, "David"], [3, "Larry"], [4, "Kenny"], [2, "Kenny"], [2, "Uncle"], [4, "Xavier"], [5, "Sam"]] TODO [[1, "Frank"], [3, "Peter"], [3, "Larry"], [2, "Thomas"], [3, "Larry"], [2, "Adam"], [3, "Jim"], [3, "Harry"], [2, "Xavier"], [3, "Sam"], [3, "Oliver"]] TODO diff --git a/test_data/hanoi.tsv b/test_data/hanoi.tsv index 6c09d67ac..732bd55b6 100644 --- a/test_data/hanoi.tsv +++ b/test_data/hanoi.tsv @@ -1,5 +1,4 @@ int void -@ num_rings 1 TODO 2 TODO 3 TODO diff --git a/test_data/huffman_coding.tsv b/test_data/huffman_coding.tsv index 15a0a2012..befb515f2 100644 --- a/test_data/huffman_coding.tsv +++ b/test_data/huffman_coding.tsv @@ -1,5 +1,4 @@ array(tuple(string[char], float[frequency])) float[average length] -@ symbols [["a", 8.167], ["b", 1.492], ["c", 2.782], ["d", 4.253], ["e", 12.702], ["f", 2.228], ["g", 2.015], ["h", 6.094], ["i", 6.966], ["j", 0.153], ["k", 0.772], ["l", 4.025], ["m", 2.406], ["n", 6.749], ["o", 7.507], ["p", 1.929], ["q", 0.095], ["r", 5.987], ["s", 6.327], ["t", 9.056], ["u", 2.758], ["v", 0.978], ["w", 2.36], ["x", 0.15], ["y", 1.974], ["z", 0.074]] 4.205019999999999 TODO [["K", 0.08867924528301886], ["f", 0.09811320754716982], ["B", 0.020754716981132074], ["A", 0.007547169811320755], ["x", 0.23773584905660378], ["P", 0.1018867924528302], ["U", 0.007547169811320755], ["a", 0.0], ["m", 0.062264150943396226], ["G", 0.011320754716981131], ["q", 0.09056603773584905], ["i", 0.011320754716981131], ["S", 0.2622641509433962]] 0.02939622641509434 TODO [["O", 0.005138339920948616], ["C", 0.1075098814229249], ["l", 0.010276679841897233], ["f", 0.0011857707509881424], ["g", 0.002766798418972332], ["i", 0.007905138339920948], ["Z", 0.01699604743083004], ["r", 0.01383399209486166], ["h", 0.001976284584980237], ["z", 0.11778656126482213], ["v", 0.04782608695652174], ["Q", 0.004347826086956522], ["B", 0.0011857707509881424], ["R", 0.008300395256916997], ["N", 0.0], ["y", 0.0015810276679841897], ["M", 0.08735177865612648], ["Y", 0.0], ["c", 0.0003952569169960474], ["G", 0.025296442687747035], ["p", 0.17470355731225296], ["u", 0.02806324110671937], ["b", 0.001976284584980237], ["L", 0.005533596837944664], ["S", 0.002766798418972332], ["J", 0.04782608695652174], ["A", 0.0003952569169960474], ["w", 0.0031620553359683794], ["j", 0.001976284584980237], ["D", 0.07509881422924901], ["K", 0.005138339920948616], ["d", 0.010276679841897233], ["E", 0.08972332015810276], ["e", 0.07193675889328063], ["k", 0.01225296442687747], ["o", 0.0031620553359683794], ["m", 0.004347826086956522]] 0.03962055335968378 TODO diff --git a/test_data/insert_in_list.tsv b/test_data/insert_in_list.tsv index 974f0779a..f41f7944f 100644 --- a/test_data/insert_in_list.tsv +++ b/test_data/insert_in_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int int linked_list(int) -@ L pos key [2, 4, 3] 1 1 [2, 1, 4, 3] TODO [2, 1, 4, 3] 3 10 [2, 1, 4, 10, 3] TODO [2, 1, 4, 10, 3] 5 -1 [2, 1, 4, 10, 3, -1] TODO diff --git a/test_data/insert_operators_in_string.tsv b/test_data/insert_operators_in_string.tsv index 32799a0a1..4a1d42a5a 100644 --- a/test_data/insert_operators_in_string.tsv +++ b/test_data/insert_operators_in_string.tsv @@ -1,5 +1,4 @@ array(int) int bool -@ digits target [2, 3, 4] 4 false TODO [1, 2, 3, 4] 11 true TODO [1, 2, 3, 2, 5, 3, 7, 8, 5, 9] 995 true TODO diff --git a/test_data/int_as_array_increment.tsv b/test_data/int_as_array_increment.tsv index f307d52c0..54d1de05d 100644 --- a/test_data/int_as_array_increment.tsv +++ b/test_data/int_as_array_increment.tsv @@ -1,5 +1,4 @@ array(int) array(int) -@ A [9, 9, 9, 9] [1, 0, 0, 0, 0] TODO [9, 9] [1, 0, 0] TODO [1] [2] TODO diff --git a/test_data/int_as_array_multiply.tsv b/test_data/int_as_array_multiply.tsv index dbeabaacc..81a35500e 100644 --- a/test_data/int_as_array_multiply.tsv +++ b/test_data/int_as_array_multiply.tsv @@ -1,5 +1,4 @@ array(int) array(int) array(int) -@ num1 num2 [0] [-1, 0, 0, 0] [0] TODO [0] [1, 0, 0, 0] [0] TODO [9] [9] [8, 1] TODO diff --git a/test_data/int_as_list_add.tsv b/test_data/int_as_list_add.tsv index 6b969a8e8..068627a2f 100644 --- a/test_data/int_as_list_add.tsv +++ b/test_data/int_as_list_add.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) linked_list(int) -@ L1 L2 [6, 7, 1, 9, 9] [3, 3, 1, 7, 4, 4, 5, 3, 0, 5, 6, 5, 1, 7, 0, 1, 8, 5] [9, 0, 3, 6, 4, 5, 5, 3, 0, 5, 6, 5, 1, 7, 0, 1, 8, 5] TODO [5] [4, 2, 9, 0, 2, 4, 0, 5, 5, 9, 3, 1, 7, 6] [9, 2, 9, 0, 2, 4, 0, 5, 5, 9, 3, 1, 7, 6] TODO [2, 0, 1, 2, 1, 4, 7, 6, 8, 0, 4, 7, 3, 3] [6, 7, 2, 1, 1, 0, 6, 4, 3, 1, 8, 1, 4, 7, 6, 1, 0, 0, 3, 5, 6, 5, 7] [8, 7, 3, 3, 2, 4, 3, 1, 2, 2, 2, 9, 7, 0, 7, 1, 0, 0, 3, 5, 6, 5, 7] TODO diff --git a/test_data/int_square_root.tsv b/test_data/int_square_root.tsv index ee0764e53..e1b1285cb 100644 --- a/test_data/int_square_root.tsv +++ b/test_data/int_square_root.tsv @@ -1,5 +1,4 @@ int int -@ k 2147483647 46340 TODO 0 0 TODO 1 1 TODO diff --git a/test_data/intersect_sorted_arrays.tsv b/test_data/intersect_sorted_arrays.tsv index 86af329e2..71189bdf4 100644 --- a/test_data/intersect_sorted_arrays.tsv +++ b/test_data/intersect_sorted_arrays.tsv @@ -1,5 +1,4 @@ array(int) array(int) array(int) -@ A B [2, 3, 3, 5, 5, 6, 7, 7, 8, 12] [5, 5, 6, 8, 8, 9, 10, 10] [5, 6, 8] TODO [1, 2, 3, 4] [1, 4, 5] [1, 4] TODO [] [1, 4, 5] [] TODO diff --git a/test_data/interval_add.tsv b/test_data/interval_add.tsv index 0d6014c0c..f150e592c 100644 --- a/test_data/interval_add.tsv +++ b/test_data/interval_add.tsv @@ -1,5 +1,4 @@ array(tuple(int, int)[interval]) tuple(int, int)[interval] array(tuple(int, int)[interval]) -@ disjoint_intervals new_interval [[6, 14], [18, 18], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 265], [266, 270], [273, 279], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546]] [263, 280] [[6, 14], [18, 18], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 280], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546]] TODO [[6, 14], [18, 18], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 265], [266, 270], [273, 279], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546]] [-3, 19] [[-3, 19], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 265], [266, 270], [273, 279], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546]] TODO [[6, 14], [18, 18], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 265], [266, 270], [273, 279], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546]] [553, 572] [[6, 14], [18, 18], [22, 30], [32, 42], [51, 57], [59, 62], [66, 73], [78, 79], [84, 86], [92, 100], [108, 118], [119, 120], [123, 126], [130, 136], [139, 144], [152, 154], [160, 169], [173, 177], [182, 187], [191, 200], [205, 210], [217, 220], [230, 239], [249, 259], [260, 265], [266, 270], [273, 279], [281, 291], [292, 302], [312, 319], [320, 329], [336, 341], [346, 347], [353, 357], [362, 369], [371, 378], [382, 388], [392, 395], [403, 412], [420, 427], [432, 440], [445, 447], [452, 458], [460, 468], [476, 486], [487, 491], [492, 501], [511, 518], [526, 526], [532, 537], [538, 546], [553, 572]] TODO diff --git a/test_data/intervals_union.tsv b/test_data/intervals_union.tsv index 528fbbacb..3ec573354 100644 --- a/test_data/intervals_union.tsv +++ b/test_data/intervals_union.tsv @@ -1,5 +1,4 @@ array(tuple(int[left value], bool[left is closed], int[right value], bool[right is closed])) array(tuple(int[left value], bool[left is closed], int[right value], bool[right is closed])) -@ A [[610, false, 613, true], [204, true, 205, true], [1117, true, 1124, true], [379, false, 381, true], [136, true, 137, false], [129, false, 137, true], [584, true, 592, true], [760, false, 766, false], [743, false, 748, false], [745, true, 753, false], [104, true, 113, true], [1007, true, 1010, false], [573, true, 577, false], [765, true, 770, false], [62, true, 66, false], [578, false, 581, true], [760, true, 768, true], [1020, false, 1023, true], [663, false, 665, false], [720, false, 728, true], [595, true, 596, true], [911, false, 916, true], [332, true, 336, true], [34, true, 38, false], [956, true, 963, true], [17, false, 19, false], [230, false, 237, false], [1097, false, 1100, false], [634, true, 639, false], [141, true, 142, true], [396, true, 404, false], [959, true, 963, true], [131, true, 133, true], [179, false, 184, false], [920, true, 921, false], [621, true, 630, true], [140, false, 143, true], [122, false, 131, false], [224, false, 226, false], [13, true, 14, true], [1190, true, 1192, false], [995, false, 997, true], [548, true, 549, false], [218, false, 227, false], [23, true, 28, false], [518, true, 527, true], [1119, true, 1127, false], [632, true, 640, false], [424, false, 432, false], [1063, false, 1071, false], [278, true, 281, false], [2, true, 10, false], [505, true, 508, true], [1177, true, 1184, true], [396, true, 401, true], [588, false, 593, false], [840, false, 845, false], [352, true, 354, false], [99, true, 100, false], [1125, true, 1127, true], [328, false, 331, true], [758, false, 767, false], [1149, true, 1157, true], [1060, true, 1066, true], [220, true, 229, false], [230, false, 235, true], [1095, true, 1098, true], [527, true, 530, false], [205, true, 206, false], [663, true, 669, true], [940, true, 941, true], [656, false, 657, false], [706, false, 715, false], [755, true, 757, false], [755, true, 762, false], [950, true, 953, false], [541, false, 542, true], [1103, false, 1110, true], [826, false, 831, false], [807, true, 813, true], [453, false, 459, true], [823, false, 825, true], [460, false, 461, true], [154, false, 155, false], [751, false, 752, false], [242, false, 247, false], [636, true, 641, false], [891, true, 897, true], [629, false, 634, false], [407, true, 415, false], [51, true, 54, true], [161, true, 169, true], [1183, false, 1192, false], [852, true, 858, true], [250, true, 257, false], [952, false, 960, false], [210, false, 217, false], [353, true, 360, true], [1034, false, 1039, true], [887, false, 895, true], [85, true, 87, true], [564, true, 569, true], [156, false, 157, false], [285, false, 292, true], [791, false, 794, false], [86, true, 94, true], [582, true, 588, false], [1135, false, 1144, true], [797, true, 805, true], [280, false, 283, true], [363, false, 368, true], [538, false, 544, true], [442, true, 451, false], [1017, false, 1020, true], [1140, false, 1147, true], [707, false, 713, true], [24, false, 31, true], [524, false, 532, false], [669, true, 678, false], [76, true, 80, false]] [[2, true, 10, false], [13, true, 14, true], [17, false, 19, false], [23, true, 31, true], [34, true, 38, false], [51, true, 54, true], [62, true, 66, false], [76, true, 80, false], [85, true, 94, true], [99, true, 100, false], [104, true, 113, true], [122, false, 137, true], [140, false, 143, true], [154, false, 155, false], [156, false, 157, false], [161, true, 169, true], [179, false, 184, false], [204, true, 206, false], [210, false, 217, false], [218, false, 229, false], [230, false, 237, false], [242, false, 247, false], [250, true, 257, false], [278, true, 283, true], [285, false, 292, true], [328, false, 331, true], [332, true, 336, true], [352, true, 360, true], [363, false, 368, true], [379, false, 381, true], [396, true, 404, false], [407, true, 415, false], [424, false, 432, false], [442, true, 451, false], [453, false, 459, true], [460, false, 461, true], [505, true, 508, true], [518, true, 532, false], [538, false, 544, true], [548, true, 549, false], [564, true, 569, true], [573, true, 577, false], [578, false, 581, true], [582, true, 593, false], [595, true, 596, true], [610, false, 613, true], [621, true, 641, false], [656, false, 657, false], [663, true, 678, false], [706, false, 715, false], [720, false, 728, true], [743, false, 753, false], [755, true, 770, false], [791, false, 794, false], [797, true, 805, true], [807, true, 813, true], [823, false, 825, true], [826, false, 831, false], [840, false, 845, false], [852, true, 858, true], [887, false, 897, true], [911, false, 916, true], [920, true, 921, false], [940, true, 941, true], [950, true, 963, true], [995, false, 997, true], [1007, true, 1010, false], [1017, false, 1023, true], [1034, false, 1039, true], [1060, true, 1071, false], [1095, true, 1100, false], [1103, false, 1110, true], [1117, true, 1127, true], [1135, false, 1147, true], [1149, true, 1157, true], [1177, true, 1192, false]] TODO [[8, true, 9, false], [157, false, 166, false], [163, false, 168, true], [177, true, 182, true], [30, true, 32, false], [169, false, 170, true], [149, true, 153, false], [121, false, 129, false], [226, false, 228, false], [211, false, 217, true], [177, true, 184, false], [8, false, 17, true], [225, true, 233, true], [16, true, 18, false], [243, false, 246, false], [102, true, 110, true], [170, true, 173, true], [169, true, 175, true], [169, false, 170, true], [105, true, 108, false], [125, false, 128, false], [61, true, 67, false], [175, false, 180, false], [205, true, 210, false], [125, false, 128, false]] [[8, true, 18, false], [30, true, 32, false], [61, true, 67, false], [102, true, 110, true], [121, false, 129, false], [149, true, 153, false], [157, false, 168, true], [169, true, 184, false], [205, true, 210, false], [211, false, 217, true], [225, true, 233, true], [243, false, 246, false]] TODO [[208, false, 215, false], [175, false, 182, false], [82, true, 87, false], [215, false, 222, false], [56, true, 58, false], [132, false, 138, true], [31, false, 34, false], [175, false, 184, false], [194, true, 201, true], [42, false, 47, false], [179, false, 181, true], [73, false, 80, true], [1, false, 6, false], [113, true, 117, false], [187, false, 190, true], [208, true, 214, false], [211, true, 220, true], [178, false, 183, true], [219, false, 227, true], [71, true, 80, false], [210, false, 214, false], [15, false, 20, true], [176, true, 177, true], [108, true, 113, false]] [[1, false, 6, false], [15, false, 20, true], [31, false, 34, false], [42, false, 47, false], [56, true, 58, false], [71, true, 80, true], [82, true, 87, false], [108, true, 117, false], [132, false, 138, true], [175, false, 184, false], [187, false, 190, true], [194, true, 201, true], [208, true, 227, true]] TODO diff --git a/test_data/is_anonymous_letter_constructible.tsv b/test_data/is_anonymous_letter_constructible.tsv index ed9b447b2..6eba62515 100644 --- a/test_data/is_anonymous_letter_constructible.tsv +++ b/test_data/is_anonymous_letter_constructible.tsv @@ -1,5 +1,4 @@ string string bool -@ letter_text magazine_text 123 456 false TODO 123 12222222 false TODO 123 1123 true TODO diff --git a/test_data/is_array_dominated.tsv b/test_data/is_array_dominated.tsv index 12ed53981..c6217804a 100644 --- a/test_data/is_array_dominated.tsv +++ b/test_data/is_array_dominated.tsv @@ -1,5 +1,4 @@ array(int[height])[team 1] array(int[height])[team 2] bool[team1->team2 result] bool[team2->team1 result] void -@ h1 h2 expected12 expected21 [1, 5, 4] [2, 3, 4] false false TODO [1, 5, 4] [0, 3, 2] false true TODO [2, 3, 4] [0, 3, 2] false true TODO diff --git a/test_data/is_circuit_wirable.tsv b/test_data/is_circuit_wirable.tsv index 3d52d2e82..64ed68a5e 100644 --- a/test_data/is_circuit_wirable.tsv +++ b/test_data/is_circuit_wirable.tsv @@ -1,5 +1,4 @@ int array(tuple(int[from], int[to])[edge])[graph] bool -@ k edges 5 [[2, 4], [4, 2], [1, 4], [4, 1], [3, 4], [4, 3], [1, 3], [3, 1]] false TODO 15 [[8, 5], [5, 8], [10, 7], [7, 10], [3, 9], [9, 3], [3, 6], [6, 3], [2, 3], [3, 2], [13, 9], [9, 13], [5, 2], [2, 5], [6, 13], [13, 6], [8, 13], [13, 8], [9, 5], [5, 9], [12, 2], [2, 12], [7, 13], [13, 7], [12, 14], [14, 12], [3, 12], [12, 3], [6, 10], [10, 6], [6, 14], [14, 6], [0, 5], [5, 0], [12, 5], [5, 12], [4, 0], [0, 4], [1, 13], [13, 1], [6, 4], [4, 6], [14, 7], [7, 14], [1, 11], [11, 1], [2, 6], [6, 2], [6, 8], [8, 6], [6, 0], [0, 6], [7, 12], [12, 7]] false TODO 7 [[4, 1], [1, 4], [6, 4], [4, 6], [3, 0], [0, 3], [2, 6], [6, 2], [1, 3], [3, 1], [6, 0], [0, 6], [2, 4], [4, 2], [6, 3], [3, 6], [5, 3], [3, 5], [6, 1], [1, 6], [5, 2], [2, 5], [1, 2], [2, 1], [5, 0], [0, 5], [0, 1], [1, 0], [3, 4], [4, 3]] false TODO diff --git a/test_data/is_list_cyclic.tsv b/test_data/is_list_cyclic.tsv index d29ff4a38..57c75134d 100644 --- a/test_data/is_list_cyclic.tsv +++ b/test_data/is_list_cyclic.tsv @@ -1,5 +1,4 @@ linked_list(int) int void -@ head cycle_idx [16, 14, 17, 10] -1 TODO [76, 97, 177, 197, 322, 291, 168, 86, 32, 69, 188, 147, 172, 29, 122, 21, 80, 156, 373, 393, 402, 40, 305, 200, 20, 334, 327, 314, 312, 130, 230, 192, 47, 244, 303, 49, 335, 119, 62, 283, 100] -1 TODO [209, 55, 137, 109, 68, 149, 10, 176, 130, 39, 133, 100, 108, 97, 199, 75, 18, 36, 86, 38, 51] 55 TODO diff --git a/test_data/is_list_palindromic.tsv b/test_data/is_list_palindromic.tsv index abc454cfa..77bd127fe 100644 --- a/test_data/is_list_palindromic.tsv +++ b/test_data/is_list_palindromic.tsv @@ -1,5 +1,4 @@ linked_list(int) bool -@ L [] true TODO [2, 5, 3, 1, 3, 5, 3, 4, 2, 5, 5, 6, 3, 2, 2, 4, 3, 4, 5, 6] false TODO [2, 5, 3, 1, 3, 5, 3, 4, 2, 5, 5, 6, 3, 2, 2, 4, 3, 4, 5, 6, 6, 5, 4, 3, 4, 2, 2, 3, 6, 5, 5, 2, 4, 3, 5, 3, 1, 3, 5, 2] true TODO diff --git a/test_data/is_number_palindromic.tsv b/test_data/is_number_palindromic.tsv index 8086f6eb7..cfeb2630a 100644 --- a/test_data/is_number_palindromic.tsv +++ b/test_data/is_number_palindromic.tsv @@ -1,5 +1,4 @@ int bool -@ x 7915 false TODO -7915 false TODO 20692 false TODO diff --git a/test_data/is_string_decomposable_into_words.tsv b/test_data/is_string_decomposable_into_words.tsv index d2c60785e..18a2a93b5 100644 --- a/test_data/is_string_decomposable_into_words.tsv +++ b/test_data/is_string_decomposable_into_words.tsv @@ -1,5 +1,4 @@ string set(string) array(string) -@ domain dictionary dmtrxstxsrlyrxelaeydemyvsxwbayqmgvlyttmgdlvyyaylltvbexyebsdxdgreasvxq ["yewaasaytawabtlsatws", "eybgvbetsvwbtsgldm", "srbxgeqwlqmvbvltxdm", "xvtxmgr", "ygxlqbwgvmddyxgglrtqv", "dgvedys", "grqtabddlgellwws", "aqlqmqdagdsxbgswrb", "slqalbdbbqvlqy", "mylwdvqswrtgqylymslwrbel", "avyyd", "rvyqywrs", "talr", "gxbbxaqtmwagtyxesavayqq", "dlwagtaqrxgyg", "l", "myvsxwbay", "yvbwgqqbyqbv", "drxyaw", "atbsmysswrelarxllxl", "qxqrdrdes", "ad", "slyabrdwrelsb", "xxm", "rvsgqvlsreweaxywyrtaemrbl", "baagaqr", "txblwbdayteyses", "llweetlbastqxxvglwr", "vmxs", "wevwdsxvlebymrdellmwawl", "dmtrxstxsrlyr", "swedqlvqgvmbldvxr", "drgedlvysgrdwgarrvw", "ddqtydeleaalvarstvgb", "greasvxq", "xqdegexvbdxrmlatmdy", "qrqgxavwrrdaqstrgwxllb", "qxveyergtsadgamtylwqmgb", "rvqqslswqxxexrgt", "getyeqtlvbwlwd", "eawglyrrmwydsqsmqqexbd", "btbdwbgyavg", "wemqxxblbsevv", "gvterbvbeswwmwgrtqawd", "tltsayeb", "qabevbdr", "bdexyyxbebvbryw", "tqgxmm", "rbdarlalmxtasttldetwvy", "vwgbvxdrvllqmaabraeseg", "tllvwsagrxrws", "bbydwwx", "xe", "gmlalayqrleb", "exlvlltvrdsqmbglybmblmw", "lgdssbevqatatttqexrael", "ytt", "mywlvgssxxabevlrmaab", "vesmysqmaa", "bgrdybeexw", "qrtrqgweryea", "sg", "qmgvlyttmgdlvyyaylebsdxd", "eqxqatdqvxetgqbqmstr", "qmgyrydldmsxqwgyyslrqmarw", "qevtdgdayedqw", "gmqmgxbgrgbqrxdltym", "vwgvyvlaeaqsdvab", "dsddxmvtqsvsdwgdgaxmttaxw", "ggbqmdyqsbvl", "abdsdagdmvtrgbe", "eggbwgl", "rdeyqgawvm", "bqrs", "xmtavmyxdvvbqrexyyex", "wgegxmgtmtxlyvyveaqtw", "lqlyw", "wreywsteqvlvmw", "lrsemleggqggsvrdlqetrtr", "stdyylysylrwttvqqb", "tmwglallx", "rqxxabmy", "ltvbexy", "dvyadesmmqwarsvryaryedgwq", "bgb", "lqa", "bdewqbs", "dxylerrvtdsbbbddmr", "vslgsexmbsswexr", "qwvex", "svtgvtealq", "blxdwylwxa", "ygegdq", "vvavbxt", "a", "myybwdstgbqbxqrtxbtqtrr", "ymgrdwsdxgtr", "aatttw", "aeyde", "v", "bbbar", "dyvvageevdwlxqeqm", "qrsrteastrt", "xvglsadlgxrtbsdysvetea", "ddaabvrwdxrawqtx", "xmdwvrwgsava", "dxxemwqttevaet", "mlyeydmlamqvqy", "dwrbyawtamwdqeg", "aywsmlyswrllvam", "tbgrtrw", "vbggqdlyvlbmsxgys", "brwammvaqaslsmels", "aereegwvrqvdawrml", "qsqqgtqgy", "dsxwm", "mwraldddxqxbyg", "remyldeyagwrqyqqqqb", "q", "rtmvvt", "ddtedqdyme", "exdtsvw", "vqwdxy", "qm", "qeamlxabsabgt", "tdsg", "rgealdxmsvg", "qdbmmgxg", "eamrsadqatrxasm", "d", "gyblqqtgvwwyy", "wrqxtbsgqxsdqmtw", "deytvwwrsxdsbqetyqlttyg", "gsvtqrvraxemdvays", "sxmyvd", "ywlaqlvewgswybrl", "gwa", "blbmxwqwlgedbxdxmyg", "arvwsxbdq", "ysegavlmtyt", "rssvvsxamewrxslrr", "bvsvlegmywgbymqldetxbx", "sqwl", "legbgwtg", "y", "yyrsy", "vml", "gwwmxmrrwqvdst", "qgbsslelgga", "ggemtbdswdxqy"] [] TODO pppppppp ["pppp", "ppp", "pp"] ["pppp", "pppp"] TODO esgh ["gh", "es", "esg"] ["es", "gh"] TODO diff --git a/test_data/is_string_in_matrix.tsv b/test_data/is_string_in_matrix.tsv index 0b64f49d0..51783d32b 100644 --- a/test_data/is_string_in_matrix.tsv +++ b/test_data/is_string_in_matrix.tsv @@ -1,5 +1,4 @@ array(array(int)) array(int) bool -@ grid S [[8, 11, 10, 16], [9, 3, 10, 9], [8, 25, 16, 16]] [8, 11, 10, 10, 16, 25] true TODO [[34]] [34] true TODO [[51]] [51, 37] false TODO diff --git a/test_data/is_string_palindromic.tsv b/test_data/is_string_palindromic.tsv index 1692d78cd..26eb64d08 100644 --- a/test_data/is_string_palindromic.tsv +++ b/test_data/is_string_palindromic.tsv @@ -1,5 +1,4 @@ string bool -@ s kpda false TODO zu false TODO rq false TODO diff --git a/test_data/is_string_palindromic_punctuation.tsv b/test_data/is_string_palindromic_punctuation.tsv index 3553e9f38..301d534fd 100644 --- a/test_data/is_string_palindromic_punctuation.tsv +++ b/test_data/is_string_palindromic_punctuation.tsv @@ -1,5 +1,4 @@ string bool -@ s A man, a plan, a canal, Panama. true TODO Able was I, ere I saw Elba! true TODO Ray a Ray false TODO diff --git a/test_data/is_tree_a_bst.tsv b/test_data/is_tree_a_bst.tsv index 3b2b893b2..0643f4bdf 100644 --- a/test_data/is_tree_a_bst.tsv +++ b/test_data/is_tree_a_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) bool -@ tree ["-1", "-5", "-2", "-9", "-2", "4", "9", "-2", "3", "-6", "1", "-5", "-4", "6", "-6", "-5", "-1", "3", "-1", "10", "-4", "-12", "9", "9", "14", "6", "-1", "4", "-9", "-8", "-8"] false TODO ["4", "3", "-5", "null", "7", "7", "null", "null", "4"] false TODO ["-3", "-1", "16", "-7", "null", "14", "17", "null", "-3", "0", "8", "null", "16", "null", "-4", "-4", "4", "11", "9"] false TODO diff --git a/test_data/is_tree_balanced.tsv b/test_data/is_tree_balanced.tsv index d2daba043..256bc4066 100644 --- a/test_data/is_tree_balanced.tsv +++ b/test_data/is_tree_balanced.tsv @@ -1,5 +1,4 @@ binary_tree(int) bool -@ tree ["3", "2", "5", "1", "null", "4", "6"] true TODO ["3", "2", "null", "1"] false TODO ["-1", "-1", "12", "-8", "null", "13", "10", "null", "0", "7", "6", "null", "16", "null", "0", "3", "8", "15", "8"] false TODO diff --git a/test_data/is_tree_symmetric.tsv b/test_data/is_tree_symmetric.tsv index eb44a326f..f4ce6b0b6 100644 --- a/test_data/is_tree_symmetric.tsv +++ b/test_data/is_tree_symmetric.tsv @@ -1,5 +1,4 @@ binary_tree(int) bool -@ tree ["-1", "-1", "0", "null", "-1", "null", "1", "null", "2"] false TODO ["-1", "-1", "10", "-2", "null", "null", "3", "null", "5"] false TODO ["-1", "-1", "10", "5", "null", "null", "2", "null", "4"] false TODO diff --git a/test_data/is_valid_parenthesization.tsv b/test_data/is_valid_parenthesization.tsv index d6771bcfe..cea7d95c7 100644 --- a/test_data/is_valid_parenthesization.tsv +++ b/test_data/is_valid_parenthesization.tsv @@ -1,5 +1,4 @@ string bool -@ s () true TODO ()[]{} true TODO [()[]]{} true TODO diff --git a/test_data/is_valid_sudoku.tsv b/test_data/is_valid_sudoku.tsv index d94c46af8..630929bf0 100644 --- a/test_data/is_valid_sudoku.tsv +++ b/test_data/is_valid_sudoku.tsv @@ -1,5 +1,4 @@ array(array(int)) bool -@ partial_assignment [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 2, 0, 0], [0, 0, 0, 0, 6, 0, 4, 0, 0], [0, 0, 0, 2, 0, 0, 0, 0, 5], [7, 0, 0, 0, 0, 0, 0, 0, 0], [0, 8, 3, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 3, 3, 0], [0, 0, 4, 0, 0, 0, 0, 0, 0]] false TODO [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 9, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 3, 6, 0, 0, 0, 0, 0, 0], [4, 0, 0, 0, 0, 0, 0, 6, 0], [0, 0, 0, 0, 3, 0, 0, 0, 0], [0, 2, 9, 0, 0, 0, 0, 0, 0], [2, 5, 0, 0, 5, 0, 0, 3, 9]] false TODO [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 0, 0, 0, 0, 0, 0, 1], [8, 0, 0, 0, 0, 0, 0, 0, 0], [0, 9, 9, 3, 5, 7, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 4, 0], [0, 0, 0, 8, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 4, 0, 9], [0, 0, 0, 5, 0, 4, 0, 0, 0]] false TODO diff --git a/test_data/k_closest_stars.tsv b/test_data/k_closest_stars.tsv index c39940369..77642dfc6 100644 --- a/test_data/k_closest_stars.tsv +++ b/test_data/k_closest_stars.tsv @@ -1,5 +1,4 @@ array(tuple(float[x], float[y], float[z])) int[k] array(float[distance]) -@ stars k [[-8459.342386685723, 7537.164775490433, 2664.519275103283], [-5962.654503303675, 1499.1074152272158, 9371.71538476249], [-4916.366631287836, -4443.32515373953, -5881.2969560625315], [-4901.969389889855, 2492.1981628631565, -7639.189406340627], [7618.574621143194, -1467.190533714851, -1524.015094690778], [-8477.010432074396, 1360.0084577475118, 8323.906702204353], [912.7195365959997, -2957.4814473591023, -894.9655577942176], [-7270.874803146347, 444.79236420740017, -896.6413910030678], [2482.6853710044743, -2275.106739490451, 8968.384538221551], [-51.89241281227078, 5827.661704336142, 7642.678809358615], [-4245.301727022504, 8099.332046313502, 970.7336950804311], [1014.6444324974455, 5830.491868390076, 6228.248816569991], [6299.776177430267, 1136.3445094828076, 2892.5787230787646], [963.5601949151223, 5285.001746297645, 8241.347931314765], [6254.4924167176905, -8002.919474937023, 4747.481337353616], [2939.6835771656097, -3.262267750349565, -7218.16201162566], [-363.30860487324753, 6123.036058336442, -2257.882730186385], [5640.490723867002, 3949.7441717595575, -7380.5612153435995], [6245.912664580053, -8594.781230770352, -1763.9209079979264], [6792.95987884876, -9757.884641393295, -9957.811790736752], [-7903.076240167082, -8396.07192237413, -9875.196554289505], [-1632.0552148659099, -8777.725105930518, 8325.776768711028]] 13 [3221.9119810440543, 6536.176109724794, 7024.6331149148, 7339.443196479251, 7793.818897198206, 7906.829284169159, 8591.578555356771, 8860.217444311698, 9195.873545056262, 9412.628239144606, 9579.757750219256, 9611.184794067416, 9837.657619198799] TODO [[-4985.190979649221, -1166.9396570952522, -110.93489245966339], [5894.466664241667, -9530.846744892191, 5972.314770627074], [6253.7030900473, -8754.31562568128, -771.6894825415038], [1483.7957819924013, 187.7114380697949, 6594.933030062381], [1.680052826382962, 7557.488624692589, 5720.163277143509], [-269.7937680745581, -6733.676037120244, 2545.88816972269], [-6236.191038129604, -8412.873759630807, 4662.849168062254], [1030.7255382141248, -3320.9934356214535, -8461.644353565292], [-3554.3766731256055, -933.9921810932501, 5595.802324680028], [-4760.407634742761, 3241.948751624457, 5936.462254937127], [8793.08153641631, 5516.641879904129, -9228.04620894871], [-5086.803527596704, 431.3062837694961, -5503.317651186272], [-8608.760428310816, -8162.512891281257, 8940.356717210849], [-9196.526895644061, -1890.5261213891508, -3645.610652561255], [6720.718545341879, -4459.920656206913, 8649.327905911625], [-3054.2833896426273, 6729.3806386310935, 7917.153971001331], [7203.516926712673, -9258.359308454957, 6889.348851612027]] 7 [5121.150634109739, 6694.6948090034075, 6762.3980345472455, 7203.938382781546, 7506.537178263205, 8271.233079859963, 9148.268563000924] TODO [[5842.670845327426, 9669.8632410861, 5528.858079261447], [6421.548522814821, -9189.220685073073, -8188.317681535879], [-1491.594945879744, -5325.021986957728, 4538.8873074380135], [2214.6165627177543, 2698.8536972672027, -1356.2577206599653], [-4847.750874009455, 4275.518368367908, 5523.716516165747], [-1821.9410476394305, 173.30953288726414, -6584.219367273692], [6580.818134990281, -7942.851818482277, -122.83499109780678], [6277.621509918459, -8427.189667178005, -9984.23148222623], [6886.4680067342815, 9388.80717859368, 3841.188550958026], [-9919.560507887962, -8176.745314879912, -3993.3453748605416], [4706.143740421248, -9864.158620519405, -4153.367292848853], [8518.985823876515, 4045.762351267096, -7556.591782878588], [-2281.2086449348153, -8195.251758398228, -392.32936753014474], [9114.966081701412, 9667.557067782098, 6162.678459135655]] 1 [3745.3668450455443] TODO diff --git a/test_data/k_largest_in_heap.tsv b/test_data/k_largest_in_heap.tsv index cbd09e007..1d3c1daf7 100644 --- a/test_data/k_largest_in_heap.tsv +++ b/test_data/k_largest_in_heap.tsv @@ -1,5 +1,4 @@ array(int) int array(int) -@ A k [10, 2, 9, 2, 2, 8, 8, 2, 2, 2, 2, 7, 7, 7, 7] 3 [10, 9, 8] TODO [10, 2, 9, 2, 2, 8, 8, 2, 2, 2, 2, 7, 7, 7, 7] 5 [10, 9, 8, 8, 7] TODO [97, 84, 93, 83, 81, 90, 79, 83, 55, 42, 21, 73] 3 [97, 93, 90] TODO diff --git a/test_data/k_largest_values_in_bst.tsv b/test_data/k_largest_values_in_bst.tsv index 53b8cecd5..5d2cfb747 100644 --- a/test_data/k_largest_values_in_bst.tsv +++ b/test_data/k_largest_values_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) int array(int) -@ tree k ["3", "2", "5", "1", "null", "4", "6"] 2 [6, 5] TODO ["1"] 1 [1] TODO ["6", "1"] 2 [6, 1] TODO diff --git a/test_data/knapsack.tsv b/test_data/knapsack.tsv index 9a3390f1d..60170dc7f 100644 --- a/test_data/knapsack.tsv +++ b/test_data/knapsack.tsv @@ -1,5 +1,4 @@ array(tuple(int[weight], int[value])) int[capacity] int[result] -@ items capacity [[18, 49], [33, 48], [26, 63], [89, 50], [39, 14], [4, 40], [14, 29], [47, 33], [8, 97], [97, 51], [99, 78], [49, 12], [97, 18], [80, 46], [18, 33], [55, 4], [11, 34], [55, 72], [11, 100], [4, 84], [78, 75], [52, 96], [36, 35], [25, 60], [100, 94], [57, 87], [85, 62], [27, 72], [35, 39], [85, 82], [10, 16], [13, 13], [13, 50], [50, 43], [19, 100], [41, 26], [38, 39], [37, 73], [98, 24], [17, 26], [98, 97], [22, 14], [85, 93], [87, 59], [7, 81], [13, 54], [39, 80], [17, 86], [95, 80], [3, 17], [90, 76], [29, 2], [5, 91], [14, 59], [85, 12], [38, 50], [28, 94], [94, 84], [99, 50], [39, 86], [95, 46], [32, 2], [31, 38], [95, 64], [22, 16], [27, 9], [9, 25], [38, 95], [26, 83], [83, 8], [18, 100], [3, 31], [92, 64], [46, 47], [9, 84], [99, 39], [23, 1], [44, 87], [41, 41], [50, 35], [89, 33], [30, 87], [74, 56], [13, 55], [70, 12], [75, 100], [82, 55], [36, 34], [4, 34], [79, 59], [100, 90], [85, 11], [18, 52], [69, 3], [72, 1], [3, 72], [11, 59], [34, 5], [36, 2], [7, 34], [10, 40], [69, 34], [2, 34], [49, 52], [67, 79], [99, 33], [35, 80], [69, 10], [96, 85], [86, 97], [44, 21], [37, 56], [16, 46], [63, 36], [87, 2], [21, 69], [34, 32], [8, 15], [50, 61], [100, 69], [37, 11], [66, 98], [54, 43], [33, 35], [53, 86], [17, 33], [84, 28], [6, 34], [93, 40], [31, 20], [66, 43], [61, 3], [2, 63], [76, 31], [7, 66], [92, 13], [54, 10], [57, 16], [44, 93], [87, 55], [84, 28], [6, 19], [76, 46], [16, 75], [35, 70], [51, 34], [15, 12], [26, 6], [64, 45], [35, 73], [46, 46], [41, 2], [32, 87], [41, 6], [62, 24], [47, 16], [27, 74], [61, 100]] 77 911 TODO [[56, 42], [87, 49], [65, 81], [13, 90], [66, 25], [96, 24], [27, 50], [2, 48], [17, 56], [76, 69], [48, 44], [4, 49], [43, 53], [71, 77], [15, 36], [42, 91], [11, 85], [6, 64], [75, 26], [99, 20], [32, 14], [92, 22], [42, 25], [10, 39], [39, 51], [43, 46], [6, 53], [67, 54], [58, 79], [49, 95], [5, 85], [70, 77], [22, 44], [81, 81], [65, 86], [90, 77], [20, 18], [4, 66], [51, 30], [95, 9], [94, 23], [20, 73], [57, 27], [71, 13], [68, 45], [16, 73], [53, 75], [16, 84], [45, 32], [82, 22], [62, 84], [27, 16], [94, 33], [36, 30], [33, 84], [70, 81], [84, 24], [30, 25], [23, 50], [73, 30], [3, 57], [11, 43], [83, 66], [47, 24], [28, 40], [55, 22], [100, 46], [33, 53], [68, 19], [34, 76], [44, 88], [34, 11], [16, 70], [30, 14], [97, 52], [66, 53], [88, 65], [26, 53], [18, 36], [47, 1], [19, 39], [28, 100], [64, 35], [13, 49], [2, 59], [54, 25], [18, 1], [70, 81], [48, 64], [21, 16], [25, 61], [31, 32], [83, 30], [52, 12], [33, 27], [43, 34], [89, 40], [88, 19], [25, 26], [21, 71]] 2014 3672 TODO [[31, 45], [51, 80], [20, 61], [3, 52], [41, 75], [13, 35], [77, 35], [73, 61], [96, 33], [4, 71], [35, 49], [92, 53], [81, 19], [2, 79], [39, 69], [96, 74], [90, 49], [17, 46], [11, 73], [6, 43], [60, 15], [41, 72], [11, 95], [95, 21], [52, 21], [72, 57], [51, 43], [4, 35], [27, 89], [50, 18], [15, 61], [66, 54], [15, 35], [47, 21], [100, 1], [81, 43], [67, 17], [80, 6], [79, 41], [64, 65], [83, 21], [51, 35], [80, 31], [27, 60], [24, 19], [62, 50], [32, 20], [28, 25], [31, 32], [86, 26], [2, 23], [95, 72], [43, 32], [98, 77], [14, 72], [63, 31], [71, 25], [83, 23], [52, 17], [71, 26], [4, 24], [17, 64], [89, 41], [1, 25], [28, 32], [14, 50], [80, 100], [65, 27], [34, 31], [41, 6], [9, 67], [51, 100], [3, 42], [38, 36], [45, 71], [48, 57], [37, 8], [34, 59], [18, 87], [15, 53], [57, 73], [85, 49], [79, 80], [82, 88], [59, 37], [52, 84], [19, 37], [55, 15], [17, 74], [82, 6], [49, 73], [94, 32], [69, 72], [16, 93], [23, 21], [17, 53], [79, 53], [43, 49], [23, 89], [94, 35], [1, 91], [49, 7], [62, 62], [100, 12], [20, 31], [26, 53], [18, 86], [10, 67], [46, 67], [34, 65], [1, 64], [100, 22], [100, 63], [62, 41], [18, 49], [81, 43], [95, 13], [72, 9], [29, 46], [15, 86], [8, 98], [95, 49], [47, 84], [77, 50], [28, 4], [49, 50], [100, 92], [20, 37], [77, 85], [90, 67], [46, 57], [90, 60], [78, 80], [61, 25], [59, 24], [17, 18], [4, 16], [7, 57], [48, 24], [49, 96], [72, 14]] 5462 6530 TODO diff --git a/test_data/kth_largest_element_in_long_array.tsv b/test_data/kth_largest_element_in_long_array.tsv index 406c42c25..c5a8517d3 100644 --- a/test_data/kth_largest_element_in_long_array.tsv +++ b/test_data/kth_largest_element_in_long_array.tsv @@ -1,5 +1,4 @@ array(int) int int -@ stream k [-6, 8, 13, 11, 11, 15, 6, 0, 8, 10, -6, -5, -15, 7, 11] 8 8 TODO [0, -1, 0, -1] 1 0 TODO [-36, -31, -19, 5, 24, 38, 12, 1, 18, 39, -3, 5, -39, -17, 19, 36, -16, 21, 29, 11, 32, 8, 1, 12, -13, 39, -35, 7, -32, -17, 21, -12, 0, -20, 4, 3, 26, -3, -9, -11] 8 24 TODO diff --git a/test_data/kth_largest_element_in_two_sorted_arrays.tsv b/test_data/kth_largest_element_in_two_sorted_arrays.tsv index 0ea506b9c..af787f8da 100644 --- a/test_data/kth_largest_element_in_two_sorted_arrays.tsv +++ b/test_data/kth_largest_element_in_two_sorted_arrays.tsv @@ -1,5 +1,4 @@ array(int) array(int) int int -@ A B k [-316, -308, -306, -304, -303, -302, -302, -301, -301, -298, -291, -291, -288, -287, -282, -282, -281, -281, -277, -274, -273, -272, -271, -270, -267, -265, -263, -262, -261, -258, -257, -257, -255, -252, -250, -250, -246, -244, -243, -242, -236, -235, -235, -232, -224, -223, -223, -222, -218, -216, -214, -213, -212, -212, -210, -210, -209, -205, -204, -203, -201, -200, -200, -199, -195, -194, -194, -190, -190, -188, -187, -187, -185, -183, -182, -180, -178, -177, -176, -175, -166, -164, -163, -162, -162, -159, -159, -149, -148, -147, -146, -145, -145, -145, -144, -144, -143, -141, -141, -140, -138, -134, -132, -128, -126, -124, -121, -121, -117, -114, -111, -109, -103, -102, -93, -92, -88, -86, -81, -80, -79, -79, -71, -69, -68, -66, -59, -59, -56, -56, -54, -47, -42, -36, -33, -30, -29, -28, -28, -28, -27, -26, -26, -25, -22, -13, -13, -9, -7, -5, -5, -3, -3, 3, 4, 12, 13, 14, 18, 19, 20, 20, 20, 22, 23, 24, 28, 28, 29, 30, 32, 33, 34, 34, 35, 39, 39, 40, 43, 46, 47, 48, 49, 49, 53, 54, 55, 57, 58, 65, 67, 71, 72, 77, 81, 81, 87, 98, 99, 101, 103, 103, 103, 107, 115, 115, 116, 121, 122, 122, 123, 124, 126, 128, 131, 131, 132, 133, 133, 134, 134, 135, 135, 137, 141, 143, 143, 149, 149, 150, 156, 157, 160, 163, 164, 164, 165, 168, 168, 171, 173, 174, 177, 178, 180, 180, 180, 181, 181, 182, 187, 188, 188, 190, 196, 196, 197, 198, 199, 201, 201, 203, 207, 207, 208, 213, 219, 221, 222, 229, 231, 231, 234, 235, 235, 235, 237, 240, 241, 243, 245, 246, 247, 254, 255, 257, 259, 260, 260, 263, 264, 268, 268, 273, 273, 274, 276, 276, 277, 277, 280, 280, 282, 282, 288, 289, 293, 294, 298, 299, 300, 300, 303, 307, 312, 316] [-30, -29, -28, -24, -22, -19, -17, -13, -13, -13, -12, -12, -7, -5, -3, 2, 2, 2, 4, 9, 13, 13, 16, 18, 19, 19, 23, 24, 25, 28, 30] 345 307 TODO [-39, -39, -35, -32, -23, -20, -19, -18, -15, -12, -10, -9, -8, -6, -6, -2, -2, 0, 1, 4, 4, 8, 8, 9, 10, 12, 12, 12, 15, 16, 19, 21, 22, 28, 28, 29, 32, 32, 36, 39, 40] [1] 36 28 TODO [-451, -450, -449, -448, -446, -444, -443, -442, -441, -440, -439, -438, -438, -436, -435, -433, -431, -424, -424, -423, -421, -420, -419, -419, -416, -407, -406, -405, -405, -404, -402, -402, -399, -393, -393, -392, -386, -386, -382, -382, -381, -379, -377, -377, -372, -370, -369, -369, -367, -365, -360, -358, -352, -352, -351, -348, -347, -347, -347, -346, -342, -340, -339, -339, -338, -336, -336, -335, -334, -332, -331, -331, -331, -330, -326, -322, -320, -320, -318, -318, -316, -316, -311, -311, -308, -306, -303, -301, -297, -293, -292, -289, -287, -285, -285, -285, -285, -283, -278, -277, -277, -276, -271, -267, -264, -259, -259, -256, -255, -253, -253, -252, -252, -248, -246, -238, -237, -234, -228, -227, -225, -221, -221, -221, -214, -209, -206, -205, -204, -202, -201, -201, -195, -188, -187, -184, -183, -180, -180, -176, -176, -173, -170, -170, -168, -167, -167, -166, -162, -160, -159, -154, -154, -150, -148, -141, -137, -136, -136, -134, -120, -117, -116, -115, -112, -110, -109, -109, -108, -105, -103, -102, -102, -101, -99, -99, -99, -96, -93, -93, -91, -90, -89, -88, -88, -87, -85, -77, -74, -74, -72, -71, -69, -68, -65, -64, -62, -59, -59, -58, -54, -53, -43, -42, -42, -40, -37, -36, -29, -22, -22, -21, -21, -21, -19, -19, -19, -15, -14, -11, -11, -8, -6, -2, 1, 3, 3, 5, 7, 8, 9, 16, 17, 17, 18, 20, 23, 27, 28, 33, 34, 36, 39, 43, 43, 48, 50, 51, 51, 52, 53, 53, 56, 57, 60, 66, 67, 69, 75, 76, 76, 77, 79, 80, 85, 87, 87, 88, 90, 90, 91, 93, 94, 94, 94, 101, 103, 104, 106, 107, 108, 109, 110, 114, 116, 116, 117, 118, 120, 124, 126, 127, 131, 133, 134, 135, 136, 140, 141, 141, 146, 147, 148, 148, 148, 149, 149, 150, 152, 158, 161, 161, 163, 163, 164, 169, 177, 177, 178, 183, 184, 186, 190, 190, 190, 191, 191, 196, 197, 197, 200, 202, 206, 206, 211, 213, 216, 216, 220, 222, 222, 223, 225, 226, 228, 228, 229, 231, 231, 238, 242, 242, 245, 251, 252, 258, 260, 260, 263, 266, 273, 276, 277, 278, 278, 280, 281, 282, 283, 283, 284, 289, 289, 290, 292, 292, 293, 294, 295, 296, 296, 303, 306, 306, 308, 309, 311, 316, 317, 318, 322, 333, 335, 341, 342, 345, 346, 347, 351, 351, 352, 353, 355, 359, 359, 361, 362, 376, 377, 383, 384, 388, 389, 389, 393, 393, 393, 394, 394, 396, 398, 398, 402, 403, 403, 407, 409, 410, 413, 413, 417, 417, 417, 418, 418, 419, 423, 425, 426, 430, 431, 431, 432, 440, 441, 441, 442, 443, 444, 447, 448] [-1, 0] 375 289 TODO diff --git a/test_data/kth_largest_in_array.tsv b/test_data/kth_largest_in_array.tsv index 30b01e32c..acf759fb5 100644 --- a/test_data/kth_largest_in_array.tsv +++ b/test_data/kth_largest_in_array.tsv @@ -1,5 +1,4 @@ int array(int) int -@ k A 64 [48, -45, 103, -130, -58, 178, 0, 163, 135, 64, 95, 111, -57, 191, 177, -71, -80, -151, -101, 113, 27, 188, -40, 201, 130, 62, 13, 184, -14, 128, 68, -62, -110, -142, -119, -110, -184, -194, -107, -168, 134, -146, 77, -50, 109, 107, -146, -191, 68, 63, -107, -196, 89, -31, 179, -138, 188, -188, -9, -197, 195, 46, -131, 86, 152, 179, -114, -99, -103, 198, -174, 10, -162, 84, 183, 22, 113, -82, 188, 99, -2, 189, 111, -101, 115, -77, -112, -111, -61, 93, 67, 178, -90, 124, -48, -130, -6, 48, 196, -114, 13, -26, -118, -131, -115, 201, 0, 10, -71, -40, -17, 46, 194, 46, 18, -183, -198, -198, -71, -7, -56, 183, -183, -54, 185, 24, -97, 194, 1, -61, -126, -158, 62, 80, 25, -188, -173, 30, -157, 175, 22, 197, -7, 49, 101, -159, -73, -115, 163, -65, -174, -154, 144, -119, -28, 139, 150, 167, -97, 138, -109, 60, 150, -15, -39, -127, 173, -188, -151, 2, 61, 181, 41, 200, 44, 62, -89, -136, -46, 165, -33, 113, 146, 76, 174, -31, -84, 3, -86, 67, -101, 3, 55, 25, -13, -43, -154, 180, 172, -50, -188] 76 TODO 1 [1] 1 TODO 38 [-24, -11, 12, 19, 24, -18, -36, 37, -20, 20, 7, -13, 10, 30, -5, 5, 24, 34, -30, 15, -23, 21, 36, 31, -33, -10, -20, 19, -6, 33, -30, 5, 28, -28, 5, 24, 31, 10] -36 TODO diff --git a/test_data/kth_node_in_tree.tsv b/test_data/kth_node_in_tree.tsv index 0cfb1adbb..e9f3bc916 100644 --- a/test_data/kth_node_in_tree.tsv +++ b/test_data/kth_node_in_tree.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int -@ tree idx ["-1", "-1", "-7", "null", "-1", "11", "null", "null", "0", "null", "-8", "-6", "null", "1"] 1 -1 TODO ["-1", "-1", "2", "null", "4", "null", "3", "5"] 2 5 TODO ["-1", "-1", "8", "null", "11", "null", "9", "8"] 6 9 TODO diff --git a/test_data/largest_rectangle_under_skyline.tsv b/test_data/largest_rectangle_under_skyline.tsv index fd07e8752..f7e476e49 100644 --- a/test_data/largest_rectangle_under_skyline.tsv +++ b/test_data/largest_rectangle_under_skyline.tsv @@ -1,5 +1,4 @@ array(int) int -@ heights [1, 4, 2, 5, 6, 3, 2, 6, 6, 5, 2, 1, 3] 20 Example in the book [134, 54, 22, 78, 115, 142, 77, 25, 109, 167, 89, 91, 92, 92, 67, 89, 124, 54, 141, 74, 131, 5, 65, 166, 182, 82, 95, 12, 23, 158, 52, 130, 168, 159, 125, 171, 92, 35, 35, 18, 94, 47, 130, 10, 174, 39, 20, 72, 62, 51, 126, 101, 49, 85, 33, 111, 13, 169, 101, 147, 16, 5, 54, 163, 130, 65, 182, 146, 87, 11, 144, 43, 103, 17, 83, 20, 42, 113, 28, 59, 28, 48, 156, 115, 49, 75, 147, 80, 33, 145, 158, 44, 62, 90, 157, 178, 172, 71, 136, 124, 55, 31, 23, 3, 130, 132, 180, 28, 75, 89, 111, 79, 15, 12, 65, 54, 89, 26, 22, 3, 146, 128, 168, 119, 111, 50, 170, 112, 5, 49, 46, 8, 59, 73, 12, 80, 167, 77, 76, 151, 137, 105, 182, 172, 157, 33, 10, 16, 13, 6, 80, 25, 101, 111, 163, 147, 120, 16, 37, 169, 133, 155, 67, 143, 77, 80, 118, 178, 73, 40, 47, 47, 123, 108, 155, 87, 29, 175, 137, 67, 30, 34, 131] 760 TODO [34, 79, 42, 18, 15, 76, 10, 93, 44, 100, 11, 45, 51, 62, 84, 79, 88, 37, 57, 57, 90, 102, 56, 55, 84, 29, 67, 45, 64, 38, 78, 84, 89, 58, 58, 22, 108, 25, 98, 14, 21, 81, 101, 31, 2, 3, 96, 24, 87, 12, 15, 65, 74, 43, 64, 56, 78, 3, 21, 21, 18, 71, 40, 88, 46, 55, 69, 80, 59, 65, 87, 92, 34, 8, 4, 1, 8, 61, 75, 33, 10, 70, 108, 65, 90, 7, 69, 59, 107, 77, 49, 29, 106, 101, 92, 18, 98, 86, 38, 55, 42, 68, 15, 54, 55, 88, 64, 17] 696 TODO diff --git a/test_data/left_right_justify_text.tsv b/test_data/left_right_justify_text.tsv index eeb80a1b6..4adda0e6e 100644 --- a/test_data/left_right_justify_text.tsv +++ b/test_data/left_right_justify_text.tsv @@ -1,5 +1,4 @@ array(string) int array(string) -@ words L ["Text", "justification", "is", "trickier", "than", "it", "seems!"] 14 ["Text ", "justification ", "is trickier", "than it seems!"] TODO ["Listen", "to", "many,", "speak", "to", "a", "few."] 6 ["Listen", "to ", "many, ", "speak ", "to a", "few. "] TODO ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dogs."] 11 ["The quick", "brown fox", "jumped over", "the lazy", "dogs. "] TODO diff --git a/test_data/levenshtein_distance.tsv b/test_data/levenshtein_distance.tsv index a26396d0b..e7f364412 100644 --- a/test_data/levenshtein_distance.tsv +++ b/test_data/levenshtein_distance.tsv @@ -1,5 +1,4 @@ string string int -@ A B k sitt 4 TODO Saturday Sunday 3 TODO kitten sitting 3 TODO diff --git a/test_data/line_though_most_points.tsv b/test_data/line_though_most_points.tsv index 6c53b6f91..28cf6c556 100644 --- a/test_data/line_though_most_points.tsv +++ b/test_data/line_though_most_points.tsv @@ -1,5 +1,4 @@ array(tuple(int[x], int[y])) int -@ points [[0, 0], [0, 0]] 2 TODO [[-1, 5], [6, -11], [13, 0], [-7, -7], [-2, -10], [-14, 10], [-7, 0], [14, 5], [-11, -2], [9, 6], [10, 11], [-15, -10], [-2, 14], [-15, -3], [-7, 6], [9, -1], [-5, -11], [9, 5], [11, 3], [2, -5], [-14, 5], [-4, 2], [12, -5], [14, -10], [-5, -8], [-7, -8], [0, -14], [-8, 3], [2, 9], [-11, 6], [-3, -2], [-5, 3], [-13, -3], [2, 14], [-8, -2], [-6, 13], [-9, -10], [1, -4], [4, 6], [-2, 15], [-13, -10], [-10, 3], [-13, 13], [-7, -1], [11, -6], [-5, -3], [-12, -8], [-4, -8], [11, -3], [-6, 7], [-9, -15], [-1, -3], [-7, 8], [11, -8], [-14, -13], [11, 6], [11, 11], [-9, -2], [-1, -6], [0, 13], [5, -10], [-6, 2], [10, -8], [1, 5], [4, -7], [-2, 13], [-11, -4], [9, -5], [8, -1], [-13, -4], [-6, -15], [-3, -13], [13, -7], [8, -5], [-4, -10], [7, 2], [-14, 6], [2, -13], [-7, 5], [-11, 14], [-8, 4], [4, -4], [9, -11], [15, -3], [-13, 2], [0, 0], [-7, -15], [1, 13], [-7, -3], [0, 8], [12, -3], [6, -3], [9, 4], [-13, 6], [4, -9], [10, -2], [4, 15], [-11, 4], [14, 12], [8, 14], [-5, -12], [1, 12], [-10, 8], [-15, -1], [5, -11], [10, 6], [15, 5], [-7, 1], [-12, -13], [0, 11], [8, 13], [-8, -10], [-8, 10], [-7, -5], [15, -13], [9, -14], [5, 4], [-14, -7], [-7, -13], [-9, 5], [-6, -10], [-9, -9], [5, -2], [0, 9], [4, 0]] 12 TODO [[-13, -2], [14, -4], [9, -14], [8, -15], [-10, 1], [0, -3], [15, 3], [14, -5], [-5, 4], [12, 1], [-8, -11], [-9, 15], [-11, 5], [-7, 6], [-3, -13], [-3, 6], [15, -13], [12, 0], [-12, -3], [11, -10], [2, -6], [13, -6], [15, -3], [3, -3], [3, 14], [-11, -13], [2, 12], [-13, 13], [1, 8], [5, -8], [-9, -3], [5, -13], [1, -6], [-13, 15], [15, 9], [-9, 2], [-11, -7], [-1, 5], [-9, -1], [5, -6], [1, 10], [12, 13], [-15, -3], [2, 7], [6, 6], [12, -11], [-14, 6], [4, -2], [3, -10], [-8, 15], [2, -1], [14, 13], [12, -5], [-7, -15], [-1, 9], [-4, -10], [-9, 3], [-13, 11], [15, -7], [-11, 1], [-14, 12], [9, -8], [-8, 0], [-5, -8], [7, -14], [8, -4], [10, 15], [0, -10], [-7, 13], [-14, 0], [13, -5], [3, 1], [4, 10], [8, 1], [5, -4], [0, -8], [8, -5], [-1, 2], [-12, -2], [10, -1], [-5, 6], [1, -4], [-2, 14], [13, -14], [-12, 3], [-12, -4], [-7, -3], [-10, -14], [10, -7], [-7, -6], [1, 9], [14, -8], [1, -12], [3, 2], [7, 15], [-4, -3], [7, -4], [-5, 15], [-9, 5], [-5, 8], [3, 3], [-15, -14], [9, 4], [0, 14], [11, -5], [-1, 7]] 8 TODO diff --git a/test_data/list_cyclic_right_shift.tsv b/test_data/list_cyclic_right_shift.tsv index 44a8430cd..6e29ddaf7 100644 --- a/test_data/list_cyclic_right_shift.tsv +++ b/test_data/list_cyclic_right_shift.tsv @@ -1,5 +1,4 @@ linked_list(int) int linked_list(int) -@ L k [] 0 [] TODO [] 1000 [] TODO [2, 3, 5, 6, 10, 9, 1, 11, 4, 8, 7] 9 [5, 6, 10, 9, 1, 11, 4, 8, 7, 2, 3] TODO diff --git a/test_data/longest_contained_interval.tsv b/test_data/longest_contained_interval.tsv index 117107410..453327846 100644 --- a/test_data/longest_contained_interval.tsv +++ b/test_data/longest_contained_interval.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [34, -4, -20, -25, 25, -34, -15, -17, -11, -16, 23, 4, 10, 20, -6, 28, -14, -33, 11, -10, -23, 19, -27, 1, -12, 33, -18, 24, -9, -7, -26, -5, 18, 14, -31] 5 TODO [17, 26, 19, 32, 28, 6, 19, 15, 30, 6, 11, 33, 32, 34, 9, 1, 9, 11, 2, 30, 33, 6, 18, 19, 20, 27, 11, 7, 35, 0, 31, 12, 33, 30, 24] 6 TODO [167, 38, -72, -166, -98, -194, 114, 8, 177, -205, -117, 90, -68, -31, -188, -73, -221, 102, 42, 111, 9, 95, -44, 156, 14, 69, -91, 215, 152, -84, -157, -192, 124, 20, 142, 97, -233, -86, 76, -126, 192, -219, 36, -106, -213, 206, -64, -164, 146, 30, -142, -186, -190, 48, -83, 221, 223, -159, 66, 57, -77, 109, 218, -76, 183, -124, 103, 226, -136, -184, -116, -175, 24, 89, -185, 105, 15, -158, 136, 0, 99, 151, -217, -57, -43, 130, -149, 121, 125, -220, 159, 40, 196, -102, 17, -37, 79, 147, 100, -110, -16, 186, 80, 143, -46, -11, 155, 131, 12, -93, 207, -32, 33, 119, 214, -198, -150, 46, -152, 92, -211, -139, 176, -12, -50, -210, -234, 181, 168, -172, -120, 164, 160, -191, -181, 50, 233, -34, -65, -148, 93, -122, -183, -56, 41, -189, -115, 184, 26, 52, 113, 22, 77, -170, -118, -79, 188, -63, 35, 75, 153, -201, 132, -81, -228, -53, 180, 96, -101, -58, -24, -88, 85, 217, 63, 4, 179, -128, -206, 229, 88, -13, 27, -225, -132, 67, 74, 139, 7, 220, -176, -39, -82, 11, 195, -160, 65, -146, 87, -133, -204, 23, 82, 173, -38, 83, -60, -144, -41, -199, -153, 205, 117, 112, -162, -20, -42, -165, 94, -114, 166, 134, -107, 210, -78, -35, -5, 225, -182, 107, 129, 222, -203, 150] 6 TODO diff --git a/test_data/longest_increasing_subarray.tsv b/test_data/longest_increasing_subarray.tsv index 181e45e0a..248532801 100644 --- a/test_data/longest_increasing_subarray.tsv +++ b/test_data/longest_increasing_subarray.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [2, -3, 3, -6, -6, -2, 0, -1] 3 TODO [-2, 15, 13, -10, -12, 3, 11, 21, -17, 23, 6, 0, 4, 7, 8, -2, -18, 12, 3, -13, 8, -19, 8, 11] 4 TODO [-7, -2, -3, 1, 5, -6, -9, 1, 7, 6, -7] 3 TODO diff --git a/test_data/longest_nondecreasing_subsequence.tsv b/test_data/longest_nondecreasing_subsequence.tsv index e30e7189e..fe5467ab2 100644 --- a/test_data/longest_nondecreasing_subsequence.tsv +++ b/test_data/longest_nondecreasing_subsequence.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [4, 0, 3, 3, 7, 5, 7] 5 TODO [13, 10, 8, 9, 11, 10, 8, 10, 7, 6, 2, 11, 13] 6 TODO [7, 3, 8, 3, 3, 5, 3, 6] 5 TODO diff --git a/test_data/longest_subarray_with_distinct_values.tsv b/test_data/longest_subarray_with_distinct_values.tsv index 538f07fa1..6f3d1fcbe 100644 --- a/test_data/longest_subarray_with_distinct_values.tsv +++ b/test_data/longest_subarray_with_distinct_values.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [1, 1, 1] 1 TODO [1, 2, 1] 2 TODO [1, 2, 1, 3, 1, 2, 1] 3 TODO diff --git a/test_data/longest_subarray_with_sum_constraint.tsv b/test_data/longest_subarray_with_sum_constraint.tsv index bb39e539f..1df0f8a39 100644 --- a/test_data/longest_subarray_with_sum_constraint.tsv +++ b/test_data/longest_subarray_with_sum_constraint.tsv @@ -1,5 +1,4 @@ array(int) int int -@ A k [431, -15, 639, 342, -14, 565, -924, 635, 167, -70] 184 4 Example in the book [-58, -45, 22, 27, 46, -18, -33, 24, -47, -28, 41, 50, -36, -1, 59, 52, -2, -23, 50, -35, -14, 48, 20, 14, -33, 21, -16, 30, -25, 58, 52, -44, 53, -42, 53, -18, -41, -54, 5, -29, -53, -19, -35, -57, -9, 37, -45, 26, -22, -42, -48, 39, -12, -38, 44, -20, -35, -21, 13] -26 59 TODO [1] 0 0 TODO diff --git a/test_data/longest_substring_with_matching_parentheses.tsv b/test_data/longest_substring_with_matching_parentheses.tsv index 3e5dc2a74..cbd63d468 100644 --- a/test_data/longest_substring_with_matching_parentheses.tsv +++ b/test_data/longest_substring_with_matching_parentheses.tsv @@ -1,5 +1,4 @@ string int -@ s ()(((( 2 TODO (()())()((((()((((()()()() 8 TODO ())))())()(((())())())()) 16 TODO diff --git a/test_data/look_and_say.tsv b/test_data/look_and_say.tsv index f624d8b52..79a946f88 100644 --- a/test_data/look_and_say.tsv +++ b/test_data/look_and_say.tsv @@ -1,5 +1,4 @@ int string -@ n 1 1 TODO 2 11 TODO 3 21 TODO diff --git a/test_data/lowest_common_ancestor.tsv b/test_data/lowest_common_ancestor.tsv index 45fcf2253..143488162 100644 --- a/test_data/lowest_common_ancestor.tsv +++ b/test_data/lowest_common_ancestor.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int int -@ tree key1 key2 ["3", "2", "5", "1", "null", "4", "6"] 2 5 3 TODO ["3", "2", "5", "1", "null", "4", "6"] 4 6 5 TODO ["3", "2", "5", "1", "null", "4", "6"] 5 6 5 TODO diff --git a/test_data/lowest_common_ancestor_in_bst.tsv b/test_data/lowest_common_ancestor_in_bst.tsv index 2c23d2125..8325815eb 100644 --- a/test_data/lowest_common_ancestor_in_bst.tsv +++ b/test_data/lowest_common_ancestor_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int int -@ tree key1 key2 ["3", "2", "5", "1", "null", "4", "6"] 1 4 3 TODO ["3", "2", "5", "1", "null", "4", "6"] 4 6 5 TODO ["3", "2", "5", "1", "null", "4", "6"] 1 2 2 TODO diff --git a/test_data/lru_cache.tsv b/test_data/lru_cache.tsv index 2409afdcb..121b41895 100644 --- a/test_data/lru_cache.tsv +++ b/test_data/lru_cache.tsv @@ -1,5 +1,4 @@ array(tuple(string, int, int)) void -@ commands [["LruCache", 6, 0], ["insert", 1, 763], ["lookup", 7, -1], ["insert", 8, 652], ["insert", 8, 91], ["lookup", 7, -1], ["insert", 4, 323], ["lookup", 1, 763], ["insert", 1, 683], ["insert", 11, 66], ["insert", 9, 964]] TODO [["LruCache", 3, 0], ["insert", 5, 623], ["lookup", 5, 623], ["erase", 1, 0], ["lookup", 4, -1], ["lookup", 6, -1], ["insert", 4, 981], ["insert", 5, 550], ["lookup", 2, -1], ["lookup", 5, 623], ["erase", 3, 0]] TODO [["LruCache", 1, 0], ["lookup", 2, -1], ["lookup", 1, -1], ["lookup", 1, -1], ["lookup", 1, -1], ["insert", 1, 239], ["insert", 1, 227], ["lookup", 2, -1], ["insert", 1, 679], ["insert", 1, 765], ["lookup", 2, -1]] TODO diff --git a/test_data/majority_element.tsv b/test_data/majority_element.tsv index 6f3a7912d..55a515f03 100644 --- a/test_data/majority_element.tsv +++ b/test_data/majority_element.tsv @@ -1,5 +1,4 @@ array(string) string -@ input_stream ["32", "32", "32", "27", "32", "24", "32", "32", "5", "25", "38", "15", "11", "32", "32", "35", "11", "32", "32", "32", "32", "32", "32", "39", "32", "19", "32", "32", "32", "16", "32", "26", "32", "32", "32", "32", "8", "1", "17", "32", "3", "38", "32", "8", "32", "32", "4", "32", "21", "32", "9", "24", "32", "32", "16", "18", "32", "8", "32", "28", "20", "22", "33", "23", "32", "32", "18", "35", "13", "31", "32", "32", "30", "32", "36", "32", "25", "32", "32", "32"] 32 TODO ["2", "1", "2", "2", "2", "1", "2", "2"] 2 TODO ["17", "17", "17", "17", "4", "17", "17", "9", "17", "17", "17", "17", "7", "17", "17", "17", "16", "17", "2", "17", "17", "6", "1", "7", "17", "1", "11", "5", "17", "6", "17", "18", "17", "17", "8", "17", "11", "5", "17", "21", "17", "17", "4", "11", "4", "17", "14", "21"] 17 TODO diff --git a/test_data/making_change.tsv b/test_data/making_change.tsv index 791b95018..6cb61d652 100644 --- a/test_data/making_change.tsv +++ b/test_data/making_change.tsv @@ -1,5 +1,4 @@ int int -@ cents 1 1 TODO 2 2 TODO 3 3 TODO diff --git a/test_data/matrix_enclosed_regions.tsv b/test_data/matrix_enclosed_regions.tsv index d07cce98b..5ba22904b 100644 --- a/test_data/matrix_enclosed_regions.tsv +++ b/test_data/matrix_enclosed_regions.tsv @@ -1,5 +1,4 @@ array(array(string[W or B])) array(array(string[W or B])) -@ board [["W", "W", "W", "W", "B", "W", "W", "B", "B", "W"], ["B", "W", "W", "B", "W", "B", "W", "B", "B", "W"], ["B", "W", "W", "W", "B", "B", "B", "B", "B", "W"], ["B", "B", "B", "B", "W", "B", "W", "B", "W", "B"], ["W", "W", "B", "B", "W", "B", "B", "W", "B", "B"], ["W", "W", "W", "B", "B", "B", "B", "W", "W", "W"], ["B", "B", "W", "B", "W", "B", "B", "W", "W", "B"], ["B", "W", "W", "W", "B", "W", "B", "W", "B", "W"], ["W", "W", "W", "W", "B", "W", "W", "W", "B", "B"], ["W", "W", "W", "W", "B", "B", "W", "B", "B", "B"], ["B", "B", "W", "B", "B", "B", "W", "B", "W", "B"], ["B", "W", "W", "B", "B", "B", "W", "W", "B", "B"], ["B", "B", "W", "B", "W", "W", "B", "W", "W", "B"], ["B", "B", "B", "W", "B", "B", "B", "B", "W", "W"], ["W", "B", "W", "B", "B", "B", "W", "B", "B", "B"]] [["W", "W", "W", "W", "B", "W", "W", "B", "B", "W"], ["B", "W", "W", "B", "B", "B", "W", "B", "B", "W"], ["B", "W", "W", "W", "B", "B", "B", "B", "B", "W"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "B", "B", "W", "B", "B"], ["W", "W", "W", "B", "B", "B", "B", "W", "W", "W"], ["B", "B", "W", "B", "B", "B", "B", "W", "W", "B"], ["B", "W", "W", "W", "B", "W", "B", "W", "B", "W"], ["W", "W", "W", "W", "B", "W", "W", "W", "B", "B"], ["W", "W", "W", "W", "B", "B", "W", "B", "B", "B"], ["B", "B", "W", "B", "B", "B", "W", "B", "B", "B"], ["B", "W", "W", "B", "B", "B", "W", "W", "B", "B"], ["B", "B", "W", "B", "B", "B", "B", "W", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "W", "W"], ["W", "B", "W", "B", "B", "B", "W", "B", "B", "B"]] TODO [["W", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "B", "B"], ["B", "W", "W", "W", "W", "W", "W"], ["W", "W", "B", "B", "W", "W", "W"], ["W", "W", "W", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "B", "W"], ["B", "B", "B", "W", "B", "B", "B"], ["W", "W", "B", "W", "B", "W", "B"], ["B", "W", "B", "B", "W", "W", "B"], ["B", "W", "B", "B", "B", "W", "W"], ["W", "B", "W", "B", "W", "B", "W"], ["B", "B", "W", "W", "W", "W", "B"], ["W", "B", "B", "W", "B", "W", "W"], ["W", "W", "B", "B", "W", "B", "B"], ["B", "W", "B", "W", "B", "W", "W"], ["B", "B", "B", "W", "W", "W", "B"], ["W", "B", "W", "W", "B", "W", "W"], ["W", "B", "W", "W", "W", "B", "W"], ["B", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "W", "W"], ["W", "W", "W", "B", "B", "W", "B"], ["W", "W", "W", "B", "B", "B", "W"], ["B", "B", "B", "W", "W", "B", "W"]] [["W", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "B", "B"], ["B", "W", "W", "W", "W", "W", "W"], ["W", "W", "B", "B", "W", "W", "W"], ["W", "W", "W", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "B", "W"], ["B", "B", "B", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "W", "B"], ["B", "W", "B", "B", "W", "W", "B"], ["B", "W", "B", "B", "B", "W", "W"], ["W", "B", "W", "B", "W", "B", "W"], ["B", "B", "W", "W", "W", "W", "B"], ["W", "B", "B", "W", "B", "W", "W"], ["W", "W", "B", "B", "B", "B", "B"], ["B", "W", "B", "W", "B", "W", "W"], ["B", "B", "B", "W", "W", "W", "B"], ["W", "B", "W", "W", "B", "W", "W"], ["W", "B", "W", "W", "W", "B", "W"], ["B", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "W", "W"], ["W", "W", "W", "B", "B", "W", "B"], ["W", "W", "W", "B", "B", "B", "W"], ["B", "B", "B", "W", "W", "B", "W"]] TODO [["B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "B", "B", "W", "B", "B", "W", "B"], ["W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B"], ["W", "W", "W", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B"], ["W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W"], ["B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "B", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W"], ["B", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B"], ["B", "B", "W", "B", "B", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B"], ["B", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "W", "W", "W"], ["W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B"], ["W", "B", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W"], ["W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B"], ["W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W"], ["B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W"], ["W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W"], ["W", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W"], ["B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B"], ["B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W"], ["B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B"], ["B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W"], ["W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W"], ["B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B"], ["B", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W"], ["B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "B", "W", "B"], ["W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B"], ["W", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W"], ["W", "W", "W", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "W"], ["B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "W", "B"], ["B", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W"], ["W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W"], ["B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "W", "W", "B"], ["B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W"], ["B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B"], ["W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W"], ["B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W"], ["W", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W"], ["W", "B", "W", "B", "B", "B", "W", "B", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B"], ["W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B"], ["W", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W"], ["W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "W"], ["B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "W", "B", "B"], ["B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B"], ["W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "B"], ["W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "B"], ["B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B"], ["B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W"], ["W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "W", "B"], ["W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W", "W"], ["B", "W", "W", "W", "B", "W", "B", "W", "B", "W", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "B", "W"], ["W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B"], ["B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "B", "B", "W", "B", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W"], ["W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W"]] [["B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "B", "B", "W", "B", "B", "W", "B"], ["W", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "B", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W", "B"], ["W", "W", "W", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "B"], ["W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "W", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W"], ["B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W"], ["B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B"], ["B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W"], ["W", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W"], ["W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "W", "B"], ["W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "W", "W"], ["B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W"], ["W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W"], ["W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "W", "B", "W"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "B", "B", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W"], ["W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "W"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "W"], ["B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "W", "B"], ["W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B"], ["W", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "W", "W"], ["W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "W"], ["B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "W", "B"], ["B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W"], ["W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B"], ["B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W"], ["B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B"], ["W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W"], ["B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W"], ["W", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W"], ["W", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "W", "B", "B", "W", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "W", "W", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W"], ["W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W"], ["B", "W", "W", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "W", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W"], ["W", "W", "W", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "W", "W", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"], ["W", "W", "B", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W"], ["B", "W", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "W"], ["W", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "W", "B", "W", "W", "W", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "B", "B", "B", "B", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "B"], ["B", "W", "W", "B", "B", "W", "B", "B", "B", "W", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "W", "W", "B", "W", "B", "B", "W", "B", "W", "W", "B", "W", "W", "W", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "W", "B", "B", "W", "W", "B", "B", "B", "W", "W", "W"], ["B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "W", "W", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "W", "W", "W", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "W", "B", "B", "B", "B", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "B", "B", "B", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "W", "W", "B", "B", "W", "B", "B", "B", "B", "W", "B", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "B", "B", "B", "W", "B", "B", "W"], ["W", "W", "B", "B", "W", "B", "B", "B", "W", "W", "B", "W", "B", "W", "B", "B", "W", "B", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "B", "W", "W", "B", "B", "W", "B", "B", "W", "B", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "W", "B", "B", "W", "W", "B", "W", "B", "B", "W", "W", "W", "W", "B", "B", "B", "B", "B", "B", "W", "W", "B", "W", "W", "W", "W", "B", "B", "W", "W", "B", "W", "W", "W", "B", "W", "W", "B", "W", "W", "W", "W", "W", "W", "W", "B", "W", "W", "B", "W"]] TODO diff --git a/test_data/matrix_rotation.tsv b/test_data/matrix_rotation.tsv index fb3f919f5..0b9e4ee68 100644 --- a/test_data/matrix_rotation.tsv +++ b/test_data/matrix_rotation.tsv @@ -1,5 +1,4 @@ array(array(int)) array(array(int)) -@ A [] [] TODO [[1]] [[1]] TODO [[1, 2], [3, 4]] [[3, 1], [4, 2]] TODO diff --git a/test_data/max_of_sliding_window.tsv b/test_data/max_of_sliding_window.tsv index 8e34c1752..c0ad2856d 100644 --- a/test_data/max_of_sliding_window.tsv +++ b/test_data/max_of_sliding_window.tsv @@ -1,5 +1,4 @@ array(tuple(int[time], float[volume])) int array(tuple(int, float)) -@ A w [[0, 57.7], [1, 62.6], [3, 59.5], [5, 83.9], [6, 57.2], [7, 72.7], [8, 46.8], [9, 96.2], [10, 61.9], [11, 70.9], [12, 49.4], [13, 77.8], [18, 49.0], [19, 64.9], [20, 92.3], [21, 46.1], [24, 91.7], [25, 73.2], [26, 76.2], [27, 45.4], [28, 91.3], [29, 86.9], [30, 81.7], [33, 64.4], [34, 90.7], [35, 69.1], [37, 91.0], [40, 58.3], [41, 69.2], [42, 81.2], [43, 72.2], [44, 99.3], [46, 64.7], [49, 81.4], [51, 85.5], [52, 94.9], [53, 65.6], [54, 71.3], [58, 74.6], [59, 84.2], [61, 81.4], [66, 99.4], [67, 62.8], [68, 94.8], [69, 68.9], [71, 70.1], [72, 64.4], [74, 61.7], [75, 45.8], [76, 46.0], [78, 91.5], [80, 85.9], [81, 68.1], [83, 98.6], [85, 70.0], [86, 98.3], [87, 51.0], [88, 91.0], [89, 76.4], [92, 64.0], [93, 57.1], [94, 82.3], [95, 97.3], [97, 70.4], [102, 91.4], [103, 99.5], [104, 77.5], [105, 80.4], [106, 58.5], [108, 76.1], [109, 79.7], [110, 69.6], [111, 63.9], [113, 78.7], [116, 49.2], [117, 73.0], [122, 68.1]] 51 [[0, 57.7], [1, 62.6], [3, 62.6], [5, 83.9], [6, 83.9], [7, 83.9], [8, 83.9], [9, 96.2], [10, 96.2], [11, 96.2], [12, 96.2], [13, 96.2], [18, 96.2], [19, 96.2], [20, 96.2], [21, 96.2], [24, 96.2], [25, 96.2], [26, 96.2], [27, 96.2], [28, 96.2], [29, 96.2], [30, 96.2], [33, 96.2], [34, 96.2], [35, 96.2], [37, 96.2], [40, 96.2], [41, 96.2], [42, 96.2], [43, 96.2], [44, 99.3], [46, 99.3], [49, 99.3], [51, 99.3], [52, 99.3], [53, 99.3], [54, 99.3], [58, 99.3], [59, 99.3], [61, 99.3], [66, 99.4], [67, 99.4], [68, 99.4], [69, 99.4], [71, 99.4], [72, 99.4], [74, 99.4], [75, 99.4], [76, 99.4], [78, 99.4], [80, 99.4], [81, 99.4], [83, 99.4], [85, 99.4], [86, 99.4], [87, 99.4], [88, 99.4], [89, 99.4], [92, 99.4], [93, 99.4], [94, 99.4], [95, 99.4], [97, 99.4], [102, 99.4], [103, 99.5], [104, 99.5], [105, 99.5], [106, 99.5], [108, 99.5], [109, 99.5], [110, 99.5], [111, 99.5], [113, 99.5], [116, 99.5], [117, 99.5], [122, 99.5]] TODO [[0, 36.1], [1, 45.3], [2, 12.9], [3, 38.6], [4, 9.2], [5, 70.5], [6, 90.5], [7, 97.6], [8, 2.3], [9, 48.2], [10, 72.5], [11, 90.9], [12, 58.8], [13, 78.6], [14, 71.5], [15, 25.8], [16, 90.1], [17, 13.0], [18, 70.4], [19, 74.8], [20, 60.0], [21, 45.7], [22, 57.6], [23, 30.8], [24, 81.2], [25, 49.3], [26, 6.0], [27, 84.2], [28, 10.8], [29, 75.5], [30, 30.2], [31, 85.5], [32, 31.6], [33, 74.6], [34, 27.6], [35, 44.0], [36, 89.6], [37, 19.8], [38, 77.3], [39, 79.8], [40, 25.2], [41, 46.8], [42, 19.2], [43, 79.3], [44, 37.3], [45, 19.1], [46, 21.5], [47, 72.2], [48, 30.7], [49, 19.7], [50, 30.8], [51, 5.4], [52, 77.9], [53, 7.6], [54, 23.3], [55, 15.0], [56, 85.1], [57, 37.0], [58, 61.2], [59, 78.5], [60, 22.9], [61, 70.4], [62, 82.7], [63, 5.8], [64, 30.4], [65, 6.7], [66, 65.3], [67, 40.1], [68, 34.3], [69, 24.9], [70, 5.9], [71, 43.7], [72, 68.4], [73, 90.7], [74, 83.0], [75, 62.2], [76, 39.0], [77, 60.6], [78, 39.7], [79, 61.0], [80, 83.9], [81, 42.9], [82, 47.2], [84, 64.7], [85, 57.1], [86, 13.6], [87, 47.7], [88, 69.1], [89, 11.1], [90, 47.8], [91, 24.0], [92, 99.0], [93, 70.4], [94, 98.3], [95, 73.0], [96, 6.7], [97, 46.5], [98, 91.7], [99, 20.5], [100, 74.5], [101, 26.4], [102, 12.7], [104, 19.8], [105, 24.7], [106, 35.7], [107, 68.4], [108, 9.6], [109, 68.5], [110, 94.0], [111, 10.8], [112, 83.7], [113, 5.3], [114, 64.4], [115, 21.4], [116, 6.9], [117, 2.5], [118, 62.2], [119, 38.3], [120, 38.3], [121, 99.8], [122, 92.8], [123, 81.8], [124, 40.7], [125, 88.3], [126, 97.4], [127, 21.8], [128, 35.4], [129, 10.4], [130, 11.4], [131, 73.8], [132, 7.0], [133, 36.3], [134, 49.0], [135, 56.2], [136, 43.9], [137, 97.0], [138, 81.6], [139, 59.7], [140, 83.7], [141, 48.7], [142, 75.3], [143, 19.4], [144, 45.7], [145, 19.4], [146, 57.3], [147, 34.5], [148, 51.3], [149, 13.9], [150, 67.5], [151, 93.9], [152, 92.2], [153, 30.7], [154, 42.6], [155, 54.8], [156, 67.2], [157, 79.1], [158, 41.7], [159, 22.8], [160, 45.7], [161, 81.4], [162, 36.6], [163, 29.9], [164, 47.5], [165, 80.4], [166, 87.8], [167, 37.2], [168, 86.1], [169, 34.4], [170, 60.4], [171, 37.4], [172, 55.4], [173, 51.0], [174, 83.4], [175, 83.9], [176, 61.0], [177, 90.7], [178, 22.7], [179, 28.2], [180, 3.5], [181, 44.6], [182, 55.9], [183, 79.8], [184, 20.7], [185, 26.4], [186, 4.3], [187, 84.4], [188, 54.8], [189, 99.4], [190, 82.1], [191, 62.8], [192, 15.1], [193, 29.7], [194, 9.3], [195, 55.3], [196, 98.1], [197, 91.2], [198, 16.6], [199, 83.6], [200, 10.6], [201, 78.5], [202, 33.0], [203, 52.8], [204, 80.0], [205, 41.2], [206, 61.2], [207, 13.2], [208, 90.0], [209, 49.0], [210, 60.1], [211, 59.0], [212, 60.2], [213, 5.7], [214, 73.5], [215, 90.4], [216, 8.0]] 81 [[0, 36.1], [1, 45.3], [2, 45.3], [3, 45.3], [4, 45.3], [5, 70.5], [6, 90.5], [7, 97.6], [8, 97.6], [9, 97.6], [10, 97.6], [11, 97.6], [12, 97.6], [13, 97.6], [14, 97.6], [15, 97.6], [16, 97.6], [17, 97.6], [18, 97.6], [19, 97.6], [20, 97.6], [21, 97.6], [22, 97.6], [23, 97.6], [24, 97.6], [25, 97.6], [26, 97.6], [27, 97.6], [28, 97.6], [29, 97.6], [30, 97.6], [31, 97.6], [32, 97.6], [33, 97.6], [34, 97.6], [35, 97.6], [36, 97.6], [37, 97.6], [38, 97.6], [39, 97.6], [40, 97.6], [41, 97.6], [42, 97.6], [43, 97.6], [44, 97.6], [45, 97.6], [46, 97.6], [47, 97.6], [48, 97.6], [49, 97.6], [50, 97.6], [51, 97.6], [52, 97.6], [53, 97.6], [54, 97.6], [55, 97.6], [56, 97.6], [57, 97.6], [58, 97.6], [59, 97.6], [60, 97.6], [61, 97.6], [62, 97.6], [63, 97.6], [64, 97.6], [65, 97.6], [66, 97.6], [67, 97.6], [68, 97.6], [69, 97.6], [70, 97.6], [71, 97.6], [72, 97.6], [73, 97.6], [74, 97.6], [75, 97.6], [76, 97.6], [77, 97.6], [78, 97.6], [79, 97.6], [80, 97.6], [81, 97.6], [82, 97.6], [84, 97.6], [85, 97.6], [86, 97.6], [87, 97.6], [88, 97.6], [89, 90.9], [90, 90.9], [91, 90.9], [92, 99.0], [93, 99.0], [94, 99.0], [95, 99.0], [96, 99.0], [97, 99.0], [98, 99.0], [99, 99.0], [100, 99.0], [101, 99.0], [102, 99.0], [104, 99.0], [105, 99.0], [106, 99.0], [107, 99.0], [108, 99.0], [109, 99.0], [110, 99.0], [111, 99.0], [112, 99.0], [113, 99.0], [114, 99.0], [115, 99.0], [116, 99.0], [117, 99.0], [118, 99.0], [119, 99.0], [120, 99.0], [121, 99.8], [122, 99.8], [123, 99.8], [124, 99.8], [125, 99.8], [126, 99.8], [127, 99.8], [128, 99.8], [129, 99.8], [130, 99.8], [131, 99.8], [132, 99.8], [133, 99.8], [134, 99.8], [135, 99.8], [136, 99.8], [137, 99.8], [138, 99.8], [139, 99.8], [140, 99.8], [141, 99.8], [142, 99.8], [143, 99.8], [144, 99.8], [145, 99.8], [146, 99.8], [147, 99.8], [148, 99.8], [149, 99.8], [150, 99.8], [151, 99.8], [152, 99.8], [153, 99.8], [154, 99.8], [155, 99.8], [156, 99.8], [157, 99.8], [158, 99.8], [159, 99.8], [160, 99.8], [161, 99.8], [162, 99.8], [163, 99.8], [164, 99.8], [165, 99.8], [166, 99.8], [167, 99.8], [168, 99.8], [169, 99.8], [170, 99.8], [171, 99.8], [172, 99.8], [173, 99.8], [174, 99.8], [175, 99.8], [176, 99.8], [177, 99.8], [178, 99.8], [179, 99.8], [180, 99.8], [181, 99.8], [182, 99.8], [183, 99.8], [184, 99.8], [185, 99.8], [186, 99.8], [187, 99.8], [188, 99.8], [189, 99.8], [190, 99.8], [191, 99.8], [192, 99.8], [193, 99.8], [194, 99.8], [195, 99.8], [196, 99.8], [197, 99.8], [198, 99.8], [199, 99.8], [200, 99.8], [201, 99.8], [202, 99.8], [203, 99.4], [204, 99.4], [205, 99.4], [206, 99.4], [207, 99.4], [208, 99.4], [209, 99.4], [210, 99.4], [211, 99.4], [212, 99.4], [213, 99.4], [214, 99.4], [215, 99.4], [216, 99.4]] TODO [[0, 69.1], [1, 96.2], [2, 41.0]] 1 [[0, 69.1], [1, 96.2], [2, 96.2]] TODO diff --git a/test_data/max_product_all_but_one.tsv b/test_data/max_product_all_but_one.tsv index 94e572fbe..0ce4111a0 100644 --- a/test_data/max_product_all_but_one.tsv +++ b/test_data/max_product_all_but_one.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [3, 5, 4, -1, 5, 1, -1] 300 Example in the book [-7, 1, -9, -4, 9, -6] 13608 TODO [6, 2, 6, 7] 252 TODO diff --git a/test_data/max_safe_height.tsv b/test_data/max_safe_height.tsv index 1a94cc74b..a687defa6 100644 --- a/test_data/max_safe_height.tsv +++ b/test_data/max_safe_height.tsv @@ -1,5 +1,4 @@ int int int -@ cases drops 0 0 0 TODO 0 1 0 TODO 0 2 0 TODO diff --git a/test_data/max_square_submatrix.tsv b/test_data/max_square_submatrix.tsv index d35514579..e836df5df 100644 --- a/test_data/max_square_submatrix.tsv +++ b/test_data/max_square_submatrix.tsv @@ -1,5 +1,4 @@ array(array(bool)) int -@ A [[true, false, true, false, false, false, false], [true, true, false, true, false, true, false], [false, true, false, false, true, true, true], [false, false, false, true, true, true, true], [true, false, true, true, false, true, true], [true, false, true, true, true, true, false], [false, true, false, true, false, false, true], [false, true, true, true, true, false, false], [false, true, true, true, true, false, false], [false, true, true, true, true, false, true]] 9 TODO [[true, false, false, false, true], [true, false, true, true, true], [true, true, false, true, true], [true, false, false, false, false], [false, false, false, true, true], [false, false, true, false, true], [false, true, true, false, true]] 4 TODO [[false, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true, false, false, true, true, false, true, true, false, false, false, true, true, true, false, false, true, true, true, false, true, true, false, false, true, false, false], [true, false, true, true, false, true, false, false, false, true, false, false, false, false, false, false, true, false, false, true, false, true, true, false, true, true, false, false, true, false, true, true, false, true, false, true, true, false, false, true, true, false], [true, false, false, true, false, true, false, true, true, true, true, true, false, false, true, false, false, true, false, false, true, true, true, true, true, false, true, true, false, true, false, true, true, false, true, false, true, true, false, true, false, true], [true, false, true, false, false, true, false, false, true, false, false, false, false, false, false, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, false, true, false, false, false, false, true, false, false, true, false]] 4 TODO diff --git a/test_data/max_submatrix.tsv b/test_data/max_submatrix.tsv index 88271de3e..df249e7fe 100644 --- a/test_data/max_submatrix.tsv +++ b/test_data/max_submatrix.tsv @@ -1,5 +1,4 @@ array(array(bool)) int -@ A [[false, true, true], [true, true, true], [false, false, false], [false, true, true], [true, false, true]] 4 TODO [[false, false, true, true, true, true, false, false], [false, false, true, false, true, false, true, true], [true, true, false, true, false, false, true, true], [true, false, true, true, true, true, false, true], [false, true, false, false, false, false, true, false], [false, true, false, false, false, false, false, false], [false, false, false, true, false, false, true, false], [true, false, true, false, false, false, false, true], [true, true, true, false, false, false, true, true], [true, false, false, false, false, true, true, false], [true, false, true, true, false, true, true, true], [false, true, true, false, true, false, true, false], [true, true, false, false, true, true, true, true], [true, true, false, false, true, true, true, false], [false, true, true, false, true, true, true, false], [false, true, false, true, false, true, true, false], [true, true, false, true, true, true, true, true], [false, true, false, false, false, true, true, false], [true, true, true, true, true, true, true, false], [true, true, true, false, true, true, true, true], [false, false, false, true, false, true, true, true], [true, true, true, false, false, true, true, true], [true, true, true, true, true, true, false, false], [false, false, false, false, true, true, false, false], [false, true, false, true, true, true, false, true], [true, false, false, false, false, true, true, false], [false, true, true, true, true, false, true, false]] 20 TODO [[false, false, false, true, false, false, false, true, true, true, true, true, false]] 5 TODO diff --git a/test_data/max_sum_subarray.tsv b/test_data/max_sum_subarray.tsv index c787cbb70..072d9e066 100644 --- a/test_data/max_sum_subarray.tsv +++ b/test_data/max_sum_subarray.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [1] 1 TODO [-5] 0 TODO [0] 0 TODO diff --git a/test_data/max_teams_in_photograph.tsv b/test_data/max_teams_in_photograph.tsv index 47ef4780b..53fc6a9aa 100644 --- a/test_data/max_teams_in_photograph.tsv +++ b/test_data/max_teams_in_photograph.tsv @@ -1,5 +1,4 @@ int[k] array(tuple(int[from], int[to])[edge]) int -@ k edges 3 [[0, 2], [1, 2]] 2 Simple graph with three nodes 24 [[0, 13], [9, 11], [4, 18], [5, 7], [2, 17], [19, 21], [18, 19], [6, 12], [5, 9], [11, 22], [2, 12], [0, 6], [2, 6], [7, 8], [0, 12], [4, 23], [7, 14], [2, 13], [12, 13], [0, 22], [5, 22], [8, 9], [0, 21], [15, 18], [8, 22], [2, 11], [1, 12], [6, 15], [7, 13], [0, 14], [1, 13], [7, 11], [2, 4], [10, 19], [4, 12], [0, 5], [9, 12], [3, 21], [1, 5], [10, 16], [14, 21], [9, 13], [13, 17], [15, 16], [15, 20], [4, 15], [21, 23], [3, 15], [6, 10], [13, 20], [22, 23], [2, 8], [0, 9], [8, 14], [14, 16], [10, 22], [15, 23], [2, 3], [6, 20], [7, 21], [19, 20], [9, 20], [15, 22], [2, 15], [7, 22], [4, 6], [17, 22], [5, 8], [5, 6], [16, 22], [8, 21], [10, 14], [5, 14], [3, 19], [9, 16], [9, 17], [8, 18], [14, 17], [1, 20], [1, 9], [12, 20], [14, 18], [11, 19], [3, 17], [2, 7], [3, 22], [14, 15], [1, 16], [5, 12], [1, 3], [1, 11], [11, 12], [4, 10], [14, 19], [10, 23], [6, 19], [5, 16], [12, 17], [0, 11], [15, 21], [0, 19], [5, 21], [10, 11], [3, 5], [6, 13], [6, 21], [9, 21], [0, 4], [11, 15], [0, 7], [10, 13], [1, 15], [1, 4], [1, 6], [18, 22], [8, 20], [6, 17], [0, 23], [3, 6], [3, 23], [0, 8], [11, 17], [7, 9], [14, 23], [5, 20], [14, 22], [0, 20], [4, 22], [9, 18], [9, 22], [7, 15], [5, 11], [18, 23], [0, 10], [2, 23], [10, 18], [12, 22], [7, 10], [16, 19], [9, 15], [12, 21], [16, 23], [3, 8], [1, 2], [12, 18], [6, 18], [2, 14], [17, 21], [16, 21], [4, 20], [11, 23], [7, 23], [1, 23], [6, 14], [0, 17], [7, 16], [1, 22], [2, 9], [5, 19], [3, 12], [3, 20], [10, 12], [17, 18], [11, 13], [8, 11], [3, 11], [8, 23], [5, 23], [8, 16], [9, 14], [1, 21], [11, 18], [0, 1], [1, 14], [1, 17], [6, 9], [16, 17], [17, 20], [13, 23], [13, 15], [4, 19], [19, 23], [9, 23], [4, 13], [8, 13], [11, 21], [3, 7], [6, 23], [5, 17], [8, 17], [7, 17], [0, 18], [2, 16], [1, 8], [3, 4], [10, 20], [3, 13], [5, 10], [13, 21], [12, 16], [14, 20], [12, 15], [8, 15], [13, 18], [4, 9], [4, 14], [19, 22], [2, 10], [4, 8], [8, 19], [6, 11], [17, 19], [0, 3], [10, 17], [10, 21], [15, 17], [11, 20], [18, 21], [0, 15], [18, 20], [13, 14], [12, 23], [2, 20], [2, 18], [6, 16], [20, 22], [4, 11], [2, 5], [10, 15], [3, 9], [20, 21], [4, 21], [6, 7], [5, 13], [20, 23], [3, 14], [2, 19]] 21 TODO 61 [[1, 34], [22, 55], [19, 48], [30, 45], [2, 15], [1, 43], [0, 4], [36, 38], [23, 58], [27, 57], [2, 40], [9, 45], [14, 49], [1, 42], [32, 46], [38, 58], [15, 42], [18, 53], [26, 35], [14, 52], [13, 31], [23, 47], [10, 39], [8, 56], [36, 51], [3, 32], [13, 18], [1, 57], [13, 24], [3, 33], [31, 37], [34, 51], [38, 56], [32, 47], [6, 46], [27, 42], [1, 52], [7, 15], [47, 48], [28, 60], [14, 55], [18, 52], [47, 60], [6, 39], [49, 53], [5, 36], [20, 52], [8, 22], [20, 59], [15, 33], [19, 32], [11, 54], [13, 25], [29, 47], [9, 48], [10, 17], [14, 28], [8, 12], [10, 20], [13, 47], [30, 59], [43, 57], [24, 49], [37, 39], [11, 49], [36, 45], [3, 9], [33, 35], [22, 60], [21, 56], [47, 52], [29, 36], [8, 42], [17, 31], [39, 49], [0, 52], [39, 50], [15, 57], [7, 50], [26, 42], [25, 57], [24, 51], [9, 41], [6, 38], [11, 40], [22, 48], [25, 56], [3, 22], [6, 11], [10, 51], [16, 38], [18, 24], [12, 45], [2, 52], [10, 19], [17, 35], [4, 36], [32, 33], [10, 18], [7, 52], [16, 19], [29, 40], [20, 53], [23, 24], [24, 30], [10, 60], [6, 44], [2, 25], [38, 46], [44, 55], [4, 24], [37, 46], [18, 43], [7, 45], [22, 47], [0, 55], [18, 44], [16, 50], [22, 27], [42, 53], [4, 11], [4, 27], [9, 46], [25, 38], [36, 39], [14, 15], [4, 18], [35, 47], [10, 52], [5, 47], [15, 24], [40, 48], [20, 56], [12, 37], [3, 10], [34, 40], [34, 52], [6, 25], [2, 14], [4, 60], [33, 51], [19, 20], [0, 34], [51, 55], [23, 37], [16, 58], [6, 30], [23, 55], [17, 56], [0, 60], [43, 56], [28, 56], [35, 48], [35, 53], [9, 35], [20, 50], [2, 59], [11, 37], [29, 42], [2, 32], [3, 60], [7, 9], [20, 30], [3, 52], [27, 43], [14, 18], [18, 42], [20, 34], [35, 44], [36, 41], [9, 10], [22, 46], [14, 57], [8, 16], [5, 14], [28, 50], [17, 40], [28, 48], [28, 53], [15, 51], [5, 45], [22, 38], [8, 40], [29, 35], [32, 57], [39, 53], [44, 60], [40, 42], [49, 55], [30, 40], [52, 56], [39, 40], [6, 56], [46, 60], [25, 28], [7, 18], [24, 54], [11, 17], [8, 11], [32, 38], [16, 42], [18, 23], [0, 23], [11, 46], [4, 15], [1, 48], [3, 25], [20, 45], [21, 42], [13, 38], [19, 24], [1, 27], [1, 7], [5, 20], [20, 21], [7, 31], [32, 60], [20, 27], [15, 31], [43, 60], [26, 54], [41, 49], [5, 44], [1, 11], [7, 36], [40, 53], [0, 49], [18, 21], [5, 30], [48, 60], [1, 18], [2, 28], [18, 31], [52, 57], [28, 30], [0, 5], [7, 59], [4, 28], [3, 28], [46, 55], [40, 41], [14, 36], [3, 17], [45, 59], [48, 57], [58, 59], [31, 38], [10, 21], [2, 34], [3, 42], [22, 31], [7, 32], [8, 44], [26, 51], [11, 32], [44, 53], [31, 35], [14, 60], [30, 34], [48, 52], [5, 15], [2, 44], [45, 55], [2, 60], [10, 11], [37, 40], [19, 43], [40, 56], [36, 56], [3, 39], [15, 32], [36, 52], [40, 58], [46, 57], [25, 45], [5, 21], [45, 60], [8, 36], [32, 43], [36, 43], [30, 51], [53, 56], [14, 42], [7, 10], [51, 57], [23, 33], [0, 9], [28, 46], [6, 57], [12, 39], [28, 51], [20, 36], [18, 48], [44, 46], [6, 47], [10, 31], [27, 48], [9, 39], [25, 35], [45, 51], [39, 44], [3, 50], [20, 39], [24, 36], [6, 20], [11, 51], [8, 30], [2, 50], [8, 53], [7, 13], [17, 29], [33, 54], [37, 59], [45, 52], [10, 28], [13, 39], [17, 53], [3, 19], [45, 49], [25, 59], [19, 28], [17, 52], [14, 33], [16, 22], [46, 50], [7, 30], [33, 42], [2, 7], [7, 47], [13, 49], [7, 53], [27, 37], [9, 58], [2, 41], [15, 55], [11, 22], [56, 59], [18, 49], [0, 10], [19, 50], [2, 18], [17, 50], [21, 46], [36, 59], [1, 55], [14, 20], [11, 36], [36, 44], [26, 28], [6, 45], [40, 54], [2, 56], [0, 16], [32, 55], [43, 54], [50, 56], [34, 37], [34, 47], [22, 23], [38, 48], [4, 55], [4, 38], [11, 15], [27, 58], [21, 23], [5, 35], [25, 32], [24, 28], [36, 53], [8, 10], [12, 50], [34, 43], [38, 40], [7, 60], [28, 59], [46, 48], [37, 45], [39, 54], [5, 9], [16, 39], [25, 36], [48, 53], [3, 48], [1, 3], [8, 17], [3, 24], [44, 57], [21, 48], [11, 29], [14, 46], [29, 57], [14, 44], [6, 22], [1, 45], [10, 35], [2, 24], [3, 44], [19, 56], [19, 46], [0, 28], [39, 48], [6, 59], [29, 43], [14, 34], [22, 56], [27, 55], [1, 32], [21, 49], [16, 30], [41, 52], [1, 41], [21, 47], [1, 28], [16, 37], [28, 57], [11, 28], [22, 34], [19, 42], [12, 31], [31, 36], [5, 60], [16, 28], [11, 60], [15, 59], [35, 39], [4, 50], [5, 49], [53, 57], [48, 54], [1, 17], [0, 36], [37, 38], [46, 47], [50, 55], [4, 12], [41, 57], [33, 38], [6, 33], [17, 34], [47, 56], [19, 25], [2, 29], [7, 58], [9, 53], [19, 36], [12, 33], [2, 38], [30, 38], [46, 54], [8, 49], [6, 36], [3, 20], [2, 54], [10, 38], [10, 22], [6, 12], [39, 41], [7, 39], [37, 54], [40, 59], [12, 49], [13, 45], [33, 52], [7, 34], [13, 15], [30, 37], [19, 49], [0, 1], [42, 44], [9, 21], [10, 26], [13, 42], [36, 37], [15, 43], [6, 19], [15, 37], [0, 37], [1, 60], [17, 18], [25, 37], [5, 8], [7, 54], [1, 44], [1, 31], [20, 25], [11, 19], [4, 46], [9, 55], [17, 30], [10, 44], [23, 27], [26, 43], [3, 36], [6, 32], [5, 10], [21, 37], [15, 22], [1, 2], [9, 15], [9, 16], [0, 33], [26, 31], [9, 33], [17, 48], [10, 37], [12, 44], [8, 28], [49, 52], [13, 60], [16, 44], [18, 22], [2, 49], [45, 54], [3, 23], [19, 27], [32, 53], [24, 43], [6, 23], [23, 36], [51, 53], [34, 58], [22, 49], [15, 36], [1, 46], [50, 51], [9, 12], [21, 55], [18, 27], [10, 23], [10, 29], [13, 30], [31, 57], [8, 54], [12, 19], [2, 23], [13, 21], [21, 38], [3, 30], [33, 50], [1, 54], [11, 47], [12, 28], [17, 58], [1, 58], [31, 40], [1, 33], [1, 13], [3, 6], [7, 38], [20, 58], [48, 56], [24, 44], [5, 22], [2, 3], [42, 47], [11, 31], [28, 29], [20, 47], [17, 32], [11, 59], [41, 56], [3, 35], [19, 57], [7, 26], [21, 50], [2, 19], [41, 45], [46, 52], [28, 43], [2, 35], [1, 5], [2, 4], [12, 43], [3, 8], [7, 22], [3, 55], [32, 45], [10, 57], [17, 46], [11, 53], [22, 33], [3, 29], [18, 39], [4, 26], [0, 35], [16, 25], [24, 32], [20, 37], [8, 43], [31, 39], [24, 56], [0, 25], [11, 23], [9, 52], [9, 42], [17, 38], [37, 57], [42, 50], [4, 37], [33, 43], [13, 36], [12, 25], [15, 53], [35, 50], [26, 27], [29, 58], [21, 22], [41, 60], [8, 48], [15, 54], [32, 42], [6, 48], [16, 56], [53, 60], [43, 59], [35, 60], [8, 59], [29, 50], [38, 44], [30, 49], [3, 21], [4, 14], [39, 58], [5, 12], [19, 30], [29, 52], [2, 58], [38, 42], [39, 47], [12, 30], [6, 28], [44, 49], [5, 55], [21, 34], [24, 59], [22, 42], [39, 57], [19, 35], [28, 58], [15, 28], [42, 45], [13, 35], [3, 45], [12, 55], [2, 5], [44, 51], [25, 52], [8, 45], [25, 29], [9, 13], [0, 27], [4, 10], [50, 58], [16, 20], [30, 41], [20, 46], [0, 20], [15, 41], [33, 46], [6, 54], [16, 49], [21, 44], [51, 59], [46, 51], [45, 47], [13, 55], [40, 60], [19, 53], [18, 25], [39, 59], [22, 57], [10, 46], [11, 52], [21, 51], [0, 30], [0, 19], [6, 31], [2, 43], [13, 44], [7, 51], [9, 28], [4, 8], [18, 60], [11, 26], [4, 56], [29, 56], [8, 41], [16, 36], [38, 51], [33, 36], [21, 36], [10, 59], [2, 39], [12, 52], [2, 13], [20, 23], [41, 58], [19, 23], [21, 58], [4, 49], [33, 47], [13, 32], [36, 40], [42, 54], [18, 58], [54, 57], [7, 21], [43, 50], [11, 27], [9, 34], [14, 48], [25, 50], [27, 59], [11, 13], [2, 9], [45, 58], [27, 39], [9, 44], [27, 29], [11, 25], [26, 41], [19, 45], [27, 46], [8, 14], [33, 53], [27, 50], [5, 53], [26, 55], [24, 29], [0, 14], [14, 58], [16, 57], [46, 53], [5, 54], [3, 15], [42, 59], [34, 48], [18, 33], [3, 56], [5, 59], [14, 41], [23, 50], [1, 29], [0, 31], [55, 56], [32, 50], [34, 50], [18, 50], [39, 45], [12, 56], [23, 56], [9, 49], [31, 33], [9, 23], [28, 41], [2, 48], [24, 52], [47, 57], [3, 13], [15, 58], [22, 43], [18, 35], [10, 12], [17, 27], [22, 53], [24, 58], [1, 47], [6, 17], [14, 59], [2, 16], [7, 17], [12, 18], [8, 15], [13, 27], [36, 49], [7, 20], [11, 35], [13, 53], [38, 55], [12, 58], [13, 59], [43, 51], [12, 13], [16, 48], [29, 39], [25, 27], [4, 53], [16, 21], [11, 57], [36, 60], [12, 23], [13, 43], [18, 47], [30, 33], [26, 40], [17, 43], [48, 59], [31, 53], [40, 49], [1, 38], [16, 26], [2, 31], [18, 54], [38, 60], [5, 23], [22, 24], [5, 19], [20, 32], [44, 50], [1, 35], [6, 27], [45, 48], [0, 53], [14, 56], [2, 26], [38, 53], [5, 40], [3, 47], [8, 9], [10, 48], [6, 53], [1, 26], [4, 21], [21, 31], [13, 33], [28, 54], [25, 26], [12, 21], [11, 41], [12, 48], [17, 41], [23, 35], [15, 47], [41, 48], [37, 51], [10, 45], [22, 37], [26, 57], [3, 5], [7, 19], [11, 44], [23, 29], [5, 27], [38, 52], [17, 47], [37, 43], [17, 55], [48, 50], [19, 33], [18, 40], [31, 56], [33, 40], [0, 32], [21, 24], [26, 32], [8, 34], [42, 56], [6, 24], [41, 53], [19, 54], [0, 6], [18, 57], [16, 51], [14, 17], [49, 54], [2, 47], [2, 30], [18, 26], [29, 32], [0, 29], [18, 55], [48, 58], [15, 17], [2, 42], [35, 56], [25, 48], [37, 55], [16, 46], [9, 59], [21, 35], [5, 46], [10, 43], [17, 49], [20, 48], [16, 29], [15, 30], [3, 43], [22, 40], [8, 32], [23, 46], [1, 59], [4, 48], [56, 57], [19, 21], [32, 52], [12, 34], [10, 55], [14, 29], [7, 35], [30, 43], [29, 37], [31, 44], [29, 34], [11, 18], [14, 24], [41, 43], [12, 36], [12, 32], [53, 55], [20, 41], [24, 55], [9, 37], [24, 39], [26, 39], [33, 48], [7, 29], [13, 48], [11, 24], [26, 53], [9, 32], [11, 45], [54, 59], [9, 47], [3, 54], [13, 17], [10, 42], [9, 26], [9, 43], [0, 26], [6, 41], [25, 51], [24, 27], [21, 41], [1, 19], [17, 33], [13, 34], [34, 54], [12, 60], [3, 49], [6, 49], [23, 60], [45, 46], [2, 36], [4, 9], [15, 38], [34, 55], [46, 58], [8, 60], [24, 26], [6, 58], [4, 57], [13, 14], [33, 60], [31, 43], [21, 33], [17, 19], [17, 26], [43, 48], [25, 33], [37, 42], [10, 27], [9, 22], [29, 33], [21, 25], [1, 37], [38, 45], [45, 56], [12, 54], [12, 24], [29, 38], [41, 44], [47, 53], [37, 58], [16, 17], [31, 50], [9, 18], [0, 54], [33, 45], [7, 55], [35, 59], [13, 19], [40, 46], [21, 30], [17, 45], [18, 38], [19, 47], [24, 57], [14, 23], [27, 30], [34, 60], [12, 53], [17, 57], [0, 13], [41, 50], [28, 35], [16, 18], [30, 39], [5, 34], [13, 50], [10, 13], [0, 11], [24, 34], [24, 46], [14, 21], [40, 52], [1, 15], [15, 20], [15, 26], [33, 49], [19, 60], [5, 13], [34, 57], [4, 6], [52, 53], [1, 16], [15, 18], [5, 31], [27, 34], [20, 33], [54, 56], [49, 56], [4, 32], [43, 53], [2, 57], [21, 39], [21, 53], [10, 40], [37, 49], [2, 53], [23, 43], [57, 60], [22, 28], [29, 46], [5, 48], [3, 14], [9, 24], [0, 47], [34, 44], [4, 51], [43, 44], [24, 53], [15, 44], [8, 24], [13, 56], [28, 31], [5, 58], [14, 25], [47, 58], [37, 52], [24, 42], [30, 36], [31, 34], [2, 55], [13, 16], [10, 47], [30, 48], [7, 44], [10, 58], [7, 12], [24, 35], [40, 57], [1, 36], [25, 40], [7, 56], [16, 45], [15, 50], [24, 47], [35, 41], [50, 60], [10, 14], [16, 60], [2, 6], [25, 55], [7, 46], [4, 59], [50, 54], [37, 56], [34, 42], [29, 55], [0, 48], [22, 30], [23, 30], [14, 51], [29, 51], [43, 46], [27, 49], [16, 27], [32, 41], [5, 52], [47, 50], [17, 54], [25, 53], [27, 45], [27, 36], [45, 57], [5, 29], [18, 30], [51, 60], [27, 44], [28, 34], [5, 24], [25, 30], [8, 39], [29, 41], [20, 43], [36, 54], [53, 58], [15, 52], [6, 51], [21, 32], [26, 56], [19, 41], [9, 50], [12, 41], [2, 20], [55, 60], [24, 41], [44, 54], [30, 35], [13, 58], [3, 38], [46, 56], [8, 58], [35, 57], [4, 13], [9, 11], [0, 45], [24, 40], [23, 26], [31, 48], [40, 43], [8, 46], [1, 20], [0, 7], [0, 50], [7, 11], [5, 38], [20, 40], [36, 48], [15, 23], [27, 40], [43, 55], [42, 51], [30, 44], [24, 25], [39, 46], [8, 33], [41, 47], [22, 59], [12, 35], [7, 16], [3, 51], [56, 60], [4, 22], [0, 46], [12, 26], [25, 43], [4, 54], [24, 45], [47, 59], [50, 52], [1, 14], [10, 25], [26, 45], [42, 57], [15, 25], [31, 42], [25, 41], [16, 47], [26, 44], [16, 41], [20, 49], [32, 39], [5, 39], [19, 52], [23, 39], [5, 26], [5, 32], [30, 57], [3, 40], [17, 60], [28, 49], [42, 55], [33, 34], [4, 25], [10, 50], [40, 45], [58, 60], [17, 36], [18, 41], [6, 26], [21, 60], [38, 49], [8, 13], [49, 50], [0, 44], [20, 55], [14, 30], [22, 39], [31, 51], [42, 49], [32, 58], [14, 19], [4, 44], [8, 35], [14, 22], [27, 38], [13, 46], [14, 53], [52, 59], [13, 22], [8, 20], [33, 58], [9, 14], [26, 58], [21, 45], [26, 49], [3, 26], [1, 4], [0, 15], [15, 21], [44, 45], [26, 60], [4, 29], [14, 39], [4, 30], [10, 41], [56, 58], [1, 8], [8, 25], [23, 54], [35, 49], [35, 45], [9, 17], [11, 12], [4, 17], [9, 27], [22, 35], [8, 47], [12, 38], [10, 15], [28, 40], [13, 28], [30, 60], [20, 51], [3, 18], [9, 25], [18, 34], [14, 27], [12, 27], [39, 60], [21, 54], [51, 54], [7, 48], [19, 39], [6, 42], [11, 43], [34, 49], [34, 45], [23, 34], [9, 20], [2, 8], [29, 54], [0, 40], [48, 55], [3, 4], [3, 59], [22, 54], [20, 42], [39, 43], [2, 37], [23, 49], [30, 58], [4, 52], [32, 51], [27, 41], [11, 21], [11, 14], [27, 51], [10, 30], [12, 42], [6, 55], [32, 35], [36, 50], [23, 40], [14, 45], [29, 53], [43, 47], [8, 38], [36, 42], [13, 41], [49, 58], [21, 26], [17, 39], [3, 16], [8, 27], [15, 49], [7, 43], [38, 54], [5, 41], [21, 52], [11, 33], [26, 47], [8, 19], [11, 50], [14, 54], [42, 46], [33, 55], [23, 45], [22, 51], [26, 33], [19, 51], [7, 37], [15, 45], [43, 52], [23, 42], [27, 54], [11, 56], [5, 57], [36, 55], [32, 36], [36, 46], [23, 48], [20, 60], [17, 21], [6, 37], [25, 39], [6, 35], [37, 60], [47, 51], [55, 58], [31, 32], [32, 40], [23, 51], [15, 46], [14, 32], [26, 38], [9, 19], [30, 56], [20, 24], [12, 14], [8, 50], [20, 29], [34, 53], [5, 56], [3, 12], [14, 43], [13, 54], [35, 58], [26, 36], [30, 42], [25, 49], [30, 53], [19, 29], [15, 39], [9, 31], [37, 47], [0, 43], [24, 50], [17, 22], [23, 31], [0, 21], [29, 45], [6, 60], [27, 28], [11, 16], [31, 55], [27, 35], [35, 46], [18, 46], [12, 47], [18, 36], [25, 34], [31, 58], [13, 23], [23, 59], [11, 55], [38, 59], [21, 28], [25, 60], [43, 49], [54, 58], [16, 52], [33, 57], [22, 52], [21, 29], [12, 16], [22, 45], [38, 57], [24, 60], [0, 57], [5, 33], [35, 37], [18, 45], [37, 50], [6, 21], [18, 56], [28, 55], [6, 52], [19, 44], [27, 56], [3, 34], [15, 40], [9, 54], [9, 51], [7, 33], [49, 51], [37, 44], [35, 51], [9, 60], [17, 42], [1, 39], [4, 45], [4, 34], [37, 53], [3, 11], [40, 50], [39, 42], [9, 30], [26, 59], [35, 38], [11, 20], [27, 47], [2, 45], [5, 51], [23, 53], [13, 37], [8, 21], [1, 50], [18, 32], [10, 16], [19, 58], [22, 25], [32, 44], [27, 33], [30, 50], [8, 55], [3, 27], [4, 31], [1, 53], [8, 23], [12, 17], [44, 48], [6, 29], [16, 35], [50, 53], [22, 44], [31, 41], [22, 26], [5, 42], [0, 39], [4, 39], [17, 25], [7, 23], [10, 24], [30, 32], [2, 11], [42, 60], [46, 49], [39, 56], [15, 48], [8, 57], [30, 55], [15, 60], [43, 58], [14, 37], [9, 57], [26, 37], [3, 31], [4, 5], [46, 59], [0, 51], [49, 57], [57, 58], [1, 40], [51, 52], [16, 40], [6, 9], [1, 24], [15, 56], [21, 59], [38, 47], [5, 50], [18, 51], [12, 20], [17, 24], [4, 43], [29, 31], [37, 48], [6, 18], [0, 2], [18, 28], [5, 25], [50, 57], [30, 54], [32, 54], [19, 40], [7, 25], [0, 3], [29, 49], [52, 60], [27, 32], [12, 59], [49, 59], [31, 59], [16, 32], [26, 29], [2, 51], [25, 31], [20, 38], [10, 36], [40, 47], [41, 59], [54, 55], [31, 52], [6, 16], [17, 51], [9, 40], [1, 23], [16, 54], [1, 22], [26, 48], [27, 60], [20, 44], [5, 28], [40, 51], [59, 60], [23, 32], [52, 58], [23, 41], [2, 22], [18, 20], [11, 38], [1, 9], [52, 54], [7, 28], [4, 40], [28, 36], [34, 36], [15, 34], [44, 58], [4, 42], [11, 58], [28, 44], [35, 52], [28, 38], [12, 57], [38, 50], [24, 48], [0, 12], [2, 46], [0, 18], [6, 40], [31, 47], [1, 21], [42, 58], [6, 13], [29, 60], [32, 59], [16, 31], [41, 42], [4, 58], [10, 33], [35, 36], [38, 39], [5, 37], [19, 34], [17, 44], [22, 41], [14, 16], [27, 31], [15, 16], [25, 46], [14, 35], [25, 44], [12, 51], [3, 58], [8, 52], [34, 46], [3, 7], [6, 14], [15, 27], [11, 30], [25, 58], [23, 52], [6, 43], [36, 47], [34, 56], [50, 59], [20, 31], [30, 31], [4, 41], [17, 37], [24, 31], [4, 20], [22, 32], [2, 21], [36, 58], [0, 41], [54, 60], [34, 59], [0, 24], [1, 51], [2, 33], [0, 8], [34, 38], [0, 22], [4, 35], [7, 49], [33, 56], [1, 56], [34, 39], [16, 34], [42, 43], [28, 39], [55, 59], [35, 42], [18, 59], [5, 17], [17, 20], [5, 18], [10, 56], [19, 37], [12, 40], [14, 40], [22, 36], [55, 57], [23, 28], [38, 43], [34, 35], [29, 59], [16, 24], [19, 38], [1, 30], [19, 59], [24, 38], [57, 59], [5, 7], [29, 44], [35, 55], [27, 52], [2, 10], [32, 37], [11, 39], [21, 27], [13, 26], [40, 55], [39, 52], [16, 55], [43, 45], [13, 29], [18, 29], [17, 28], [53, 54], [47, 54], [23, 25], [35, 54], [13, 52], [22, 29], [28, 42], [16, 23], [2, 12], [16, 53], [11, 34], [27, 53], [23, 44], [20, 54], [8, 37], [45, 53], [25, 54], [2, 27], [10, 53], [0, 17], [18, 19], [28, 33], [51, 58], [42, 52], [53, 59], [52, 55], [16, 43], [1, 6], [0, 38], [35, 43], [8, 51], [4, 16], [11, 42], [7, 57], [13, 20], [9, 38], [1, 12], [15, 29], [4, 47], [12, 46], [7, 14], [26, 30], [32, 56], [6, 7], [16, 59], [41, 54], [8, 18], [3, 46], [4, 33], [49, 60], [36, 57], [14, 26], [9, 56], [13, 57], [1, 25], [28, 37], [7, 27], [15, 35], [20, 57], [40, 44], [20, 22], [19, 55], [25, 42], [7, 8], [23, 57], [5, 6], [29, 48], [47, 49], [21, 43], [13, 51], [32, 48], [2, 17], [48, 51], [38, 41], [33, 39], [28, 32], [48, 49], [16, 33], [44, 59], [13, 40], [39, 51], [33, 44], [23, 38], [6, 50], [8, 29], [4, 23], [30, 52], [20, 35], [37, 41], [3, 41], [7, 24]] 60 TODO diff --git a/test_data/max_trapped_water.tsv b/test_data/max_trapped_water.tsv index 32cd70ab4..92bd19208 100644 --- a/test_data/max_trapped_water.tsv +++ b/test_data/max_trapped_water.tsv @@ -1,5 +1,4 @@ array(int) int -@ heights [1, 2, 1, 3, 4, 4, 5, 6, 2, 1, 3, 1, 3, 2, 1, 2, 4, 1] 48 Example in the book [243, 7, 79, 160, 70, 214, 59, 79, 262, 237, 217, 138, 220, 251, 266, 168, 54, 283, 0, 182, 197, 233, 8, 0, 290, 145, 252, 34, 272, 172, 231, 28, 77, 39, 208, 5, 246, 36, 231, 12, 15, 245, 187, 78, 68, 241, 292, 156, 63, 229, 189, 228, 185, 22, 300, 127, 154, 192, 278, 37, 220, 173, 244, 250, 282, 185, 255, 121, 234, 1, 205, 120, 234, 113, 235, 194, 183, 233, 200, 159, 67, 83, 76, 50, 260, 163, 129, 185, 60, 152, 236, 42, 241, 42, 222, 305, 98, 96, 128, 244, 267, 217, 158, 160, 221, 21, 140, 45, 275, 130, 51, 163, 185, 247, 30, 22, 266, 210, 198, 84, 146, 90, 77, 246, 199, 81, 140, 199, 16, 155, 269, 101, 164, 110, 58, 278, 44, 286, 155, 63, 249, 213, 87, 227, 10, 40, 77, 6, 188, 210, 58, 143, 15, 158, 306, 136, 60, 180, 101, 192, 135, 133, 8, 147, 84, 7, 246, 24, 258, 4, 42, 171, 199, 235, 127, 230, 52, 213, 160, 53, 39, 126, 294, 24, 252, 175, 85, 250, 205, 131, 1, 269, 161, 117, 19, 298, 54, 274, 148, 165, 109, 133, 249, 209, 188, 45, 284, 34, 40, 19, 32, 247, 108, 275, 228, 11, 297, 149, 173, 26, 139, 259, 94, 304, 80, 165, 71, 141, 81, 277, 64, 214, 9, 218, 244, 8, 237, 267, 106, 176, 88, 165, 56, 138, 40, 243, 306, 19, 282, 9, 197, 301, 105, 48, 144, 246, 227, 46, 249, 292, 47, 268, 10, 104, 282, 214, 58, 235, 215, 196, 24, 288, 266, 42, 22, 247, 213, 254, 152, 232, 198, 174, 123, 146, 232, 149, 13, 290, 104, 166, 21, 245, 285, 56, 200, 240, 41, 107, 239, 36, 195, 91, 292, 198, 87, 110, 164] 80655 TODO [2, 8, 3, 8, 3, 5, 14, 0, 14, 2, 9, 9, 13, 12, 14] 112 TODO diff --git a/test_data/max_water_trappable.tsv b/test_data/max_water_trappable.tsv index 387f8f150..2533944f1 100644 --- a/test_data/max_water_trappable.tsv +++ b/test_data/max_water_trappable.tsv @@ -1,5 +1,4 @@ array(int) int -@ heights [0, 1, 2, 1, 3, 4, 4, 5, 1, 2, 0, 3, 1] 7 Example in the book [7, 1, 1, 6, 3, 7, 4] 17 TODO [59, 79, 26, 80, 20, 89, 10, 54, 26, 73, 8, 34, 29, 91, 73, 20, 36, 44, 98, 77, 63, 13, 72, 32, 57, 12, 70, 45, 69, 61, 71, 80, 52, 95, 48, 72, 83, 31, 1, 38, 85, 39, 97, 41, 30, 42, 3, 49, 7, 85, 52, 92, 93, 100, 55, 105, 105, 27, 88, 81, 67, 70, 87, 85, 85, 2, 6, 57, 72, 48, 92, 68, 44, 39, 97, 54, 91, 47, 22, 28, 65, 75, 93, 47, 82, 90, 102, 40, 74, 40, 101, 56, 93, 45, 32, 90, 29, 79, 92, 58, 38, 70, 26, 63, 32, 37, 31, 9, 44, 77, 75, 13] 4095 TODO diff --git a/test_data/maximum_subarray_in_circular_array.tsv b/test_data/maximum_subarray_in_circular_array.tsv index 020a0fb4a..3eef68e3c 100644 --- a/test_data/maximum_subarray_in_circular_array.tsv +++ b/test_data/maximum_subarray_in_circular_array.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [0, -5, 1, 8, -4, -5, 8, 7] 19 TODO [7, 7, -1, -6, 0, 0, 4] 18 TODO [-7, 4, -3, -4, 2, -4, -6] 4 TODO diff --git a/test_data/minimum_distance_3_sorted_arrays.tsv b/test_data/minimum_distance_3_sorted_arrays.tsv index cde0121a6..458d81cd6 100644 --- a/test_data/minimum_distance_3_sorted_arrays.tsv +++ b/test_data/minimum_distance_3_sorted_arrays.tsv @@ -1,5 +1,4 @@ array(array(int)) int -@ sorted_arrays [[-9, -3, 7], [-224600, -223948, -221134, -218527, -216489, -214922, -214421, -211582, -211364, -210205, -208335, -208264, -208005, -206474, -205990, -204465, -204070, -201462, -201062, -198245, -196202, -196075, -194787, -194199, -192802, -188906, -188313, -187974, -185335, -184355, -184258, -182859, -180027, -179567, -179018, -178820, -178015, -175602, -175440, -173138, -171233, -170651, -169578, -168272, -167747, -167286, -166861, -166809, -165735, -165461, -162588, -160730, -159420, -158870, -157523, -157382, -155464, -155167, -155112, -153946, -152774, -151454, -150760, -150677, -149743, -148091, -147497, -146595, -146271, -143900, -142372, -141645, -141639, -141558, -139505, -138029, -137712, -137700, -137380, -135685, -135083, -134222, -133788, -132972, -132153, -131783, -131565, -130889, -128117, -127206, -126071, -125834, -124646, -123464, -123007, -121809, -120433, -120398, -119494, -119475, -119066, -118624, -118386, -116604, -116077, -113858, -113371, -113177, -113064, -112110, -112058, -111853, -111415, -110432, -109744, -109226, -109098, -108586, -108536, -108265, -106249, -102625, -102338, -101658, -101156, -100508, -99704, -98517, -98093, -98086, -97360, -96057, -93194, -92860, -91946, -89971, -88305, -88296, -87215, -86719, -85225, -85106, -83366, -83308, -82441, -82383, -82206, -81998, -81993, -81906, -81422, -80260, -80246, -78545, -77134, -77049, -75927, -75541, -72159, -71455, -70435, -70295, -70173, -69929, -68742, -66469, -65756, -65729, -64404, -64220, -64015, -63635, -63495, -62268, -62004, -60326, -59899, -59594, -58442, -58185, -57351, -57020, -56075, -55867, -52765, -52677, -52642, -51067, -50643, -50211, -49605, -48949, -48187, -47418, -47200, -45783, -44793, -44282, -43995, -43904, -41659, -41517, -41256, -40862, -40619, -37132, -36079, -35296, -34974, -33913, -32669, -30613, -28120, -27856, -26737, -26512, -26248, -26047, -25901, -25114, -23472, -19851, -18971, -17746, -14458, -13674, -12847, -10070, -9924, -8868, -5908, -4174, -3505, -1768, -1722, -1481, -230, -43, 661, 771, 1080, 2843, 4113, 5555, 8263, 9477, 10059, 10095, 10660, 11444, 17224, 19064, 19378, 19446, 20583, 23389, 25003, 25269, 26335, 26875, 27052, 27502, 28603, 29877, 30799, 33074, 35183, 35933, 36484, 36591, 36776, 38790, 39603, 41046, 41452, 43159, 43821, 43975, 44379, 44525, 45594, 45850, 45926, 46372, 47242, 49356, 49475, 51426, 51633, 52061, 52421, 53778, 54964, 57136, 57464, 59333, 61706, 62581, 63533, 63859, 64963, 65400, 65965, 68003, 70600, 72256, 72526, 73862, 75419, 77012, 77025, 77279, 77894, 78395, 79163, 79514, 80910, 80994, 82111, 82668, 85795, 85825, 86271, 89142, 90018, 90515, 90876, 94428, 95761, 97070, 97735, 99652, 100122, 101469, 101601, 104345, 104981, 106622, 107700, 108228, 108637, 109467, 109734, 110732, 111160, 112854, 113495, 115407, 116053, 119444, 119608, 119772, 119894, 120281, 122090, 123571, 124272, 124475, 125629, 128254, 128937, 130345, 130910, 131968, 133281, 135456, 135627, 135868, 136575, 137408, 137623, 138572, 141485, 142364, 143064, 143312, 144397, 144525, 144987, 145953, 146075, 146873, 147141, 148463, 148478, 148637, 149629, 150598, 151289, 152361, 154129, 154499, 155099, 155484, 157218, 158616, 158666, 160324, 160921, 160994, 161020, 162923, 163752, 164354, 165159, 165463, 166482, 167902, 168701, 169994, 170936, 171565, 172050, 172456, 172511, 173061, 174617, 175470, 175517, 175957, 179114, 181434, 183125, 183275, 183610, 184527, 185602, 185664, 187016, 187069, 187234, 188089, 188109, 188322, 189308, 189337, 189582, 190993, 195052, 195061, 195961, 197661, 197803, 197947, 198464, 198591, 199987, 199990, 202091, 202474, 203061, 205813, 206576, 207427, 207979, 208237, 209993, 211410, 212198, 212221, 213631, 214324, 215350, 215545, 215796, 216473, 220138, 220186, 221265, 221716, 221864, 223099, 223289, 224089], [-4392, -4307, -4114, -4108, -4078, -4051, -3896, -3791, -3606, -3489, -3083, -2940, -2924, -2819, -2591, -2462, -2367, -2091, -1964, -1927, -1784, -1692, -1595, -1219, -1174, -1041, -961, -836, -810, -808, -760, -658, -411, -164, 75, 147, 244, 412, 546, 740, 813, 987, 1146, 1204, 1420, 1517, 1713, 1720, 1795, 2169, 2531, 2680, 2783, 2809, 3040, 3050, 3119, 3387, 3468, 3504, 3610, 3898, 3941, 4011, 4304, 4368, 4510, 4521], [-7, 5, 10, 10, 12, 18], [-1677, -1604, -1566, -1524, -1498, -1468, -1364, -1314, -1301, -1266, -1222, -1214, -1075, -1053, -1008, -919, -885, -831, -768, -767, -683, -655, -612, -482, -461, -210, 164, 303, 356, 533, 549, 667, 832, 866, 882, 902, 951, 1056, 1138, 1175, 1616]] 203 TODO [[-162, -133, -84, -42, -32, -22, 34, 36, 59, 84, 99, 153, 169, 185], [-212631, -211030, -210326, -208032, -207997, -207182, -205170, -203575, -202720, -201381, -201135, -201048, -199581, -199221, -198002, -197160, -196015, -194376, -194213, -193868, -193573, -193137, -192050, -189563, -188815, -187271, -186216, -186036, -183233, -182162, -181617, -179926, -179839, -179816, -179705, -179253, -179102, -178583, -178048, -177888, -177631, -176630, -176366, -174201, -173694, -173393, -173104, -172149, -171724, -171176, -170496, -169061, -167174, -167138, -167114, -167030, -166815, -166681, -165816, -165139, -162998, -162901, -159028, -158428, -156578, -156191, -154730, -153084, -152386, -152152, -151760, -148934, -148899, -148864, -148842, -148615, -148511, -148453, -145989, -145895, -143893, -143752, -142752, -142662, -142299, -140710, -139900, -139838, -139313, -138315, -138039, -136944, -135367, -133813, -133748, -133307, -132541, -132176, -129762, -128802, -128600, -126482, -125954, -125051, -123614, -122767, -121386, -119490, -119327, -118695, -118563, -117662, -116377, -115946, -112957, -111045, -110981, -109865, -109799, -109140, -108126, -107957, -106528, -105800, -104828, -104368, -103856, -102594, -102388, -102269, -101749, -101363, -101297, -99522, -99506, -99247, -96343, -94874, -94352, -93604, -93228, -93166, -91230, -91197, -90956, -90674, -90518, -90331, -88827, -88799, -88152, -86189, -82404, -79184, -77837, -77418, -75793, -73880, -73855, -73842, -73154, -69800, -66107, -64674, -64365, -63956, -63700, -62401, -61330, -60892, -60533, -55599, -51373, -49961, -49284, -48400, -48057, -47551, -46640, -44844, -44063, -42330, -42107, -41176, -40756, -40081, -40074, -37603, -35044, -35007, -33441, -33312, -30238, -29589, -29494, -29348, -27657, -25821, -24380, -24266, -22814, -21369, -20401, -20181, -19675, -18060, -17661, -16596, -15766, -15571, -14478, -12470, -12130, -12104, -11856, -11373, -10932, -10368, -9887, -9071, -8507, -7491, -7262, -7151, -2295, -1402, -1182, -606, -575, 1153, 2071, 2122, 4058, 7556, 7877, 11387, 13072, 13899, 16321, 16418, 16873, 17079, 17551, 19203, 19249, 21265, 21732, 22037, 22768, 23331, 23536, 23756, 24763, 24973, 25915, 26076, 26523, 26996, 28389, 28760, 29852, 31968, 34254, 35120, 36950, 38484, 38802, 42370, 43565, 44116, 45260, 45821, 46111, 46286, 47327, 47859, 48069, 48392, 49224, 49804, 50151, 51616, 51769, 51961, 52458, 53144, 53551, 54459, 56681, 56691, 58145, 58694, 60521, 61505, 61593, 62524, 63576, 64043, 64270, 64456, 64808, 65030, 66257, 67801, 69328, 69621, 69804, 70908, 71618, 72664, 73048, 73759, 74218, 74275, 74734, 75976, 76003, 76217, 77070, 78044, 79081, 79908, 80275, 80898, 81419, 84721, 84957, 85204, 87469, 88840, 92712, 94189, 95852, 97180, 98217, 98389, 98768, 99699, 99716, 99864, 101616, 102745, 103215, 103515, 106397, 107372, 107551, 107990, 108199, 108591, 110372, 113924, 116165, 118463, 119329, 119362, 121204, 121766, 122833, 123088, 124582, 125245, 125779, 126651, 126828, 127261, 127489, 127698, 128983, 129996, 131601, 133139, 133486, 135392, 137876, 138100, 141722, 142245, 142693, 142984, 143150, 143397, 144461, 146035, 146895, 147307, 147659, 149789, 150380, 151069, 151255, 152217, 152990, 155530, 156502, 156637, 156741, 157509, 158262, 159615, 159907, 161382, 164856, 165412, 166196, 168733, 170573, 171286, 171939, 173622, 173812, 174842, 175430, 175953, 176300, 178364, 180485, 183576, 184717, 185641, 186905, 186934, 187100, 187226, 187545, 189348, 189654, 190249, 190592, 190732, 191666, 191980, 193274, 193748, 194773, 195507, 197878, 198419, 199099, 199235, 200127, 200392, 201361, 201522, 203150, 203477, 204284, 204673, 205200, 206376, 207186, 207701, 207873, 209003, 209417, 210889, 210934, 212089, 212091, 212721, 213077, 213419]] 413 TODO [[-45, -35, -29, 0, 1, 17, 30, 53], [-1143, -1033, -977, -935, -906, -843, -820, -760, -709, -685, -649, -632, -487, -450, -315, -283, -39, 3, 82, 89, 212, 558, 561, 624, 798, 809, 844, 894, 958, 963, 976, 983, 1066, 1160, 1223], [-4, 1], [-8, -5, 6], [-62, -56, -49, -44, -33, 15, 21, 57, 66]] 14 TODO diff --git a/test_data/minimum_waiting_time.tsv b/test_data/minimum_waiting_time.tsv index 8d07137ae..b1e7a482d 100644 --- a/test_data/minimum_waiting_time.tsv +++ b/test_data/minimum_waiting_time.tsv @@ -1,5 +1,4 @@ array(int) int -@ service_times [1, 2, 3, 5] 10 Example in the book [179, 84, 161, 242, 205, 96, 148, 100, 8, 34, 31, 176, 91, 220, 40, 179, 140, 179, 147, 18, 129, 219, 224, 77, 64, 161, 82, 69, 57, 160, 40, 164, 228, 33, 167, 40, 58, 117, 212, 31, 212, 217, 83, 78, 33, 46, 235, 3, 11, 145, 8, 203, 176, 156, 45, 231, 52, 54, 51, 239, 4, 140, 211, 155, 164, 160, 63, 197, 96, 23, 101, 231, 185, 21, 65, 13, 148, 89, 105, 77, 208, 69, 162, 215, 124, 227, 241, 208, 172, 48, 107, 12, 93, 159, 141, 123, 165, 156, 38, 227, 35, 141, 211, 46, 35, 156, 21, 235, 217, 226, 233, 238, 237, 61, 217, 208, 64, 12, 196, 58, 124, 67, 220, 208, 172, 242, 219, 152, 45, 27, 205, 220, 77, 231, 131, 206, 88, 17, 149, 207, 60, 83, 41, 10, 200, 212, 56, 96, 31, 152, 202, 239, 123, 58, 2, 160, 207, 2, 104, 222, 21, 154, 166, 69, 111, 130, 213, 226, 17, 49, 162, 100, 161, 93, 108, 202, 1, 4, 92, 147, 10, 186, 134, 93, 55, 9, 103, 85, 83, 201, 87, 35, 128, 193, 24, 37, 56, 9, 111, 142, 173, 155, 15, 155, 81, 223, 224, 145, 105, 14, 216, 225, 14, 4, 227, 6, 63, 45, 20, 217, 58, 48, 157, 157, 232, 205, 81, 232, 68, 234, 45, 37, 39, 178, 24, 161, 181, 145, 133, 48, 56, 139] 2267457 TODO [3, 4, 4, 4, 4, 2] 46 TODO diff --git a/test_data/minimum_weight_path_in_a_triangle.tsv b/test_data/minimum_weight_path_in_a_triangle.tsv index 8cc56b35c..a59011456 100644 --- a/test_data/minimum_weight_path_in_a_triangle.tsv +++ b/test_data/minimum_weight_path_in_a_triangle.tsv @@ -1,5 +1,4 @@ array(array(int)) int -@ triangle [[2], [4, 4], [8, 5, 6], [4, 2, 6, 2], [1, 5, 2, 3, 4]] 15 Example in the book [] 0 TODO [[0]] 0 TODO diff --git a/test_data/n_queens.tsv b/test_data/n_queens.tsv index 33fd486c3..6c929711e 100644 --- a/test_data/n_queens.tsv +++ b/test_data/n_queens.tsv @@ -1,5 +1,4 @@ int array(array(int)) -@ n 1 [[0]] TODO 2 [] TODO 3 [] TODO diff --git a/test_data/nearest_repeated_entries.tsv b/test_data/nearest_repeated_entries.tsv index 4c6f9f235..a7c0a31ea 100644 --- a/test_data/nearest_repeated_entries.tsv +++ b/test_data/nearest_repeated_entries.tsv @@ -1,5 +1,4 @@ array(string) int -@ paragraph ["foo", "bar", "widget", "foo", "widget", "widget", "adnan"] 1 TODO ["foo", "bar", "widget", "foo", "xyz", "widget", "bar", "adnan"] 3 TODO ["foo", "bar", "widget", "adnan"] -1 TODO diff --git a/test_data/next_permutation.tsv b/test_data/next_permutation.tsv index 11684d8e9..aa2d27a25 100644 --- a/test_data/next_permutation.tsv +++ b/test_data/next_permutation.tsv @@ -1,5 +1,4 @@ array(int) array(int) -@ perm [1, 2, 3] [1, 3, 2] TODO [1, 3, 2] [2, 1, 3] TODO [2, 1, 3] [2, 3, 1] TODO diff --git a/test_data/nonuniform_random_number.tsv b/test_data/nonuniform_random_number.tsv index 25c686af3..864ecdec5 100644 --- a/test_data/nonuniform_random_number.tsv +++ b/test_data/nonuniform_random_number.tsv @@ -1,5 +1,4 @@ array(int) array(float) void -@ values probabilities [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] [0.30467113247563304, 0.5788668976381448, 0.10831991606460778, 0.0038726480423313804, 0.002761971229793556, 0.0007723317467801776, 0.00029056261851554945, 0.00032866379168359095, 7.343040595782476e-05, 7.688503298986141e-06, 2.9863931477716213e-05, 2.333828937751215e-06, 2.0637828639435128e-06, 1.7430479764387374e-07, 2.0434099593076387e-07, 1.0436441997574756e-07, 7.159135134005881e-09, 3.030895692651246e-09, 1.955521875172751e-09, 5.755472555491992e-10, 1.293369559130077e-11, 1.0569508312783955e-10, 9.003160695238913e-11] TODO [0] [1.0] TODO [0, 1] [0.9364707169781966, 0.06352928302180338] TODO diff --git a/test_data/number_of_score_combinations.tsv b/test_data/number_of_score_combinations.tsv index 0271b6acf..c64e24b6f 100644 --- a/test_data/number_of_score_combinations.tsv +++ b/test_data/number_of_score_combinations.tsv @@ -1,5 +1,4 @@ int array(int) int -@ final_score individual_play_scores 12 [2, 3, 7] 4 Example in the book 5 [2, 3, 7] 1 Example in the book 9 [2, 3, 7] 3 Example in the book diff --git a/test_data/number_of_traversals_matrix.tsv b/test_data/number_of_traversals_matrix.tsv index 0e37eb231..4412d0756 100644 --- a/test_data/number_of_traversals_matrix.tsv +++ b/test_data/number_of_traversals_matrix.tsv @@ -1,5 +1,4 @@ int int int -@ n m 1 1 1 TODO 1 2 1 TODO 1 3 1 TODO diff --git a/test_data/number_of_traversals_staircase.tsv b/test_data/number_of_traversals_staircase.tsv index 6101afb38..ed4c56d3b 100644 --- a/test_data/number_of_traversals_staircase.tsv +++ b/test_data/number_of_traversals_staircase.tsv @@ -1,5 +1,4 @@ int int int -@ top maximum_step 1 1 1 TODO 2 1 1 TODO 2 2 2 TODO diff --git a/test_data/offline_sampling.tsv b/test_data/offline_sampling.tsv index 91ef23de4..ce458005c 100644 --- a/test_data/offline_sampling.tsv +++ b/test_data/offline_sampling.tsv @@ -1,5 +1,4 @@ int array(int) void -@ k A 1 [1, 2, 3, 4] TODO 2 [1, 2, 3, 4] TODO 3 [1, 2, 3, 4] TODO diff --git a/test_data/online_median.tsv b/test_data/online_median.tsv index 8262d69cf..5be143628 100644 --- a/test_data/online_median.tsv +++ b/test_data/online_median.tsv @@ -1,5 +1,4 @@ array(int) array(float) -@ sequence [5, 4, 3, 2, 1] [5, 4.5, 4, 3.5, 3] TODO [1, 2, 3, 4, 5] [1, 1.5, 2, 2.5, 3] TODO [1, 0, 3, 5, 2, 0, 1] [1, 0.5, 1, 2.0, 2, 1.5, 1] TODO diff --git a/test_data/online_sampling.tsv b/test_data/online_sampling.tsv index cd43af91b..54ff5b6bb 100644 --- a/test_data/online_sampling.tsv +++ b/test_data/online_sampling.tsv @@ -1,5 +1,4 @@ array(int) int void -@ A k [1, 2, 3, 4] 1 TODO [1, 2, 3, 4] 2 TODO [1, 2, 3, 4] 3 TODO diff --git a/test_data/painting.tsv b/test_data/painting.tsv index b3731f179..04340567b 100644 --- a/test_data/painting.tsv +++ b/test_data/painting.tsv @@ -1,5 +1,4 @@ int[x] int[y] array(array(int)) array(array(int)) -@ x y a 0 0 [[0, 1, 0], [1, 0, 1], [0, 1, 1]] [[1, 1, 0], [1, 0, 1], [0, 1, 1]] TODO 0 4 [[0, 0, 1, 1, 1, 1], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 1, 0], [0, 1, 0, 1, 1, 1], [1, 1, 1, 1, 1, 1]] [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] TODO 0 29 [[0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0], [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0], [1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], [0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1], [0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0], [1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0], [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1], [0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1], [1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1], [1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1], [0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0], [0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1], [1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1], [1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1], [1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1], [0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0], [1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1], [0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0], [0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0], [1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0], [0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1], [0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], [0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0]] [[0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0], [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0], [1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0], [0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1], [0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0], [1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0], [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0], [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1], [0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0], [1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1], [1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1], [1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0], [1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1], [0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0], [0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1], [1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1], [1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1], [1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1], [0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0], [1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1], [0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0], [0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0], [1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0], [0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1], [0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0], [0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0]] TODO diff --git a/test_data/parity.tsv b/test_data/parity.tsv index 8800a387e..28afb8e27 100644 --- a/test_data/parity.tsv +++ b/test_data/parity.tsv @@ -1,5 +1,4 @@ long int -@ x 0 0 0, its binary is 0b0 1 1 1, its binary is 0b1 10 0 10, its binary is 0b1010 diff --git a/test_data/pascal_triangle.tsv b/test_data/pascal_triangle.tsv index 86d5bddc5..4cad81801 100644 --- a/test_data/pascal_triangle.tsv +++ b/test_data/pascal_triangle.tsv @@ -1,5 +1,4 @@ int array(array(int)) -@ n 0 [] TODO 1 [[1]] TODO 2 [[1], [1, 1]] TODO diff --git a/test_data/path_sum.tsv b/test_data/path_sum.tsv index 7cda56648..61f461c61 100644 --- a/test_data/path_sum.tsv +++ b/test_data/path_sum.tsv @@ -1,5 +1,4 @@ binary_tree(int) int bool -@ tree remaining_weight ["-5", "-4", "0", "-12", "-12", "-2", "13", "-5", "1", "-7", "0", "1", "0", "6", "-10", "2", "0", "-3", "-1", "4", "-8", "-5", "4", "3", "6", "4", "-3", "4", "-3", "-13", "-8"] -17 true TODO ["-5", "-4", "0", "-12", "-12", "-2", "13", "-5", "1", "-7", "0", "1", "0", "6", "-10", "2", "0", "-3", "-1", "4", "-8", "-5", "4", "3", "6", "4", "-3", "4", "-3", "-13", "-8"] 1 false TODO ["3", "-6", "2", "null", "3", "2", "null", "null", "6"] 7 true TODO diff --git a/test_data/permutations.tsv b/test_data/permutations.tsv index 78d7ef5f5..c7122473a 100644 --- a/test_data/permutations.tsv +++ b/test_data/permutations.tsv @@ -1,5 +1,4 @@ array(int) array(array(int)) -@ A [0] [[0]] TODO [0, 1] [[0, 1], [1, 0]] TODO [0, 1, 2] [[0, 1, 2], [0, 2, 1], [1, 0, 2], [1, 2, 0], [2, 0, 1], [2, 1, 0]] TODO diff --git a/test_data/phone_number_mnemonic.tsv b/test_data/phone_number_mnemonic.tsv index 2bd93858f..709ac1036 100644 --- a/test_data/phone_number_mnemonic.tsv +++ b/test_data/phone_number_mnemonic.tsv @@ -1,5 +1,4 @@ string array(string) -@ phone_number 1088 ["10TT", "10TU", "10TV", "10UT", "10UU", "10UV", "10VT", "10VU", "10VV"] TODO 840154 ["TG01JG", "TG01JH", "TG01JI", "TG01KG", "TG01KH", "TG01KI", "TG01LG", "TG01LH", "TG01LI", "TH01JG", "TH01JH", "TH01JI", "TH01KG", "TH01KH", "TH01KI", "TH01LG", "TH01LH", "TH01LI", "TI01JG", "TI01JH", "TI01JI", "TI01KG", "TI01KH", "TI01KI", "TI01LG", "TI01LH", "TI01LI", "UG01JG", "UG01JH", "UG01JI", "UG01KG", "UG01KH", "UG01KI", "UG01LG", "UG01LH", "UG01LI", "UH01JG", "UH01JH", "UH01JI", "UH01KG", "UH01KH", "UH01KI", "UH01LG", "UH01LH", "UH01LI", "UI01JG", "UI01JH", "UI01JI", "UI01KG", "UI01KH", "UI01KI", "UI01LG", "UI01LH", "UI01LI", "VG01JG", "VG01JH", "VG01JI", "VG01KG", "VG01KH", "VG01KI", "VG01LG", "VG01LH", "VG01LI", "VH01JG", "VH01JH", "VH01JI", "VH01KG", "VH01KH", "VH01KI", "VH01LG", "VH01LH", "VH01LI", "VI01JG", "VI01JH", "VI01JI", "VI01KG", "VI01KH", "VI01KI", "VI01LG", "VI01LH", "VI01LI"] TODO 19323 ["1WDAD", "1WDAE", "1WDAF", "1WDBD", "1WDBE", "1WDBF", "1WDCD", "1WDCE", "1WDCF", "1WEAD", "1WEAE", "1WEAF", "1WEBD", "1WEBE", "1WEBF", "1WECD", "1WECE", "1WECF", "1WFAD", "1WFAE", "1WFAF", "1WFBD", "1WFBE", "1WFBF", "1WFCD", "1WFCE", "1WFCF", "1XDAD", "1XDAE", "1XDAF", "1XDBD", "1XDBE", "1XDBF", "1XDCD", "1XDCE", "1XDCF", "1XEAD", "1XEAE", "1XEAF", "1XEBD", "1XEBE", "1XEBF", "1XECD", "1XECE", "1XECF", "1XFAD", "1XFAE", "1XFAF", "1XFBD", "1XFBE", "1XFBF", "1XFCD", "1XFCE", "1XFCF", "1YDAD", "1YDAE", "1YDAF", "1YDBD", "1YDBE", "1YDBF", "1YDCD", "1YDCE", "1YDCF", "1YEAD", "1YEAE", "1YEAF", "1YEBD", "1YEBE", "1YEBF", "1YECD", "1YECE", "1YECF", "1YFAD", "1YFAE", "1YFAF", "1YFBD", "1YFBE", "1YFBF", "1YFCD", "1YFCE", "1YFCF", "1ZDAD", "1ZDAE", "1ZDAF", "1ZDBD", "1ZDBE", "1ZDBF", "1ZDCD", "1ZDCE", "1ZDCF", "1ZEAD", "1ZEAE", "1ZEAF", "1ZEBD", "1ZEBE", "1ZEBF", "1ZECD", "1ZECE", "1ZECF", "1ZFAD", "1ZFAE", "1ZFAF", "1ZFBD", "1ZFBE", "1ZFBF", "1ZFCD", "1ZFCE", "1ZFCF"] TODO diff --git a/test_data/picking_up_coins.tsv b/test_data/picking_up_coins.tsv index 0ecc9bf45..e875320c4 100644 --- a/test_data/picking_up_coins.tsv +++ b/test_data/picking_up_coins.tsv @@ -1,5 +1,4 @@ array(int) int -@ coins [25, 5, 10, 5, 10, 5, 10, 25, 1, 25, 1, 25, 1, 25, 5, 10] 140 Example in the book [0, 1, 6, 8, 5, 5, 1] 12 TODO [1921044, 3, 5132440, 6, 4, 6610606, 10, 8650005, 6337644, 3740418, 5242497, 3729691, 0, 4293539, 1, 3, 5, 9280, 3] 18633648 TODO diff --git a/test_data/pivot_list.tsv b/test_data/pivot_list.tsv index 376bdfcc4..1c042abd1 100644 --- a/test_data/pivot_list.tsv +++ b/test_data/pivot_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int void -@ ll x [] 0 TODO [] 1000 TODO [1] 1000 TODO diff --git a/test_data/points_covering_intervals.tsv b/test_data/points_covering_intervals.tsv index 32506e7e9..6a7d64a7c 100644 --- a/test_data/points_covering_intervals.tsv +++ b/test_data/points_covering_intervals.tsv @@ -1,5 +1,4 @@ array(tuple(int, int)) int -@ A [[1, 4], [2, 8], [3, 6], [3, 5], [7, 10], [9, 11]] 2 TODO [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]] 3 TODO [[1, 5], [2, 3], [3, 4]] 1 TODO diff --git a/test_data/power_set.tsv b/test_data/power_set.tsv index d921c7e0f..9c0c3513a 100644 --- a/test_data/power_set.tsv +++ b/test_data/power_set.tsv @@ -1,5 +1,4 @@ array(int) array(array(int)) -@ input_set [] [[]] TODO [0] [[], [0]] TODO [1, 0] [[], [0], [1], [0, 1]] TODO diff --git a/test_data/power_x_y.tsv b/test_data/power_x_y.tsv index a329d9798..a27f3eaa0 100644 --- a/test_data/power_x_y.tsv +++ b/test_data/power_x_y.tsv @@ -1,5 +1,4 @@ float int float -@ x y 1.4434757236195281 12 81.830237516844 TODO -1.0006612108596369 -2217 -0.23098094677379155 TODO 1.0002834272148748 9522 14.85611487317237 TODO diff --git a/test_data/pretty_printing.tsv b/test_data/pretty_printing.tsv index 8a4b43908..f168d65ff 100644 --- a/test_data/pretty_printing.tsv +++ b/test_data/pretty_printing.tsv @@ -1,5 +1,4 @@ array(string) int int -@ words line_length ["aaa", "bbb", "c", "d", "ee", "ff", "gggggg"] 11 45 TODO ["a", "b", "c", "d"] 5 8 TODO ["mesr", "jwdqwgycd", "vw", "j", "g", "pbkduivw", "vyu", "ucop", "k", "qmobppce", "t", "gawtasqleg", "s", "onsgiam", "zdcjixtr", "m", "rqrds", "xql", "de", "klxs", "ia", "kothct", "gd", "mombpskbrm", "trmq", "gseiperkze", "qwix", "crxdvfrjy", "lrqaaumf", "zmwex", "czlc"] 18 133 TODO diff --git a/test_data/prime_sieve.tsv b/test_data/prime_sieve.tsv index 2fa1d86c2..892216c80 100644 --- a/test_data/prime_sieve.tsv +++ b/test_data/prime_sieve.tsv @@ -1,5 +1,4 @@ int array(int) -@ n 1 [] TODO 2 [2] TODO 3 [2, 3] TODO diff --git a/test_data/primitive_divide.tsv b/test_data/primitive_divide.tsv index da0e9c24a..6a4d3a392 100644 --- a/test_data/primitive_divide.tsv +++ b/test_data/primitive_divide.tsv @@ -1,5 +1,4 @@ int int int -@ x y 64 1 64 TODO 64 2 32 TODO 64 3 21 TODO diff --git a/test_data/primitive_multiply.tsv b/test_data/primitive_multiply.tsv index 39fc1920e..1e197a5f5 100644 --- a/test_data/primitive_multiply.tsv +++ b/test_data/primitive_multiply.tsv @@ -1,5 +1,4 @@ long long long -@ x y 0 0 0 TODO 0 1 0 TODO 0 65533 0 TODO diff --git a/test_data/queue_from_stacks.tsv b/test_data/queue_from_stacks.tsv index 6444412b1..075546e14 100644 --- a/test_data/queue_from_stacks.tsv +++ b/test_data/queue_from_stacks.tsv @@ -1,5 +1,4 @@ array(tuple(string[op], int[argument])) void -@ ops [["Queue", 0], ["enqueue", -464], ["enqueue", -862], ["enqueue", 733], ["enqueue", -74], ["enqueue", 806], ["enqueue", 132], ["enqueue", -507], ["enqueue", -345], ["enqueue", -927], ["dequeue", -464], ["enqueue", 129], ["enqueue", 328], ["dequeue", -862], ["enqueue", -785], ["enqueue", -865], ["enqueue", -985], ["dequeue", 733], ["dequeue", -74], ["enqueue", 211], ["dequeue", 806], ["enqueue", 997], ["enqueue", 897], ["enqueue", -477], ["enqueue", 437], ["enqueue", -723], ["dequeue", 132], ["enqueue", -880], ["enqueue", 574], ["dequeue", -507], ["enqueue", 315], ["enqueue", -767], ["enqueue", -915], ["enqueue", -156], ["enqueue", 838], ["enqueue", 621], ["enqueue", -274], ["dequeue", -345], ["enqueue", -761], ["dequeue", -927], ["dequeue", 129], ["enqueue", -324], ["dequeue", 328], ["enqueue", -777], ["enqueue", 600], ["enqueue", -762], ["enqueue", 165], ["dequeue", -785], ["dequeue", -865], ["dequeue", -985], ["dequeue", 211], ["dequeue", 997], ["dequeue", 897], ["dequeue", -477], ["dequeue", 437], ["dequeue", -723], ["dequeue", -880], ["dequeue", 574], ["dequeue", 315], ["dequeue", -767], ["dequeue", -915], ["dequeue", -156], ["dequeue", 838], ["dequeue", 621], ["dequeue", -274], ["dequeue", -761], ["dequeue", -324], ["dequeue", -777], ["dequeue", 600], ["dequeue", -762], ["dequeue", 165]] TODO [["Queue", 0], ["enqueue", -152], ["enqueue", 357], ["dequeue", -152], ["dequeue", 357], ["enqueue", -1], ["enqueue", -156], ["enqueue", -815], ["dequeue", -1], ["dequeue", -156], ["enqueue", 671], ["dequeue", -815], ["dequeue", 671], ["enqueue", -923], ["dequeue", -923], ["enqueue", -873], ["dequeue", -873], ["enqueue", 411], ["dequeue", 411], ["enqueue", 641], ["enqueue", -853], ["dequeue", 641], ["dequeue", -853], ["enqueue", -368], ["dequeue", -368], ["enqueue", 716], ["enqueue", 918], ["enqueue", 650], ["enqueue", -998], ["enqueue", -889], ["dequeue", 716], ["enqueue", -160], ["dequeue", 918], ["dequeue", 650], ["enqueue", -824], ["enqueue", -336], ["enqueue", 35], ["dequeue", -998], ["dequeue", -889], ["enqueue", -60], ["dequeue", -160], ["enqueue", -25], ["dequeue", -824], ["dequeue", -336], ["dequeue", 35], ["dequeue", -60], ["dequeue", -25]] TODO [["Queue", 0], ["enqueue", -27], ["dequeue", -27], ["enqueue", 50], ["enqueue", -729], ["dequeue", 50], ["dequeue", -729], ["enqueue", 127], ["enqueue", -810], ["enqueue", 732], ["dequeue", 127], ["enqueue", -171], ["dequeue", -810], ["enqueue", 665], ["dequeue", 732], ["dequeue", -171], ["enqueue", 370], ["enqueue", -646], ["enqueue", -213], ["enqueue", -511], ["dequeue", 665], ["enqueue", 700], ["dequeue", 370], ["enqueue", 98], ["dequeue", -646], ["enqueue", 746], ["enqueue", -443], ["enqueue", 206], ["enqueue", 976], ["dequeue", -213], ["enqueue", -198], ["enqueue", 107], ["enqueue", 709], ["enqueue", 140], ["enqueue", 327], ["dequeue", -511], ["enqueue", 748], ["enqueue", -814], ["enqueue", -415], ["dequeue", 700], ["dequeue", 98], ["enqueue", 877], ["dequeue", 746], ["dequeue", -443], ["enqueue", 285], ["dequeue", 206], ["enqueue", 639], ["enqueue", -367], ["enqueue", -204], ["dequeue", 976], ["enqueue", -994], ["enqueue", 963], ["dequeue", -198], ["enqueue", 154], ["enqueue", 30], ["dequeue", 107], ["enqueue", -972], ["enqueue", -28], ["enqueue", 455], ["enqueue", -306], ["dequeue", 709], ["enqueue", 606], ["enqueue", -343], ["dequeue", 140], ["enqueue", 947], ["dequeue", 327], ["enqueue", -91], ["enqueue", 703], ["enqueue", -458], ["enqueue", 765], ["enqueue", -558], ["dequeue", 748], ["dequeue", -814], ["enqueue", 261], ["enqueue", 137], ["dequeue", -415], ["enqueue", -418], ["enqueue", -535], ["dequeue", 877], ["dequeue", 285], ["dequeue", 639], ["enqueue", -272], ["enqueue", -469], ["enqueue", -587], ["enqueue", -482], ["enqueue", -51], ["enqueue", -416], ["dequeue", -367], ["dequeue", -204], ["enqueue", -484], ["enqueue", -280], ["enqueue", 18], ["dequeue", -994], ["enqueue", -509], ["enqueue", -552], ["dequeue", 963], ["enqueue", 906], ["dequeue", 154], ["enqueue", -295], ["enqueue", -92], ["dequeue", 30], ["dequeue", -972], ["enqueue", 860], ["enqueue", 162], ["enqueue", 247], ["dequeue", -28], ["enqueue", 264], ["dequeue", 455], ["dequeue", -306], ["enqueue", -65], ["enqueue", -940], ["enqueue", 878], ["enqueue", -389], ["enqueue", -428], ["enqueue", 902], ["enqueue", 58], ["enqueue", -17], ["enqueue", 747], ["enqueue", 901], ["enqueue", 667], ["dequeue", 606], ["enqueue", -265], ["enqueue", 984], ["dequeue", -343], ["enqueue", -453], ["dequeue", 947], ["dequeue", -91], ["enqueue", -565], ["enqueue", -433], ["dequeue", 703], ["dequeue", -458], ["dequeue", 765], ["enqueue", 811], ["dequeue", -558], ["dequeue", 261], ["enqueue", 753], ["enqueue", 369], ["enqueue", -143], ["enqueue", -304], ["enqueue", 942], ["enqueue", 391], ["enqueue", 3], ["enqueue", -489], ["enqueue", -94], ["dequeue", 137], ["enqueue", -371], ["enqueue", 328], ["enqueue", 609], ["dequeue", -418], ["dequeue", -535], ["enqueue", 978], ["dequeue", -272], ["dequeue", -469], ["enqueue", 237], ["enqueue", 553], ["enqueue", -231], ["enqueue", -897], ["enqueue", -112], ["dequeue", -587], ["enqueue", -384], ["enqueue", -786], ["dequeue", -482], ["enqueue", 60], ["dequeue", -51], ["dequeue", -416], ["dequeue", -484], ["dequeue", -280], ["enqueue", 923], ["enqueue", -497], ["enqueue", -269], ["dequeue", 18], ["enqueue", -632], ["enqueue", 960], ["enqueue", -3], ["enqueue", -591], ["dequeue", -509], ["dequeue", -552], ["dequeue", 906], ["dequeue", -295], ["dequeue", -92], ["dequeue", 860], ["dequeue", 162], ["dequeue", 247], ["dequeue", 264], ["dequeue", -65], ["dequeue", -940], ["dequeue", 878], ["dequeue", -389], ["dequeue", -428], ["dequeue", 902], ["dequeue", 58], ["dequeue", -17], ["dequeue", 747], ["dequeue", 901], ["dequeue", 667], ["dequeue", -265], ["dequeue", 984], ["dequeue", -453], ["dequeue", -565], ["dequeue", -433], ["dequeue", 811], ["dequeue", 753], ["dequeue", 369], ["dequeue", -143], ["dequeue", -304], ["dequeue", 942], ["dequeue", 391], ["dequeue", 3], ["dequeue", -489], ["dequeue", -94], ["dequeue", -371], ["dequeue", 328], ["dequeue", 609], ["dequeue", 978], ["dequeue", 237], ["dequeue", 553], ["dequeue", -231], ["dequeue", -897], ["dequeue", -112], ["dequeue", -384], ["dequeue", -786], ["dequeue", 60], ["dequeue", 923], ["dequeue", -497], ["dequeue", -269], ["dequeue", -632], ["dequeue", 960], ["dequeue", -3], ["dequeue", -591]] TODO diff --git a/test_data/queue_with_max.tsv b/test_data/queue_with_max.tsv index 4e7009c7e..b8f274a60 100644 --- a/test_data/queue_with_max.tsv +++ b/test_data/queue_with_max.tsv @@ -1,5 +1,4 @@ array(tuple(string, int)) void -@ ops [["QueueWithMax", 0], ["enqueue", -202], ["max", -202], ["enqueue", 131], ["enqueue", -105], ["max", 131], ["enqueue", 265], ["enqueue", -284], ["enqueue", 117], ["dequeue", -202], ["max", 265], ["enqueue", 574], ["enqueue", 947], ["enqueue", -96], ["enqueue", -487], ["enqueue", -698], ["dequeue", 131], ["enqueue", -131], ["enqueue", 853], ["max", 947], ["dequeue", -105], ["enqueue", -613], ["max", 947], ["enqueue", -292], ["max", 947], ["enqueue", 921], ["dequeue", 265], ["max", 947], ["enqueue", 949], ["enqueue", 438], ["enqueue", -378], ["enqueue", 335], ["enqueue", 112], ["enqueue", -231], ["max", 949], ["dequeue", -284], ["max", 949], ["dequeue", 117], ["max", 949], ["dequeue", 574], ["max", 949], ["dequeue", 947], ["max", 949], ["dequeue", -96], ["max", 949], ["dequeue", -487], ["max", 949], ["dequeue", -698], ["max", 949], ["dequeue", -131], ["max", 949], ["dequeue", 853], ["max", 949], ["dequeue", -613], ["max", 949], ["dequeue", -292], ["max", 949], ["dequeue", 921], ["max", 949], ["dequeue", 949], ["max", 438], ["dequeue", 438], ["max", 335], ["dequeue", -378], ["max", 335], ["dequeue", 335], ["max", 112], ["dequeue", 112], ["max", -231], ["dequeue", -231]] TODO [["QueueWithMax", 0], ["enqueue", 164], ["dequeue", 164], ["enqueue", 751], ["enqueue", -448], ["max", 751], ["dequeue", 751], ["enqueue", 725], ["max", 725], ["dequeue", -448], ["dequeue", 725], ["enqueue", 481], ["max", 481], ["dequeue", 481], ["enqueue", -47], ["enqueue", -561], ["dequeue", -47], ["dequeue", -561], ["enqueue", -522], ["enqueue", -157], ["dequeue", -522], ["enqueue", -69], ["dequeue", -157], ["dequeue", -69], ["enqueue", -8], ["max", -8], ["dequeue", -8]] TODO [["QueueWithMax", 0], ["enqueue", 338], ["enqueue", 172], ["dequeue", 338], ["dequeue", 172], ["enqueue", -463], ["enqueue", -534], ["dequeue", -463], ["enqueue", -672], ["enqueue", 625], ["dequeue", -534], ["dequeue", -672], ["enqueue", 853], ["enqueue", -275], ["dequeue", 625], ["max", 853], ["enqueue", 223], ["max", 853], ["dequeue", 853], ["dequeue", -275], ["enqueue", -721], ["max", 223], ["enqueue", 135], ["max", 223], ["enqueue", -574], ["enqueue", 922], ["dequeue", 223], ["enqueue", -593], ["max", 922], ["dequeue", -721], ["dequeue", 135], ["max", 922], ["enqueue", 154], ["dequeue", -574], ["enqueue", 909], ["max", 922], ["enqueue", -878], ["dequeue", 922], ["dequeue", -593], ["max", 909], ["enqueue", 350], ["enqueue", -865], ["dequeue", 154], ["dequeue", 909], ["enqueue", -966], ["max", 350], ["dequeue", -878], ["enqueue", -160], ["enqueue", 587], ["enqueue", -574], ["max", 587], ["enqueue", -899], ["enqueue", -236], ["enqueue", -285], ["enqueue", -425], ["dequeue", 350], ["enqueue", 772], ["dequeue", -865], ["enqueue", 763], ["max", 772], ["enqueue", -33], ["enqueue", -908], ["enqueue", -659], ["max", 772], ["enqueue", 983], ["enqueue", -158], ["enqueue", 461], ["enqueue", 587], ["enqueue", -773], ["max", 983], ["dequeue", -966], ["enqueue", 587], ["dequeue", -160], ["dequeue", 587], ["enqueue", 303], ["enqueue", 899], ["dequeue", -574], ["max", 983], ["dequeue", -899], ["enqueue", 414], ["enqueue", -824], ["enqueue", -788], ["max", 983], ["dequeue", -236], ["enqueue", 763], ["max", 983], ["dequeue", -285], ["dequeue", -425], ["enqueue", -538], ["enqueue", 442], ["max", 983], ["dequeue", 772], ["dequeue", 763], ["enqueue", -175], ["enqueue", 30], ["enqueue", -711], ["enqueue", 393], ["enqueue", -127], ["max", 983], ["enqueue", -938], ["dequeue", -33], ["enqueue", -53], ["enqueue", -344], ["enqueue", 640], ["enqueue", 254], ["enqueue", 833], ["enqueue", -952], ["dequeue", -908], ["enqueue", -434], ["enqueue", -56], ["dequeue", -659], ["enqueue", 838], ["enqueue", -528], ["dequeue", 983], ["enqueue", 85], ["dequeue", -158], ["max", 899], ["dequeue", 461], ["enqueue", 195], ["enqueue", 674], ["enqueue", 273], ["enqueue", 294], ["enqueue", -641], ["dequeue", 587], ["enqueue", 520], ["max", 899], ["enqueue", -239], ["dequeue", -773], ["dequeue", 587], ["enqueue", -337], ["enqueue", 467], ["max", 899], ["enqueue", -143], ["enqueue", 523], ["max", 899], ["dequeue", 303], ["enqueue", 180], ["dequeue", 899], ["enqueue", -364], ["enqueue", 468], ["max", 838], ["enqueue", 157], ["enqueue", -883], ["enqueue", -748], ["dequeue", 414], ["enqueue", -598], ["enqueue", -440], ["enqueue", -210], ["enqueue", -494], ["enqueue", 307], ["enqueue", -936], ["dequeue", -824], ["dequeue", -788], ["dequeue", 763], ["enqueue", -635], ["dequeue", -538], ["enqueue", -207], ["dequeue", 442], ["max", 838], ["dequeue", -175], ["max", 838], ["enqueue", -260], ["dequeue", 30], ["max", 838], ["enqueue", -503], ["enqueue", 534], ["enqueue", -361], ["enqueue", -417], ["max", 838], ["enqueue", 245], ["max", 838], ["enqueue", 345], ["enqueue", 306], ["enqueue", 642], ["enqueue", 872], ["enqueue", 815], ["enqueue", 35], ["enqueue", -328], ["dequeue", -711], ["enqueue", 408], ["dequeue", 393], ["dequeue", -127], ["max", 872], ["dequeue", -938], ["enqueue", -273], ["enqueue", -65], ["enqueue", -629], ["enqueue", -3], ["enqueue", 7], ["enqueue", 333], ["enqueue", 316], ["dequeue", -53], ["dequeue", -344], ["enqueue", -393], ["enqueue", -642], ["enqueue", -399], ["max", 872], ["enqueue", -487], ["dequeue", 640], ["enqueue", -775], ["dequeue", 254], ["max", 872], ["enqueue", -313], ["enqueue", 257], ["dequeue", 833], ["enqueue", -493], ["max", 872], ["enqueue", 19], ["max", 872], ["dequeue", -952], ["dequeue", -434], ["enqueue", -789], ["dequeue", -56], ["enqueue", 882], ["max", 882], ["enqueue", -119], ["enqueue", -854], ["dequeue", 838], ["dequeue", -528], ["enqueue", 310], ["max", 882], ["enqueue", 978], ["dequeue", 85], ["enqueue", 279], ["dequeue", 195], ["enqueue", 772], ["dequeue", 674], ["enqueue", 742], ["enqueue", -172], ["dequeue", 273], ["enqueue", -805], ["enqueue", -695], ["enqueue", 766], ["enqueue", -195], ["enqueue", 705], ["dequeue", 294], ["enqueue", -342], ["max", 978], ["enqueue", -235], ["enqueue", 651], ["dequeue", -641], ["dequeue", 520], ["enqueue", -783], ["max", 978], ["enqueue", -949], ["enqueue", 60], ["max", 978], ["enqueue", 336], ["max", 978], ["enqueue", 540], ["max", 978], ["enqueue", -957], ["enqueue", 88], ["dequeue", -239], ["enqueue", 142], ["max", 978], ["enqueue", -59], ["dequeue", -337], ["enqueue", -841], ["enqueue", -811], ["enqueue", 814], ["enqueue", -688], ["enqueue", -576], ["enqueue", -727], ["max", 978], ["dequeue", 467], ["max", 978], ["enqueue", 322], ["dequeue", -143], ["dequeue", 523], ["enqueue", 616], ["dequeue", 180], ["enqueue", -768], ["enqueue", -79], ["enqueue", 419], ["enqueue", -492], ["enqueue", 844], ["enqueue", 527], ["dequeue", -364], ["max", 978], ["dequeue", 468], ["dequeue", 157], ["dequeue", -883], ["enqueue", -693], ["enqueue", 293], ["dequeue", -748], ["enqueue", -739], ["dequeue", -598], ["max", 978], ["enqueue", 281], ["enqueue", -281], ["enqueue", -104], ["max", 978], ["enqueue", -170], ["enqueue", 20], ["dequeue", -440], ["enqueue", -573], ["enqueue", -888], ["enqueue", -950], ["enqueue", 870], ["enqueue", -668], ["enqueue", 682], ["dequeue", -210], ["enqueue", -741], ["enqueue", -247], ["enqueue", 380], ["dequeue", -494], ["dequeue", 307], ["dequeue", -936], ["enqueue", 808], ["enqueue", 746], ["dequeue", -635], ["max", 978], ["enqueue", 323], ["enqueue", 185], ["enqueue", 832], ["max", 978], ["enqueue", -331], ["enqueue", -342], ["max", 978], ["dequeue", -207], ["max", 978], ["dequeue", -260], ["max", 978], ["dequeue", -503], ["max", 978], ["dequeue", 534], ["max", 978], ["dequeue", -361], ["max", 978], ["dequeue", -417], ["max", 978], ["dequeue", 245], ["max", 978], ["dequeue", 345], ["max", 978], ["dequeue", 306], ["max", 978], ["dequeue", 642], ["max", 978], ["dequeue", 872], ["max", 978], ["dequeue", 815], ["max", 978], ["dequeue", 35], ["max", 978], ["dequeue", -328], ["max", 978], ["dequeue", 408], ["max", 978], ["dequeue", -273], ["max", 978], ["dequeue", -65], ["max", 978], ["dequeue", -629], ["max", 978], ["dequeue", -3], ["max", 978], ["dequeue", 7], ["max", 978], ["dequeue", 333], ["max", 978], ["dequeue", 316], ["max", 978], ["dequeue", -393], ["max", 978], ["dequeue", -642], ["max", 978], ["dequeue", -399], ["max", 978], ["dequeue", -487], ["max", 978], ["dequeue", -775], ["max", 978], ["dequeue", -313], ["max", 978], ["dequeue", 257], ["max", 978], ["dequeue", -493], ["max", 978], ["dequeue", 19], ["max", 978], ["dequeue", -789], ["max", 978], ["dequeue", 882], ["max", 978], ["dequeue", -119], ["max", 978], ["dequeue", -854], ["max", 978], ["dequeue", 310], ["max", 978], ["dequeue", 978], ["max", 870], ["dequeue", 279], ["max", 870], ["dequeue", 772], ["max", 870], ["dequeue", 742], ["max", 870], ["dequeue", -172], ["max", 870], ["dequeue", -805], ["max", 870], ["dequeue", -695], ["max", 870], ["dequeue", 766], ["max", 870], ["dequeue", -195], ["max", 870], ["dequeue", 705], ["max", 870], ["dequeue", -342], ["max", 870], ["dequeue", -235], ["max", 870], ["dequeue", 651], ["max", 870], ["dequeue", -783], ["max", 870], ["dequeue", -949], ["max", 870], ["dequeue", 60], ["max", 870], ["dequeue", 336], ["max", 870], ["dequeue", 540], ["max", 870], ["dequeue", -957], ["max", 870], ["dequeue", 88], ["max", 870], ["dequeue", 142], ["max", 870], ["dequeue", -59], ["max", 870], ["dequeue", -841], ["max", 870], ["dequeue", -811], ["max", 870], ["dequeue", 814], ["max", 870], ["dequeue", -688], ["max", 870], ["dequeue", -576], ["max", 870], ["dequeue", -727], ["max", 870], ["dequeue", 322], ["max", 870], ["dequeue", 616], ["max", 870], ["dequeue", -768], ["max", 870], ["dequeue", -79], ["max", 870], ["dequeue", 419], ["max", 870], ["dequeue", -492], ["max", 870], ["dequeue", 844], ["max", 870], ["dequeue", 527], ["max", 870], ["dequeue", -693], ["max", 870], ["dequeue", 293], ["max", 870], ["dequeue", -739], ["max", 870], ["dequeue", 281], ["max", 870], ["dequeue", -281], ["max", 870], ["dequeue", -104], ["max", 870], ["dequeue", -170], ["max", 870], ["dequeue", 20], ["max", 870], ["dequeue", -573], ["max", 870], ["dequeue", -888], ["max", 870], ["dequeue", -950], ["max", 870], ["dequeue", 870], ["max", 832], ["dequeue", -668], ["max", 832], ["dequeue", 682], ["max", 832], ["dequeue", -741], ["max", 832], ["dequeue", -247], ["max", 832], ["dequeue", 380], ["max", 832], ["dequeue", 808], ["max", 832], ["dequeue", 746], ["max", 832], ["dequeue", 323], ["max", 832], ["dequeue", 185], ["max", 832], ["dequeue", 832], ["max", -331], ["dequeue", -331], ["max", -342], ["dequeue", -342]] TODO diff --git a/test_data/random_permutation.tsv b/test_data/random_permutation.tsv index 4f7d6c04f..48aacaf4e 100644 --- a/test_data/random_permutation.tsv +++ b/test_data/random_permutation.tsv @@ -1,5 +1,4 @@ int void -@ n 1 TODO 2 TODO 3 TODO diff --git a/test_data/random_subset.tsv b/test_data/random_subset.tsv index 4a39afcdc..ca8e09653 100644 --- a/test_data/random_subset.tsv +++ b/test_data/random_subset.tsv @@ -1,5 +1,4 @@ int int void -@ n k 5 0 TODO 5 1 TODO 5 2 TODO diff --git a/test_data/range_lookup_in_bst.tsv b/test_data/range_lookup_in_bst.tsv index d4b2fb0b8..3970f49cc 100644 --- a/test_data/range_lookup_in_bst.tsv +++ b/test_data/range_lookup_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) tuple(int[from], int[to]) array(int) -@ tree i ["19", "7", "43", "3", "11", "23", "47", "2", "5", "null", "17", "null", "37", "null", "53", "null", "null", "null", "null", "13", "null", "29", "41", "null", "null", "null", "null", "null", "31"] [16, 31] [17, 19, 23, 29, 31] TODO ["19", "7", "43", "3", "11", "23", "47", "2", "5", "null", "17", "null", "37", "null", "53", "null", "null", "null", "null", "13", "null", "29", "41", "null", "null", "null", "null", "null", "31"] [38, 39] [] TODO ["19", "7", "43", "3", "11", "23", "47", "2", "5", "null", "17", "null", "37", "null", "53", "null", "null", "null", "null", "13", "null", "29", "41", "null", "null", "null", "null", "null", "31"] [38, 42] [41] TODO diff --git a/test_data/real_square_root.tsv b/test_data/real_square_root.tsv index 93819b5fa..de38d0952 100644 --- a/test_data/real_square_root.tsv +++ b/test_data/real_square_root.tsv @@ -1,5 +1,4 @@ float float -@ x 1.0 1.0 TODO 2.0 1.4142135614529252 TODO 0.001 0.03162277657343657 TODO diff --git a/test_data/rectangle_intersection.tsv b/test_data/rectangle_intersection.tsv index 092c5f18f..92b19edc2 100644 --- a/test_data/rectangle_intersection.tsv +++ b/test_data/rectangle_intersection.tsv @@ -1,5 +1,4 @@ tuple(int[x], int[y], int[width], int[height])[rectangle] tuple(int, int, int, int)[rectangle] tuple(int, int, int, int)[rectangle] -@ R1 R2 [76, 9, 12, 14] [20, 1, 62, 60] [76, 9, 6, 14] TODO [54, 66, 66, 24] [27, 97, 68, 95] [0, 0, -1, -1] TODO [82, 9, 20, 84] [84, 87, 14, 82] [84, 87, 14, 6] TODO diff --git a/test_data/refueling_schedule.tsv b/test_data/refueling_schedule.tsv index 9e554751e..8921d6e31 100644 --- a/test_data/refueling_schedule.tsv +++ b/test_data/refueling_schedule.tsv @@ -1,5 +1,4 @@ array(int) array(int) int -@ gallons distances [20, 15, 15, 15, 35, 25, 30, 15, 65, 45, 10, 45, 25] [300, 400, 1000, 300, 300, 600, 400, 1100, 400, 1000, 200, 300, 300] 8 Example in the book [117, 95, 21, 36, 105, 203, 195, 18, 156, 191, 146, 175, 120, 90, 37, 160, 158, 102, 34, 27, 14, 142, 91, 157, 136, 90, 176, 102, 3, 92, 146, 6, 77, 164, 127, 19, 82, 159, 62, 4, 187, 201, 206, 93, 156, 45, 67, 36, 31, 139, 194, 132, 80, 64, 21, 70, 176, 155, 126, 80, 166, 132, 140, 166, 169, 7, 102, 33, 136, 174, 150, 141, 205, 174, 158, 55, 63, 194, 31, 10, 165, 166, 33, 175, 204, 140, 2, 180, 101, 199, 190, 82, 77, 128, 116, 194, 77, 27, 163, 19, 173, 75, 128, 3, 60, 151, 162, 150, 65, 18, 90, 206, 148, 145, 85, 38, 27, 33, 14, 156, 130, 209, 24, 166, 98, 61, 176, 196, 206, 39, 3, 151, 45, 173, 44, 188, 200, 153, 63, 118, 185, 75, 24, 189, 121, 126, 35, 191, 23, 86, 65, 80, 116, 206, 67, 96, 130, 12, 193, 26, 58, 203, 15, 98, 24, 171, 85, 82, 21, 101, 47, 159, 131, 21, 145, 209, 37, 198, 203, 97, 191, 200, 110, 39, 93, 186, 126, 186, 153, 90, 142, 9, 206, 120, 57, 131, 80, 174, 168, 11, 73, 141, 42, 189, 133, 188, 80, 113, 157] [540, 3200, 4620, 4960, 7680, 2780, 2300, 14060, 15700, 18820, 12220, 10480, 6780, 6160, 20240, 2080, 1220, 22800, 9240, 19660, 14960, 4300, 23180, 9420, 6100, 10080, 22480, 1880, 4640, 12820, 6140, 6820, 8840, 8180, 22100, 6320, 17140, 14820, 10620, 8100, 9260, 4160, 2480, 8100, 6420, 1580, 4140, 4680, 3860, 680, 2620, 200, 1560, 360, 1440, 160, 480, 640, 260, 300, 680, 820, 620, 540, 280, 120, 340, 160, 180, 40, 140, 60, 120, 60, 80, 60, 40, 40, 40, 40, 40, 40, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20] 49 TODO [4, 6, 9, 4, 1, 8, 1, 1, 1] [60, 60, 60, 100, 140, 80, 80, 80, 40] 0 TODO diff --git a/test_data/regular_expression.tsv b/test_data/regular_expression.tsv index 8795bffb0..4a8b5ce5b 100644 --- a/test_data/regular_expression.tsv +++ b/test_data/regular_expression.tsv @@ -1,5 +1,4 @@ string string bool -@ regex s c*.*a*b*ac*a*a* bcbaccbbbccabaac true TODO ^c*.*a*b*ac*a*a* bcbaccbbbccabaac true TODO c*.*a*b*ac*a*a*$ bcbaccbbbccabaac true TODO diff --git a/test_data/remove_duplicates.tsv b/test_data/remove_duplicates.tsv index 830315c0f..44654ea10 100644 --- a/test_data/remove_duplicates.tsv +++ b/test_data/remove_duplicates.tsv @@ -1,5 +1,4 @@ array(tuple(string[first name], string[last name])) array(string[first name]) -@ names [["Foo", "1"], ["ABC", "1"], ["Foo", "1"]] ["ABC", "Foo"] TODO [["Otho", "1"], ["Ritchie", "1"], ["Ritchie", "1"], ["Mervin", "1"], ["Rutter", "1"], ["Ragnar", "1"], ["Otho", "1"], ["Bernie", "1"], ["Mervin", "1"], ["Janek", "1"], ["Bernie", "1"], ["Baxy", "1"], ["Ragnar", "1"], ["Janek", "1"], ["Ritchie", "1"], ["Baxy", "1"], ["Mervin", "1"], ["Otho", "1"], ["Ritchie", "1"], ["Ritchie", "1"], ["Laird", "1"], ["Rutter", "1"], ["Man", "1"], ["Janek", "1"], ["Mervin", "1"], ["Baxy", "1"], ["Laird", "1"], ["Laird", "1"], ["Ragnar", "1"], ["Ritchie", "1"], ["Janek", "1"], ["Laird", "1"], ["Man", "1"], ["Janek", "1"], ["Bernie", "1"], ["Mervin", "1"], ["Ragnar", "1"], ["Laird", "1"], ["Ragnar", "1"], ["Bernie", "1"], ["Bernie", "1"], ["Bernie", "1"], ["Man", "1"], ["Otho", "1"], ["Laird", "1"], ["Janek", "1"], ["Ragnar", "1"], ["Bernie", "1"], ["Baxy", "1"], ["Man", "1"], ["Mervin", "1"], ["Baxy", "1"], ["Man", "1"], ["Laird", "1"], ["Ragnar", "1"], ["Man", "1"], ["Ragnar", "1"], ["Man", "1"], ["Ritchie", "1"], ["Janek", "1"], ["Bernie", "1"], ["Janek", "1"], ["Man", "1"], ["Janek", "1"], ["Baxy", "1"], ["Ritchie", "1"], ["Otho", "1"], ["Man", "1"], ["Ritchie", "1"], ["Ritchie", "1"], ["Ritchie", "1"], ["Bernie", "1"], ["Laird", "1"], ["Baxy", "1"], ["Alva", "1"], ["Mervin", "1"], ["Alva", "1"], ["Bernie", "1"], ["Baxy", "1"], ["Ragnar", "1"], ["Laird", "1"], ["Janek", "1"], ["Ragnar", "1"], ["Mervin", "1"], ["Man", "1"], ["Otho", "1"], ["Baxy", "1"], ["Janek", "1"], ["Bernie", "1"], ["Laird", "1"], ["Bernie", "1"], ["Rutter", "1"], ["Ragnar", "1"], ["Otho", "1"], ["Mervin", "1"], ["Mervin", "1"], ["Bernie", "1"], ["Laird", "1"], ["Ragnar", "1"], ["Rutter", "1"], ["Laird", "1"], ["Otho", "1"], ["Mervin", "1"], ["Mervin", "1"], ["Otho", "1"], ["Ragnar", "1"], ["Ragnar", "1"], ["Mervin", "1"], ["Laird", "1"]] ["Alva", "Baxy", "Bernie", "Janek", "Laird", "Man", "Mervin", "Otho", "Ragnar", "Ritchie", "Rutter"] TODO [["Denver", "1"], ["Lyell", "1"], ["Tailor", "1"], ["Denver", "1"], ["Lyell", "1"], ["Jeffrey", "1"], ["Tailor", "1"], ["Kaleb", "1"], ["Denver", "1"], ["Lyell", "1"], ["Kaleb", "1"], ["Jeffrey", "1"], ["Tailor", "1"], ["Lyell", "1"], ["Lyell", "1"], ["Kaleb", "1"], ["Kaleb", "1"], ["Jeffrey", "1"]] ["Denver", "Jeffrey", "Kaleb", "Lyell", "Tailor"] TODO diff --git a/test_data/remove_duplicates_from_sorted_list.tsv b/test_data/remove_duplicates_from_sorted_list.tsv index 2d5b193ad..fbd7ab7b8 100644 --- a/test_data/remove_duplicates_from_sorted_list.tsv +++ b/test_data/remove_duplicates_from_sorted_list.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) -@ L [-8, -8, -7, -5, -5, -4, 1, 2, 2, 2, 2, 4, 5, 5, 7, 7] [-8, -7, -5, -4, 1, 2, 4, 5, 7] TODO [-2, -2, 0] [-2, 0] TODO [] [] TODO diff --git a/test_data/replace_and_remove.tsv b/test_data/replace_and_remove.tsv index 936524a2d..78b6d045b 100644 --- a/test_data/replace_and_remove.tsv +++ b/test_data/replace_and_remove.tsv @@ -1,5 +1,4 @@ int array(string) array(string) -@ size s 24 ["b", "d", "c", "a", "b", "a", "d", "b", "d", "b", "b", "a", "d", "c", "c", "a", "d", "a", "d", "d", "d", "b", "c", "c", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] ["d", "c", "d", "d", "d", "d", "d", "d", "d", "d", "d", "c", "c", "d", "d", "d", "d", "d", "d", "d", "d", "c", "c"] TODO 7 ["c", "c", "d", "d", "a", "a", "a", "", "", "", "", "", "", ""] ["c", "c", "d", "d", "d", "d", "d", "d", "d", "d"] TODO 3 ["d", "c", "c", "", "", ""] ["d", "c", "c"] TODO diff --git a/test_data/reverse_bits.tsv b/test_data/reverse_bits.tsv index 855ba89ba..525a85760 100644 --- a/test_data/reverse_bits.tsv +++ b/test_data/reverse_bits.tsv @@ -1,5 +1,4 @@ long long -@ x 13762 4876272496535404544 TODO 8640163548 4284752009417981952 TODO 4206 8505047896289181696 TODO diff --git a/test_data/reverse_digits.tsv b/test_data/reverse_digits.tsv index 5d14373fc..f15ab9ff1 100644 --- a/test_data/reverse_digits.tsv +++ b/test_data/reverse_digits.tsv @@ -1,5 +1,4 @@ int long -@ x 1683683571 1753863861 TODO 1799113645 5463119971 TODO 2138559785 5879558312 TODO diff --git a/test_data/reverse_sublist.tsv b/test_data/reverse_sublist.tsv index 3bd469ee0..09d204a9d 100644 --- a/test_data/reverse_sublist.tsv +++ b/test_data/reverse_sublist.tsv @@ -1,5 +1,4 @@ linked_list(int) int[start] int[finish] linked_list(int) -@ L start finish [] 0 0 [] TODO [1] 0 0 [1] TODO [1, 2, 3] 1 2 [2, 1, 3] TODO diff --git a/test_data/reverse_words.tsv b/test_data/reverse_words.tsv index 17359a6f8..d60edb02f 100644 --- a/test_data/reverse_words.tsv +++ b/test_data/reverse_words.tsv @@ -1,5 +1,4 @@ string string -@ s Alice likes Bob Bob likes Alice TODO ram is costly costly is ram TODO PCD PCD TODO diff --git a/test_data/road_network.tsv b/test_data/road_network.tsv index f6437d8e3..09e17866a 100644 --- a/test_data/road_network.tsv +++ b/test_data/road_network.tsv @@ -1,5 +1,4 @@ array(tuple(int[x], int[y], int[distance])[highway section]) array(tuple(int, int, int)[highway section]) int tuple(int, int, int)[highway section] -@ H P n [[0, 1, 9751], [1, 2, 1932], [2, 3, 7681], [3, 4, 2073], [4, 5, 7415], [5, 6, 8366], [6, 7, 8756], [7, 8, 8121], [8, 9, 910], [9, 10, 7098], [10, 11, 9884], [11, 12, 7560], [12, 13, 3036], [13, 14, 128], [14, 15, 4408], [15, 16, 8144], [16, 17, 679], [17, 18, 775], [18, 19, 7003], [19, 20, 3744], [20, 21, 4670], [21, 22, 3157], [22, 23, 7029], [23, 24, 8650], [24, 25, 8503], [25, 26, 4049], [26, 27, 1271], [27, 28, 7044], [28, 29, 7163], [29, 30, 5859], [30, 31, 7408], [31, 32, 5489], [32, 33, 2075], [33, 34, 1033], [34, 35, 4801], [35, 36, 675], [36, 37, 3675], [37, 38, 6003], [28, 20, 7572], [9, 30, 9734], [38, 22, 6745], [18, 23, 140], [0, 21, 4999], [20, 22, 5912], [37, 9, 2560], [22, 3, 1008], [6, 34, 9725], [9, 28, 584], [24, 15, 7003], [22, 24, 8573], [19, 4, 579], [32, 30, 5955], [23, 9, 8718], [24, 29, 5579], [4, 30, 8131], [28, 23, 2943], [10, 16, 4148], [18, 11, 8692], [4, 33, 5297], [2, 22, 9733], [3, 26, 8825], [9, 25, 9737], [37, 19, 5230], [1, 29, 7167], [35, 2, 9697], [24, 27, 1891], [11, 31, 5076], [32, 6, 6717], [13, 4, 6591], [20, 16, 3048], [6, 20, 3537], [31, 37, 5154], [3, 9, 4916], [27, 1, 4309], [34, 4, 9810], [14, 35, 6314], [17, 22, 764], [29, 32, 3512], [18, 33, 5062], [4, 35, 8183], [1, 13, 9940], [19, 13, 6387], [9, 26, 2226], [20, 13, 7773], [38, 11, 1309], [6, 22, 4873], [37, 3, 8674], [3, 16, 1771], [4, 16, 5974], [15, 22, 3576], [1, 3, 9079], [35, 6, 1844], [32, 19, 3362], [38, 8, 5708], [2, 23, 154], [7, 2, 1130], [22, 8, 7318], [1, 36, 5005], [11, 19, 7190], [0, 12, 3718], [26, 20, 8185], [32, 18, 6609], [33, 31, 9611], [33, 21, 5431], [10, 8, 5391], [31, 26, 6481], [5, 15, 2281], [28, 17, 9951], [15, 35, 3173], [16, 23, 1223], [27, 14, 1870], [30, 8, 8955], [5, 8, 3681]] [[15, 17, 43], [14, 37, 37], [15, 23, 16], [8, 34, 34], [31, 19, 26], [12, 26, 46], [21, 6, 4], [12, 6, 47], [10, 29, 7], [25, 19, 25], [11, 35, 10], [25, 28, 16], [2, 12, 15], [28, 13, 32], [0, 4, 10], [28, 8, 46], [35, 26, 26], [36, 12, 22], [26, 24, 25], [20, 23, 4], [30, 23, 37], [10, 0, 17], [17, 32, 22], [23, 10, 42], [30, 24, 18], [13, 15, 11], [2, 5, 40], [14, 24, 46], [32, 7, 39], [27, 20, 31], [5, 36, 26], [19, 16, 27], [11, 7, 41], [27, 34, 36], [21, 31, 20], [38, 28, 33], [28, 33, 50], [8, 3, 39], [22, 1, 30], [14, 20, 37], [22, 5, 34], [23, 32, 15], [18, 10, 39], [26, 8, 7], [37, 2, 44], [13, 5, 48], [33, 11, 18], [16, 22, 17], [23, 26, 25], [3, 24, 39], [11, 24, 20], [10, 3, 9], [21, 30, 10], [16, 7, 32], [1, 11, 9], [7, 15, 33], [27, 10, 35], [3, 31, 48], [28, 0, 37], [2, 38, 23], [21, 8, 30], [2, 8, 43], [4, 31, 18], [31, 8, 3], [26, 17, 32], [28, 4, 32], [24, 21, 19], [27, 15, 3], [26, 30, 26], [5, 10, 18], [35, 21, 40], [15, 29, 50], [5, 20, 47], [9, 7, 12], [26, 32, 17], [8, 16, 29], [38, 16, 30], [10, 31, 26], [8, 37, 48], [32, 25, 11], [12, 5, 30], [7, 38, 24], [26, 15, 48], [38, 4, 50], [36, 28, 15], [12, 3, 28], [28, 21, 45], [18, 12, 49], [27, 25, 40], [15, 6, 22], [14, 31, 44], [21, 7, 9], [35, 23, 38], [37, 18, 40], [23, 17, 45], [21, 37, 49], [29, 27, 38], [2, 36, 31], [38, 0, 49], [21, 13, 37], [16, 29, 7], [34, 0, 48], [35, 18, 31], [31, 38, 12], [36, 17, 46], [30, 3, 43], [9, 18, 37], [31, 2, 2], [2, 13, 30], [1, 35, 15], [32, 27, 10], [12, 32, 16], [34, 15, 40], [15, 36, 40], [1, 7, 20], [33, 27, 19], [2, 26, 5], [37, 13, 16], [35, 7, 41], [25, 11, 32], [10, 14, 17], [14, 18, 43], [36, 7, 16], [25, 30, 41], [11, 30, 19], [38, 24, 40], [1, 8, 41], [14, 36, 17], [17, 38, 36], [29, 19, 7], [16, 11, 13], [29, 4, 3], [25, 1, 46], [18, 30, 41], [24, 8, 1], [8, 23, 48], [28, 14, 34], [10, 4, 22], [0, 11, 15], [11, 23, 33], [17, 12, 3], [15, 21, 41], [11, 21, 28], [23, 31, 19], [10, 19, 13], [27, 31, 25], [15, 11, 5], [23, 0, 45], [28, 34, 27], [25, 36, 14], [34, 32, 50], [5, 30, 2], [13, 26, 32], [30, 15, 30], [15, 38, 11], [13, 30, 23], [17, 9, 3], [23, 25, 39], [20, 24, 30], [5, 34, 22], [13, 36, 5], [19, 24, 29], [37, 20, 6], [8, 15, 13], [3, 15, 49], [11, 5, 2], [22, 29, 35], [24, 4, 49], [35, 33, 28], [11, 36, 42], [19, 38, 2], [10, 35, 50], [24, 7, 41], [19, 3, 23], [10, 7, 40], [38, 14, 42], [34, 22, 30], [30, 0, 45], [36, 24, 34], [34, 9, 36], [1, 20, 33], [23, 6, 16], [21, 9, 28], [4, 17, 40], [22, 9, 32], [33, 0, 36], [17, 24, 35], [9, 0, 16], [12, 33, 4], [2, 25, 39], [33, 9, 35], [37, 4, 48], [19, 8, 45], [17, 21, 50], [5, 37, 49], [10, 6, 14], [21, 26, 34], [20, 4, 35], [14, 0, 19], [20, 34, 5], [37, 34, 42], [25, 20, 30], [24, 2, 20], [23, 19, 30], [7, 31, 33], [19, 33, 40], [6, 1, 25], [32, 38, 16], [1, 24, 2], [5, 9, 19], [4, 27, 44], [15, 2, 32], [11, 3, 36], [25, 10, 16], [12, 38, 4], [4, 26, 5], [3, 25, 35], [14, 33, 14], [8, 20, 29], [36, 16, 44], [18, 13, 32], [7, 4, 9], [9, 29, 48], [2, 14, 33], [25, 31, 30], [13, 7, 49], [24, 16, 42], [22, 31, 7], [37, 6, 30], [22, 12, 26], [1, 10, 21], [10, 15, 6], [33, 3, 20], [33, 25, 49], [33, 24, 31], [23, 37, 44], [15, 1, 18], [13, 22, 13], [17, 7, 20], [15, 12, 34], [38, 25, 47], [24, 32, 26], [34, 17, 42], [2, 16, 11], [5, 26, 36], [4, 11, 44], [25, 13, 32], [0, 25, 6], [31, 34, 30], [12, 25, 19], [26, 29, 45], [2, 27, 4], [35, 29, 20], [11, 28, 27], [34, 30, 31], [27, 0, 16], [32, 10, 11], [13, 33, 34], [16, 28, 10], [33, 6, 1], [3, 34, 25], [17, 6, 12], [19, 26, 12], [3, 38, 35], [28, 37, 11], [15, 4, 9], [35, 30, 34], [27, 23, 8], [31, 5, 46], [32, 9, 4], [34, 26, 26], [21, 4, 13], [8, 25, 13], [32, 37, 34], [16, 30, 34], [26, 11, 8], [35, 27, 24], [18, 25, 24], [18, 27, 12], [18, 6, 27], [16, 1, 20], [26, 18, 1], [18, 7, 40], [23, 12, 26], [16, 12, 9], [5, 38, 44], [34, 24, 8], [7, 14, 27], [12, 31, 29], [28, 12, 40], [37, 7, 35], [29, 2, 39], [36, 0, 6], [33, 37, 30], [18, 0, 50], [22, 10, 22], [25, 5, 10], [4, 23, 22], [38, 20, 42], [2, 33, 45], [1, 4, 37], [19, 9, 48], [28, 18, 31], [34, 7, 48], [27, 11, 5], [22, 37, 38], [37, 12, 10], [13, 17, 6], [10, 36, 4], [19, 14, 28], [7, 23, 44], [19, 2, 36], [32, 28, 13], [1, 28, 28], [23, 29, 6], [3, 29, 5], [6, 27, 30], [24, 10, 30], [34, 10, 44], [37, 15, 26], [16, 9, 15], [22, 11, 32], [13, 38, 44], [17, 37, 1], [18, 21, 15], [15, 25, 46], [22, 28, 15], [20, 18, 8], [36, 30, 30], [36, 20, 40], [1, 23, 35], [26, 14, 25], [36, 6, 44], [26, 10, 46], [13, 8, 22], [19, 21, 28], [34, 36, 14], [33, 36, 20], [33, 26, 45], [0, 37, 28], [16, 27, 11], [35, 9, 20], [20, 29, 20], [35, 31, 12], [38, 34, 24], [28, 7, 17], [22, 36, 6], [20, 17, 49], [5, 27, 49], [30, 37, 46], [5, 3, 46], [1, 5, 14], [1, 18, 50], [19, 35, 19], [12, 27, 35], [26, 28, 17], [6, 38, 40], [24, 13, 31], [30, 20, 34], [29, 12, 47], [2, 4, 34], [21, 23, 12], [27, 7, 5], [17, 10, 7], [17, 29, 43], [32, 1, 39], [16, 5, 49], [3, 13, 42], [26, 38, 26], [15, 32, 49], [28, 19, 50], [4, 18, 32], [2, 18, 21], [34, 19, 42], [20, 10, 46], [14, 16, 31], [34, 14, 42], [21, 12, 50], [28, 35, 5], [24, 37, 31], [7, 0, 46], [29, 36, 14], [7, 12, 47], [18, 34, 5], [33, 5, 6], [11, 37, 41], [8, 12, 7], [33, 20, 41], [36, 38, 47], [34, 16, 3], [10, 33, 32], [21, 32, 36], [21, 16, 32], [19, 22, 18], [12, 20, 7], [22, 27, 12], [12, 35, 44], [38, 21, 30], [0, 13, 5], [14, 3, 5], [32, 2, 50], [31, 36, 30], [36, 8, 11], [20, 15, 31], [27, 19, 29], [1, 37, 4], [17, 25, 36], [30, 17, 5], [7, 19, 8], [9, 2, 22], [33, 38, 39], [31, 20, 28], [21, 36, 7], [29, 25, 33], [5, 7, 23], [5, 35, 21], [32, 3, 14], [28, 10, 12], [16, 13, 35], [28, 3, 6], [29, 33, 43], [9, 11, 2], [37, 29, 16], [14, 4, 18], [2, 6, 3], [8, 0, 17], [31, 15, 37], [11, 13, 11], [5, 24, 25], [36, 18, 40], [30, 22, 47], [6, 13, 44], [14, 29, 33], [25, 37, 7], [31, 28, 2], [22, 4, 49], [13, 31, 24], [29, 11, 25], [27, 8, 34], [32, 16, 1], [35, 17, 39], [29, 5, 13], [25, 7, 45], [8, 33, 11], [23, 38, 25], [2, 28, 35], [11, 20, 48], [14, 30, 26], [35, 16, 17], [27, 17, 35], [27, 38, 38], [9, 24, 1], [5, 28, 13], [20, 0, 4], [37, 16, 41], [35, 25, 15], [34, 1, 31], [1, 38, 30], [3, 0, 31], [30, 27, 7], [25, 21, 11], [14, 11, 33], [29, 7, 3], [2, 21, 35], [26, 7, 3], [32, 20, 11], [4, 32, 28], [8, 17, 40], [38, 18, 6], [27, 13, 1], [31, 29, 2], [36, 19, 43], [14, 1, 26], [35, 20, 24], [37, 35, 17], [8, 6, 42], [14, 23, 38], [16, 18, 23], [19, 15, 15], [26, 36, 38], [18, 5, 12], [0, 15, 32], [26, 22, 46], [9, 12, 2], [14, 21, 6], [14, 8, 28], [29, 8, 41], [34, 23, 33], [30, 38, 41], [38, 9, 2], [11, 6, 30], [8, 32, 47], [27, 21, 27], [26, 16, 30], [34, 11, 38], [12, 30, 49], [30, 6, 37], [0, 29, 20], [4, 25, 30], [30, 33, 21], [0, 2, 25], [17, 0, 37], [13, 34, 42], [2, 11, 12], [38, 10, 9], [12, 1, 24], [33, 1, 37], [24, 28, 32], [36, 23, 15], [4, 36, 8], [12, 24, 20], [6, 31, 11], [33, 23, 18], [1, 30, 46], [26, 1, 6], [31, 0, 9], [20, 9, 7], [22, 18, 45], [6, 28, 32], [35, 22, 48], [33, 16, 3], [27, 9, 43], [22, 32, 37], [3, 7, 22], [14, 9, 3], [7, 22, 10], [0, 6, 45], [2, 17, 17], [17, 1, 30], [17, 31, 48], [36, 3, 10], [0, 19, 17], [13, 23, 11], [3, 6, 45], [34, 25, 16], [32, 5, 19], [10, 12, 5], [24, 35, 48], [2, 20, 15], [36, 9, 42], [20, 3, 2], [14, 12, 36], [15, 28, 15], [21, 29, 16], [21, 3, 17], [35, 13, 38], [0, 32, 35], [36, 27, 47], [36, 32, 36], [13, 29, 17], [5, 23, 27], [6, 14, 19], [7, 30, 24]] 39 [22, 27, 12] TODO [[0, 1, 6833], [1, 2, 4012], [2, 3, 3989], [3, 4, 9930], [4, 5, 6132], [5, 6, 2635], [6, 7, 5880], [7, 8, 699], [8, 9, 941], [9, 10, 6811], [10, 11, 1340], [2, 11, 4382], [8, 0, 185], [8, 11, 8372], [1, 7, 7790], [1, 11, 6582], [3, 7, 8009], [7, 4, 6332], [8, 1, 8551], [7, 9, 3650], [6, 0, 5686], [0, 11, 1489], [11, 9, 4415], [11, 5, 3315], [6, 9, 56], [9, 0, 1117], [0, 7, 9272], [0, 4, 9331], [6, 3, 7628], [3, 0, 5009], [2, 10, 8976], [3, 5, 9991], [10, 7, 5441], [3, 10, 3189], [6, 2, 2341], [1, 9, 8097], [10, 5, 7015], [6, 10, 7082], [6, 11, 9514], [7, 5, 144], [10, 8, 8429], [7, 11, 7551], [9, 4, 4538], [2, 5, 2126], [6, 8, 4412], [4, 1, 2309], [10, 1, 9891], [5, 9, 972], [0, 2, 7544], [8, 2, 8479], [4, 6, 2326], [10, 0, 1169], [4, 11, 5082]] [[8, 3, 2], [1, 5, 39], [0, 5, 15], [4, 10, 48]] 12 [1, 5, 39] TODO [[0, 1, 4442], [1, 2, 7161], [2, 3, 5195], [3, 4, 9525], [4, 5, 2520], [5, 6, 1652], [6, 7, 5607], [7, 8, 2574], [8, 9, 7873], [9, 10, 2216], [10, 11, 6812], [11, 12, 9308], [12, 13, 842], [13, 14, 8655], [14, 15, 9088], [15, 16, 6107], [16, 17, 9877], [17, 18, 254], [18, 19, 7460], [13, 10, 7423], [12, 1, 1770], [6, 14, 349], [18, 10, 2159], [10, 19, 8987], [7, 10, 1683], [12, 8, 7023], [1, 8, 544], [7, 0, 7418], [5, 11, 1709], [1, 3, 5700], [1, 4, 4749], [17, 13, 7657], [15, 18, 23], [4, 17, 6895], [5, 17, 9502]] [[14, 18, 7], [10, 5, 6], [9, 3, 22], [9, 19, 7], [5, 7, 5], [12, 2, 14], [13, 7, 10], [1, 11, 6], [11, 4, 26], [0, 18, 49], [2, 14, 35], [15, 11, 25], [1, 16, 5], [15, 7, 47], [7, 17, 46], [19, 12, 5], [16, 6, 7], [8, 13, 7], [8, 0, 44], [4, 2, 46], [0, 5, 25], [18, 13, 20], [4, 0, 33], [19, 1, 8], [16, 12, 34], [1, 18, 34], [17, 6, 19], [12, 10, 35], [8, 11, 31], [0, 13, 5], [17, 12, 16], [2, 15, 3], [6, 15, 20], [3, 11, 47], [12, 6, 17], [12, 0, 37], [9, 18, 21], [11, 19, 49], [13, 5, 16], [3, 5, 9], [18, 6, 33], [2, 13, 42], [2, 18, 7], [8, 15, 10], [18, 11, 47], [11, 6, 16], [1, 5, 19], [7, 14, 40], [2, 7, 1], [9, 12, 30], [15, 9, 12], [15, 0, 26], [3, 8, 39], [16, 4, 1], [18, 7, 45], [11, 14, 12], [7, 9, 40], [7, 19, 39], [18, 12, 44], [1, 13, 18], [9, 0, 49], [0, 2, 40], [15, 17, 22], [5, 2, 33], [0, 3, 17], [0, 11, 20], [2, 8, 35], [9, 5, 13], [18, 5, 41], [7, 1, 35], [10, 2, 43], [14, 9, 12], [7, 16, 21], [17, 0, 42], [6, 9, 4], [16, 13, 3], [16, 14, 13], [8, 6, 30], [6, 2, 50], [5, 15, 34], [9, 16, 12], [1, 6, 40], [7, 3, 33], [16, 2, 34], [11, 13, 21], [17, 8, 5], [11, 2, 35], [3, 14, 46], [9, 17, 50], [14, 5, 41], [18, 8, 4], [6, 10, 38], [1, 9, 31]] 20 [1, 18, 34] TODO diff --git a/test_data/roman_to_integer.tsv b/test_data/roman_to_integer.tsv index cf05873ab..3f831b984 100644 --- a/test_data/roman_to_integer.tsv +++ b/test_data/roman_to_integer.tsv @@ -1,5 +1,4 @@ string int -@ s I 1 TODO II 2 TODO III 3 TODO diff --git a/test_data/rook_attack.tsv b/test_data/rook_attack.tsv index 6df5803de..40a8d399a 100644 --- a/test_data/rook_attack.tsv +++ b/test_data/rook_attack.tsv @@ -1,5 +1,4 @@ array(array(int)) array(array(int)) -@ A [[-3, -3, 0], [2, 2, 2], [2, 1, -1], [-3, 3, 3], [-3, -3, -3], [-3, -2, -1]] [[0, 0, 0], [2, 2, 0], [2, 1, 0], [-3, 3, 0], [-3, -3, 0], [-3, -2, 0]] TODO [[-4, -6, 14, -27, 31, 0, 27, -19, -3, 21, 27, -2, 31, 18, 14, 22, 8, 15, -23, -8, 6, -29, 19, 2, 31, 1, 31, 8, 12, 23, 27], [20, 25, 18, 26, 29, -2, 1, 16, 21, -22, 8, -25, -27, 27, 4, 31, -18, -23, 2, 2, -28, -5, 15, -22, 9, 16, 11, 5, -5, 29, 4], [-20, -11, 25, 28, 22, 26, -14, -12, -29, -13, -16, -3, -26, 15, -20, 5, -24, -26, -23, 23, 8, 2, -12, 21, 6, 10, 13, -21, -23, -3, -24], [-31, 4, 22, 21, -3, -9, 24, 1, -15, -15, 13, 22, -2, -16, 29, 7, 6, -21, -23, -5, 9, -31, -20, -12, -26, -22, 20, -25, 28, -17, 8], [31, -16, -25, 11, -1, 5, -25, 24, 11, 8, -5, -24, -5, -3, -30, -25, 13, 15, -12, 24, 4, -29, -17, 12, -22, -23, 24, 21, -24, 0, -13], [13, 31, 31, 26, -24, 23, -8, 26, 29, 8, 14, -13, 5, -10, -11, 6, 10, 10, 0, -14, -19, -4, 28, 15, 6, -15, 22, -3, 31, -10, 22], [-15, -17, 23, 11, 6, 29, -20, 23, 2, 19, 19, -25, -29, -22, 11, 3, 0, 12, -26, -11, -8, -12, -23, 23, 28, -29, 15, -15, 16, 26, 18], [-26, -25, 16, -24, 2, -25, -25, 16, -11, -14, 28, -10, 31, -29, -13, 16, -16, -11, 19, -26, -13, 27, 3, -4, 23, -21, 23, 17, -21, -6, 21], [11, -7, -24, -12, -12, -21, -30, 5, -14, 10, 8, -27, 23, -15, 11, 21, -7, -1, 25, 9, 1, 8, 13, 8, 9, -19, 3, 3, -6, 23, 4], [13, -3, -6, -4, -11, 24, -16, -7, 29, 16, -6, 27, 30, 27, 13, 15, -7, -11, -18, -20, 28, 25, -20, 31, 5, -20, 26, -16, -27, 12, -25], [18, -26, -22, 14, -10, -10, 6, -28, 8, -7, -19, -4, -6, -11, -4, 26, 5, -15, 7, 3, -22, 22, 1, 4, -30, -3, -26, 18, -11, 17, -3], [-9, -31, -19, 7, 5, 10, -28, -19, -4, 23, -4, 11, -25, -31, 18, -20, -29, 11, -5, -9, -17, 13, 25, -21, -12, -7, 4, 14, 25, -20, -22], [-9, 14, 3, 19, -15, 1, -10, 24, 5, -31, 11, -4, 29, -7, -15, 15, -23, 31, 30, -3, -11, 24, 23, 1, 20, -21, 28, 7, -15, 23, 11], [-30, 11, 29, 17, -1, 6, 1, -23, 20, -8, -11, -31, -29, -16, -25, 11, 25, 17, 30, -13, 28, -17, -19, 9, -30, 11, 18, 26, 11, 10, 12], [-13, -6, 16, 26, -29, 21, -25, -23, 0, -7, -30, 24, 26, 19, 12, -16, -28, -9, -25, -8, 28, -2, 17, -24, 1, 19, 30, 8, -24, 12, -19], [-21, -8, -6, -29, -16, -22, 11, 24, -4, -8, 1, -28, -27, -29, 14, 8, -28, 28, -18, 2, 25, 27, -20, 19, -27, 9, 24, -26, -25, 3, -21], [-20, 28, 31, -24, -27, 30, -10, 12, -6, 26, 2, -4, -3, -6, -10, 10, -27, 7, 22, 1, -13, -3, -1, 18, 3, 17, 9, -3, -31, -31, -24], [-21, -11, -30, 4, 12, 9, 31, 27, 4, -2, 5, 30, 27, 27, -24, -31, 25, -2, 21, 9, 25, -20, -24, 20, 21, -15, 11, -22, -23, -5, 29], [-10, -9, 17, 3, 6, 19, 18, 4, -4, -7, 30, 21, 4, -19, 26, 31, -13, -12, -8, 25, -9, 11, -27, 5, 10, -24, -19, 21, -22, -12, -2], [23, -25, -28, 31, 1, -18, 11, 12, 18, 26, -18, -4, -11, 19, -18, -27, -4, 26, -16, 13, -28, -10, 3, 19, -13, -23, -13, -1, -26, 17, 17], [23, -12, 18, -14, -29, -25, 5, 25, 18, -11, -28, 10, -9, 18, -25, -30, 3, -19, -10, -13, 3, 8, -11, 2, -14, 30, -11, 25, -31, -6, -18], [-2, 28, -14, 17, -28, 1, -15, 10, -3, -6, 16, 2, 7, 30, 10, -21, 15, -3, 19, 22, 31, -20, -21, 17, 19, 31, 8, 5, -2, 21, 7], [-7, 10, -27, 15, 14, -30, -26, -18, -29, 14, 9, 8, -29, -17, 16, 6, 12, -7, -3, 21, -15, 10, -15, -6, -22, 13, -20, 13, 22, 27, -23], [-20, -14, -29, -21, -28, 9, -18, -13, 3, 0, -5, -4, 31, 1, 7, -9, -6, -22, 5, 4, 5, 1, -12, 10, -26, 6, 25, 0, -29, -22, 8], [-28, -9, -19, -31, 5, 27, -15, 22, -13, -6, 16, -22, -16, -23, 27, 30, -15, 8, 3, -9, 0, -23, 0, -27, 31, -4, -31, -26, -4, -2, 7], [-13, 26, 14, -31, -17, -31, 15, 28, 9, 24, -6, 11, 7, 31, -27, 31, -19, 17, -23, 22, -3, -4, 17, -25, 24, 4, 4, 4, -2, 7, -29], [-14, 6, 6, 18, -19, -11, 29, -27, -30, -7, -9, 24, -27, -30, -23, -10, -4, -5, -8, -18, -10, 22, 19, 6, -17, 29, -24, -20, 23, -18, 18], [-24, 7, -5, -13, 23, 13, 15, 30, -14, 11, 16, 9, 24, -26, -10, -22, 9, -24, -2, -31, -3, -18, 11, 30, -27, 13, 24, 6, 12, -1, -20], [12, 19, -1, -8, 26, -15, 2, 26, 30, 26, 3, 5, 0, -21, 23, 11, 6, 12, -15, 7, 27, 24, 22, -5, -2, 13, 12, 10, 31, -24, -12], [16, -17, -29, 5, -25, -9, -13, -8, 29, 14, 31, 7, -14, -19, 13, 15, -31, 7, -29, -24, 23, 4, 0, 23, 21, 13, 20, -8, -14, 23, -27], [-23, 28, 6, 2, -26, -21, 23, -25, 31, 14, 5, -28, -10, 16, -3, -22, 10, -26, 20, -24, -14, 19, -8, 0, -26, 8, -17, 21, -18, -6, 24], [0, -16, -5, 31, 21, 15, -12, 8, -24, -23, 10, 24, -29, 6, 28, -23, 30, 14, -29, 27, 9, 24, 29, 1, 11, 8, -16, 20, -1, 11, 18], [-18, 22, -1, 8, 6, 24, -30, -20, 16, 11, 6, 7, 21, -30, -24, -15, -21, 4, -24, -27, 27, 23, 13, 19, 10, -3, 29, -4, 19, 18, 10], [6, 28, -1, 17, -10, -26, -5, -17, 22, 17, -10, 24, 17, -22, -30, -22, 30, 9, -24, -27, 20, 23, 10, -29, -7, -22, 16, -19, -19, -15, -29], [-12, 8, 2, 1, -10, 18, 31, -25, -5, 7, 14, -16, 20, -12, 22, -23, -25, 31, 9, -1, 11, 20, -1, 10, 23, 18, -11, 15, -19, -13, -31], [-19, 4, 16, -6, -24, 24, -26, 0, -10, -29, 28, -6, 22, 2, 23, 21, -31, 23, -18, 21, -15, -26, -18, 29, 27, 24, 12, -12, 23, -2, -8], [18, -16, 19, -24, -20, -23, 29, 25, -1, 19, -14, -20, 9, -26, 12, 3, -30, 9, 25, 30, 9, -7, 26, 22, 8, 21, -16, 9, 17, -7, 25], [12, -20, -7, 11, 0, 30, 30, 30, 9, -24, -7, 6, -3, 4, 4, 1, 22, 31, -26, -20, 19, 8, -3, 8, -7, -25, 22, 16, 5, -27, -12], [28, -29, -11, -31, 24, -13, -16, -23, -30, 18, -30, -14, 26, -19, 15, -27, -26, -6, -25, -17, -19, 11, -7, 18, -18, -22, 28, 15, 11, 1, -3], [-28, 0, -26, 0, -14, -18, 10, -10, 19, 3, -10, -17, -24, 29, -26, 13, 1, -11, 3, -29, 30, -3, 6, 25, -20, 24, -28, 3, -27, -15, -20], [-17, -16, -19, 31, 3, -13, 20, 25, -19, 23, 30, 28, -11, -4, 11, 25, -1, 15, -31, -5, -24, 23, 29, 6, 21, 1, 8, 29, -6, -31, -1], [6, -21, 23, -1, -18, 3, 26, -16, 9, 10, -19, -16, -20, -26, -2, 15, 22, 18, -8, 29, -8, -20, 17, -14, 11, 25, 9, 22, 10, 26, -6], [25, -13, 30, 10, -21, -16, -25, 16, 19, 15, 12, -9, 0, -21, -2, -26, -4, 31, -19, -13, 19, -20, 1, -29, -15, 18, -11, -3, 31, 20, 8], [-3, -1, 11, -7, 28, 28, -18, -11, -26, 17, 13, -22, 15, 6, -27, 12, 18, 15, 5, 2, -12, 28, -18, 6, 31, 31, -25, -1, 8, -23, -9], [20, -23, -21, 18, -17, -7, 30, -7, -20, 21, -19, 23, -31, 10, -12, 7, 17, 8, -19, 28, -29, -17, 25, 0, 11, -27, -22, 14, -1, 19, 8], [-21, -5, 30, 27, 0, 1, -3, 8, 22, -8, 9, -21, 2, 9, 13, 20, 7, -19, 18, -7, -23, -31, -21, -26, -6, 3, 19, 8, -25, -5, -19], [4, 19, 31, 1, -17, -27, 27, 12, 26, 20, -25, -29, 12, -21, 7, 17, 24, -8, 1, -15, 10, -11, 31, -15, 3, 11, -28, -18, -13, -3, 31], [-27, 14, 26, -22, -31, 1, -4, 6, -30, 1, 17, -5, -26, 4, 7, -21, -17, 3, -26, -7, 15, -5, 31, 25, 4, 21, 27, -18, 20, 12, 30], [26, -23, -24, -24, -4, -30, 29, -26, -16, 7, 29, -13, 31, -1, 30, 11, 4, 22, 0, 30, 23, 8, 26, 12, 12, -5, -4, 1, -2, 2, -6], [-11, 27, -10, 13, 22, -10, 14, 17, 3, 24, -18, 6, -27, 4, 3, 14, 6, 30, 19, -8, -16, 9, -29, -12, 13, -29, -5, -24, -6, 26, -10], [-19, -31, -5, -14, -28, -8, 7, 29, -28, 11, -19, 13, 9, -25, 28, 24, -2, 1, -30, -11, 14, 27, 7, -17, -3, 20, 11, 28, 17, 12, -22], [2, 10, 0, 28, -9, 9, 18, 7, -12, -27, -24, -12, -1, -21, -27, -30, -22, -26, 2, 14, 14, 24, -28, 25, 11, 30, -6, -22, -23, -20, -31], [4, -19, 29, 13, 10, -20, 1, -31, 6, 17, 19, 4, -27, 24, -26, -30, 11, 7, 26, 22, 19, 21, -14, 11, -11, 31, -12, 20, -17, 7, -27], [4, 31, 14, -29, -24, 9, -5, -6, -8, -26, 21, -1, -19, -19, -9, -15, 3, -15, 28, 30, -28, -23, 22, 27, 29, 24, 18, -26, -26, -12, -2]] [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, -25, 0, 27, 4, 31, 0, -23, 0, 2, 0, -5, 0, 0, 9, 16, 11, 0, -5, 0, 4], [0, 0, 0, 0, 0, 0, -14, 0, 0, 0, -16, -3, 0, 15, -20, 5, 0, -26, 0, 23, 0, 2, 0, 0, 6, 10, 13, 0, -23, 0, -24], [0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 13, 22, 0, -16, 29, 7, 0, -21, 0, -5, 0, -31, 0, 0, -26, -22, 20, 0, 28, 0, 8], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 28, -10, 0, -29, -13, 16, 0, -11, 0, -26, 0, 27, 0, 0, 23, -21, 23, 0, -21, 0, 21], [0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 8, -27, 0, -15, 11, 21, 0, -1, 0, 9, 0, 8, 0, 0, 9, -19, 3, 0, -6, 0, 4], [0, 0, 0, 0, 0, 0, -16, 0, 0, 0, -6, 27, 0, 27, 13, 15, 0, -11, 0, -20, 0, 25, 0, 0, 5, -20, 26, 0, -27, 0, -25], [0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -19, -4, 0, -11, -4, 26, 0, -15, 0, 3, 0, 22, 0, 0, -30, -3, -26, 0, -11, 0, -3], [0, 0, 0, 0, 0, 0, -28, 0, 0, 0, -4, 11, 0, -31, 18, -20, 0, 11, 0, -9, 0, 13, 0, 0, -12, -7, 4, 0, 25, 0, -22], [0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 11, -4, 0, -7, -15, 15, 0, 31, 0, -3, 0, 24, 0, 0, 20, -21, 28, 0, -15, 0, 11], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -11, -31, 0, -16, -25, 11, 0, 17, 0, -13, 0, -17, 0, 0, -30, 11, 18, 0, 11, 0, 12], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, -28, 0, -29, 14, 8, 0, 28, 0, 2, 0, 27, 0, 0, -27, 9, 24, 0, -25, 0, -21], [0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 2, -4, 0, -6, -10, 10, 0, 7, 0, 1, 0, -3, 0, 0, 3, 17, 9, 0, -31, 0, -24], [0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 5, 30, 0, 27, -24, -31, 0, -2, 0, 9, 0, -20, 0, 0, 21, -15, 11, 0, -23, 0, 29], [0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 30, 21, 0, -19, 26, 31, 0, -12, 0, 25, 0, 11, 0, 0, 10, -24, -19, 0, -22, 0, -2], [0, 0, 0, 0, 0, 0, 11, 0, 0, 0, -18, -4, 0, 19, -18, -27, 0, 26, 0, 13, 0, -10, 0, 0, -13, -23, -13, 0, -26, 0, 17], [0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -28, 10, 0, 18, -25, -30, 0, -19, 0, -13, 0, 8, 0, 0, -14, 30, -11, 0, -31, 0, -18], [0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 16, 2, 0, 30, 10, -21, 0, -3, 0, 22, 0, -20, 0, 0, 19, 31, 8, 0, -2, 0, 7], [0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 9, 8, 0, -17, 16, 6, 0, -7, 0, 21, 0, 10, 0, 0, -22, 13, -20, 0, 22, 0, -23], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, -6, 11, 0, 31, -27, 31, 0, 17, 0, 22, 0, -4, 0, 0, 24, 4, 4, 0, -2, 0, -29], [0, 0, 0, 0, 0, 0, 29, 0, 0, 0, -9, 24, 0, -30, -23, -10, 0, -5, 0, -18, 0, 22, 0, 0, -17, 29, -24, 0, 23, 0, 18], [0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 16, 9, 0, -26, -10, -22, 0, -24, 0, -31, 0, -18, 0, 0, -27, 13, 24, 0, 12, 0, -20], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, -30, 0, 0, 0, 6, 7, 0, -30, -24, -15, 0, 4, 0, -27, 0, 23, 0, 0, 10, -3, 29, 0, 19, 0, 10], [0, 0, 0, 0, 0, 0, -5, 0, 0, 0, -10, 24, 0, -22, -30, -22, 0, 9, 0, -27, 0, 23, 0, 0, -7, -22, 16, 0, -19, 0, -29], [0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 14, -16, 0, -12, 22, -23, 0, 31, 0, -1, 0, 20, 0, 0, 23, 18, -11, 0, -19, 0, -31], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 29, 0, 0, 0, -14, -20, 0, -26, 12, 3, 0, 9, 0, 30, 0, -7, 0, 0, 8, 21, -16, 0, 17, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, -16, 0, 0, 0, -30, -14, 0, -19, 15, -27, 0, -6, 0, -17, 0, 11, 0, 0, -18, -22, 28, 0, 11, 0, -3], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 30, 28, 0, -4, 11, 25, 0, 15, 0, -5, 0, 23, 0, 0, 21, 1, 8, 0, -6, 0, -1], [0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -19, -16, 0, -26, -2, 15, 0, 18, 0, 29, 0, -20, 0, 0, 11, 25, 9, 0, 10, 0, -6], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, -18, 0, 0, 0, 13, -22, 0, 6, -27, 12, 0, 15, 0, 2, 0, 28, 0, 0, 31, 31, -25, 0, 8, 0, -9], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -25, -29, 0, -21, 7, 17, 0, -8, 0, -15, 0, -11, 0, 0, 3, 11, -28, 0, -13, 0, 31], [0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 17, -5, 0, 4, 7, -21, 0, 3, 0, -7, 0, -5, 0, 0, 4, 21, 27, 0, 20, 0, 30], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 14, 0, 0, 0, -18, 6, 0, 4, 3, 14, 0, 30, 0, -8, 0, 9, 0, 0, 13, -29, -5, 0, -6, 0, -10], [0, 0, 0, 0, 0, 0, 7, 0, 0, 0, -19, 13, 0, -25, 28, 24, 0, 1, 0, -11, 0, 27, 0, 0, -3, 20, 11, 0, 17, 0, -22], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 4, 0, 24, -26, -30, 0, 7, 0, 22, 0, 21, 0, 0, -11, 31, -12, 0, -17, 0, -27], [0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 21, -1, 0, -19, -9, -15, 0, -15, 0, 30, 0, -23, 0, 0, 29, 24, 18, 0, -26, 0, -2]] TODO [[3, 11, 11, 4, -2, -13, -3, -15, -14, -3, 4, -4, 13, 13, -5], [13, -6, -6, -12, -5, 13, 2, 10, 3, -8, 6, -4, -3, -8, 5], [8, -15, -4, 0, 8, -8, -3, 7, -11, -11, 14, 12, 13, -6, -4], [-12, -15, -11, 5, -2, 15, -10, -3, 9, 10, 7, -14, -7, 13, 5], [-5, -10, -8, -7, 13, -3, 10, 11, -4, 2, 1, -7, 13, 11, 9], [7, -15, -5, 1, -3, -3, -1, 11, -1, 15, -10, 6, 3, 14, 15], [-10, -14, 10, 8, -9, 8, -11, -11, -15, 2, 15, -9, 5, 13, -1], [-1, 6, 3, 3, 4, 7, 11, -15, 7, 5, -3, -11, 15, -5, -3], [3, -3, -3, -13, 11, 0, -12, -10, 1, -9, 5, -12, 12, 8, 12], [-15, -11, 6, 11, -8, -1, 6, 11, 14, -4, -6, 11, 8, -1, 6], [-4, -2, 2, 6, 7, 5, -7, 8, -9, 12, -12, -14, 7, -7, -13], [-4, 0, -15, -10, -4, -6, 14, 1, 14, 3, 2, -1, -2, 15, 11], [14, 0, -7, 12, 2, -5, -7, 6, 8, -3, 1, -8, 11, 2, 10], [2, -11, 13, 0, -9, 6, 8, -15, -9, -13, -10, -15, -4, 6, -3], [-4, 0, -11, 13, 8, -15, 15, -9, -11, -6, -3, 3, -12, -1, 15], [15, 15, 9, -6, -9, 0, 12, 4, 6, -10, 3, -6, -11, -1, -3], [7, 4, 11, 9, -15, 14, 12, 0, 2, 0, 12, -9, -13, -2, -8], [6, -6, 6, -5, 0, -7, 11, 12, 14, 13, -15, -7, 7, -10, -11], [-13, 1, 12, -9, -2, 8, -12, 15, -15, 9, 0, -8, 15, -2, 3], [-8, 15, -11, 8, 11, 13, -7, 9, 5, -14, -14, -2, 4, 7, 4], [7, 11, -1, -3, -1, 12, -7, 5, -11, -14, 7, 10, 8, 10, -12], [-2, -15, -5, -3, 8, -4, -8, -7, 7, -4, -8, -3, 9, -2, 1], [-9, 7, -7, -10, -1, -5, -10, 15, 7, -4, 15, 4, -7, 1, -6], [-14, -1, -4, -11, -2, -8, -5, -11, 0, 9, -12, 14, 15, 5, 2], [-8, -6, -8, -7, 13, 8, -7, 13, -10, -6, 6, 1, -4, 5, -11], [-3, 7, -6, 2, -1, 1, 5, -13, 11, 12, 7, -10, 11, 8, 8], [6, 15, 7, -8, -15, -4, 1, 9, 10, -1, 8, -2, -15, -15, -8], [11, 1, 4, -3, 6, 14, 3, -3, 6, -3, 6, 14, 15, 14, -4], [-4, 7, 2, 6, -12, -8, -5, 14, 11, -12, 9, 10, 3, 9, -8], [-6, -12, -8, -15, -11, 3, -4, -4, 9, 0, 7, 6, -12, 9, 13], [-2, 0, -2, -6, 13, 14, 4, -5, -4, 12, 4, 4, 3, 2, 9], [-10, 2, 15, -15, -3, -1, -4, 4, 10, -6, -12, -9, 9, 9, 2], [5, -12, 5, 1, 11, 13, 3, 11, -8, 1, -5, 10, 7, 6, 11], [4, 11, 14, -6, -10, -14, 7, 2, -4, -4, 14, 5, 10, -12, 13], [-7, 0, 5, -13, -9, -15, 2, 3, -2, 15, 4, -13, -13, -2, 7], [2, -6, 0, 13, 14, -7, 2, -4, 5, -9, -4, 5, -12, 15, 11], [6, 12, -11, -13, -3, 0, -9, -15, 7, 3, -12, 12, -15, 15, 0], [-2, -11, -4, 12, 1, -3, 1, 10, 9, -6, -11, 7, -2, 8, 3], [-5, 2, -11, -15, -3, 8, 2, 6, -5, 8, -5, 12, 13, -3, 14], [12, -10, -5, -15, 11, -8, -4, 13, 3, 0, 2, 10, 11, -12, -15]] [[3, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, -4, 13, 13, 0], [13, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, -4, -3, -8, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-12, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, -14, -7, 13, 0], [-5, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, -7, 13, 11, 0], [7, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 6, 3, 14, 0], [-10, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, -9, 5, 13, 0], [-1, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, -11, 15, -5, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-15, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 11, 8, -1, 0], [-4, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, -14, 7, -7, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-8, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, -2, 4, 7, 0], [7, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 10, 8, 10, 0], [-2, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, -3, 9, -2, 0], [-9, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 4, -7, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-8, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 1, -4, 5, 0], [-3, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, -10, 11, 8, 0], [6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, -15, -15, 0], [11, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 14, 15, 14, 0], [-4, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 10, 3, 9, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-10, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, -9, 9, 9, 0], [5, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 10, 7, 6, 0], [4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 10, -12, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 7, -2, 8, 0], [-5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 12, 13, -3, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] TODO diff --git a/test_data/rotate_array.tsv b/test_data/rotate_array.tsv index ff6442f9e..b771fbd85 100644 --- a/test_data/rotate_array.tsv +++ b/test_data/rotate_array.tsv @@ -1,5 +1,4 @@ array(int) int array(int) -@ a k [1, 4, 1, 1] 0 [1, 4, 1, 1] TODO [23, 63, 9, 43, 1, 68, 25, 41, 2, 69, 36, 50, 51, 12, 62, 5, 61, 24, 60, 74, 36, 61, 67, 53, 63, 58, 56, 50, 37, 69, 68, 25, 19, 55, 8, 73, 5, 22, 23, 53, 59, 38, 6, 32, 16, 61, 30, 18, 53, 49, 52, 25, 60, 14, 53, 45, 21, 38, 69, 59, 21, 66, 73, 53, 47, 15, 33, 42, 63, 50, 9, 48, 37, 46, 72] 5 [9, 48, 37, 46, 72, 23, 63, 9, 43, 1, 68, 25, 41, 2, 69, 36, 50, 51, 12, 62, 5, 61, 24, 60, 74, 36, 61, 67, 53, 63, 58, 56, 50, 37, 69, 68, 25, 19, 55, 8, 73, 5, 22, 23, 53, 59, 38, 6, 32, 16, 61, 30, 18, 53, 49, 52, 25, 60, 14, 53, 45, 21, 38, 69, 59, 21, 66, 73, 53, 47, 15, 33, 42, 63, 50] TODO [1, 5, 3, 3, 3] 9 [5, 3, 3, 3, 1] TODO diff --git a/test_data/run_length_compression.tsv b/test_data/run_length_compression.tsv index cc693d04c..f51307669 100644 --- a/test_data/run_length_compression.tsv +++ b/test_data/run_length_compression.tsv @@ -1,5 +1,4 @@ string[encoded] string[decoded] void -@ encoded decoded 15z4f10z15n9s6n12r22a17o17e10i9l12i9n9m4f24h8x18v1i23u25b1h15k13j zzzzzzzzzzzzzzzffffzzzzzzzzzznnnnnnnnnnnnnnnsssssssssnnnnnnrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaoooooooooooooooooeeeeeeeeeeeeeeeeeiiiiiiiiiillllllllliiiiiiiiiiiinnnnnnnnnmmmmmmmmmffffhhhhhhhhhhhhhhhhhhhhhhhhxxxxxxxxvvvvvvvvvvvvvvvvvviuuuuuuuuuuuuuuuuuuuuuuubbbbbbbbbbbbbbbbbbbbbbbbbhkkkkkkkkkkkkkkkjjjjjjjjjjjjj TODO 9x5j8y14b46m7f12l22d21x19i xxxxxxxxxjjjjjyyyyyyyybbbbbbbbbbbbbbmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmfffffffllllllllllllddddddddddddddddddddddxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiiiiii TODO 4d1n19m25l14i17a18x6g13q ddddnmmmmmmmmmmmmmmmmmmmllllllllllllllllllllllllliiiiiiiiiiiiiiaaaaaaaaaaaaaaaaaxxxxxxxxxxxxxxxxxxggggggqqqqqqqqqqqqq TODO diff --git a/test_data/search_first_greater_value_in_bst.tsv b/test_data/search_first_greater_value_in_bst.tsv index 78c4c982d..ebaf8c889 100644 --- a/test_data/search_first_greater_value_in_bst.tsv +++ b/test_data/search_first_greater_value_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int -@ tree k ["1"] 1 -1 TODO ["6", "1"] 3 6 TODO ["6", "1", "8"] 1 6 TODO diff --git a/test_data/search_first_key.tsv b/test_data/search_first_key.tsv index 02a665da3..ead44271d 100644 --- a/test_data/search_first_key.tsv +++ b/test_data/search_first_key.tsv @@ -1,5 +1,4 @@ array(int) int int -@ A k [0, 1, 2, 3, 4, 5, 6, 7] 0 0 TODO [0, 1, 2, 3, 4, 5, 6, 7] 1 1 TODO [0, 1, 2, 3, 4, 5, 6, 7] 4 4 TODO diff --git a/test_data/search_for_min_max_in_array.tsv b/test_data/search_for_min_max_in_array.tsv index 9bc694571..9b6355e44 100644 --- a/test_data/search_for_min_max_in_array.tsv +++ b/test_data/search_for_min_max_in_array.tsv @@ -1,5 +1,4 @@ array(int) tuple(int[smallest], int[largest]) -@ A [67, 34, 10, 28, -44, -26, -20, -12, 72, -26, 94, -1, 91, -55, -69, -34, 55, -55, 80, -94, 22, 64, 97, -27, 27, 2, 4, -91, 19, -50, -6, 97, -36, -7, 89, 2, 34, -84, -16, -81, -75, -9, -41, 11, 7, 35, 55, 81, -38, -35, 24, -20, 71, -74, -7, 59, -94, 49, 10, 22, -35, 19, 21, 29, -84, -26, 99, 48, 61, -45, -7, -50, 101, -56, 87, -77, -40, 53, 49, -37, -24, 43, 38, -10, -36, 7, -12, -95, -20, 63, -76, 41, -49, 23, 38, -26, -9, -70, -71, 25, 67] [-95, 101] TODO [-4, -5, -6, 3, -5, -4] [-6, 3] TODO [-11, -14, 5, -2, -3, 7, -3, 10, 11, 14, -6, 4, -1, -6, -4, 12] [-14, 14] TODO diff --git a/test_data/search_frequent_items.tsv b/test_data/search_frequent_items.tsv index 4bd89b2b1..b55d3347f 100644 --- a/test_data/search_frequent_items.tsv +++ b/test_data/search_frequent_items.tsv @@ -1,5 +1,4 @@ int array(string) array(string) -@ k stream 2846 ["aa", "aa", "aa", "aa", "aa", "aa", "aa", "ab", "ab", "ab", "ab", "ab", "ab", "ab", "ab", "ab", "ac", "ac", "ac", "ad", "ad", "ad", "ae", "ae", "ae", "af", "af", "af", "af", "af", "af", "af", "af", "ag", "ag", "ag", "ag", "ag", "ag", "ah", "ah", "ah", "ah", "ah", "ai", "ai", "ai", "ai", "ai", "ai", "ai", "ai", "ai", "ai", "ai", "aj", "aj", "aj", "aj", "aj", "aj", "aj", "aj", "ak", "ak", "ak", "ak", "ak", "ak", "ak", "al", "al", "al", "am", "am", "am", "am", "am", "am", "am", "am", "am", "am", "an", "an", "an", "an", "an", "an", "an", "ao", "ao", "ao", "ao", "ap", "ap", "aq", "aq", "aq", "aq", "aq", "aq", "aq", "ar", "ar", "ar", "ar", "ar", "ar", "ar", "as", "as", "as", "as", "as", "as", "as", "as", "at", "at", "at", "at", "au", "au", "au", "au", "au", "au", "au", "av", "av", "av", "av", "av", "av", "av", "aw", "aw", "aw", "aw", "aw", "aw", "ax", "ax", "ax", "ax", "ax", "ax", "ax", "ax", "ax", "ay", "ay", "ay", "ay", "ay", "ay", "ay", "ay", "ay", "ay", "az", "az", "az", "az", "az", "az", "az", "ba", "ba", "ba", "ba", "bb", "bb", "bb", "bb", "bc", "bc", "bc", "bc", "bc", "bc", "bc", "bd", "bd", "bd", "bd", "be", "be", "be", "be", "bf", "bf", "bf", "bf", "bf", "bf", "bf", "bg", "bg", "bg", "bg", "bg", "bg", "bg", "bg", "bh", "bh", "bh", "bh", "bh", "bi", "bi", "bj", "bj", "bj", "bj", "bj", "bk", "bk", "bk", "bk", "bl", "bl", "bl", "bm", "bm", "bm", "bm", "bm", "bm", "bn", "bn", "bn", "bn", "bn", "bo", "bo", "bo", "bo", "bq", "bq", "br", "br", "br", "br", "br", "br", "br", "br", "br", "br", "bs", "bs", "bs", "bs", "bs", "bs", "bt", "bt", "bt", "bt", "bt", "bu", "bu", "bu", "bu", "bu", "bu", "bu", "bv", "bv", "bv", "bw", "bw", "bw", "bx", "bx", "bx", "bx", "bx", "bx", "by", "by", "by", "by", "by", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "bz", "ca", "ca", "ca", "ca", "ca", "cb", "cb", "cb", "cb", "cb", "cb", "cc", "cc", "cc", "cd", "cd", "cd", "cd", "cd", "cd", "cd", "ce", "ce", "ce", "ce", "ce", "ce", "cf", "cf", "cf", "cf", "cf", "cg", "cg", "cg", "cg", "cg", "cg", "cg", "cg", "cg", "cg", "ch", "ch", "ch", "ch", "ch", "ch", "ch", "ch", "ci", "ci", "ci", "ci", "ci", "cj", "cj", "cj", "cj", "cj", "ck", "ck", "ck", "cl", "cl", "cl", "cl", "cl", "cl", "cl", "cm", "cm", "cm", "cm", "cm", "cm", "cn", "cn", "cn", "cn", "cn", "cn", "cn", "cn", "cn", "co", "co", "co", "co", "co", "co", "co", "cp", "cp", "cp", "cp", "cp", "cp", "cp", "cp", "cq", "cq", "cq", "cq", "cq", "cq", "cq", "cr", "cr", "cr", "cs", "cs", "cs", "ct", "ct", "ct", "cu", "cu", "cu", "cv", "cw", "cw", "cw", "cw", "cw", "cx", "cx", "cx", "cx", "cx", "cx", "cx", "cx", "cx", "cy", "cy", "cy", "cy", "cz", "cz", "cz", "da", "da", "da", "da", "da", "da", "da", "da", "da", "da", "db", "dc", "dc", "dc", "dc", "dc", "dd", "de", "de", "de", "de", "de", "de", "de", "de", "df", "df", "df", "df", "df", "dg", "dg", "dh", "dh", "dh", "dh", "dh", "di", "di", "di", "di", "di", "dj", "dj", "dj", "dj", "dj", "dj", "dk", "dk", "dk", "dl", "dl", "dl", "dl", "dl", "dm", "dm", "dm", "dm", "dm", "dm", "dn", "dn", "dn", "dn", "dn", "dn", "do", "do", "do", "do", "do", "do", "dp", "dp", "dp", "dp", "dp", "dq", "dq", "dq", "dq", "dq", "dq", "dr", "dr", "dr", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "ds", "dt", "dt", "dt", "dt", "du", "du", "du", "du", "du", "du", "dv", "dv", "dv", "dw", "dw", "dw", "dw", "dw", "dw", "dx", "dx", "dx", "dx", "dx", "dx", "dx", "dy", "dy", "dy", "dy", "dy", "dy", "dy", "dy", "dz", "dz", "dz", "dz", "ea", "ea", "ea", "eb", "eb", "eb", "ec", "ec", "ec", "ec", "ec", "ec", "ec", "ed", "ed", "ed", "ed", "ee", "ee", "ee", "ee", "ee", "ee", "ee", "ee", "ef", "ef", "ef", "ef", "ef", "ef", "ef", "eg", "eg", "eg", "eg", "eg", "eg", "eh", "eh", "eh", "eh", "eh", "eh", "eh", "eh", "eh", "ei", "ei", "ei", "ei", "ej", "ej", "ej", "ej", "ej", "ek", "ek", "ek", "ek", "ek", "ek", "ek", "ek", "el", "el", "el", "el", "el", "em", "em", "en", "en", "en", "en", "en", "en", "en", "eo", "eo", "eo", "ep", "ep", "ep", "ep", "eq", "eq", "eq", "eq", "eq", "eq", "er", "er", "er", "er", "er", "er", "es", "es", "es", "es", "es", "es", "es", "es", "es", "es", "et", "et", "et", "et", "et", "et", "eu", "eu", "eu", "eu", "eu", "eu", "ev", "ev", "ev", "ev", "ev", "ew", "ew", "ew", "ew", "ew", "ew", "ew", "ew", "ex", "ex", "ex", "ey", "ey", "ey", "ey", "ez", "ez", "ez", "ez", "fa", "fa", "fa", "fb", "fb", "fb", "fb", "fc", "fc", "fc", "fd", "fd", "fd", "fd", "fe", "fe", "fe", "ff", "ff", "ff", "ff", "ff", "ff", "ff", "ff", "ff", "fg", "fg", "fh", "fh", "fh", "fh", "fh", "fh", "fh", "fh", "fh", "fi", "fi", "fi", "fj", "fj", "fj", "fj", "fk", "fk", "fl", "fl", "fl", "fl", "fm", "fm", "fm", "fm", "fn", "fo", "fo", "fo", "fo", "fo", "fo", "fp", "fq", "fq", "fq", "fr", "fr", "fr", "fs", "fs", "fs", "fs", "fs", "ft", "ft", "ft", "ft", "ft", "ft", "ft", "fu", "fu", "fu", "fu", "fu", "fu", "fv", "fv", "fv", "fv", "fv", "fw", "fw", "fx", "fx", "fx", "fx", "fy", "fy", "fy", "fz", "fz", "fz", "fz", "fz", "fz", "fz", "fz", "ga", "ga", "ga", "gb", "gb", "gb", "gb", "gb", "gb", "gc", "gc", "gc", "gc", "gc", "gc", "gd", "gd", "gd", "gd", "gd", "ge", "ge", "ge", "ge", "ge", "ge", "gf", "gf", "gf", "gf", "gf", "gf", "gg", "gg", "gg", "gg", "gg", "gg", "gg", "gh", "gh", "gh", "gh", "gh", "gh", "gi", "gj", "gj", "gj", "gj", "gk", "gk", "gl", "gl", "gl", "gl", "gm", "gm", "gn", "gn", "go", "go", "go", "go", "go", "go", "go", "go", "gp", "gp", "gq", "gq", "gr", "gr", "gr", "gr", "gr", "gr", "gr", "gs", "gs", "gs", "gs", "gs", "gt", "gt", "gt", "gt", "gu", "gu", "gv", "gv", "gv", "gv", "gw", "gw", "gw", "gw", "gw", "gw", "gw", "gx", "gx", "gx", "gx", "gx", "gx", "gx", "gy", "gy", "gy", "gz", "gz", "gz", "gz", "ha", "ha", "hb", "hb", "hb", "hb", "hb", "hb", "hb", "hc", "hc", "hc", "hc", "hc", "hc", "hc", "hd", "hd", "he", "he", "he", "he", "he", "he", "he", "he", "hf", "hf", "hf", "hf", "hf", "hf", "hg", "hg", "hg", "hg", "hg", "hg", "hh", "hh", "hh", "hh", "hh", "hh", "hi", "hi", "hi", "hi", "hi", "hi", "hj", "hj", "hj", "hj", "hj", "hk", "hk", "hk", "hk", "hk", "hl", "hl", "hl", "hl", "hl", "hl", "hm", "hm", "hm", "hm", "hm", "hm", "hm", "hm", "hm", "hm", "hn", "hn", "hn", "hn", "hn", "hn", "hn", "ho", "ho", "ho", "ho", "ho", "ho", "ho", "ho", "ho", "hp", "hp", "hp", "hp", "hp", "hp", "hq", "hq", "hq", "hr", "hr", "hr", "hs", "hs", "hs", "hs", "hs", "hs", "ht", "ht", "ht", "ht", "ht", "ht", "ht", "ht", "hu", "hu", "hu", "hu", "hv", "hv", "hv", "hv", "hv", "hw", "hw", "hw", "hw", "hw", "hw", "hw", "hw", "hw", "hx", "hx", "hx", "hx", "hx", "hx", "hx", "hx", "hy", "hy", "hy", "hy", "hy", "hy", "hy", "hz", "hz", "hz", "hz", "hz", "ia", "ia", "ia", "ia", "ib", "ib", "ib", "ic", "ic", "ic", "id", "id", "id", "id", "id", "id", "ie", "ie", "if", "if", "if", "if", "if", "ig", "ig", "ig", "ig", "ig", "ih", "ih", "ih", "ih", "ih", "ih", "ih", "ii", "ij", "ij", "ij", "ij", "ij", "ij", "ik", "ik", "ik", "ik", "ik", "ik", "il", "il", "il", "im", "im", "im", "im", "im", "in", "in", "in", "io", "io", "io", "io", "ip", "ip", "ip", "iq", "iq", "ir", "ir", "ir", "ir", "ir", "ir", "ir", "ir", "ir", "ir", "is", "is", "it", "it", "it", "it", "it", "it", "it", "iu", "iu", "iu", "iu", "iu", "iu", "iv", "iv", "iv", "iv", "iv", "iv", "iw", "ix", "ix", "ix", "ix", "ix", "iy", "iy", "iy", "iy", "iy", "iy", "iz", "iz", "iz", "iz", "ja", "ja", "ja", "ja", "ja", "ja", "jb", "jb", "jb", "jb", "jc", "jd", "jd", "jd", "jd", "jd", "jd", "je", "jf", "jf", "jf", "jf", "jg", "jg", "jg", "jg", "jg", "jh", "jh", "jh", "jh", "jh", "ji", "ji", "ji", "ji", "ji", "ji", "ji", "jj", "jj", "jj", "jj", "jj", "jj", "jl", "jl", "jl", "jl", "jl", "jl", "jl", "jl", "jm", "jm", "jm", "jm", "jm", "jm", "jn", "jn", "jn", "jn", "jo", "jo", "jo", "jp", "jp", "jp", "jp", "jp", "jq", "jq", "jq", "jq", "jq", "jr", "jr", "jr", "jr", "js", "js", "js", "js", "jt", "jt", "jt", "jt", "jt", "jt", "jt", "jt", "jt", "ju", "ju", "ju", "ju", "ju", "ju", "ju", "jv", "jv", "jv", "jv", "jv", "jw", "jw", "jw", "jw", "jw", "jx", "jx", "jy", "jy", "jy", "jy", "jy", "jy", "jy", "jy", "jy", "jz", "jz", "jz", "ka", "kb", "kb", "kb", "kb", "kc", "kc", "kc", "kc", "kc", "kc", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "kd", "ke", "ke", "ke", "ke", "ke", "kf", "kf", "kf", "kf", "kf", "kf", "kg", "kg", "kg", "kg", "kg", "kg", "kh", "kh", "kh", "kh", "kh", "ki", "ki", "kj", "kj", "kj", "kj", "kk", "kk", "kk", "kk", "kk", "kl", "kl", "kl", "kl", "kl", "kl", "kl", "km", "km", "km", "kn", "kn", "ko", "ko", "ko", "ko", "ko", "ko", "kp", "kp", "kp", "kp", "kp", "kq", "kq", "kq", "kq", "kq", "kr", "kr", "kr", "kr", "kr", "kr", "ks", "ks", "ks", "ks", "ks", "kt", "kt", "kt", "kt", "kt", "kt", "kt", "ku", "ku", "ku", "kv", "kv", "kw", "kw", "kw", "kw", "kx", "kx", "kx", "kx", "kx", "kx", "ky", "ky", "ky", "ky", "kz", "kz", "kz", "kz", "kz", "kz", "kz", "la", "la", "la", "la", "la", "la", "la", "la", "la", "la", "lb", "lb", "lb", "lb", "lb", "lb", "lb", "lb", "lc", "lc", "lc", "lc", "lc", "ld", "ld", "ld", "ld", "ld", "ld", "le", "le", "lf", "lf", "lg", "lg", "lg", "lg", "lg", "lg", "lh", "lh", "lh", "lh", "lh", "li", "li", "li", "li", "lj", "lj", "lj", "lj", "lj", "lj", "lj", "lj", "lj", "lj", "lk", "lk", "lk", "lk", "lk", "lk", "lk", "lk", "ll", "ll", "ll", "ll", "ll", "ll", "ll", "ll", "lm", "lm", "lm", "lm", "lm", "lm", "lm", "lm", "lm", "lm", "ln", "ln", "ln", "lo", "lo", "lq", "lq", "lq", "lr", "lr", "lr", "lr", "lr", "lr", "lr", "lr", "lr", "ls", "ls", "ls", "ls", "ls", "ls", "lt", "lt", "lt", "lt", "lt", "lt", "lu", "lu", "lv", "lv", "lv", "lv", "lv", "lv", "lw", "lw", "lw", "lw", "lw", "lw", "lw", "lw", "lw", "lx", "lx", "lx", "lx", "lx", "lx", "ly", "ly", "ly", "ly", "lz", "lz", "lz", "lz", "lz", "lz", "lz", "ma", "ma", "ma", "ma", "ma", "mb", "mb", "mb", "mb", "mb", "mc", "mc", "mc", "mc", "mc", "mc", "mc", "mc", "mc", "mc", "md", "md", "md", "md", "md", "md", "md", "md", "me", "me", "me", "me", "me", "me", "me", "mf", "mf", "mf", "mf", "mf", "mf", "mg", "mg", "mg", "mh", "mh", "mh", "mi", "mi", "mi", "mi", "mi", "mi", "mj", "mj", "mj", "mj", "mj", "mk", "mk", "mk", "mk", "mk", "mk", "ml", "mm", "mm", "mm", "mm", "mm", "mn", "mn", "mn", "mn", "mn", "mn", "mo", "mo", "mo", "mo", "mo", "mp", "mp", "mp", "mq", "mq", "mq", "mq", "mr", "mr", "mr", "mr", "mr", "mr", "mr", "mr", "ms", "ms", "ms", "ms", "mt", "mt", "mt", "mt", "mt", "mt", "mt", "mt", "mt", "mt", "mt", "mu", "mu", "mu", "mu", "mu", "mu", "mu", "mu", "mu", "mu", "mv", "mv", "mv", "mv", "mv", "mv", "mv", "mv", "mv", "mv", "mw", "mw", "mw", "mw", "mw", "mw", "mw", "mw", "mw", "mx", "mx", "mx", "mx", "mx", "mx", "mx", "mx", "mx", "mx", "my", "my", "my", "my", "mz", "na", "na", "na", "na", "na", "nb", "nb", "nc", "nc", "nc", "nc", "nc", "nc", "nd", "nd", "nd", "nd", "nd", "nd", "nd", "nd", "nd", "ne", "ne", "nf", "nf", "ng", "ng", "ng", "ng", "ng", "nh", "nh", "ni", "ni", "ni", "ni", "ni", "ni", "ni", "nj", "nj", "nj", "nj", "nj", "nk", "nk", "nk", "nk", "nk", "nl", "nm", "nm", "nm", "nn", "nn", "nn", "nn", "nn", "nn", "no", "no", "no", "no", "no", "no", "no", "no", "np", "np", "np", "np", "np", "np", "np", "nq", "nq", "nq", "nq", "nq", "nr", "ns", "ns", "ns", "ns", "ns", "ns", "nt", "nt", "nt", "nt", "nu", "nu", "nu", "nu", "nu", "nu", "nv", "nv", "nv", "nv", "nv", "nw", "nw", "nw", "nw", "nx", "nx", "nx", "nx", "nx", "nx", "nx", "nx", "ny", "ny", "ny", "ny", "ny", "ny", "ny", "ny", "ny", "nz", "nz", "nz", "oa", "oa", "oa", "oa", "oa", "oa", "oa", "ob", "ob", "ob", "ob", "ob", "oc", "oc", "oc", "oc", "od", "od", "od", "od", "od", "od", "oe", "oe", "oe", "oe", "oe", "oe", "of", "og", "og", "og", "og", "oh", "oi", "oi", "oi", "oi", "oj", "oj", "oj", "oj", "oj", "ok", "ok", "ok", "ok", "ok", "ol", "ol", "ol", "ol", "ol", "ol", "ol", "ol", "om", "om", "om", "om", "om", "on", "on", "on", "on", "on", "oo", "oo", "oo", "op", "op", "op", "op", "oq", "oq", "or", "or", "or", "os", "os", "os", "os", "ot", "ot", "ot", "ou", "ou", "ov", "ov", "ov", "ov", "ov", "ov", "ov", "ow", "ow", "ow", "ow", "ow", "ow", "ow", "ox", "ox", "ox", "ox", "ox", "ox", "oy", "oy", "oy", "oy", "oy", "oy", "oz", "oz", "oz", "oz", "oz", "oz", "pa", "pa", "pa", "pa", "pa", "pa", "pa", "pb", "pb", "pb", "pb", "pc", "pc", "pc", "pc", "pc", "pc", "pc", "pc", "pd", "pd", "pe", "pe", "pe", "pe", "pe", "pe", "pe", "pe", "pe", "pf", "pf", "pf", "pf", "pf", "pf", "pg", "pg", "pg", "ph", "ph", "ph", "pi", "pi", "pi", "pi", "pj", "pj", "pj", "pk", "pk", "pl", "pl", "pl", "pl", "pm", "pm", "pm", "pm", "pn", "pn", "pn", "po", "po", "pp", "pp", "pp", "pq", "pq", "pq", "pq", "pr", "pr", "ps", "ps", "ps", "pt", "pt", "pt", "pt", "pt", "pt", "pt", "pu", "pu", "pv", "pv", "pv", "pv", "pv", "pw", "pw", "pw", "pw", "pw", "px", "px", "px", "px", "px", "px", "px", "px", "px", "py", "py", "py", "pz", "qa", "qa", "qa", "qa", "qa", "qa", "qa", "qa", "qb", "qb", "qb", "qb", "qb", "qc", "qc", "qc", "qc", "qc", "qc", "qd", "qd", "qd", "qd", "qd", "qd", "qd", "qd", "qd", "qe", "qe", "qe", "qe", "qf", "qf", "qf", "qf", "qg", "qg", "qg", "qg", "qg", "qg", "qg", "qg", "qh", "qh", "qh", "qh", "qh", "qh", "qh", "qi", "qi", "qi", "qj", "qj", "qk", "qk", "qk", "qk", "qk", "qk", "ql", "ql", "ql", "qm", "qm", "qm", "qm", "qm", "qn", "qn", "qn", "qn", "qn", "qo", "qo", "qo", "qo", "qp", "qp", "qp", "qp", "qp", "qq", "qq", "qq", "qq", "qq", "qq", "qr", "qr", "qr", "qs", "qs", "qt", "qt", "qt", "qt", "qt", "qt", "qt", "qt", "qu", "qu", "qu", "qu", "qv", "qv", "qv", "qv", "qv", "qv", "qv", "qw", "qw", "qw", "qw", "qw", "qw", "qx", "qx", "qx", "qx", "qx", "qx", "qy", "qy", "qy", "qy", "qy", "qy", "qz", "qz", "qz", "qz", "qz", "qz", "qz", "qz", "qz", "ra", "ra", "ra", "ra", "ra", "rb", "rb", "rb", "rb", "rb", "rb", "rb", "rb", "rb", "rc", "rc", "rc", "rc", "rc", "rc", "rc", "rd", "rd", "rd", "re", "re", "re", "re", "rf", "rf", "rf", "rf", "rf", "rf", "rg", "rg", "rg", "rh", "rh", "rh", "rh", "rh", "rh", "rh", "ri", "ri", "ri", "ri", "ri", "ri", "ri", "rj", "rj", "rj", "rj", "rj", "rk", "rk", "rk", "rk", "rk", "rk", "rk", "rl", "rl", "rl", "rl", "rm", "rm", "rn", "rn", "rn", "ro", "ro", "ro", "rp", "rp", "rp", "rp", "rp", "rp", "rp", "rp", "rq", "rq", "rq", "rq", "rq", "rq", "rq", "rr", "rr", "rr", "rr", "rr", "rs", "rs", "rs", "rs", "rs", "rs", "rs", "rs", "rs", "rs", "rs", "rt", "rt", "ru", "ru", "ru", "ru", "rv", "rv", "rv", "rv", "rv", "rw", "rw", "rw", "rw", "rx", "rx", "rx", "rx", "ry", "ry", "ry", "ry", "ry", "ry", "rz", "rz", "rz", "rz", "rz", "sa", "sa", "sa", "sa", "sb", "sb", "sb", "sb", "sc", "sc", "sc", "sc", "sc", "sd", "sd", "sd", "sd", "sd", "sd", "se", "se", "se", "se", "se", "se", "sf", "sg", "sg", "sg", "sg", "sg", "sh", "sh", "sh", "sh", "sh", "sh", "sh", "si", "si", "si", "si", "si", "si", "sj", "sj", "sj", "sj", "sk", "sk", "sk", "sk", "sk", "sk", "sl", "sl", "sl", "sl", "sl", "sm", "sm", "sm", "sm", "sn", "sn", "sn", "sn", "sn", "sn", "sn", "so", "so", "so", "so", "so", "sp", "sp", "sp", "sp", "sp", "sp", "sp", "sq", "sq", "sr", "sr", "sr", "sr", "sr", "sr", "ss", "ss", "ss", "ss", "ss", "ss", "ss", "st", "st", "st", "st", "st", "su", "su", "su", "sv", "sv", "sv", "sv", "sw", "sw", "sw", "sw", "sw", "sw", "sx", "sx", "sx", "sy", "sy", "sy", "sy", "sz", "sz", "sz", "sz", "sz", "sz", "ta", "ta", "tb", "tb", "tb", "tb", "tb", "tc", "tc", "td", "td", "td", "td", "td", "te", "te", "te", "te", "te", "te", "tf", "tf", "tg", "tg", "tg", "tg", "tg", "tg", "tg", "th", "th", "th", "ti", "ti", "ti", "tk", "tk", "tk", "tk", "tk", "tk", "tl", "tl", "tl", "tl", "tl", "tl", "tm", "tm", "tm", "tm", "tm", "tn", "tn", "tn", "tn", "tn", "tn", "tn", "to", "to", "to", "to", "to", "to", "tp", "tp", "tp", "tp", "tp", "tp", "tq", "tq", "tq", "tq", "tr", "tr", "tr", "ts", "ts", "ts", "ts", "ts", "ts", "ts", "ts", "ts", "tt", "tt", "tt", "tt", "tu", "tu", "tv", "tv", "tv", "tv", "tv", "tv", "tv", "tw", "tw", "tw", "tw", "tx", "tx", "tx", "tx", "ty", "ty", "ty", "tz", "tz", "tz", "tz", "tz", "tz", "ua", "ua", "ua", "ua", "ua", "ua", "ub", "ub", "ub", "uc", "uc", "uc", "uc", "uc", "uc", "ud", "ud", "ud", "ud", "ud", "ue", "ue", "ue", "ue", "ue", "ue", "uf", "uf", "uf", "ug", "ug", "ug", "ug", "ug", "ug", "uh", "uh", "uh", "uh", "uh", "uh", "ui", "ui", "ui", "ui", "ui", "ui", "ui", "ui", "uj", "uj", "uj", "uj", "uk", "uk", "ul", "ul", "ul", "ul", "um", "um", "um", "un", "un", "un", "un", "un", "uo", "uo", "uo", "uo", "up", "up", "up", "up", "uq", "uq", "uq", "uq", "ur", "ur", "us", "us", "us", "us", "ut", "ut", "uu", "uu", "uu", "uu", "uu", "uu", "uv", "uv", "uv", "uv", "uv", "uv", "uw", "uw", "uw", "ux", "ux", "ux", "ux", "ux", "ux", "ux", "ux", "ux", "uy", "uy", "uy", "uy", "uy", "uy", "uy", "uz", "uz", "uz", "uz", "uz", "uz", "va", "vb", "vb", "vb", "vb", "vb", "vb", "vb", "vb", "vb", "vb", "vb", "vc", "vc", "vc", "vc", "vd", "vd", "vd", "vd", "vd", "ve", "ve", "ve", "ve", "vf", "vf", "vf", "vf", "vf", "vf", "vg", "vg", "vg", "vg", "vg", "vg", "vg", "vg", "vg", "vh", "vh", "vh", "vh", "vh", "vi", "vj", "vk", "vk", "vk", "vl", "vl", "vl", "vm", "vm", "vm", "vn", "vn", "vn", "vo", "vo", "vo", "vo", "vo", "vo", "vo", "vo", "vo", "vp", "vp", "vp", "vp", "vp", "vp", "vp", "vq", "vq", "vq", "vq", "vq", "vr", "vr", "vr", "vr", "vs", "vs", "vs", "vs", "vs", "vt", "vt", "vt", "vt", "vt", "vt", "vu", "vu", "vu", "vu", "vv", "vv", "vv", "vv", "vw", "vw", "vw", "vw", "vw", "vw", "vx", "vx", "vx", "vy", "vy", "vy", "vz", "vz", "vz", "vz", "vz", "vz", "wa", "wa", "wa", "wa", "wb", "wb", "wc", "wc", "wc", "wc", "wc", "wd", "wd", "wd", "wd", "wd", "we", "we", "wf", "wf", "wf", "wg", "wg", "wg", "wg", "wg", "wg", "wh", "wh", "wh", "wh", "wh", "wi", "wi", "wi", "wj", "wj", "wj", "wj", "wj", "wj", "wk", "wk", "wk", "wl", "wl", "wl", "wl", "wl", "wl", "wm", "wm", "wm", "wm", "wm", "wn", "wn", "wn", "wn", "wn", "wn", "wo", "wo", "wo", "wo", "wp", "wp", "wp", "wp", "wp", "wq", "wq", "wq", "wq", "wr", "wr", "wr", "wr", "ws", "ws", "ws", "ws", "ws", "ws", "ws", "wt", "wt", "wt", "wt", "wt", "wu", "wu", "wu", "wu", "wv", "wv", "wv", "wv", "wv", "ww", "ww", "wx", "wx", "wx", "wx", "wx", "wy", "wy", "wy", "wy", "wy", "wz", "wz", "wz", "wz", "wz", "xa", "xa", "xb", "xb", "xb", "xb", "xb", "xb", "xb", "xc", "xc", "xd", "xd", "xd", "xd", "xe", "xe", "xe", "xe", "xe", "xe", "xf", "xf", "xf", "xf", "xf", "xf", "xf", "xg", "xg", "xg", "xg", "xh", "xh", "xh", "xi", "xi", "xi", "xi", "xi", "xi", "xj", "xj", "xj", "xj", "xj", "xk", "xk", "xk", "xl", "xl", "xl", "xl", "xl", "xl", "xm", "xm", "xm", "xm", "xm", "xm", "xm", "xn", "xn", "xn", "xn", "xn", "xo", "xo", "xo", "xo", "xo", "xo", "xo", "xo", "xo", "xo", "xp", "xp", "xp", "xq", "xq", "xq", "xq", "xr", "xr", "xr", "xr", "xr", "xr", "xr", "xr", "xs", "xs", "xs", "xs", "xs", "xt", "xt", "xt", "xt", "xt", "xt", "xt", "xu", "xu", "xu", "xv", "xv", "xv", "xw", "xw", "xw", "xw", "xw", "xw", "xw", "xw", "xw", "xw", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xy", "xy", "xy", "xy", "xy", "xy", "xz", "xz", "xz", "xz", "xz", "ya", "ya", "yb", "yb", "yc", "yc", "yc", "yc", "yc", "yd", "yd", "ye", "yf", "yg", "yg", "yg", "yh", "yh", "yh", "yh", "yi", "yi", "yi", "yi", "yi", "yi", "yi", "yj", "yj", "yj", "yj", "yj", "yj", "yj", "yk", "yk", "yk", "yl", "yl", "yl", "yl", "yl", "yl", "yl", "ym", "ym", "ym", "ym", "yn", "yn", "yn", "yn", "yn", "yo", "yo", "yo", "yo", "yo", "yp", "yp", "yp", "yp", "yq", "yq", "yq", "yq", "yq", "yq", "yr", "yr", "yr", "ys", "yt", "yt", "yt", "yt", "yt", "yu", "yu", "yu", "yu", "yu", "yu", "yu", "yu", "yv", "yv", "yv", "yv", "yw", "yw", "yw", "yw", "yw", "yw", "yx", "yx", "yx", "yx", "yx", "yx", "yx", "yx", "yy", "yy", "yy", "yy", "yz", "yz", "yz", "za", "za", "za", "za", "za", "za", "za", "za", "za", "za", "zb", "zb", "zb", "zb", "zb", "zc", "zc", "zc", "zc", "zc", "zc", "zc", "zc", "zc", "zd", "zd", "zd", "zd", "zd", "zd", "zd", "ze", "ze", "ze", "ze", "ze", "ze", "ze", "ze", "ze", "zf", "zf", "zf", "zf", "zg", "zg", "zg", "zg", "zg", "zh", "zh", "zh", "zh", "zh", "zi", "zj", "zj", "zj", "zj", "zj", "zk", "zk", "zk", "zl", "zl", "zl", "zl", "zl", "zm", "zm", "zm", "zm", "zn", "zn", "zo", "zo", "zo", "zo", "zp", "zq", "zq", "zq", "zq", "zq", "zq", "zr", "zr", "zr", "zs", "zs", "zs", "zs", "zt", "zt", "zt", "zt", "zt", "zt", "zt", "zu", "zu", "zu", "zu", "zu", "zv", "zv", "zv", "zv", "zv", "zw", "zw", "zw", "zw", "zw", "zx", "zx", "zx", "zx", "zy", "zy", "zy", "zy", "zy", "zy", "zz", "zz", "zz", "zz", "zz", "zz"] ["aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az", "ba", "bb", "bc", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bk", "bl", "bm", "bn", "bo", "bq", "br", "bs", "bt", "bu", "bv", "bw", "bx", "by", "bz", "ca", "cb", "cc", "cd", "ce", "cf", "cg", "ch", "ci", "cj", "ck", "cl", "cm", "cn", "co", "cp", "cq", "cr", "cs", "ct", "cu", "cw", "cx", "cy", "cz", "da", "dc", "de", "df", "dg", "dh", "di", "dj", "dk", "dl", "dm", "dn", "do", "dp", "dq", "dr", "ds", "dt", "du", "dv", "dw", "dx", "dy", "dz", "ea", "eb", "ec", "ed", "ee", "ef", "eg", "eh", "ei", "ej", "ek", "el", "em", "en", "eo", "ep", "eq", "er", "es", "et", "eu", "ev", "ew", "ex", "ey", "ez", "fa", "fb", "fc", "fd", "fe", "ff", "fg", "fh", "fi", "fj", "fk", "fl", "fm", "fo", "fq", "fr", "fs", "ft", "fu", "fv", "fw", "fx", "fy", "fz", "ga", "gb", "gc", "gd", "ge", "gf", "gg", "gh", "gj", "gk", "gl", "gm", "gn", "go", "gp", "gq", "gr", "gs", "gt", "gu", "gv", "gw", "gx", "gy", "gz", "ha", "hb", "hc", "hd", "he", "hf", "hg", "hh", "hi", "hj", "hk", "hl", "hm", "hn", "ho", "hp", "hq", "hr", "hs", "ht", "hu", "hv", "hw", "hx", "hy", "hz", "ia", "ib", "ic", "id", "ie", "if", "ig", "ih", "ij", "ik", "il", "im", "in", "io", "ip", "iq", "ir", "is", "it", "iu", "iv", "ix", "iy", "iz", "ja", "jb", "jd", "jf", "jg", "jh", "ji", "jj", "jl", "jm", "jn", "jo", "jp", "jq", "jr", "js", "jt", "ju", "jv", "jw", "jx", "jy", "jz", "kb", "kc", "kd", "ke", "kf", "kg", "kh", "ki", "kj", "kk", "kl", "km", "kn", "ko", "kp", "kq", "kr", "ks", "kt", "ku", "kv", "kw", "kx", "ky", "kz", "la", "lb", "lc", "ld", "le", "lf", "lg", "lh", "li", "lj", "lk", "ll", "lm", "ln", "lo", "lq", "lr", "ls", "lt", "lu", "lv", "lw", "lx", "ly", "lz", "ma", "mb", "mc", "md", "me", "mf", "mg", "mh", "mi", "mj", "mk", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "na", "nb", "nc", "nd", "ne", "nf", "ng", "nh", "ni", "nj", "nk", "nm", "nn", "no", "np", "nq", "ns", "nt", "nu", "nv", "nw", "nx", "ny", "nz", "oa", "ob", "oc", "od", "oe", "og", "oi", "oj", "ok", "ol", "om", "on", "oo", "op", "oq", "or", "os", "ot", "ou", "ov", "ow", "ox", "oy", "oz", "pa", "pb", "pc", "pd", "pe", "pf", "pg", "ph", "pi", "pj", "pk", "pl", "pm", "pn", "po", "pp", "pq", "pr", "ps", "pt", "pu", "pv", "pw", "px", "py", "qa", "qb", "qc", "qd", "qe", "qf", "qg", "qh", "qi", "qj", "qk", "ql", "qm", "qn", "qo", "qp", "qq", "qr", "qs", "qt", "qu", "qv", "qw", "qx", "qy", "qz", "ra", "rb", "rc", "rd", "re", "rf", "rg", "rh", "ri", "rj", "rk", "rl", "rm", "rn", "ro", "rp", "rq", "rr", "rs", "rt", "ru", "rv", "rw", "rx", "ry", "rz", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sp", "sq", "sr", "ss", "st", "su", "sv", "sw", "sx", "sy", "sz", "ta", "tb", "tc", "td", "te", "tf", "tg", "th", "ti", "tk", "tl", "tm", "tn", "to", "tp", "tq", "tr", "ts", "tt", "tu", "tv", "tw", "tx", "ty", "tz", "ua", "ub", "uc", "ud", "ue", "uf", "ug", "uh", "ui", "uj", "uk", "ul", "um", "un", "uo", "up", "uq", "ur", "us", "ut", "uu", "uv", "uw", "ux", "uy", "uz", "vb", "vc", "vd", "ve", "vf", "vg", "vh", "vk", "vl", "vm", "vn", "vo", "vp", "vq", "vr", "vs", "vt", "vu", "vv", "vw", "vx", "vy", "vz", "wa", "wb", "wc", "wd", "we", "wf", "wg", "wh", "wi", "wj", "wk", "wl", "wm", "wn", "wo", "wp", "wq", "wr", "ws", "wt", "wu", "wv", "ww", "wx", "wy", "wz", "xa", "xb", "xc", "xd", "xe", "xf", "xg", "xh", "xi", "xj", "xk", "xl", "xm", "xn", "xo", "xp", "xq", "xr", "xs", "xt", "xu", "xv", "xw", "xx", "xy", "xz", "ya", "yb", "yc", "yd", "yg", "yh", "yi", "yj", "yk", "yl", "ym", "yn", "yo", "yp", "yq", "yr", "yt", "yu", "yv", "yw", "yx", "yy", "yz", "za", "zb", "zc", "zd", "ze", "zf", "zg", "zh", "zj", "zk", "zl", "zm", "zn", "zo", "zq", "zr", "zs", "zt", "zu", "zv", "zw", "zx", "zy", "zz"] TODO 45 ["ar", "ax", "bg", "bn", "bt", "dq", "dr", "dr", "dv", "fa", "fa", "fn", "fs", "gi", "go", "hc", "ib", "ib", "ih", "ih", "is", "jc", "je", "jg", "jh", "ji", "kc", "ke", "ko", "kr", "kt", "lh", "li", "lj", "ls", "lx", "mm", "mx", "na", "nu", "oa", "oo", "pd", "pi", "pl", "pt", "qq", "qq", "rn", "rq", "rs", "ry", "sk", "to", "ts", "uo", "uw", "ve", "vz", "wl", "xr", "ya", "yl"] ["dr", "fa", "ib", "ih", "qq"] TODO 6 ["ih", "ip", "jt", "jw", "tv", "xf", "zk"] [] TODO diff --git a/test_data/search_in_bst.tsv b/test_data/search_in_bst.tsv index ce98ae279..8b4a92308 100644 --- a/test_data/search_in_bst.tsv +++ b/test_data/search_in_bst.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int -@ tree key ["43", "23", "47", "null", "37", "null", "53", "29", "41", "null", "null", "null", "31"] 43 43 TODO ["43", "23", "47", "null", "37", "null", "53", "29", "41", "null", "null", "null", "31"] 23 23 TODO ["43", "23", "47", "null", "37", "null", "53", "29", "41", "null", "null", "null", "31"] 47 47 TODO diff --git a/test_data/search_in_list.tsv b/test_data/search_in_list.tsv index 9c56a52f8..c2c1f305c 100644 --- a/test_data/search_in_list.tsv +++ b/test_data/search_in_list.tsv @@ -1,5 +1,4 @@ linked_list(int) int int -@ L key [2, 4, 3] 2 2 TODO [2, 4, 3] 4 4 TODO [2, 4, 3] 3 3 TODO diff --git a/test_data/search_maze.tsv b/test_data/search_maze.tsv index 86810e20e..67e0c3f3d 100644 --- a/test_data/search_maze.tsv +++ b/test_data/search_maze.tsv @@ -1,5 +1,4 @@ array(array(int)) tuple(int[x], int[y]) tuple(int[x], int[y]) bool -@ maze s e [[0, 1, 0, 1, 0], [0, 0, 0, 1, 0], [0, 1, 1, 0, 1], [1, 0, 0, 0, 0], [1, 0, 0, 1, 1], [0, 0, 0, 0, 0], [1, 0, 0, 1, 0], [0, 0, 0, 0, 0], [1, 0, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 1], [0, 0, 0, 1, 0], [0, 0, 0, 1, 0], [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [1, 0, 0, 1, 0], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 1, 1, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 1, 1]] [8, 3] [17, 1] true TODO [[0], [0], [0], [0], [1], [0], [0], [0], [0], [1], [0], [1], [0], [0], [0], [0], [0], [0], [1], [0], [0], [0], [0], [0], [0], [0], [1], [0], [0], [1], [0]] [3, 0] [8, 0] false TODO [[0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [1, 0, 0, 1], [0, 0, 0, 1]] [2, 1] [2, 0] true TODO diff --git a/test_data/search_row_col_sorted_matrix.tsv b/test_data/search_row_col_sorted_matrix.tsv index bcc5a93c6..529aaad1d 100644 --- a/test_data/search_row_col_sorted_matrix.tsv +++ b/test_data/search_row_col_sorted_matrix.tsv @@ -1,5 +1,4 @@ array(array(int)) int bool -@ A x [[1]] 0 false TODO [[1]] 1 true TODO [[1, 5], [2, 6]] 0 false TODO diff --git a/test_data/search_shifted_sorted_array.tsv b/test_data/search_shifted_sorted_array.tsv index 755d9feeb..60ab4b53a 100644 --- a/test_data/search_shifted_sorted_array.tsv +++ b/test_data/search_shifted_sorted_array.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [3, 1, 2] 1 TODO [0, 2, 4, 8] 0 TODO [16, 2, 4, 8] 1 TODO diff --git a/test_data/search_unknown_length_array.tsv b/test_data/search_unknown_length_array.tsv index 6cb70f3a0..3b9d9a3ce 100644 --- a/test_data/search_unknown_length_array.tsv +++ b/test_data/search_unknown_length_array.tsv @@ -1,5 +1,4 @@ array(int) int int -@ A k [1, 2, 3] 3 2 TODO [1, 2, 3] 1 0 TODO [1, 2, 3] 2 1 TODO diff --git a/test_data/smallest_nonconstructible_value.tsv b/test_data/smallest_nonconstructible_value.tsv index 918626a24..c51827bab 100644 --- a/test_data/smallest_nonconstructible_value.tsv +++ b/test_data/smallest_nonconstructible_value.tsv @@ -1,5 +1,4 @@ array(int) int -@ A [1, 2, 3, 4] 11 TODO [1, 2, 2, 4] 10 TODO [2, 3, 4, 5] 1 TODO diff --git a/test_data/smallest_subarray_covering_set.tsv b/test_data/smallest_subarray_covering_set.tsv index ff605f618..2f1f09a4f 100644 --- a/test_data/smallest_subarray_covering_set.tsv +++ b/test_data/smallest_subarray_covering_set.tsv @@ -1,5 +1,4 @@ array(string) set(string) int -@ v s ["a", "b", "c", "b", "a", "d", "c", "a", "e", "a", "a", "b", "e"] ["b", "c", "e"] 6 TODO ["a", "b", "c", "b", "a", "d", "c", "a", "e", "a", "a", "b", "e"] ["a", "c"] 2 TODO ["a", "b"] ["a", "b"] 2 TODO diff --git a/test_data/snake_string.tsv b/test_data/snake_string.tsv index 0e110434d..0e40fe1aa 100644 --- a/test_data/snake_string.tsv +++ b/test_data/snake_string.tsv @@ -1,5 +1,4 @@ string string -@ s Hello World! e lHloWrdlo! TODO fgdgoaxmkpzgidgtckaiggzlpupd gapdkgufdoxkzigcagzppgmgtild TODO opucjkynnipxaxrtrizqghrpstnejzmopiispm pkixihtzimoujynparrzgrsnjmpipcnxtqpeos TODO diff --git a/test_data/sort_almost_sorted_array.tsv b/test_data/sort_almost_sorted_array.tsv index a464be96f..352090b9c 100644 --- a/test_data/sort_almost_sorted_array.tsv +++ b/test_data/sort_almost_sorted_array.tsv @@ -1,5 +1,4 @@ array(int) int array(int) -@ sequence k [1, -11, 2, -2, -19, 4, -9, 1, 10, -12, 6, -19, 9, -5, 0, 5, -4, 13, 19, 19, 11] 17 [-19, -19, -12, -11, -9, -5, -4, -2, 0, 1, 1, 2, 4, 5, 6, 9, 10, 11, 13, 19, 19] TODO [-16, -16, -23, -14, -13, -15, -29, -28, -17, -27, -27, -3, -7, -9, -4, -6, -3, -11, -4, 3, 5, -7, 5, 9, 25, 29, 19, 17, 29, 16] 11 [-29, -28, -27, -27, -23, -17, -16, -16, -15, -14, -13, -11, -9, -7, -7, -6, -4, -4, -3, -3, 3, 5, 5, 9, 16, 17, 19, 25, 29, 29] TODO [-1, -1, -6, -7, -3, -2, -1, -9, 0, 0, 6, 4, 3] 10 [-9, -7, -6, -3, -2, -1, -1, -1, 0, 0, 3, 4, 6] TODO diff --git a/test_data/sort_increasing_decreasing_array.tsv b/test_data/sort_increasing_decreasing_array.tsv index 62ce0d3e7..45ce80148 100644 --- a/test_data/sort_increasing_decreasing_array.tsv +++ b/test_data/sort_increasing_decreasing_array.tsv @@ -1,5 +1,4 @@ array(int) array(int) -@ A [1, 2, 3, 2, 1, 4, 5, 10, 9, 4, 4, 1, -1] [-1, 1, 1, 1, 2, 2, 3, 4, 4, 4, 5, 9, 10] TODO [-2147483648, -1, 0, 1, 2, 4, 8, 2147483647] [-2147483648, -1, 0, 1, 2, 4, 8, 2147483647] TODO [2147483647, 8, 4, 2, 1, 0, -1, -2147483648] [-2147483648, -1, 0, 1, 2, 4, 8, 2147483647] TODO diff --git a/test_data/sort_list.tsv b/test_data/sort_list.tsv index 550bd605e..beed7a36b 100644 --- a/test_data/sort_list.tsv +++ b/test_data/sort_list.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) -@ L [-2147483648, 2147483647] [-2147483648, 2147483647] todo [-1, 0] [-1, 0] TODO [1, 4, -1, 7, -1, 7, 4, -3, 6, 5, -7, 3, -7, -6] [-7, -7, -6, -3, -1, -1, 1, 3, 4, 4, 5, 6, 7, 7] TODO diff --git a/test_data/sorted_array_remove_dups.tsv b/test_data/sorted_array_remove_dups.tsv index b7216dc1c..dcaf718eb 100644 --- a/test_data/sorted_array_remove_dups.tsv +++ b/test_data/sorted_array_remove_dups.tsv @@ -1,5 +1,4 @@ array(int) array(int) -@ A [-8, -7, -6, -5, -5, -4, -3, -1, -1, 0, 0, 2, 2, 2, 4] [-8, -7, -6, -5, -4, -3, -1, 0, 2, 4] TODO [-27, -24, -21, -21, -20, -19, -19, -19, -18, -18, -16, -14, -13, -13, -11, -10, -7, -5, -4, 1, 2, 2, 4, 4, 4, 4, 8, 9, 10, 10, 10, 10, 11, 12, 13, 13, 14, 14, 15, 16, 16, 17, 17, 17, 20, 20, 21, 21, 22, 25, 25, 25, 26, 26] [-27, -24, -21, -20, -19, -18, -16, -14, -13, -11, -10, -7, -5, -4, 1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 25, 26] TODO [-6, -6, -3, -2, -1, -1, -1, 0, 0, 2, 3, 4] [-6, -3, -2, -1, 0, 2, 3, 4] TODO diff --git a/test_data/sorted_arrays_merge.tsv b/test_data/sorted_arrays_merge.tsv index 9ced396f6..8c9f1070f 100644 --- a/test_data/sorted_arrays_merge.tsv +++ b/test_data/sorted_arrays_merge.tsv @@ -1,5 +1,4 @@ array(array(int)) array(int) -@ sorted_arrays [[-1, 0], [-2]] [-2, -1, 0] TODO [[-20, -7, -6, -5, -2, 1, 3, 10, 11, 16], [-21, -19, -18, -13, -13, -12, -3, -2, 1, 3, 3, 6, 21], [-22, -15, -13, -12, -12, -6, -2, 0, 0, 4, 5, 7, 9, 10, 13, 13, 17, 17, 23, 23, 24, 24], [-24, -17, -10, -10, -6, -6, -3, -1, 0, 9, 15, 21, 22, 24], [-17, -17, -12, -11, -9, -8, -4, -4, 2, 5, 9, 17], [-21, -20, -9, 9, 14, 21, 23], [-22, -12, -10, -3, 5, 9, 16, 22, 24], [-21, -19, -17, -13, -12, -11, -9, -9, -4, 0, 0, 1, 1, 5, 7, 8, 8, 11, 15, 16, 19, 24], [-24, -4, -3, 1, 2, 3, 8, 12, 12], [-6, 13, 15, 17, 18], [-24, 4, 7, 10, 15], [-23, -10, -9, 5, 6, 6, 13, 16, 23], [-13, -5, -1, 0, 2, 7, 7, 9, 11, 13, 24], [-23, -20, -18, -10, -8, -5, -3, -2, -1, 2, 2, 4, 6, 8, 12, 13, 17], [-24, -24, -21, -19, -8, -3, 0, 2, 5, 6, 11, 17, 18, 20, 21], [-18, -16, -14, -13, -9, -8, -7, -5, 0, 0, 4, 4, 5, 8, 8, 9, 24], [-17, -12, -6, -2], [-24, -19, -19, -17, -12, -12, -11, -10, -9, -8, -7, -4, -3, 1, 3, 7, 8, 9, 10, 11, 16, 18, 21], [-14, -3, 1, 16, 24], [-23, -21, -19, -18, -17, -17, -14, -13, -8, -6, 0, 2, 5, 12, 12, 22, 23, 23], [-22, -20, -9, -5, -1, 4, 7, 12, 18, 22], [-23, -18, -17, -16, -15, 1, 4, 14, 16, 18, 19, 21, 23, 24], [-24, -22, -21, -21, -20, -15, -13, -9, -6, -4, 0, 0, 1, 5, 5, 6, 6, 8, 12, 13, 14, 17, 19], [-22, -19, 1]] [-24, -24, -24, -24, -24, -24, -24, -23, -23, -23, -23, -22, -22, -22, -22, -22, -21, -21, -21, -21, -21, -21, -21, -20, -20, -20, -20, -20, -19, -19, -19, -19, -19, -19, -19, -18, -18, -18, -18, -18, -17, -17, -17, -17, -17, -17, -17, -17, -17, -16, -16, -15, -15, -15, -14, -14, -14, -13, -13, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -12, -12, -12, -12, -12, -11, -11, -11, -10, -10, -10, -10, -10, -10, -9, -9, -9, -9, -9, -9, -9, -9, -9, -8, -8, -8, -8, -8, -8, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24] TODO [[-2, 0, 4, 5, 6], [1], [-1], [-5, 3, 3, 3, 4], [-3, -1, 4], [-6, 0, 3, 3]] [-6, -5, -3, -2, -1, -1, 0, 0, 1, 3, 3, 3, 3, 3, 4, 4, 4, 5, 6] TODO diff --git a/test_data/sorted_list_to_bst.tsv b/test_data/sorted_list_to_bst.tsv index c40d8a77e..6fd8ddc71 100644 --- a/test_data/sorted_list_to_bst.tsv +++ b/test_data/sorted_list_to_bst.tsv @@ -1,5 +1,4 @@ array(int) void -@ values [-2, 0, 2] TODO [-1, 1] TODO [-82, -81, -79, -77, -71, -67, -59, -56, -55, -54, -53, -52, -51, -48, -46, -45, -40, -38, -37, -36, -35, -34, -33, -32, -30, -27, -18, -16, -12, -11, -10, -8, -5, -2, 0, 1, 2, 4, 5, 8, 10, 14, 16, 17, 18, 20, 21, 22, 27, 28, 30, 31, 32, 33, 34, 37, 38, 39, 41, 43, 44, 46, 47, 48, 50, 53, 56, 60, 61, 62, 63, 64, 66, 70, 71, 72, 74, 75, 76, 78, 80, 81, 82] TODO diff --git a/test_data/sorted_lists_merge.tsv b/test_data/sorted_lists_merge.tsv index fc99a89d8..3a3d74a3f 100644 --- a/test_data/sorted_lists_merge.tsv +++ b/test_data/sorted_lists_merge.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) linked_list(int) -@ L1 L2 [-54, -53, -51, -47, -44, -41, -39, -38, -36, -34, -33, -27, -26, -26, -17, -14, -14, -13, -12, -11, -11, -9, -6, -4, -2, 0, 5, 6, 6, 8, 9, 12, 14, 14, 18, 19, 21, 24, 32, 35, 37, 38, 38, 38, 38, 38, 40, 42, 44, 44, 45, 46, 46, 46, 46, 49, 54, 56, 58, 59, 60, 60] [] [-54, -53, -51, -47, -44, -41, -39, -38, -36, -34, -33, -27, -26, -26, -17, -14, -14, -13, -12, -11, -11, -9, -6, -4, -2, 0, 5, 6, 6, 8, 9, 12, 14, 14, 18, 19, 21, 24, 32, 35, 37, 38, 38, 38, 38, 38, 40, 42, 44, 44, 45, 46, 46, 46, 46, 49, 54, 56, 58, 59, 60, 60] TODO [-14, -13, -9, -6, -5, -2, -1, 1, 4, 7, 8, 10, 12, 13] [-25, -23, -18, -18, -14, -8, -8, -6, -3, -2, -1, 2, 5, 8, 8, 8, 12, 12, 12, 14, 14, 20, 20, 22, 25, 26] [-25, -23, -18, -18, -14, -14, -13, -9, -8, -8, -6, -6, -5, -3, -2, -2, -1, -1, 1, 2, 4, 5, 7, 8, 8, 8, 8, 10, 12, 12, 12, 12, 13, 14, 14, 20, 20, 22, 25, 26] TODO [-2, -2] [-5, -4, -1, 1, 1, 4] [-5, -4, -2, -2, -1, 1, 1, 4] TODO diff --git a/test_data/spiral_ordering_segments.tsv b/test_data/spiral_ordering_segments.tsv index 3d5839d1f..052c92516 100644 --- a/test_data/spiral_ordering_segments.tsv +++ b/test_data/spiral_ordering_segments.tsv @@ -1,5 +1,4 @@ array(array(int)) array(int) -@ square_matrix [] [] TODO [[1]] [1] TODO [[4, 2], [3, 1]] [4, 2, 1, 3] TODO diff --git a/test_data/spreadsheet_encoding.tsv b/test_data/spreadsheet_encoding.tsv index 09ab20365..fd3c216ad 100644 --- a/test_data/spreadsheet_encoding.tsv +++ b/test_data/spreadsheet_encoding.tsv @@ -1,5 +1,4 @@ string int -@ col A 1 TODO B 2 TODO Z 26 TODO diff --git a/test_data/stack_with_max.tsv b/test_data/stack_with_max.tsv index 801ca43c1..c93a89d46 100644 --- a/test_data/stack_with_max.tsv +++ b/test_data/stack_with_max.tsv @@ -1,5 +1,4 @@ array(tuple(string[op], int[arg])) void -@ ops [["Stack", 0]] TODO [["Stack", 0], ["push", -784], ["pop", -784], ["push", 452], ["max", 452], ["pop", 452], ["push", 761], ["push", 402], ["max", 761], ["pop", 402], ["max", 761], ["pop", 761]] TODO [["Stack", 0], ["empty", 1], ["push", -238], ["pop", -238], ["push", 573], ["pop", 573], ["push", 190], ["empty", 0], ["push", -411], ["max", 190], ["max", 190], ["pop", -411], ["max", 190], ["pop", 190]] TODO diff --git a/test_data/string_decompositions_into_dictionary_words.tsv b/test_data/string_decompositions_into_dictionary_words.tsv index 25f860d71..26b9be41b 100644 --- a/test_data/string_decompositions_into_dictionary_words.tsv +++ b/test_data/string_decompositions_into_dictionary_words.tsv @@ -1,5 +1,4 @@ string array(string) array(int) -@ s words barfoothefoobarman ["foo", "bar"] [0, 9] TODO dcacdabcd ["cd", "ab"] [3, 5] TODO iuwvllmkxvlliuwgue ["vll", "iuw"] [0, 9] TODO diff --git a/test_data/string_integer_interconversion.tsv b/test_data/string_integer_interconversion.tsv index 3651ac867..ef16cae62 100644 --- a/test_data/string_integer_interconversion.tsv +++ b/test_data/string_integer_interconversion.tsv @@ -1,5 +1,4 @@ int string void -@ num s 0 0 TODO -1 -1 TODO 1 1 TODO diff --git a/test_data/string_transformability.tsv b/test_data/string_transformability.tsv index 67a99be0f..5096bdac8 100644 --- a/test_data/string_transformability.tsv +++ b/test_data/string_transformability.tsv @@ -1,5 +1,4 @@ set(string)[dictionary] string[source] string[target] int[distance] -@ D s t ["abc", "abd"] abc abd 1 TODO ["bat", "cot", "dog", "dag", "dot", "cat"] cat dog 3 TODO ["bat", "dog", "dag", "dot", "cat"] cat dog -1 TODO diff --git a/test_data/subsequence_cover.tsv b/test_data/subsequence_cover.tsv index 348940420..a12e09180 100644 --- a/test_data/subsequence_cover.tsv +++ b/test_data/subsequence_cover.tsv @@ -1,5 +1,4 @@ array(string)[paragraphs] array(string)[keywords] int[minimal length] -@ paragraph keywords ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "2", "4", "6", "1", "0", "1", "0", "1", "0", "3", "2", "1", "0"] ["0", "2", "9", "4", "6"] 13 TODO ["W", "T", "G", "V", "F", "D", "r", "l", "j", "N", "I"] ["T", "D"] 5 TODO ["p", "K", "H", "M", "D", "O", "s", "D", "h", "E", "S", "v", "S", "K", "Z", "V", "w", "e", "H", "A", "I", "X", "e", "t", "T", "E", "i", "i", "D", "s", "o", "N", "S", "H", "r", "H", "O", "Q", "s", "a", "N", "N", "z", "l", "X", "I", "A", "t", "I", "C", "Z", "s", "C", "q", "W"] ["e", "r", "N", "l", "Z"] 29 TODO diff --git a/test_data/substring_match.tsv b/test_data/substring_match.tsv index 4df46f9c7..d9602036e 100644 --- a/test_data/substring_match.tsv +++ b/test_data/substring_match.tsv @@ -1,5 +1,4 @@ string string int -@ t s GACGCCA CGC 2 TODO GATACCCATCGAGTCGGATCGAGT GAG 10 TODO FOOBARWIDGET WIDGETS -1 TODO diff --git a/test_data/successor_in_tree.tsv b/test_data/successor_in_tree.tsv index e243cd1a3..f1573c86c 100644 --- a/test_data/successor_in_tree.tsv +++ b/test_data/successor_in_tree.tsv @@ -1,5 +1,4 @@ binary_tree(int) int int -@ tree node_idx ["1"] 1 -1 TODO ["1", "2"] 2 1 TODO ["1", "2", "3"] 2 1 TODO diff --git a/test_data/sudoku_solve.tsv b/test_data/sudoku_solve.tsv index a648dd7a3..eb2b1cf1a 100644 --- a/test_data/sudoku_solve.tsv +++ b/test_data/sudoku_solve.tsv @@ -1,5 +1,4 @@ array(array(int)) void -@ board [[0, 3, 2, 0, 0, 0, 8, 0, 4], [8, 0, 0, 2, 0, 0, 0, 7, 0], [0, 1, 7, 0, 0, 5, 9, 0, 6], [5, 8, 0, 0, 2, 0, 0, 3, 0], [0, 0, 6, 0, 4, 0, 7, 0, 0], [0, 0, 4, 9, 1, 3, 0, 6, 0], [0, 0, 0, 7, 3, 0, 2, 0, 0], [0, 5, 9, 0, 0, 0, 0, 0, 1], [1, 0, 0, 8, 0, 9, 0, 0, 0]] TODO [[0, 5, 7, 0, 2, 3, 0, 1, 6], [0, 0, 0, 7, 0, 9, 5, 0, 0], [0, 0, 2, 0, 0, 0, 0, 8, 0], [0, 0, 0, 0, 0, 0, 0, 3, 0], [3, 0, 0, 8, 0, 6, 4, 0, 9], [2, 0, 9, 0, 0, 0, 0, 0, 7], [0, 2, 0, 9, 0, 1, 0, 0, 5], [9, 0, 0, 3, 6, 0, 8, 0, 1], [0, 0, 6, 0, 7, 0, 0, 0, 4]] TODO [[8, 0, 0, 3, 2, 0, 0, 7, 0], [0, 5, 7, 8, 0, 0, 9, 0, 0], [0, 9, 0, 0, 0, 1, 0, 4, 0], [0, 7, 8, 0, 1, 0, 6, 0, 3], [2, 0, 0, 0, 7, 0, 1, 0, 0], [9, 0, 4, 5, 0, 3, 0, 0, 0], [0, 0, 5, 6, 0, 0, 0, 0, 9], [0, 6, 0, 0, 8, 0, 7, 0, 1], [0, 0, 3, 0, 0, 4, 8, 0, 0]] TODO diff --git a/test_data/sum_root_to_leaf.tsv b/test_data/sum_root_to_leaf.tsv index f2f8a41de..2cf485299 100644 --- a/test_data/sum_root_to_leaf.tsv +++ b/test_data/sum_root_to_leaf.tsv @@ -1,5 +1,4 @@ binary_tree(int) int -@ tree ["1", "0", "0", "1", "1", "0", "0", "1", "0", "0", "0", "1", "1", "0", "1", "0", "1", "1", "1", "1", "0", "1", "0", "1", "1", "0", "0", "1", "1", "1", "0"] 314 TODO ["1", "0", "0", "null", "0", "0", "null", "null", "1"] 13 TODO ["1", "0", "1", "0", "null", "1", "0", "null", "0", "1", "1", "null", "0", "null", "1", "0", "1", "0", "0"] 150 TODO diff --git a/test_data/sunset_view.tsv b/test_data/sunset_view.tsv index a6062c7f9..260e15ef1 100644 --- a/test_data/sunset_view.tsv +++ b/test_data/sunset_view.tsv @@ -1,5 +1,4 @@ array(int) array(int) -@ sequence [6, 3, 4] [2, 0] TODO [6, 9, 3, 9, 5, 16, 9, 13] [7, 5] TODO [404, 208, 5, 5, 359, 330, 118, 394, 102, 260, 21, 396, 74, 350, 384, 18, 201, 224, 271, 260, 222, 26, 352, 193, 233, 419, 271, 414, 415, 157, 92, 255, 221, 17, 228, 133, 165, 396, 322, 195, 95, 305, 415, 71, 190, 48, 235, 248, 371, 116, 108, 293, 412, 109, 243, 50, 61, 66, 160, 379, 79, 385, 257, 407, 359, 310, 422, 394, 21, 429, 183, 366, 198, 125, 435, 176, 438, 337, 91, 1, 269, 250, 343, 373, 407, 331, 198, 99, 335, 239, 235, 148, 186, 382, 191, 289, 266, 61, 19, 280, 91, 225, 230, 22, 105, 213, 50, 46, 252, 415, 364, 90, 321, 153, 291, 172, 347, 412, 247, 363, 42, 444, 190, 430, 374, 434, 361, 340, 107, 122, 207, 114, 133, 49, 407, 410, 294, 313, 409, 67, 61, 27, 75, 50, 189, 2, 103, 420, 55, 431, 83, 438, 223, 277, 381, 366, 372, 389, 179, 334, 100, 402, 428, 18, 221, 253, 140, 271, 391, 430, 377, 386, 154, 196, 421, 183, 368, 148, 321, 181, 340, 207, 361, 206, 155, 14, 239, 81, 153, 111, 223, 157, 442, 91, 393, 57, 407, 151, 294, 271, 376, 322, 425, 233, 51, 99, 242, 76, 198, 54, 104, 1, 112, 1, 36, 312, 390, 67, 241, 269, 358, 111] [221, 220, 216, 202, 192, 121] TODO diff --git a/test_data/swap_bits.tsv b/test_data/swap_bits.tsv index 892f5d5a8..2ab379e10 100644 --- a/test_data/swap_bits.tsv +++ b/test_data/swap_bits.tsv @@ -1,5 +1,4 @@ long int int long -@ x i j 73 1 6 11 Example in the book 19574056046756 15 14 19574056063140 TODO 106 3 7 226 TODO diff --git a/test_data/task_pairing.tsv b/test_data/task_pairing.tsv index 37e0dceae..f9b6f687d 100644 --- a/test_data/task_pairing.tsv +++ b/test_data/task_pairing.tsv @@ -1,5 +1,4 @@ array(int) array(tuple(int, int)) -@ task_durations [87, 59, 99, 11, 40, 113, 25, 10, 77, 58, 61, 62, 54, 43, 2, 116, 79, 111, 110, 30, 55, 37, 0, 97, 129, 16, 124, 5, 44, 56, 118, 96, 101, 76, 110, 50, 102, 46, 96, 129, 29, 25, 75, 52, 43, 13, 65, 107, 108, 93, 23, 68, 72, 44, 65, 27, 14, 76, 26, 2, 17, 113, 105, 23, 72, 19, 39, 71, 93, 8, 41, 87, 101, 101, 76, 118, 11, 40, 106, 69, 92, 96, 108, 98, 21, 28, 52, 73, 15, 69, 117, 57, 120, 114, 106, 55, 65, 58, 4, 114, 112, 51, 94, 38, 60, 23, 14, 14, 129, 39, 92, 113, 5, 112, 28, 48, 108, 124, 32, 14, 50, 45, 96, 1, 101, 128, 7, 48, 87, 71, 46, 17, 90, 84, 4, 52] [[0, 129], [1, 129], [2, 129], [2, 128], [4, 124], [4, 124], [5, 120], [5, 118], [7, 118], [8, 117], [10, 116], [11, 114], [11, 114], [13, 113], [14, 113], [14, 113], [14, 112], [14, 112], [15, 111], [16, 110], [17, 110], [17, 108], [19, 108], [21, 108], [23, 107], [23, 106], [23, 106], [25, 105], [25, 102], [26, 101], [27, 101], [28, 101], [28, 101], [29, 99], [30, 98], [32, 97], [37, 96], [38, 96], [39, 96], [39, 96], [40, 94], [40, 93], [41, 93], [43, 92], [43, 92], [44, 90], [44, 87], [45, 87], [46, 87], [46, 84], [48, 79], [48, 77], [50, 76], [50, 76], [51, 76], [52, 75], [52, 73], [52, 72], [54, 72], [55, 71], [55, 71], [56, 69], [57, 69], [58, 68], [58, 65], [59, 65], [60, 65], [61, 62]] TODO [195, 32, 80, 121, 69, 85, 182, 130, 36, 133, 79, 116, 93, 197, 90, 52, 131, 68, 4, 141, 6, 62, 115, 92, 120, 193, 155, 55, 7, 75, 144, 55, 184, 175, 80, 133, 159, 17, 103, 35, 189, 66, 48, 108, 20, 193, 15, 45, 102, 148, 139, 3, 182, 181, 16, 20, 92, 204, 162, 87, 18, 82, 47, 26, 105, 33, 125, 184, 7, 196, 100, 152, 114, 173, 60, 79, 18, 9, 97, 3, 119, 181, 18, 182, 64, 147, 140, 63, 52, 15, 163, 114, 196, 13, 32, 115, 140, 53, 108, 120, 106, 111, 194, 43, 119, 18, 203, 74, 185, 109, 185, 6, 15, 165, 20, 113, 38, 65, 130, 196, 7, 30, 112, 178, 144, 84, 141, 149, 27, 63, 137, 50, 180, 203, 42, 94, 163, 131, 26, 87, 126, 62, 49, 139, 76, 96, 1, 2, 148, 40, 80, 27, 108, 4, 104, 56, 162, 120, 27, 187, 20, 76, 13, 27, 23, 57, 96, 154, 0, 144, 17, 11, 131, 45, 107, 55, 146, 2, 94, 108, 70, 186, 77, 57, 130, 176, 173, 197, 8, 133, 4, 171, 197, 55, 18, 8, 149, 81, 95, 156, 200, 64, 8, 47] [[0, 204], [1, 203], [2, 203], [2, 200], [3, 197], [3, 197], [4, 197], [4, 196], [4, 196], [6, 196], [6, 195], [7, 194], [7, 193], [7, 193], [8, 189], [8, 187], [8, 186], [9, 185], [11, 185], [13, 184], [13, 184], [15, 182], [15, 182], [15, 182], [16, 181], [17, 181], [17, 180], [18, 178], [18, 176], [18, 175], [18, 173], [18, 173], [20, 171], [20, 165], [20, 163], [20, 163], [23, 162], [26, 162], [26, 159], [27, 156], [27, 155], [27, 154], [27, 152], [30, 149], [32, 149], [32, 148], [33, 148], [35, 147], [36, 146], [38, 144], [40, 144], [42, 144], [43, 141], [45, 141], [45, 140], [47, 140], [47, 139], [48, 139], [49, 137], [50, 133], [52, 133], [52, 133], [53, 131], [55, 131], [55, 131], [55, 130], [55, 130], [56, 130], [57, 126], [57, 125], [60, 121], [62, 120], [62, 120], [63, 120], [63, 119], [64, 119], [64, 116], [65, 115], [66, 115], [68, 114], [69, 114], [70, 113], [74, 112], [75, 111], [76, 109], [76, 108], [77, 108], [79, 108], [79, 108], [80, 107], [80, 106], [80, 105], [81, 104], [82, 103], [84, 102], [85, 100], [87, 97], [87, 96], [90, 96], [92, 95], [92, 94], [93, 94]] TODO [0, 13, 1, 5, 5, 4, 10, 2, 2, 11, 4, 6, 4, 11] [[0, 13], [1, 11], [2, 11], [2, 10], [4, 6], [4, 5], [4, 5]] TODO diff --git a/test_data/three_sum.tsv b/test_data/three_sum.tsv index 568187e31..72d7ac71b 100644 --- a/test_data/three_sum.tsv +++ b/test_data/three_sum.tsv @@ -1,5 +1,4 @@ array(int) int bool -@ A t [2, 3, 5, 7, 11] 21 true Example in the book. 11 + 7 + 3 = 21 [2, 3, 5, 7, 11] 22 false Example in the book. 22 is impossible, since 11 + 7 + 5 is too big and 11 + 7 + 3 is too small [1, 2, 3] 6 true 1 + 2 + 3 = 6 diff --git a/test_data/tree_connect_leaves.tsv b/test_data/tree_connect_leaves.tsv index 5b371c73d..161afe495 100644 --- a/test_data/tree_connect_leaves.tsv +++ b/test_data/tree_connect_leaves.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["-1", "-1", "2", "null", "-3", "5", "null", "null", "0"] [0, 5] TODO ["-1", "-1", "2", "null", "5", "9", "null", "null", "0"] [0, 9] TODO ["-1", "-1", "2", "null", "9", "10", "null", "5"] [5, 10] TODO diff --git a/test_data/tree_exterior.tsv b/test_data/tree_exterior.tsv index 6dc610667..c8ce0a591 100644 --- a/test_data/tree_exterior.tsv +++ b/test_data/tree_exterior.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["-1", "-1", "0"] [-1, -1, 0] TODO ["-1", "-1", "4", "null", "8", "6", "2"] [-1, -1, 8, 6, 2, 4] TODO ["-1", "-1", "5", "null", "-2", "null", "5", "null", "11"] [-1, -1, -2, 11, 5, 5] TODO diff --git a/test_data/tree_from_preorder_inorder.tsv b/test_data/tree_from_preorder_inorder.tsv index eec1b2c76..286eb7e83 100644 --- a/test_data/tree_from_preorder_inorder.tsv +++ b/test_data/tree_from_preorder_inorder.tsv @@ -1,5 +1,4 @@ array(int) array(int) binary_tree(int) -@ preorder inorder [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000] [3000, 2999, 2998, 2997, 2996, 2995, 2994, 2993, 2992, 2991, 2990, 2989, 2988, 2987, 2986, 2985, 2984, 2983, 2982, 2981, 2980, 2979, 2978, 2977, 2976, 2975, 2974, 2973, 2972, 2971, 2970, 2969, 2968, 2967, 2966, 2965, 2964, 2963, 2962, 2961, 2960, 2959, 2958, 2957, 2956, 2955, 2954, 2953, 2952, 2951, 2950, 2949, 2948, 2947, 2946, 2945, 2944, 2943, 2942, 2941, 2940, 2939, 2938, 2937, 2936, 2935, 2934, 2933, 2932, 2931, 2930, 2929, 2928, 2927, 2926, 2925, 2924, 2923, 2922, 2921, 2920, 2919, 2918, 2917, 2916, 2915, 2914, 2913, 2912, 2911, 2910, 2909, 2908, 2907, 2906, 2905, 2904, 2903, 2902, 2901, 2900, 2899, 2898, 2897, 2896, 2895, 2894, 2893, 2892, 2891, 2890, 2889, 2888, 2887, 2886, 2885, 2884, 2883, 2882, 2881, 2880, 2879, 2878, 2877, 2876, 2875, 2874, 2873, 2872, 2871, 2870, 2869, 2868, 2867, 2866, 2865, 2864, 2863, 2862, 2861, 2860, 2859, 2858, 2857, 2856, 2855, 2854, 2853, 2852, 2851, 2850, 2849, 2848, 2847, 2846, 2845, 2844, 2843, 2842, 2841, 2840, 2839, 2838, 2837, 2836, 2835, 2834, 2833, 2832, 2831, 2830, 2829, 2828, 2827, 2826, 2825, 2824, 2823, 2822, 2821, 2820, 2819, 2818, 2817, 2816, 2815, 2814, 2813, 2812, 2811, 2810, 2809, 2808, 2807, 2806, 2805, 2804, 2803, 2802, 2801, 2800, 2799, 2798, 2797, 2796, 2795, 2794, 2793, 2792, 2791, 2790, 2789, 2788, 2787, 2786, 2785, 2784, 2783, 2782, 2781, 2780, 2779, 2778, 2777, 2776, 2775, 2774, 2773, 2772, 2771, 2770, 2769, 2768, 2767, 2766, 2765, 2764, 2763, 2762, 2761, 2760, 2759, 2758, 2757, 2756, 2755, 2754, 2753, 2752, 2751, 2750, 2749, 2748, 2747, 2746, 2745, 2744, 2743, 2742, 2741, 2740, 2739, 2738, 2737, 2736, 2735, 2734, 2733, 2732, 2731, 2730, 2729, 2728, 2727, 2726, 2725, 2724, 2723, 2722, 2721, 2720, 2719, 2718, 2717, 2716, 2715, 2714, 2713, 2712, 2711, 2710, 2709, 2708, 2707, 2706, 2705, 2704, 2703, 2702, 2701, 2700, 2699, 2698, 2697, 2696, 2695, 2694, 2693, 2692, 2691, 2690, 2689, 2688, 2687, 2686, 2685, 2684, 2683, 2682, 2681, 2680, 2679, 2678, 2677, 2676, 2675, 2674, 2673, 2672, 2671, 2670, 2669, 2668, 2667, 2666, 2665, 2664, 2663, 2662, 2661, 2660, 2659, 2658, 2657, 2656, 2655, 2654, 2653, 2652, 2651, 2650, 2649, 2648, 2647, 2646, 2645, 2644, 2643, 2642, 2641, 2640, 2639, 2638, 2637, 2636, 2635, 2634, 2633, 2632, 2631, 2630, 2629, 2628, 2627, 2626, 2625, 2624, 2623, 2622, 2621, 2620, 2619, 2618, 2617, 2616, 2615, 2614, 2613, 2612, 2611, 2610, 2609, 2608, 2607, 2606, 2605, 2604, 2603, 2602, 2601, 2600, 2599, 2598, 2597, 2596, 2595, 2594, 2593, 2592, 2591, 2590, 2589, 2588, 2587, 2586, 2585, 2584, 2583, 2582, 2581, 2580, 2579, 2578, 2577, 2576, 2575, 2574, 2573, 2572, 2571, 2570, 2569, 2568, 2567, 2566, 2565, 2564, 2563, 2562, 2561, 2560, 2559, 2558, 2557, 2556, 2555, 2554, 2553, 2552, 2551, 2550, 2549, 2548, 2547, 2546, 2545, 2544, 2543, 2542, 2541, 2540, 2539, 2538, 2537, 2536, 2535, 2534, 2533, 2532, 2531, 2530, 2529, 2528, 2527, 2526, 2525, 2524, 2523, 2522, 2521, 2520, 2519, 2518, 2517, 2516, 2515, 2514, 2513, 2512, 2511, 2510, 2509, 2508, 2507, 2506, 2505, 2504, 2503, 2502, 2501, 2500, 2499, 2498, 2497, 2496, 2495, 2494, 2493, 2492, 2491, 2490, 2489, 2488, 2487, 2486, 2485, 2484, 2483, 2482, 2481, 2480, 2479, 2478, 2477, 2476, 2475, 2474, 2473, 2472, 2471, 2470, 2469, 2468, 2467, 2466, 2465, 2464, 2463, 2462, 2461, 2460, 2459, 2458, 2457, 2456, 2455, 2454, 2453, 2452, 2451, 2450, 2449, 2448, 2447, 2446, 2445, 2444, 2443, 2442, 2441, 2440, 2439, 2438, 2437, 2436, 2435, 2434, 2433, 2432, 2431, 2430, 2429, 2428, 2427, 2426, 2425, 2424, 2423, 2422, 2421, 2420, 2419, 2418, 2417, 2416, 2415, 2414, 2413, 2412, 2411, 2410, 2409, 2408, 2407, 2406, 2405, 2404, 2403, 2402, 2401, 2400, 2399, 2398, 2397, 2396, 2395, 2394, 2393, 2392, 2391, 2390, 2389, 2388, 2387, 2386, 2385, 2384, 2383, 2382, 2381, 2380, 2379, 2378, 2377, 2376, 2375, 2374, 2373, 2372, 2371, 2370, 2369, 2368, 2367, 2366, 2365, 2364, 2363, 2362, 2361, 2360, 2359, 2358, 2357, 2356, 2355, 2354, 2353, 2352, 2351, 2350, 2349, 2348, 2347, 2346, 2345, 2344, 2343, 2342, 2341, 2340, 2339, 2338, 2337, 2336, 2335, 2334, 2333, 2332, 2331, 2330, 2329, 2328, 2327, 2326, 2325, 2324, 2323, 2322, 2321, 2320, 2319, 2318, 2317, 2316, 2315, 2314, 2313, 2312, 2311, 2310, 2309, 2308, 2307, 2306, 2305, 2304, 2303, 2302, 2301, 2300, 2299, 2298, 2297, 2296, 2295, 2294, 2293, 2292, 2291, 2290, 2289, 2288, 2287, 2286, 2285, 2284, 2283, 2282, 2281, 2280, 2279, 2278, 2277, 2276, 2275, 2274, 2273, 2272, 2271, 2270, 2269, 2268, 2267, 2266, 2265, 2264, 2263, 2262, 2261, 2260, 2259, 2258, 2257, 2256, 2255, 2254, 2253, 2252, 2251, 2250, 2249, 2248, 2247, 2246, 2245, 2244, 2243, 2242, 2241, 2240, 2239, 2238, 2237, 2236, 2235, 2234, 2233, 2232, 2231, 2230, 2229, 2228, 2227, 2226, 2225, 2224, 2223, 2222, 2221, 2220, 2219, 2218, 2217, 2216, 2215, 2214, 2213, 2212, 2211, 2210, 2209, 2208, 2207, 2206, 2205, 2204, 2203, 2202, 2201, 2200, 2199, 2198, 2197, 2196, 2195, 2194, 2193, 2192, 2191, 2190, 2189, 2188, 2187, 2186, 2185, 2184, 2183, 2182, 2181, 2180, 2179, 2178, 2177, 2176, 2175, 2174, 2173, 2172, 2171, 2170, 2169, 2168, 2167, 2166, 2165, 2164, 2163, 2162, 2161, 2160, 2159, 2158, 2157, 2156, 2155, 2154, 2153, 2152, 2151, 2150, 2149, 2148, 2147, 2146, 2145, 2144, 2143, 2142, 2141, 2140, 2139, 2138, 2137, 2136, 2135, 2134, 2133, 2132, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, 2123, 2122, 2121, 2120, 2119, 2118, 2117, 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2106, 2105, 2104, 2103, 2102, 2101, 2100, 2099, 2098, 2097, 2096, 2095, 2094, 2093, 2092, 2091, 2090, 2089, 2088, 2087, 2086, 2085, 2084, 2083, 2082, 2081, 2080, 2079, 2078, 2077, 2076, 2075, 2074, 2073, 2072, 2071, 2070, 2069, 2068, 2067, 2066, 2065, 2064, 2063, 2062, 2061, 2060, 2059, 2058, 2057, 2056, 2055, 2054, 2053, 2052, 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044, 2043, 2042, 2041, 2040, 2039, 2038, 2037, 2036, 2035, 2034, 2033, 2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953, 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945, 1944, 1943, 1942, 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929, 1928, 1927, 1926, 1925, 1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912, 1911, 1910, 1909, 1908, 1907, 1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896, 1895, 1894, 1893, 1892, 1891, 1890, 1889, 1888, 1887, 1886, 1885, 1884, 1883, 1882, 1881, 1880, 1879, 1878, 1877, 1876, 1875, 1874, 1873, 1872, 1871, 1870, 1869, 1868, 1867, 1866, 1865, 1864, 1863, 1862, 1861, 1860, 1859, 1858, 1857, 1856, 1855, 1854, 1853, 1852, 1851, 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 1837, 1836, 1835, 1834, 1833, 1832, 1831, 1830, 1829, 1828, 1827, 1826, 1825, 1824, 1823, 1822, 1821, 1820, 1819, 1818, 1817, 1816, 1815, 1814, 1813, 1812, 1811, 1810, 1809, 1808, 1807, 1806, 1805, 1804, 1803, 1802, 1801, 1800, 1799, 1798, 1797, 1796, 1795, 1794, 1793, 1792, 1791, 1790, 1789, 1788, 1787, 1786, 1785, 1784, 1783, 1782, 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771, 1770, 1769, 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758, 1757, 1756, 1755, 1754, 1753, 1752, 1751, 1750, 1749, 1748, 1747, 1746, 1745, 1744, 1743, 1742, 1741, 1740, 1739, 1738, 1737, 1736, 1735, 1734, 1733, 1732, 1731, 1730, 1729, 1728, 1727, 1726, 1725, 1724, 1723, 1722, 1721, 1720, 1719, 1718, 1717, 1716, 1715, 1714, 1713, 1712, 1711, 1710, 1709, 1708, 1707, 1706, 1705, 1704, 1703, 1702, 1701, 1700, 1699, 1698, 1697, 1696, 1695, 1694, 1693, 1692, 1691, 1690, 1689, 1688, 1687, 1686, 1685, 1684, 1683, 1682, 1681, 1680, 1679, 1678, 1677, 1676, 1675, 1674, 1673, 1672, 1671, 1670, 1669, 1668, 1667, 1666, 1665, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648, 1647, 1646, 1645, 1644, 1643, 1642, 1641, 1640, 1639, 1638, 1637, 1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 1617, 1616, 1615, 1614, 1613, 1612, 1611, 1610, 1609, 1608, 1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1599, 1598, 1597, 1596, 1595, 1594, 1593, 1592, 1591, 1590, 1589, 1588, 1587, 1586, 1585, 1584, 1583, 1582, 1581, 1580, 1579, 1578, 1577, 1576, 1575, 1574, 1573, 1572, 1571, 1570, 1569, 1568, 1567, 1566, 1565, 1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556, 1555, 1554, 1553, 1552, 1551, 1550, 1549, 1548, 1547, 1546, 1545, 1544, 1543, 1542, 1541, 1540, 1539, 1538, 1537, 1536, 1535, 1534, 1533, 1532, 1531, 1530, 1529, 1528, 1527, 1526, 1525, 1524, 1523, 1522, 1521, 1520, 1519, 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511, 1510, 1509, 1508, 1507, 1506, 1505, 1504, 1503, 1502, 1501, 1500, 1499, 1498, 1497, 1496, 1495, 1494, 1493, 1492, 1491, 1490, 1489, 1488, 1487, 1486, 1485, 1484, 1483, 1482, 1481, 1480, 1479, 1478, 1477, 1476, 1475, 1474, 1473, 1472, 1471, 1470, 1469, 1468, 1467, 1466, 1465, 1464, 1463, 1462, 1461, 1460, 1459, 1458, 1457, 1456, 1455, 1454, 1453, 1452, 1451, 1450, 1449, 1448, 1447, 1446, 1445, 1444, 1443, 1442, 1441, 1440, 1439, 1438, 1437, 1436, 1435, 1434, 1433, 1432, 1431, 1430, 1429, 1428, 1427, 1426, 1425, 1424, 1423, 1422, 1421, 1420, 1419, 1418, 1417, 1416, 1415, 1414, 1413, 1412, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 1403, 1402, 1401, 1400, 1399, 1398, 1397, 1396, 1395, 1394, 1393, 1392, 1391, 1390, 1389, 1388, 1387, 1386, 1385, 1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 1373, 1372, 1371, 1370, 1369, 1368, 1367, 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 1358, 1357, 1356, 1355, 1354, 1353, 1352, 1351, 1350, 1349, 1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339, 1338, 1337, 1336, 1335, 1334, 1333, 1332, 1331, 1330, 1329, 1328, 1327, 1326, 1325, 1324, 1323, 1322, 1321, 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313, 1312, 1311, 1310, 1309, 1308, 1307, 1306, 1305, 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296, 1295, 1294, 1293, 1292, 1291, 1290, 1289, 1288, 1287, 1286, 1285, 1284, 1283, 1282, 1281, 1280, 1279, 1278, 1277, 1276, 1275, 1274, 1273, 1272, 1271, 1270, 1269, 1268, 1267, 1266, 1265, 1264, 1263, 1262, 1261, 1260, 1259, 1258, 1257, 1256, 1255, 1254, 1253, 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245, 1244, 1243, 1242, 1241, 1240, 1239, 1238, 1237, 1236, 1235, 1234, 1233, 1232, 1231, 1230, 1229, 1228, 1227, 1226, 1225, 1224, 1223, 1222, 1221, 1220, 1219, 1218, 1217, 1216, 1215, 1214, 1213, 1212, 1211, 1210, 1209, 1208, 1207, 1206, 1205, 1204, 1203, 1202, 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 1192, 1191, 1190, 1189, 1188, 1187, 1186, 1185, 1184, 1183, 1182, 1181, 1180, 1179, 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 1169, 1168, 1167, 1166, 1165, 1164, 1163, 1162, 1161, 1160, 1159, 1158, 1157, 1156, 1155, 1154, 1153, 1152, 1151, 1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141, 1140, 1139, 1138, 1137, 1136, 1135, 1134, 1133, 1132, 1131, 1130, 1129, 1128, 1127, 1126, 1125, 1124, 1123, 1122, 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1106, 1105, 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096, 1095, 1094, 1093, 1092, 1091, 1090, 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082, 1081, 1080, 1079, 1078, 1077, 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 1044, 1043, 1042, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 1033, 1032, 1031, 1030, 1029, 1028, 1027, 1026, 1025, 1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 877, 876, 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] ["1", "2", "null", "3", "null", "4", "null", "5", "null", "6", "null", "7", "null", "8", "null", "9", "null", "10", "null", "11", "null", "12", "null", "13", "null", "14", "null", "15", "null", "16", "null", "17", "null", "18", "null", "19", "null", "20", "null", "21", "null", "22", "null", "23", "null", "24", "null", "25", "null", "26", "null", "27", "null", "28", "null", "29", "null", "30", "null", "31", "null", "32", "null", "33", "null", "34", "null", "35", "null", "36", "null", "37", "null", "38", "null", "39", "null", "40", "null", "41", "null", "42", "null", "43", "null", "44", "null", "45", "null", "46", "null", "47", "null", "48", "null", "49", "null", "50", "null", "51", "null", "52", "null", "53", "null", "54", "null", "55", "null", "56", "null", "57", "null", "58", "null", "59", "null", "60", "null", "61", "null", "62", "null", "63", "null", "64", "null", "65", "null", "66", "null", "67", "null", "68", "null", "69", "null", "70", "null", "71", "null", "72", "null", "73", "null", "74", "null", "75", "null", "76", "null", "77", "null", "78", "null", "79", "null", "80", "null", "81", "null", "82", "null", "83", "null", "84", "null", "85", "null", "86", "null", "87", "null", "88", "null", "89", "null", "90", "null", "91", "null", "92", "null", "93", "null", "94", "null", "95", "null", "96", "null", "97", "null", "98", "null", "99", "null", "100", "null", "101", "null", "102", "null", "103", "null", "104", "null", "105", "null", "106", "null", "107", "null", "108", "null", "109", "null", "110", "null", "111", "null", "112", "null", "113", "null", "114", "null", "115", "null", "116", "null", "117", "null", "118", "null", "119", "null", "120", "null", "121", "null", "122", "null", "123", "null", "124", "null", "125", "null", "126", "null", "127", "null", "128", "null", "129", "null", "130", "null", "131", "null", "132", "null", "133", "null", "134", "null", "135", "null", "136", "null", "137", "null", "138", "null", "139", "null", "140", "null", "141", "null", "142", "null", "143", "null", "144", "null", "145", "null", "146", "null", "147", "null", "148", "null", "149", "null", "150", "null", "151", "null", "152", "null", "153", "null", "154", "null", "155", "null", "156", "null", "157", "null", "158", "null", "159", "null", "160", "null", "161", "null", "162", "null", "163", "null", "164", "null", "165", "null", "166", "null", "167", "null", "168", "null", "169", "null", "170", "null", "171", "null", "172", "null", "173", "null", "174", "null", "175", "null", "176", "null", "177", "null", "178", "null", "179", "null", "180", "null", "181", "null", "182", "null", "183", "null", "184", "null", "185", "null", "186", "null", "187", "null", "188", "null", "189", "null", "190", "null", "191", "null", "192", "null", "193", "null", "194", "null", "195", "null", "196", "null", "197", "null", "198", "null", "199", "null", "200", "null", "201", "null", "202", "null", "203", "null", "204", "null", "205", "null", "206", "null", "207", "null", "208", "null", "209", "null", "210", "null", "211", "null", "212", "null", "213", "null", "214", "null", "215", "null", "216", "null", "217", "null", "218", "null", "219", "null", "220", "null", "221", "null", "222", "null", "223", "null", "224", "null", "225", "null", "226", "null", "227", "null", "228", "null", "229", "null", "230", "null", "231", "null", "232", "null", "233", "null", "234", "null", "235", "null", "236", "null", "237", "null", "238", "null", "239", "null", "240", "null", "241", "null", "242", "null", "243", "null", "244", "null", "245", "null", "246", "null", "247", "null", "248", "null", "249", "null", "250", "null", "251", "null", "252", "null", "253", "null", "254", "null", "255", "null", "256", "null", "257", "null", "258", "null", "259", "null", "260", "null", "261", "null", "262", "null", "263", "null", "264", "null", "265", "null", "266", "null", "267", "null", "268", "null", "269", "null", "270", "null", "271", "null", "272", "null", "273", "null", "274", "null", "275", "null", "276", "null", "277", "null", "278", "null", "279", "null", "280", "null", "281", "null", "282", "null", "283", "null", "284", "null", "285", "null", "286", "null", "287", "null", "288", "null", "289", "null", "290", "null", "291", "null", "292", "null", "293", "null", "294", "null", "295", "null", "296", "null", "297", "null", "298", "null", "299", "null", "300", "null", "301", "null", "302", "null", "303", "null", "304", "null", "305", "null", "306", "null", "307", "null", "308", "null", "309", "null", "310", "null", "311", "null", "312", "null", "313", "null", "314", "null", "315", "null", "316", "null", "317", "null", "318", "null", "319", "null", "320", "null", "321", "null", "322", "null", "323", "null", "324", "null", "325", "null", "326", "null", "327", "null", "328", "null", "329", "null", "330", "null", "331", "null", "332", "null", "333", "null", "334", "null", "335", "null", "336", "null", "337", "null", "338", "null", "339", "null", "340", "null", "341", "null", "342", "null", "343", "null", "344", "null", "345", "null", "346", "null", "347", "null", "348", "null", "349", "null", "350", "null", "351", "null", "352", "null", "353", "null", "354", "null", "355", "null", "356", "null", "357", "null", "358", "null", "359", "null", "360", "null", "361", "null", "362", "null", "363", "null", "364", "null", "365", "null", "366", "null", "367", "null", "368", "null", "369", "null", "370", "null", "371", "null", "372", "null", "373", "null", "374", "null", "375", "null", "376", "null", "377", "null", "378", "null", "379", "null", "380", "null", "381", "null", "382", "null", "383", "null", "384", "null", "385", "null", "386", "null", "387", "null", "388", "null", "389", "null", "390", "null", "391", "null", "392", "null", "393", "null", "394", "null", "395", "null", "396", "null", "397", "null", "398", "null", "399", "null", "400", "null", "401", "null", "402", "null", "403", "null", "404", "null", "405", "null", "406", "null", "407", "null", "408", "null", "409", "null", "410", "null", "411", "null", "412", "null", "413", "null", "414", "null", "415", "null", "416", "null", "417", "null", "418", "null", "419", "null", "420", "null", "421", "null", "422", "null", "423", "null", "424", "null", "425", "null", "426", "null", "427", "null", "428", "null", "429", "null", "430", "null", "431", "null", "432", "null", "433", "null", "434", "null", "435", "null", "436", "null", "437", "null", "438", "null", "439", "null", "440", "null", "441", "null", "442", "null", "443", "null", "444", "null", "445", "null", "446", "null", "447", "null", "448", "null", "449", "null", "450", "null", "451", "null", "452", "null", "453", "null", "454", "null", "455", "null", "456", "null", "457", "null", "458", "null", "459", "null", "460", "null", "461", "null", "462", "null", "463", "null", "464", "null", "465", "null", "466", "null", "467", "null", "468", "null", "469", "null", "470", "null", "471", "null", "472", "null", "473", "null", "474", "null", "475", "null", "476", "null", "477", "null", "478", "null", "479", "null", "480", "null", "481", "null", "482", "null", "483", "null", "484", "null", "485", "null", "486", "null", "487", "null", "488", "null", "489", "null", "490", "null", "491", "null", "492", "null", "493", "null", "494", "null", "495", "null", "496", "null", "497", "null", "498", "null", "499", "null", "500", "null", "501", "null", "502", "null", "503", "null", "504", "null", "505", "null", "506", "null", "507", "null", "508", "null", "509", "null", "510", "null", "511", "null", "512", "null", "513", "null", "514", "null", "515", "null", "516", "null", "517", "null", "518", "null", "519", "null", "520", "null", "521", "null", "522", "null", "523", "null", "524", "null", "525", "null", "526", "null", "527", "null", "528", "null", "529", "null", "530", "null", "531", "null", "532", "null", "533", "null", "534", "null", "535", "null", "536", "null", "537", "null", "538", "null", "539", "null", "540", "null", "541", "null", "542", "null", "543", "null", "544", "null", "545", "null", "546", "null", "547", "null", "548", "null", "549", "null", "550", "null", "551", "null", "552", "null", "553", "null", "554", "null", "555", "null", "556", "null", "557", "null", "558", "null", "559", "null", "560", "null", "561", "null", "562", "null", "563", "null", "564", "null", "565", "null", "566", "null", "567", "null", "568", "null", "569", "null", "570", "null", "571", "null", "572", "null", "573", "null", "574", "null", "575", "null", "576", "null", "577", "null", "578", "null", "579", "null", "580", "null", "581", "null", "582", "null", "583", "null", "584", "null", "585", "null", "586", "null", "587", "null", "588", "null", "589", "null", "590", "null", "591", "null", "592", "null", "593", "null", "594", "null", "595", "null", "596", "null", "597", "null", "598", "null", "599", "null", "600", "null", "601", "null", "602", "null", "603", "null", "604", "null", "605", "null", "606", "null", "607", "null", "608", "null", "609", "null", "610", "null", "611", "null", "612", "null", "613", "null", "614", "null", "615", "null", "616", "null", "617", "null", "618", "null", "619", "null", "620", "null", "621", "null", "622", "null", "623", "null", "624", "null", "625", "null", "626", "null", "627", "null", "628", "null", "629", "null", "630", "null", "631", "null", "632", "null", "633", "null", "634", "null", "635", "null", "636", "null", "637", "null", "638", "null", "639", "null", "640", "null", "641", "null", "642", "null", "643", "null", "644", "null", "645", "null", "646", "null", "647", "null", "648", "null", "649", "null", "650", "null", "651", "null", "652", "null", "653", "null", "654", "null", "655", "null", "656", "null", "657", "null", "658", "null", "659", "null", "660", "null", "661", "null", "662", "null", "663", "null", "664", "null", "665", "null", "666", "null", "667", "null", "668", "null", "669", "null", "670", "null", "671", "null", "672", "null", "673", "null", "674", "null", "675", "null", "676", "null", "677", "null", "678", "null", "679", "null", "680", "null", "681", "null", "682", "null", "683", "null", "684", "null", "685", "null", "686", "null", "687", "null", "688", "null", "689", "null", "690", "null", "691", "null", "692", "null", "693", "null", "694", "null", "695", "null", "696", "null", "697", "null", "698", "null", "699", "null", "700", "null", "701", "null", "702", "null", "703", "null", "704", "null", "705", "null", "706", "null", "707", "null", "708", "null", "709", "null", "710", "null", "711", "null", "712", "null", "713", "null", "714", "null", "715", "null", "716", "null", "717", "null", "718", "null", "719", "null", "720", "null", "721", "null", "722", "null", "723", "null", "724", "null", "725", "null", "726", "null", "727", "null", "728", "null", "729", "null", "730", "null", "731", "null", "732", "null", "733", "null", "734", "null", "735", "null", "736", "null", "737", "null", "738", "null", "739", "null", "740", "null", "741", "null", "742", "null", "743", "null", "744", "null", "745", "null", "746", "null", "747", "null", "748", "null", "749", "null", "750", "null", "751", "null", "752", "null", "753", "null", "754", "null", "755", "null", "756", "null", "757", "null", "758", "null", "759", "null", "760", "null", "761", "null", "762", "null", "763", "null", "764", "null", "765", "null", "766", "null", "767", "null", "768", "null", "769", "null", "770", "null", "771", "null", "772", "null", "773", "null", "774", "null", "775", "null", "776", "null", "777", "null", "778", "null", "779", "null", "780", "null", "781", "null", "782", "null", "783", "null", "784", "null", "785", "null", "786", "null", "787", "null", "788", "null", "789", "null", "790", "null", "791", "null", "792", "null", "793", "null", "794", "null", "795", "null", "796", "null", "797", "null", "798", "null", "799", "null", "800", "null", "801", "null", "802", "null", "803", "null", "804", "null", "805", "null", "806", "null", "807", "null", "808", "null", "809", "null", "810", "null", "811", "null", "812", "null", "813", "null", "814", "null", "815", "null", "816", "null", "817", "null", "818", "null", "819", "null", "820", "null", "821", "null", "822", "null", "823", "null", "824", "null", "825", "null", "826", "null", "827", "null", "828", "null", "829", "null", "830", "null", "831", "null", "832", "null", "833", "null", "834", "null", "835", "null", "836", "null", "837", "null", "838", "null", "839", "null", "840", "null", "841", "null", "842", "null", "843", "null", "844", "null", "845", "null", "846", "null", "847", "null", "848", "null", "849", "null", "850", "null", "851", "null", "852", "null", "853", "null", "854", "null", "855", "null", "856", "null", "857", "null", "858", "null", "859", "null", "860", "null", "861", "null", "862", "null", "863", "null", "864", "null", "865", "null", "866", "null", "867", "null", "868", "null", "869", "null", "870", "null", "871", "null", "872", "null", "873", "null", "874", "null", "875", "null", "876", "null", "877", "null", "878", "null", "879", "null", "880", "null", "881", "null", "882", "null", "883", "null", "884", "null", "885", "null", "886", "null", "887", "null", "888", "null", "889", "null", "890", "null", "891", "null", "892", "null", "893", "null", "894", "null", "895", "null", "896", "null", "897", "null", "898", "null", "899", "null", "900", "null", "901", "null", "902", "null", "903", "null", "904", "null", "905", "null", "906", "null", "907", "null", "908", "null", "909", "null", "910", "null", "911", "null", "912", "null", "913", "null", "914", "null", "915", "null", "916", "null", "917", "null", "918", "null", "919", "null", "920", "null", "921", "null", "922", "null", "923", "null", "924", "null", "925", "null", "926", "null", "927", "null", "928", "null", "929", "null", "930", "null", "931", "null", "932", "null", "933", "null", "934", "null", "935", "null", "936", "null", "937", "null", "938", "null", "939", "null", "940", "null", "941", "null", "942", "null", "943", "null", "944", "null", "945", "null", "946", "null", "947", "null", "948", "null", "949", "null", "950", "null", "951", "null", "952", "null", "953", "null", "954", "null", "955", "null", "956", "null", "957", "null", "958", "null", "959", "null", "960", "null", "961", "null", "962", "null", "963", "null", "964", "null", "965", "null", "966", "null", "967", "null", "968", "null", "969", "null", "970", "null", "971", "null", "972", "null", "973", "null", "974", "null", "975", "null", "976", "null", "977", "null", "978", "null", "979", "null", "980", "null", "981", "null", "982", "null", "983", "null", "984", "null", "985", "null", "986", "null", "987", "null", "988", "null", "989", "null", "990", "null", "991", "null", "992", "null", "993", "null", "994", "null", "995", "null", "996", "null", "997", "null", "998", "null", "999", "null", "1000", "null", "1001", "null", "1002", "null", "1003", "null", "1004", "null", "1005", "null", "1006", "null", "1007", "null", "1008", "null", "1009", "null", "1010", "null", "1011", "null", "1012", "null", "1013", "null", "1014", "null", "1015", "null", "1016", "null", "1017", "null", "1018", "null", "1019", "null", "1020", "null", "1021", "null", "1022", "null", "1023", "null", "1024", "null", "1025", "null", "1026", "null", "1027", "null", "1028", "null", "1029", "null", "1030", "null", "1031", "null", "1032", "null", "1033", "null", "1034", "null", "1035", "null", "1036", "null", "1037", "null", "1038", "null", "1039", "null", "1040", "null", "1041", "null", "1042", "null", "1043", "null", "1044", "null", "1045", "null", "1046", "null", "1047", "null", "1048", "null", "1049", "null", "1050", "null", "1051", "null", "1052", "null", "1053", "null", "1054", "null", "1055", "null", "1056", "null", "1057", "null", "1058", "null", "1059", "null", "1060", "null", "1061", "null", "1062", "null", "1063", "null", "1064", "null", "1065", "null", "1066", "null", "1067", "null", "1068", "null", "1069", "null", "1070", "null", "1071", "null", "1072", "null", "1073", "null", "1074", "null", "1075", "null", "1076", "null", "1077", "null", "1078", "null", "1079", "null", "1080", "null", "1081", "null", "1082", "null", "1083", "null", "1084", "null", "1085", "null", "1086", "null", "1087", "null", "1088", "null", "1089", "null", "1090", "null", "1091", "null", "1092", "null", "1093", "null", "1094", "null", "1095", "null", "1096", "null", "1097", "null", "1098", "null", "1099", "null", "1100", "null", "1101", "null", "1102", "null", "1103", "null", "1104", "null", "1105", "null", "1106", "null", "1107", "null", "1108", "null", "1109", "null", "1110", "null", "1111", "null", "1112", "null", "1113", "null", "1114", "null", "1115", "null", "1116", "null", "1117", "null", "1118", "null", "1119", "null", "1120", "null", "1121", "null", "1122", "null", "1123", "null", "1124", "null", "1125", "null", "1126", "null", "1127", "null", "1128", "null", "1129", "null", "1130", "null", "1131", "null", "1132", "null", "1133", "null", "1134", "null", "1135", "null", "1136", "null", "1137", "null", "1138", "null", "1139", "null", "1140", "null", "1141", "null", "1142", "null", "1143", "null", "1144", "null", "1145", "null", "1146", "null", "1147", "null", "1148", "null", "1149", "null", "1150", "null", "1151", "null", "1152", "null", "1153", "null", "1154", "null", "1155", "null", "1156", "null", "1157", "null", "1158", "null", "1159", "null", "1160", "null", "1161", "null", "1162", "null", "1163", "null", "1164", "null", "1165", "null", "1166", "null", "1167", "null", "1168", "null", "1169", "null", "1170", "null", "1171", "null", "1172", "null", "1173", "null", "1174", "null", "1175", "null", "1176", "null", "1177", "null", "1178", "null", "1179", "null", "1180", "null", "1181", "null", "1182", "null", "1183", "null", "1184", "null", "1185", "null", "1186", "null", "1187", "null", "1188", "null", "1189", "null", "1190", "null", "1191", "null", "1192", "null", "1193", "null", "1194", "null", "1195", "null", "1196", "null", "1197", "null", "1198", "null", "1199", "null", "1200", "null", "1201", "null", "1202", "null", "1203", "null", "1204", "null", "1205", "null", "1206", "null", "1207", "null", "1208", "null", "1209", "null", "1210", "null", "1211", "null", "1212", "null", "1213", "null", "1214", "null", "1215", "null", "1216", "null", "1217", "null", "1218", "null", "1219", "null", "1220", "null", "1221", "null", "1222", "null", "1223", "null", "1224", "null", "1225", "null", "1226", "null", "1227", "null", "1228", "null", "1229", "null", "1230", "null", "1231", "null", "1232", "null", "1233", "null", "1234", "null", "1235", "null", "1236", "null", "1237", "null", "1238", "null", "1239", "null", "1240", "null", "1241", "null", "1242", "null", "1243", "null", "1244", "null", "1245", "null", "1246", "null", "1247", "null", "1248", "null", "1249", "null", "1250", "null", "1251", "null", "1252", "null", "1253", "null", "1254", "null", "1255", "null", "1256", "null", "1257", "null", "1258", "null", "1259", "null", "1260", "null", "1261", "null", "1262", "null", "1263", "null", "1264", "null", "1265", "null", "1266", "null", "1267", "null", "1268", "null", "1269", "null", "1270", "null", "1271", "null", "1272", "null", "1273", "null", "1274", "null", "1275", "null", "1276", "null", "1277", "null", "1278", "null", "1279", "null", "1280", "null", "1281", "null", "1282", "null", "1283", "null", "1284", "null", "1285", "null", "1286", "null", "1287", "null", "1288", "null", "1289", "null", "1290", "null", "1291", "null", "1292", "null", "1293", "null", "1294", "null", "1295", "null", "1296", "null", "1297", "null", "1298", "null", "1299", "null", "1300", "null", "1301", "null", "1302", "null", "1303", "null", "1304", "null", "1305", "null", "1306", "null", "1307", "null", "1308", "null", "1309", "null", "1310", "null", "1311", "null", "1312", "null", "1313", "null", "1314", "null", "1315", "null", "1316", "null", "1317", "null", "1318", "null", "1319", "null", "1320", "null", "1321", "null", "1322", "null", "1323", "null", "1324", "null", "1325", "null", "1326", "null", "1327", "null", "1328", "null", "1329", "null", "1330", "null", "1331", "null", "1332", "null", "1333", "null", "1334", "null", "1335", "null", "1336", "null", "1337", "null", "1338", "null", "1339", "null", "1340", "null", "1341", "null", "1342", "null", "1343", "null", "1344", "null", "1345", "null", "1346", "null", "1347", "null", "1348", "null", "1349", "null", "1350", "null", "1351", "null", "1352", "null", "1353", "null", "1354", "null", "1355", "null", "1356", "null", "1357", "null", "1358", "null", "1359", "null", "1360", "null", "1361", "null", "1362", "null", "1363", "null", "1364", "null", "1365", "null", "1366", "null", "1367", "null", "1368", "null", "1369", "null", "1370", "null", "1371", "null", "1372", "null", "1373", "null", "1374", "null", "1375", "null", "1376", "null", "1377", "null", "1378", "null", "1379", "null", "1380", "null", "1381", "null", "1382", "null", "1383", "null", "1384", "null", "1385", "null", "1386", "null", "1387", "null", "1388", "null", "1389", "null", "1390", "null", "1391", "null", "1392", "null", "1393", "null", "1394", "null", "1395", "null", "1396", "null", "1397", "null", "1398", "null", "1399", "null", "1400", "null", "1401", "null", "1402", "null", "1403", "null", "1404", "null", "1405", "null", "1406", "null", "1407", "null", "1408", "null", "1409", "null", "1410", "null", "1411", "null", "1412", "null", "1413", "null", "1414", "null", "1415", "null", "1416", "null", "1417", "null", "1418", "null", "1419", "null", "1420", "null", "1421", "null", "1422", "null", "1423", "null", "1424", "null", "1425", "null", "1426", "null", "1427", "null", "1428", "null", "1429", "null", "1430", "null", "1431", "null", "1432", "null", "1433", "null", "1434", "null", "1435", "null", "1436", "null", "1437", "null", "1438", "null", "1439", "null", "1440", "null", "1441", "null", "1442", "null", "1443", "null", "1444", "null", "1445", "null", "1446", "null", "1447", "null", "1448", "null", "1449", "null", "1450", "null", "1451", "null", "1452", "null", "1453", "null", "1454", "null", "1455", "null", "1456", "null", "1457", "null", "1458", "null", "1459", "null", "1460", "null", "1461", "null", "1462", "null", "1463", "null", "1464", "null", "1465", "null", "1466", "null", "1467", "null", "1468", "null", "1469", "null", "1470", "null", "1471", "null", "1472", "null", "1473", "null", "1474", "null", "1475", "null", "1476", "null", "1477", "null", "1478", "null", "1479", "null", "1480", "null", "1481", "null", "1482", "null", "1483", "null", "1484", "null", "1485", "null", "1486", "null", "1487", "null", "1488", "null", "1489", "null", "1490", "null", "1491", "null", "1492", "null", "1493", "null", "1494", "null", "1495", "null", "1496", "null", "1497", "null", "1498", "null", "1499", "null", "1500", "null", "1501", "null", "1502", "null", "1503", "null", "1504", "null", "1505", "null", "1506", "null", "1507", "null", "1508", "null", "1509", "null", "1510", "null", "1511", "null", "1512", "null", "1513", "null", "1514", "null", "1515", "null", "1516", "null", "1517", "null", "1518", "null", "1519", "null", "1520", "null", "1521", "null", "1522", "null", "1523", "null", "1524", "null", "1525", "null", "1526", "null", "1527", "null", "1528", "null", "1529", "null", "1530", "null", "1531", "null", "1532", "null", "1533", "null", "1534", "null", "1535", "null", "1536", "null", "1537", "null", "1538", "null", "1539", "null", "1540", "null", "1541", "null", "1542", "null", "1543", "null", "1544", "null", "1545", "null", "1546", "null", "1547", "null", "1548", "null", "1549", "null", "1550", "null", "1551", "null", "1552", "null", "1553", "null", "1554", "null", "1555", "null", "1556", "null", "1557", "null", "1558", "null", "1559", "null", "1560", "null", "1561", "null", "1562", "null", "1563", "null", "1564", "null", "1565", "null", "1566", "null", "1567", "null", "1568", "null", "1569", "null", "1570", "null", "1571", "null", "1572", "null", "1573", "null", "1574", "null", "1575", "null", "1576", "null", "1577", "null", "1578", "null", "1579", "null", "1580", "null", "1581", "null", "1582", "null", "1583", "null", "1584", "null", "1585", "null", "1586", "null", "1587", "null", "1588", "null", "1589", "null", "1590", "null", "1591", "null", "1592", "null", "1593", "null", "1594", "null", "1595", "null", "1596", "null", "1597", "null", "1598", "null", "1599", "null", "1600", "null", "1601", "null", "1602", "null", "1603", "null", "1604", "null", "1605", "null", "1606", "null", "1607", "null", "1608", "null", "1609", "null", "1610", "null", "1611", "null", "1612", "null", "1613", "null", "1614", "null", "1615", "null", "1616", "null", "1617", "null", "1618", "null", "1619", "null", "1620", "null", "1621", "null", "1622", "null", "1623", "null", "1624", "null", "1625", "null", "1626", "null", "1627", "null", "1628", "null", "1629", "null", "1630", "null", "1631", "null", "1632", "null", "1633", "null", "1634", "null", "1635", "null", "1636", "null", "1637", "null", "1638", "null", "1639", "null", "1640", "null", "1641", "null", "1642", "null", "1643", "null", "1644", "null", "1645", "null", "1646", "null", "1647", "null", "1648", "null", "1649", "null", "1650", "null", "1651", "null", "1652", "null", "1653", "null", "1654", "null", "1655", "null", "1656", "null", "1657", "null", "1658", "null", "1659", "null", "1660", "null", "1661", "null", "1662", "null", "1663", "null", "1664", "null", "1665", "null", "1666", "null", "1667", "null", "1668", "null", "1669", "null", "1670", "null", "1671", "null", "1672", "null", "1673", "null", "1674", "null", "1675", "null", "1676", "null", "1677", "null", "1678", "null", "1679", "null", "1680", "null", "1681", "null", "1682", "null", "1683", "null", "1684", "null", "1685", "null", "1686", "null", "1687", "null", "1688", "null", "1689", "null", "1690", "null", "1691", "null", "1692", "null", "1693", "null", "1694", "null", "1695", "null", "1696", "null", "1697", "null", "1698", "null", "1699", "null", "1700", "null", "1701", "null", "1702", "null", "1703", "null", "1704", "null", "1705", "null", "1706", "null", "1707", "null", "1708", "null", "1709", "null", "1710", "null", "1711", "null", "1712", "null", "1713", "null", "1714", "null", "1715", "null", "1716", "null", "1717", "null", "1718", "null", "1719", "null", "1720", "null", "1721", "null", "1722", "null", "1723", "null", "1724", "null", "1725", "null", "1726", "null", "1727", "null", "1728", "null", "1729", "null", "1730", "null", "1731", "null", "1732", "null", "1733", "null", "1734", "null", "1735", "null", "1736", "null", "1737", "null", "1738", "null", "1739", "null", "1740", "null", "1741", "null", "1742", "null", "1743", "null", "1744", "null", "1745", "null", "1746", "null", "1747", "null", "1748", "null", "1749", "null", "1750", "null", "1751", "null", "1752", "null", "1753", "null", "1754", "null", "1755", "null", "1756", "null", "1757", "null", "1758", "null", "1759", "null", "1760", "null", "1761", "null", "1762", "null", "1763", "null", "1764", "null", "1765", "null", "1766", "null", "1767", "null", "1768", "null", "1769", "null", "1770", "null", "1771", "null", "1772", "null", "1773", "null", "1774", "null", "1775", "null", "1776", "null", "1777", "null", "1778", "null", "1779", "null", "1780", "null", "1781", "null", "1782", "null", "1783", "null", "1784", "null", "1785", "null", "1786", "null", "1787", "null", "1788", "null", "1789", "null", "1790", "null", "1791", "null", "1792", "null", "1793", "null", "1794", "null", "1795", "null", "1796", "null", "1797", "null", "1798", "null", "1799", "null", "1800", "null", "1801", "null", "1802", "null", "1803", "null", "1804", "null", "1805", "null", "1806", "null", "1807", "null", "1808", "null", "1809", "null", "1810", "null", "1811", "null", "1812", "null", "1813", "null", "1814", "null", "1815", "null", "1816", "null", "1817", "null", "1818", "null", "1819", "null", "1820", "null", "1821", "null", "1822", "null", "1823", "null", "1824", "null", "1825", "null", "1826", "null", "1827", "null", "1828", "null", "1829", "null", "1830", "null", "1831", "null", "1832", "null", "1833", "null", "1834", "null", "1835", "null", "1836", "null", "1837", "null", "1838", "null", "1839", "null", "1840", "null", "1841", "null", "1842", "null", "1843", "null", "1844", "null", "1845", "null", "1846", "null", "1847", "null", "1848", "null", "1849", "null", "1850", "null", "1851", "null", "1852", "null", "1853", "null", "1854", "null", "1855", "null", "1856", "null", "1857", "null", "1858", "null", "1859", "null", "1860", "null", "1861", "null", "1862", "null", "1863", "null", "1864", "null", "1865", "null", "1866", "null", "1867", "null", "1868", "null", "1869", "null", "1870", "null", "1871", "null", "1872", "null", "1873", "null", "1874", "null", "1875", "null", "1876", "null", "1877", "null", "1878", "null", "1879", "null", "1880", "null", "1881", "null", "1882", "null", "1883", "null", "1884", "null", "1885", "null", "1886", "null", "1887", "null", "1888", "null", "1889", "null", "1890", "null", "1891", "null", "1892", "null", "1893", "null", "1894", "null", "1895", "null", "1896", "null", "1897", "null", "1898", "null", "1899", "null", "1900", "null", "1901", "null", "1902", "null", "1903", "null", "1904", "null", "1905", "null", "1906", "null", "1907", "null", "1908", "null", "1909", "null", "1910", "null", "1911", "null", "1912", "null", "1913", "null", "1914", "null", "1915", "null", "1916", "null", "1917", "null", "1918", "null", "1919", "null", "1920", "null", "1921", "null", "1922", "null", "1923", "null", "1924", "null", "1925", "null", "1926", "null", "1927", "null", "1928", "null", "1929", "null", "1930", "null", "1931", "null", "1932", "null", "1933", "null", "1934", "null", "1935", "null", "1936", "null", "1937", "null", "1938", "null", "1939", "null", "1940", "null", "1941", "null", "1942", "null", "1943", "null", "1944", "null", "1945", "null", "1946", "null", "1947", "null", "1948", "null", "1949", "null", "1950", "null", "1951", "null", "1952", "null", "1953", "null", "1954", "null", "1955", "null", "1956", "null", "1957", "null", "1958", "null", "1959", "null", "1960", "null", "1961", "null", "1962", "null", "1963", "null", "1964", "null", "1965", "null", "1966", "null", "1967", "null", "1968", "null", "1969", "null", "1970", "null", "1971", "null", "1972", "null", "1973", "null", "1974", "null", "1975", "null", "1976", "null", "1977", "null", "1978", "null", "1979", "null", "1980", "null", "1981", "null", "1982", "null", "1983", "null", "1984", "null", "1985", "null", "1986", "null", "1987", "null", "1988", "null", "1989", "null", "1990", "null", "1991", "null", "1992", "null", "1993", "null", "1994", "null", "1995", "null", "1996", "null", "1997", "null", "1998", "null", "1999", "null", "2000", "null", "2001", "null", "2002", "null", "2003", "null", "2004", "null", "2005", "null", "2006", "null", "2007", "null", "2008", "null", "2009", "null", "2010", "null", "2011", "null", "2012", "null", "2013", "null", "2014", "null", "2015", "null", "2016", "null", "2017", "null", "2018", "null", "2019", "null", "2020", "null", "2021", "null", "2022", "null", "2023", "null", "2024", "null", "2025", "null", "2026", "null", "2027", "null", "2028", "null", "2029", "null", "2030", "null", "2031", "null", "2032", "null", "2033", "null", "2034", "null", "2035", "null", "2036", "null", "2037", "null", "2038", "null", "2039", "null", "2040", "null", "2041", "null", "2042", "null", "2043", "null", "2044", "null", "2045", "null", "2046", "null", "2047", "null", "2048", "null", "2049", "null", "2050", "null", "2051", "null", "2052", "null", "2053", "null", "2054", "null", "2055", "null", "2056", "null", "2057", "null", "2058", "null", "2059", "null", "2060", "null", "2061", "null", "2062", "null", "2063", "null", "2064", "null", "2065", "null", "2066", "null", "2067", "null", "2068", "null", "2069", "null", "2070", "null", "2071", "null", "2072", "null", "2073", "null", "2074", "null", "2075", "null", "2076", "null", "2077", "null", "2078", "null", "2079", "null", "2080", "null", "2081", "null", "2082", "null", "2083", "null", "2084", "null", "2085", "null", "2086", "null", "2087", "null", "2088", "null", "2089", "null", "2090", "null", "2091", "null", "2092", "null", "2093", "null", "2094", "null", "2095", "null", "2096", "null", "2097", "null", "2098", "null", "2099", "null", "2100", "null", "2101", "null", "2102", "null", "2103", "null", "2104", "null", "2105", "null", "2106", "null", "2107", "null", "2108", "null", "2109", "null", "2110", "null", "2111", "null", "2112", "null", "2113", "null", "2114", "null", "2115", "null", "2116", "null", "2117", "null", "2118", "null", "2119", "null", "2120", "null", "2121", "null", "2122", "null", "2123", "null", "2124", "null", "2125", "null", "2126", "null", "2127", "null", "2128", "null", "2129", "null", "2130", "null", "2131", "null", "2132", "null", "2133", "null", "2134", "null", "2135", "null", "2136", "null", "2137", "null", "2138", "null", "2139", "null", "2140", "null", "2141", "null", "2142", "null", "2143", "null", "2144", "null", "2145", "null", "2146", "null", "2147", "null", "2148", "null", "2149", "null", "2150", "null", "2151", "null", "2152", "null", "2153", "null", "2154", "null", "2155", "null", "2156", "null", "2157", "null", "2158", "null", "2159", "null", "2160", "null", "2161", "null", "2162", "null", "2163", "null", "2164", "null", "2165", "null", "2166", "null", "2167", "null", "2168", "null", "2169", "null", "2170", "null", "2171", "null", "2172", "null", "2173", "null", "2174", "null", "2175", "null", "2176", "null", "2177", "null", "2178", "null", "2179", "null", "2180", "null", "2181", "null", "2182", "null", "2183", "null", "2184", "null", "2185", "null", "2186", "null", "2187", "null", "2188", "null", "2189", "null", "2190", "null", "2191", "null", "2192", "null", "2193", "null", "2194", "null", "2195", "null", "2196", "null", "2197", "null", "2198", "null", "2199", "null", "2200", "null", "2201", "null", "2202", "null", "2203", "null", "2204", "null", "2205", "null", "2206", "null", "2207", "null", "2208", "null", "2209", "null", "2210", "null", "2211", "null", "2212", "null", "2213", "null", "2214", "null", "2215", "null", "2216", "null", "2217", "null", "2218", "null", "2219", "null", "2220", "null", "2221", "null", "2222", "null", "2223", "null", "2224", "null", "2225", "null", "2226", "null", "2227", "null", "2228", "null", "2229", "null", "2230", "null", "2231", "null", "2232", "null", "2233", "null", "2234", "null", "2235", "null", "2236", "null", "2237", "null", "2238", "null", "2239", "null", "2240", "null", "2241", "null", "2242", "null", "2243", "null", "2244", "null", "2245", "null", "2246", "null", "2247", "null", "2248", "null", "2249", "null", "2250", "null", "2251", "null", "2252", "null", "2253", "null", "2254", "null", "2255", "null", "2256", "null", "2257", "null", "2258", "null", "2259", "null", "2260", "null", "2261", "null", "2262", "null", "2263", "null", "2264", "null", "2265", "null", "2266", "null", "2267", "null", "2268", "null", "2269", "null", "2270", "null", "2271", "null", "2272", "null", "2273", "null", "2274", "null", "2275", "null", "2276", "null", "2277", "null", "2278", "null", "2279", "null", "2280", "null", "2281", "null", "2282", "null", "2283", "null", "2284", "null", "2285", "null", "2286", "null", "2287", "null", "2288", "null", "2289", "null", "2290", "null", "2291", "null", "2292", "null", "2293", "null", "2294", "null", "2295", "null", "2296", "null", "2297", "null", "2298", "null", "2299", "null", "2300", "null", "2301", "null", "2302", "null", "2303", "null", "2304", "null", "2305", "null", "2306", "null", "2307", "null", "2308", "null", "2309", "null", "2310", "null", "2311", "null", "2312", "null", "2313", "null", "2314", "null", "2315", "null", "2316", "null", "2317", "null", "2318", "null", "2319", "null", "2320", "null", "2321", "null", "2322", "null", "2323", "null", "2324", "null", "2325", "null", "2326", "null", "2327", "null", "2328", "null", "2329", "null", "2330", "null", "2331", "null", "2332", "null", "2333", "null", "2334", "null", "2335", "null", "2336", "null", "2337", "null", "2338", "null", "2339", "null", "2340", "null", "2341", "null", "2342", "null", "2343", "null", "2344", "null", "2345", "null", "2346", "null", "2347", "null", "2348", "null", "2349", "null", "2350", "null", "2351", "null", "2352", "null", "2353", "null", "2354", "null", "2355", "null", "2356", "null", "2357", "null", "2358", "null", "2359", "null", "2360", "null", "2361", "null", "2362", "null", "2363", "null", "2364", "null", "2365", "null", "2366", "null", "2367", "null", "2368", "null", "2369", "null", "2370", "null", "2371", "null", "2372", "null", "2373", "null", "2374", "null", "2375", "null", "2376", "null", "2377", "null", "2378", "null", "2379", "null", "2380", "null", "2381", "null", "2382", "null", "2383", "null", "2384", "null", "2385", "null", "2386", "null", "2387", "null", "2388", "null", "2389", "null", "2390", "null", "2391", "null", "2392", "null", "2393", "null", "2394", "null", "2395", "null", "2396", "null", "2397", "null", "2398", "null", "2399", "null", "2400", "null", "2401", "null", "2402", "null", "2403", "null", "2404", "null", "2405", "null", "2406", "null", "2407", "null", "2408", "null", "2409", "null", "2410", "null", "2411", "null", "2412", "null", "2413", "null", "2414", "null", "2415", "null", "2416", "null", "2417", "null", "2418", "null", "2419", "null", "2420", "null", "2421", "null", "2422", "null", "2423", "null", "2424", "null", "2425", "null", "2426", "null", "2427", "null", "2428", "null", "2429", "null", "2430", "null", "2431", "null", "2432", "null", "2433", "null", "2434", "null", "2435", "null", "2436", "null", "2437", "null", "2438", "null", "2439", "null", "2440", "null", "2441", "null", "2442", "null", "2443", "null", "2444", "null", "2445", "null", "2446", "null", "2447", "null", "2448", "null", "2449", "null", "2450", "null", "2451", "null", "2452", "null", "2453", "null", "2454", "null", "2455", "null", "2456", "null", "2457", "null", "2458", "null", "2459", "null", "2460", "null", "2461", "null", "2462", "null", "2463", "null", "2464", "null", "2465", "null", "2466", "null", "2467", "null", "2468", "null", "2469", "null", "2470", "null", "2471", "null", "2472", "null", "2473", "null", "2474", "null", "2475", "null", "2476", "null", "2477", "null", "2478", "null", "2479", "null", "2480", "null", "2481", "null", "2482", "null", "2483", "null", "2484", "null", "2485", "null", "2486", "null", "2487", "null", "2488", "null", "2489", "null", "2490", "null", "2491", "null", "2492", "null", "2493", "null", "2494", "null", "2495", "null", "2496", "null", "2497", "null", "2498", "null", "2499", "null", "2500", "null", "2501", "null", "2502", "null", "2503", "null", "2504", "null", "2505", "null", "2506", "null", "2507", "null", "2508", "null", "2509", "null", "2510", "null", "2511", "null", "2512", "null", "2513", "null", "2514", "null", "2515", "null", "2516", "null", "2517", "null", "2518", "null", "2519", "null", "2520", "null", "2521", "null", "2522", "null", "2523", "null", "2524", "null", "2525", "null", "2526", "null", "2527", "null", "2528", "null", "2529", "null", "2530", "null", "2531", "null", "2532", "null", "2533", "null", "2534", "null", "2535", "null", "2536", "null", "2537", "null", "2538", "null", "2539", "null", "2540", "null", "2541", "null", "2542", "null", "2543", "null", "2544", "null", "2545", "null", "2546", "null", "2547", "null", "2548", "null", "2549", "null", "2550", "null", "2551", "null", "2552", "null", "2553", "null", "2554", "null", "2555", "null", "2556", "null", "2557", "null", "2558", "null", "2559", "null", "2560", "null", "2561", "null", "2562", "null", "2563", "null", "2564", "null", "2565", "null", "2566", "null", "2567", "null", "2568", "null", "2569", "null", "2570", "null", "2571", "null", "2572", "null", "2573", "null", "2574", "null", "2575", "null", "2576", "null", "2577", "null", "2578", "null", "2579", "null", "2580", "null", "2581", "null", "2582", "null", "2583", "null", "2584", "null", "2585", "null", "2586", "null", "2587", "null", "2588", "null", "2589", "null", "2590", "null", "2591", "null", "2592", "null", "2593", "null", "2594", "null", "2595", "null", "2596", "null", "2597", "null", "2598", "null", "2599", "null", "2600", "null", "2601", "null", "2602", "null", "2603", "null", "2604", "null", "2605", "null", "2606", "null", "2607", "null", "2608", "null", "2609", "null", "2610", "null", "2611", "null", "2612", "null", "2613", "null", "2614", "null", "2615", "null", "2616", "null", "2617", "null", "2618", "null", "2619", "null", "2620", "null", "2621", "null", "2622", "null", "2623", "null", "2624", "null", "2625", "null", "2626", "null", "2627", "null", "2628", "null", "2629", "null", "2630", "null", "2631", "null", "2632", "null", "2633", "null", "2634", "null", "2635", "null", "2636", "null", "2637", "null", "2638", "null", "2639", "null", "2640", "null", "2641", "null", "2642", "null", "2643", "null", "2644", "null", "2645", "null", "2646", "null", "2647", "null", "2648", "null", "2649", "null", "2650", "null", "2651", "null", "2652", "null", "2653", "null", "2654", "null", "2655", "null", "2656", "null", "2657", "null", "2658", "null", "2659", "null", "2660", "null", "2661", "null", "2662", "null", "2663", "null", "2664", "null", "2665", "null", "2666", "null", "2667", "null", "2668", "null", "2669", "null", "2670", "null", "2671", "null", "2672", "null", "2673", "null", "2674", "null", "2675", "null", "2676", "null", "2677", "null", "2678", "null", "2679", "null", "2680", "null", "2681", "null", "2682", "null", "2683", "null", "2684", "null", "2685", "null", "2686", "null", "2687", "null", "2688", "null", "2689", "null", "2690", "null", "2691", "null", "2692", "null", "2693", "null", "2694", "null", "2695", "null", "2696", "null", "2697", "null", "2698", "null", "2699", "null", "2700", "null", "2701", "null", "2702", "null", "2703", "null", "2704", "null", "2705", "null", "2706", "null", "2707", "null", "2708", "null", "2709", "null", "2710", "null", "2711", "null", "2712", "null", "2713", "null", "2714", "null", "2715", "null", "2716", "null", "2717", "null", "2718", "null", "2719", "null", "2720", "null", "2721", "null", "2722", "null", "2723", "null", "2724", "null", "2725", "null", "2726", "null", "2727", "null", "2728", "null", "2729", "null", "2730", "null", "2731", "null", "2732", "null", "2733", "null", "2734", "null", "2735", "null", "2736", "null", "2737", "null", "2738", "null", "2739", "null", "2740", "null", "2741", "null", "2742", "null", "2743", "null", "2744", "null", "2745", "null", "2746", "null", "2747", "null", "2748", "null", "2749", "null", "2750", "null", "2751", "null", "2752", "null", "2753", "null", "2754", "null", "2755", "null", "2756", "null", "2757", "null", "2758", "null", "2759", "null", "2760", "null", "2761", "null", "2762", "null", "2763", "null", "2764", "null", "2765", "null", "2766", "null", "2767", "null", "2768", "null", "2769", "null", "2770", "null", "2771", "null", "2772", "null", "2773", "null", "2774", "null", "2775", "null", "2776", "null", "2777", "null", "2778", "null", "2779", "null", "2780", "null", "2781", "null", "2782", "null", "2783", "null", "2784", "null", "2785", "null", "2786", "null", "2787", "null", "2788", "null", "2789", "null", "2790", "null", "2791", "null", "2792", "null", "2793", "null", "2794", "null", "2795", "null", "2796", "null", "2797", "null", "2798", "null", "2799", "null", "2800", "null", "2801", "null", "2802", "null", "2803", "null", "2804", "null", "2805", "null", "2806", "null", "2807", "null", "2808", "null", "2809", "null", "2810", "null", "2811", "null", "2812", "null", "2813", "null", "2814", "null", "2815", "null", "2816", "null", "2817", "null", "2818", "null", "2819", "null", "2820", "null", "2821", "null", "2822", "null", "2823", "null", "2824", "null", "2825", "null", "2826", "null", "2827", "null", "2828", "null", "2829", "null", "2830", "null", "2831", "null", "2832", "null", "2833", "null", "2834", "null", "2835", "null", "2836", "null", "2837", "null", "2838", "null", "2839", "null", "2840", "null", "2841", "null", "2842", "null", "2843", "null", "2844", "null", "2845", "null", "2846", "null", "2847", "null", "2848", "null", "2849", "null", "2850", "null", "2851", "null", "2852", "null", "2853", "null", "2854", "null", "2855", "null", "2856", "null", "2857", "null", "2858", "null", "2859", "null", "2860", "null", "2861", "null", "2862", "null", "2863", "null", "2864", "null", "2865", "null", "2866", "null", "2867", "null", "2868", "null", "2869", "null", "2870", "null", "2871", "null", "2872", "null", "2873", "null", "2874", "null", "2875", "null", "2876", "null", "2877", "null", "2878", "null", "2879", "null", "2880", "null", "2881", "null", "2882", "null", "2883", "null", "2884", "null", "2885", "null", "2886", "null", "2887", "null", "2888", "null", "2889", "null", "2890", "null", "2891", "null", "2892", "null", "2893", "null", "2894", "null", "2895", "null", "2896", "null", "2897", "null", "2898", "null", "2899", "null", "2900", "null", "2901", "null", "2902", "null", "2903", "null", "2904", "null", "2905", "null", "2906", "null", "2907", "null", "2908", "null", "2909", "null", "2910", "null", "2911", "null", "2912", "null", "2913", "null", "2914", "null", "2915", "null", "2916", "null", "2917", "null", "2918", "null", "2919", "null", "2920", "null", "2921", "null", "2922", "null", "2923", "null", "2924", "null", "2925", "null", "2926", "null", "2927", "null", "2928", "null", "2929", "null", "2930", "null", "2931", "null", "2932", "null", "2933", "null", "2934", "null", "2935", "null", "2936", "null", "2937", "null", "2938", "null", "2939", "null", "2940", "null", "2941", "null", "2942", "null", "2943", "null", "2944", "null", "2945", "null", "2946", "null", "2947", "null", "2948", "null", "2949", "null", "2950", "null", "2951", "null", "2952", "null", "2953", "null", "2954", "null", "2955", "null", "2956", "null", "2957", "null", "2958", "null", "2959", "null", "2960", "null", "2961", "null", "2962", "null", "2963", "null", "2964", "null", "2965", "null", "2966", "null", "2967", "null", "2968", "null", "2969", "null", "2970", "null", "2971", "null", "2972", "null", "2973", "null", "2974", "null", "2975", "null", "2976", "null", "2977", "null", "2978", "null", "2979", "null", "2980", "null", "2981", "null", "2982", "null", "2983", "null", "2984", "null", "2985", "null", "2986", "null", "2987", "null", "2988", "null", "2989", "null", "2990", "null", "2991", "null", "2992", "null", "2993", "null", "2994", "null", "2995", "null", "2996", "null", "2997", "null", "2998", "null", "2999", "null", "3000"] TODO [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1806, 1805] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1806, 1804, 1803, 1805] ["1", "null", "2", "null", "3", "null", "4", "null", "5", "null", "6", "null", "7", "null", "8", "null", "9", "null", "10", "null", "11", "null", "12", "null", "13", "null", "14", "null", "15", "null", "16", "null", "17", "null", "18", "null", "19", "null", "20", "null", "21", "null", "22", "null", "23", "null", "24", "null", "25", "null", "26", "null", "27", "null", "28", "null", "29", "null", "30", "null", "31", "null", "32", "null", "33", "null", "34", "null", "35", "null", "36", "null", "37", "null", "38", "null", "39", "null", "40", "null", "41", "null", "42", "null", "43", "null", "44", "null", "45", "null", "46", "null", "47", "null", "48", "null", "49", "null", "50", "null", "51", "null", "52", "null", "53", "null", "54", "null", "55", "null", "56", "null", "57", "null", "58", "null", "59", "null", "60", "null", "61", "null", "62", "null", "63", "null", "64", "null", "65", "null", "66", "null", "67", "null", "68", "null", "69", "null", "70", "null", "71", "null", "72", "null", "73", "null", "74", "null", "75", "null", "76", "null", "77", "null", "78", "null", "79", "null", "80", "null", "81", "null", "82", "null", "83", "null", "84", "null", "85", "null", "86", "null", "87", "null", "88", "null", "89", "null", "90", "null", "91", "null", "92", "null", "93", "null", "94", "null", "95", "null", "96", "null", "97", "null", "98", "null", "99", "null", "100", "null", "101", "null", "102", "null", "103", "null", "104", "null", "105", "null", "106", "null", "107", "null", "108", "null", "109", "null", "110", "null", "111", "null", "112", "null", "113", "null", "114", "null", "115", "null", "116", "null", "117", "null", "118", "null", "119", "null", "120", "null", "121", "null", "122", "null", "123", "null", "124", "null", "125", "null", "126", "null", "127", "null", "128", "null", "129", "null", "130", "null", "131", "null", "132", "null", "133", "null", "134", "null", "135", "null", "136", "null", "137", "null", "138", "null", "139", "null", "140", "null", "141", "null", "142", "null", "143", "null", "144", "null", "145", "null", "146", "null", "147", "null", "148", "null", "149", "null", "150", "null", "151", "null", "152", "null", "153", "null", "154", "null", "155", "null", "156", "null", "157", "null", "158", "null", "159", "null", "160", "null", "161", "null", "162", "null", "163", "null", "164", "null", "165", "null", "166", "null", "167", "null", "168", "null", "169", "null", "170", "null", "171", "null", "172", "null", "173", "null", "174", "null", "175", "null", "176", "null", "177", "null", "178", "null", "179", "null", "180", "null", "181", "null", "182", "null", "183", "null", "184", "null", "185", "null", "186", "null", "187", "null", "188", "null", "189", "null", "190", "null", "191", "null", "192", "null", "193", "null", "194", "null", "195", "null", "196", "null", "197", "null", "198", "null", "199", "null", "200", "null", "201", "null", "202", "null", "203", "null", "204", "null", "205", "null", "206", "null", "207", "null", "208", "null", "209", "null", "210", "null", "211", "null", "212", "null", "213", "null", "214", "null", "215", "null", "216", "null", "217", "null", "218", "null", "219", "null", "220", "null", "221", "null", "222", "null", "223", "null", "224", "null", "225", "null", "226", "null", "227", "null", "228", "null", "229", "null", "230", "null", "231", "null", "232", "null", "233", "null", "234", "null", "235", "null", "236", "null", "237", "null", "238", "null", "239", "null", "240", "null", "241", "null", "242", "null", "243", "null", "244", "null", "245", "null", "246", "null", "247", "null", "248", "null", "249", "null", "250", "null", "251", "null", "252", "null", "253", "null", "254", "null", "255", "null", "256", "null", "257", "null", "258", "null", "259", "null", "260", "null", "261", "null", "262", "null", "263", "null", "264", "null", "265", "null", "266", "null", "267", "null", "268", "null", "269", "null", "270", "null", "271", "null", "272", "null", "273", "null", "274", "null", "275", "null", "276", "null", "277", "null", "278", "null", "279", "null", "280", "null", "281", "null", "282", "null", "283", "null", "284", "null", "285", "null", "286", "null", "287", "null", "288", "null", "289", "null", "290", "null", "291", "null", "292", "null", "293", "null", "294", "null", "295", "null", "296", "null", "297", "null", "298", "null", "299", "null", "300", "null", "301", "null", "302", "null", "303", "null", "304", "null", "305", "null", "306", "null", "307", "null", "308", "null", "309", "null", "310", "null", "311", "null", "312", "null", "313", "null", "314", "null", "315", "null", "316", "null", "317", "null", "318", "null", "319", "null", "320", "null", "321", "null", "322", "null", "323", "null", "324", "null", "325", "null", "326", "null", "327", "null", "328", "null", "329", "null", "330", "null", "331", "null", "332", "null", "333", "null", "334", "null", "335", "null", "336", "null", "337", "null", "338", "null", "339", "null", "340", "null", "341", "null", "342", "null", "343", "null", "344", "null", "345", "null", "346", "null", "347", "null", "348", "null", "349", "null", "350", "null", "351", "null", "352", "null", "353", "null", "354", "null", "355", "null", "356", "null", "357", "null", "358", "null", "359", "null", "360", "null", "361", "null", "362", "null", "363", "null", "364", "null", "365", "null", "366", "null", "367", "null", "368", "null", "369", "null", "370", "null", "371", "null", "372", "null", "373", "null", "374", "null", "375", "null", "376", "null", "377", "null", "378", "null", "379", "null", "380", "null", "381", "null", "382", "null", "383", "null", "384", "null", "385", "null", "386", "null", "387", "null", "388", "null", "389", "null", "390", "null", "391", "null", "392", "null", "393", "null", "394", "null", "395", "null", "396", "null", "397", "null", "398", "null", "399", "null", "400", "null", "401", "null", "402", "null", "403", "null", "404", "null", "405", "null", "406", "null", "407", "null", "408", "null", "409", "null", "410", "null", "411", "null", "412", "null", "413", "null", "414", "null", "415", "null", "416", "null", "417", "null", "418", "null", "419", "null", "420", "null", "421", "null", "422", "null", "423", "null", "424", "null", "425", "null", "426", "null", "427", "null", "428", "null", "429", "null", "430", "null", "431", "null", "432", "null", "433", "null", "434", "null", "435", "null", "436", "null", "437", "null", "438", "null", "439", "null", "440", "null", "441", "null", "442", "null", "443", "null", "444", "null", "445", "null", "446", "null", "447", "null", "448", "null", "449", "null", "450", "null", "451", "null", "452", "null", "453", "null", "454", "null", "455", "null", "456", "null", "457", "null", "458", "null", "459", "null", "460", "null", "461", "null", "462", "null", "463", "null", "464", "null", "465", "null", "466", "null", "467", "null", "468", "null", "469", "null", "470", "null", "471", "null", "472", "null", "473", "null", "474", "null", "475", "null", "476", "null", "477", "null", "478", "null", "479", "null", "480", "null", "481", "null", "482", "null", "483", "null", "484", "null", "485", "null", "486", "null", "487", "null", "488", "null", "489", "null", "490", "null", "491", "null", "492", "null", "493", "null", "494", "null", "495", "null", "496", "null", "497", "null", "498", "null", "499", "null", "500", "null", "501", "null", "502", "null", "503", "null", "504", "null", "505", "null", "506", "null", "507", "null", "508", "null", "509", "null", "510", "null", "511", "null", "512", "null", "513", "null", "514", "null", "515", "null", "516", "null", "517", "null", "518", "null", "519", "null", "520", "null", "521", "null", "522", "null", "523", "null", "524", "null", "525", "null", "526", "null", "527", "null", "528", "null", "529", "null", "530", "null", "531", "null", "532", "null", "533", "null", "534", "null", "535", "null", "536", "null", "537", "null", "538", "null", "539", "null", "540", "null", "541", "null", "542", "null", "543", "null", "544", "null", "545", "null", "546", "null", "547", "null", "548", "null", "549", "null", "550", "null", "551", "null", "552", "null", "553", "null", "554", "null", "555", "null", "556", "null", "557", "null", "558", "null", "559", "null", "560", "null", "561", "null", "562", "null", "563", "null", "564", "null", "565", "null", "566", "null", "567", "null", "568", "null", "569", "null", "570", "null", "571", "null", "572", "null", "573", "null", "574", "null", "575", "null", "576", "null", "577", "null", "578", "null", "579", "null", "580", "null", "581", "null", "582", "null", "583", "null", "584", "null", "585", "null", "586", "null", "587", "null", "588", "null", "589", "null", "590", "null", "591", "null", "592", "null", "593", "null", "594", "null", "595", "null", "596", "null", "597", "null", "598", "null", "599", "null", "600", "null", "601", "null", "602", "null", "603", "null", "604", "null", "605", "null", "606", "null", "607", "null", "608", "null", "609", "null", "610", "null", "611", "null", "612", "null", "613", "null", "614", "null", "615", "null", "616", "null", "617", "null", "618", "null", "619", "null", "620", "null", "621", "null", "622", "null", "623", "null", "624", "null", "625", "null", "626", "null", "627", "null", "628", "null", "629", "null", "630", "null", "631", "null", "632", "null", "633", "null", "634", "null", "635", "null", "636", "null", "637", "null", "638", "null", "639", "null", "640", "null", "641", "null", "642", "null", "643", "null", "644", "null", "645", "null", "646", "null", "647", "null", "648", "null", "649", "null", "650", "null", "651", "null", "652", "null", "653", "null", "654", "null", "655", "null", "656", "null", "657", "null", "658", "null", "659", "null", "660", "null", "661", "null", "662", "null", "663", "null", "664", "null", "665", "null", "666", "null", "667", "null", "668", "null", "669", "null", "670", "null", "671", "null", "672", "null", "673", "null", "674", "null", "675", "null", "676", "null", "677", "null", "678", "null", "679", "null", "680", "null", "681", "null", "682", "null", "683", "null", "684", "null", "685", "null", "686", "null", "687", "null", "688", "null", "689", "null", "690", "null", "691", "null", "692", "null", "693", "null", "694", "null", "695", "null", "696", "null", "697", "null", "698", "null", "699", "null", "700", "null", "701", "null", "702", "null", "703", "null", "704", "null", "705", "null", "706", "null", "707", "null", "708", "null", "709", "null", "710", "null", "711", "null", "712", "null", "713", "null", "714", "null", "715", "null", "716", "null", "717", "null", "718", "null", "719", "null", "720", "null", "721", "null", "722", "null", "723", "null", "724", "null", "725", "null", "726", "null", "727", "null", "728", "null", "729", "null", "730", "null", "731", "null", "732", "null", "733", "null", "734", "null", "735", "null", "736", "null", "737", "null", "738", "null", "739", "null", "740", "null", "741", "null", "742", "null", "743", "null", "744", "null", "745", "null", "746", "null", "747", "null", "748", "null", "749", "null", "750", "null", "751", "null", "752", "null", "753", "null", "754", "null", "755", "null", "756", "null", "757", "null", "758", "null", "759", "null", "760", "null", "761", "null", "762", "null", "763", "null", "764", "null", "765", "null", "766", "null", "767", "null", "768", "null", "769", "null", "770", "null", "771", "null", "772", "null", "773", "null", "774", "null", "775", "null", "776", "null", "777", "null", "778", "null", "779", "null", "780", "null", "781", "null", "782", "null", "783", "null", "784", "null", "785", "null", "786", "null", "787", "null", "788", "null", "789", "null", "790", "null", "791", "null", "792", "null", "793", "null", "794", "null", "795", "null", "796", "null", "797", "null", "798", "null", "799", "null", "800", "null", "801", "null", "802", "null", "803", "null", "804", "null", "805", "null", "806", "null", "807", "null", "808", "null", "809", "null", "810", "null", "811", "null", "812", "null", "813", "null", "814", "null", "815", "null", "816", "null", "817", "null", "818", "null", "819", "null", "820", "null", "821", "null", "822", "null", "823", "null", "824", "null", "825", "null", "826", "null", "827", "null", "828", "null", "829", "null", "830", "null", "831", "null", "832", "null", "833", "null", "834", "null", "835", "null", "836", "null", "837", "null", "838", "null", "839", "null", "840", "null", "841", "null", "842", "null", "843", "null", "844", "null", "845", "null", "846", "null", "847", "null", "848", "null", "849", "null", "850", "null", "851", "null", "852", "null", "853", "null", "854", "null", "855", "null", "856", "null", "857", "null", "858", "null", "859", "null", "860", "null", "861", "null", "862", "null", "863", "null", "864", "null", "865", "null", "866", "null", "867", "null", "868", "null", "869", "null", "870", "null", "871", "null", "872", "null", "873", "null", "874", "null", "875", "null", "876", "null", "877", "null", "878", "null", "879", "null", "880", "null", "881", "null", "882", "null", "883", "null", "884", "null", "885", "null", "886", "null", "887", "null", "888", "null", "889", "null", "890", "null", "891", "null", "892", "null", "893", "null", "894", "null", "895", "null", "896", "null", "897", "null", "898", "null", "899", "null", "900", "null", "901", "null", "902", "null", "903", "null", "904", "null", "905", "null", "906", "null", "907", "null", "908", "null", "909", "null", "910", "null", "911", "null", "912", "null", "913", "null", "914", "null", "915", "null", "916", "null", "917", "null", "918", "null", "919", "null", "920", "null", "921", "null", "922", "null", "923", "null", "924", "null", "925", "null", "926", "null", "927", "null", "928", "null", "929", "null", "930", "null", "931", "null", "932", "null", "933", "null", "934", "null", "935", "null", "936", "null", "937", "null", "938", "null", "939", "null", "940", "null", "941", "null", "942", "null", "943", "null", "944", "null", "945", "null", "946", "null", "947", "null", "948", "null", "949", "null", "950", "null", "951", "null", "952", "null", "953", "null", "954", "null", "955", "null", "956", "null", "957", "null", "958", "null", "959", "null", "960", "null", "961", "null", "962", "null", "963", "null", "964", "null", "965", "null", "966", "null", "967", "null", "968", "null", "969", "null", "970", "null", "971", "null", "972", "null", "973", "null", "974", "null", "975", "null", "976", "null", "977", "null", "978", "null", "979", "null", "980", "null", "981", "null", "982", "null", "983", "null", "984", "null", "985", "null", "986", "null", "987", "null", "988", "null", "989", "null", "990", "null", "991", "null", "992", "null", "993", "null", "994", "null", "995", "null", "996", "null", "997", "null", "998", "null", "999", "null", "1000", "null", "1001", "null", "1002", "null", "1003", "null", "1004", "null", "1005", "null", "1006", "null", "1007", "null", "1008", "null", "1009", "null", "1010", "null", "1011", "null", "1012", "null", "1013", "null", "1014", "null", "1015", "null", "1016", "null", "1017", "null", "1018", "null", "1019", "null", "1020", "null", "1021", "null", "1022", "null", "1023", "null", "1024", "null", "1025", "null", "1026", "null", "1027", "null", "1028", "null", "1029", "null", "1030", "null", "1031", "null", "1032", "null", "1033", "null", "1034", "null", "1035", "null", "1036", "null", "1037", "null", "1038", "null", "1039", "null", "1040", "null", "1041", "null", "1042", "null", "1043", "null", "1044", "null", "1045", "null", "1046", "null", "1047", "null", "1048", "null", "1049", "null", "1050", "null", "1051", "null", "1052", "null", "1053", "null", "1054", "null", "1055", "null", "1056", "null", "1057", "null", "1058", "null", "1059", "null", "1060", "null", "1061", "null", "1062", "null", "1063", "null", "1064", "null", "1065", "null", "1066", "null", "1067", "null", "1068", "null", "1069", "null", "1070", "null", "1071", "null", "1072", "null", "1073", "null", "1074", "null", "1075", "null", "1076", "null", "1077", "null", "1078", "null", "1079", "null", "1080", "null", "1081", "null", "1082", "null", "1083", "null", "1084", "null", "1085", "null", "1086", "null", "1087", "null", "1088", "null", "1089", "null", "1090", "null", "1091", "null", "1092", "null", "1093", "null", "1094", "null", "1095", "null", "1096", "null", "1097", "null", "1098", "null", "1099", "null", "1100", "null", "1101", "null", "1102", "null", "1103", "null", "1104", "null", "1105", "null", "1106", "null", "1107", "null", "1108", "null", "1109", "null", "1110", "null", "1111", "null", "1112", "null", "1113", "null", "1114", "null", "1115", "null", "1116", "null", "1117", "null", "1118", "null", "1119", "null", "1120", "null", "1121", "null", "1122", "null", "1123", "null", "1124", "null", "1125", "null", "1126", "null", "1127", "null", "1128", "null", "1129", "null", "1130", "null", "1131", "null", "1132", "null", "1133", "null", "1134", "null", "1135", "null", "1136", "null", "1137", "null", "1138", "null", "1139", "null", "1140", "null", "1141", "null", "1142", "null", "1143", "null", "1144", "null", "1145", "null", "1146", "null", "1147", "null", "1148", "null", "1149", "null", "1150", "null", "1151", "null", "1152", "null", "1153", "null", "1154", "null", "1155", "null", "1156", "null", "1157", "null", "1158", "null", "1159", "null", "1160", "null", "1161", "null", "1162", "null", "1163", "null", "1164", "null", "1165", "null", "1166", "null", "1167", "null", "1168", "null", "1169", "null", "1170", "null", "1171", "null", "1172", "null", "1173", "null", "1174", "null", "1175", "null", "1176", "null", "1177", "null", "1178", "null", "1179", "null", "1180", "null", "1181", "null", "1182", "null", "1183", "null", "1184", "null", "1185", "null", "1186", "null", "1187", "null", "1188", "null", "1189", "null", "1190", "null", "1191", "null", "1192", "null", "1193", "null", "1194", "null", "1195", "null", "1196", "null", "1197", "null", "1198", "null", "1199", "null", "1200", "null", "1201", "null", "1202", "null", "1203", "null", "1204", "null", "1205", "null", "1206", "null", "1207", "null", "1208", "null", "1209", "null", "1210", "null", "1211", "null", "1212", "null", "1213", "null", "1214", "null", "1215", "null", "1216", "null", "1217", "null", "1218", "null", "1219", "null", "1220", "null", "1221", "null", "1222", "null", "1223", "null", "1224", "null", "1225", "null", "1226", "null", "1227", "null", "1228", "null", "1229", "null", "1230", "null", "1231", "null", "1232", "null", "1233", "null", "1234", "null", "1235", "null", "1236", "null", "1237", "null", "1238", "null", "1239", "null", "1240", "null", "1241", "null", "1242", "null", "1243", "null", "1244", "null", "1245", "null", "1246", "null", "1247", "null", "1248", "null", "1249", "null", "1250", "null", "1251", "null", "1252", "null", "1253", "null", "1254", "null", "1255", "null", "1256", "null", "1257", "null", "1258", "null", "1259", "null", "1260", "null", "1261", "null", "1262", "null", "1263", "null", "1264", "null", "1265", "null", "1266", "null", "1267", "null", "1268", "null", "1269", "null", "1270", "null", "1271", "null", "1272", "null", "1273", "null", "1274", "null", "1275", "null", "1276", "null", "1277", "null", "1278", "null", "1279", "null", "1280", "null", "1281", "null", "1282", "null", "1283", "null", "1284", "null", "1285", "null", "1286", "null", "1287", "null", "1288", "null", "1289", "null", "1290", "null", "1291", "null", "1292", "null", "1293", "null", "1294", "null", "1295", "null", "1296", "null", "1297", "null", "1298", "null", "1299", "null", "1300", "null", "1301", "null", "1302", "null", "1303", "null", "1304", "null", "1305", "null", "1306", "null", "1307", "null", "1308", "null", "1309", "null", "1310", "null", "1311", "null", "1312", "null", "1313", "null", "1314", "null", "1315", "null", "1316", "null", "1317", "null", "1318", "null", "1319", "null", "1320", "null", "1321", "null", "1322", "null", "1323", "null", "1324", "null", "1325", "null", "1326", "null", "1327", "null", "1328", "null", "1329", "null", "1330", "null", "1331", "null", "1332", "null", "1333", "null", "1334", "null", "1335", "null", "1336", "null", "1337", "null", "1338", "null", "1339", "null", "1340", "null", "1341", "null", "1342", "null", "1343", "null", "1344", "null", "1345", "null", "1346", "null", "1347", "null", "1348", "null", "1349", "null", "1350", "null", "1351", "null", "1352", "null", "1353", "null", "1354", "null", "1355", "null", "1356", "null", "1357", "null", "1358", "null", "1359", "null", "1360", "null", "1361", "null", "1362", "null", "1363", "null", "1364", "null", "1365", "null", "1366", "null", "1367", "null", "1368", "null", "1369", "null", "1370", "null", "1371", "null", "1372", "null", "1373", "null", "1374", "null", "1375", "null", "1376", "null", "1377", "null", "1378", "null", "1379", "null", "1380", "null", "1381", "null", "1382", "null", "1383", "null", "1384", "null", "1385", "null", "1386", "null", "1387", "null", "1388", "null", "1389", "null", "1390", "null", "1391", "null", "1392", "null", "1393", "null", "1394", "null", "1395", "null", "1396", "null", "1397", "null", "1398", "null", "1399", "null", "1400", "null", "1401", "null", "1402", "null", "1403", "null", "1404", "null", "1405", "null", "1406", "null", "1407", "null", "1408", "null", "1409", "null", "1410", "null", "1411", "null", "1412", "null", "1413", "null", "1414", "null", "1415", "null", "1416", "null", "1417", "null", "1418", "null", "1419", "null", "1420", "null", "1421", "null", "1422", "null", "1423", "null", "1424", "null", "1425", "null", "1426", "null", "1427", "null", "1428", "null", "1429", "null", "1430", "null", "1431", "null", "1432", "null", "1433", "null", "1434", "null", "1435", "null", "1436", "null", "1437", "null", "1438", "null", "1439", "null", "1440", "null", "1441", "null", "1442", "null", "1443", "null", "1444", "null", "1445", "null", "1446", "null", "1447", "null", "1448", "null", "1449", "null", "1450", "null", "1451", "null", "1452", "null", "1453", "null", "1454", "null", "1455", "null", "1456", "null", "1457", "null", "1458", "null", "1459", "null", "1460", "null", "1461", "null", "1462", "null", "1463", "null", "1464", "null", "1465", "null", "1466", "null", "1467", "null", "1468", "null", "1469", "null", "1470", "null", "1471", "null", "1472", "null", "1473", "null", "1474", "null", "1475", "null", "1476", "null", "1477", "null", "1478", "null", "1479", "null", "1480", "null", "1481", "null", "1482", "null", "1483", "null", "1484", "null", "1485", "null", "1486", "null", "1487", "null", "1488", "null", "1489", "null", "1490", "null", "1491", "null", "1492", "null", "1493", "null", "1494", "null", "1495", "null", "1496", "null", "1497", "null", "1498", "null", "1499", "null", "1500", "null", "1501", "null", "1502", "null", "1503", "null", "1504", "null", "1505", "null", "1506", "null", "1507", "null", "1508", "null", "1509", "null", "1510", "null", "1511", "null", "1512", "null", "1513", "null", "1514", "null", "1515", "null", "1516", "null", "1517", "null", "1518", "null", "1519", "null", "1520", "null", "1521", "null", "1522", "null", "1523", "null", "1524", "null", "1525", "null", "1526", "null", "1527", "null", "1528", "null", "1529", "null", "1530", "null", "1531", "null", "1532", "null", "1533", "null", "1534", "null", "1535", "null", "1536", "null", "1537", "null", "1538", "null", "1539", "null", "1540", "null", "1541", "null", "1542", "null", "1543", "null", "1544", "null", "1545", "null", "1546", "null", "1547", "null", "1548", "null", "1549", "null", "1550", "null", "1551", "null", "1552", "null", "1553", "null", "1554", "null", "1555", "null", "1556", "null", "1557", "null", "1558", "null", "1559", "null", "1560", "null", "1561", "null", "1562", "null", "1563", "null", "1564", "null", "1565", "null", "1566", "null", "1567", "null", "1568", "null", "1569", "null", "1570", "null", "1571", "null", "1572", "null", "1573", "null", "1574", "null", "1575", "null", "1576", "null", "1577", "null", "1578", "null", "1579", "null", "1580", "null", "1581", "null", "1582", "null", "1583", "null", "1584", "null", "1585", "null", "1586", "null", "1587", "null", "1588", "null", "1589", "null", "1590", "null", "1591", "null", "1592", "null", "1593", "null", "1594", "null", "1595", "null", "1596", "null", "1597", "null", "1598", "null", "1599", "null", "1600", "null", "1601", "null", "1602", "null", "1603", "null", "1604", "null", "1605", "null", "1606", "null", "1607", "null", "1608", "null", "1609", "null", "1610", "null", "1611", "null", "1612", "null", "1613", "null", "1614", "null", "1615", "null", "1616", "null", "1617", "null", "1618", "null", "1619", "null", "1620", "null", "1621", "null", "1622", "null", "1623", "null", "1624", "null", "1625", "null", "1626", "null", "1627", "null", "1628", "null", "1629", "null", "1630", "null", "1631", "null", "1632", "null", "1633", "null", "1634", "null", "1635", "null", "1636", "null", "1637", "null", "1638", "null", "1639", "null", "1640", "null", "1641", "null", "1642", "null", "1643", "null", "1644", "null", "1645", "null", "1646", "null", "1647", "null", "1648", "null", "1649", "null", "1650", "null", "1651", "null", "1652", "null", "1653", "null", "1654", "null", "1655", "null", "1656", "null", "1657", "null", "1658", "null", "1659", "null", "1660", "null", "1661", "null", "1662", "null", "1663", "null", "1664", "null", "1665", "null", "1666", "null", "1667", "null", "1668", "null", "1669", "null", "1670", "null", "1671", "null", "1672", "null", "1673", "null", "1674", "null", "1675", "null", "1676", "null", "1677", "null", "1678", "null", "1679", "null", "1680", "null", "1681", "null", "1682", "null", "1683", "null", "1684", "null", "1685", "null", "1686", "null", "1687", "null", "1688", "null", "1689", "null", "1690", "null", "1691", "null", "1692", "null", "1693", "null", "1694", "null", "1695", "null", "1696", "null", "1697", "null", "1698", "null", "1699", "null", "1700", "null", "1701", "null", "1702", "null", "1703", "null", "1704", "null", "1705", "null", "1706", "null", "1707", "null", "1708", "null", "1709", "null", "1710", "null", "1711", "null", "1712", "null", "1713", "null", "1714", "null", "1715", "null", "1716", "null", "1717", "null", "1718", "null", "1719", "null", "1720", "null", "1721", "null", "1722", "null", "1723", "null", "1724", "null", "1725", "null", "1726", "null", "1727", "null", "1728", "null", "1729", "null", "1730", "null", "1731", "null", "1732", "null", "1733", "null", "1734", "null", "1735", "null", "1736", "null", "1737", "null", "1738", "null", "1739", "null", "1740", "null", "1741", "null", "1742", "null", "1743", "null", "1744", "null", "1745", "null", "1746", "null", "1747", "null", "1748", "null", "1749", "null", "1750", "null", "1751", "null", "1752", "null", "1753", "null", "1754", "null", "1755", "null", "1756", "null", "1757", "null", "1758", "null", "1759", "null", "1760", "null", "1761", "null", "1762", "null", "1763", "null", "1764", "null", "1765", "null", "1766", "null", "1767", "null", "1768", "null", "1769", "null", "1770", "null", "1771", "null", "1772", "null", "1773", "null", "1774", "null", "1775", "null", "1776", "null", "1777", "null", "1778", "null", "1779", "null", "1780", "null", "1781", "null", "1782", "null", "1783", "null", "1784", "null", "1785", "null", "1786", "null", "1787", "null", "1788", "null", "1789", "null", "1790", "null", "1791", "null", "1792", "null", "1793", "null", "1794", "null", "1795", "null", "1796", "null", "1797", "null", "1798", "null", "1799", "null", "1800", "null", "1801", "null", "1802", "null", "1803", "1804", "1805", "1806"] TODO [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1804, 1803] ["1", "null", "2", "null", "3", "null", "4", "null", "5", "null", "6", "null", "7", "null", "8", "null", "9", "null", "10", "null", "11", "null", "12", "null", "13", "null", "14", "null", "15", "null", "16", "null", "17", "null", "18", "null", "19", "null", "20", "null", "21", "null", "22", "null", "23", "null", "24", "null", "25", "null", "26", "null", "27", "null", "28", "null", "29", "null", "30", "null", "31", "null", "32", "null", "33", "null", "34", "null", "35", "null", "36", "null", "37", "null", "38", "null", "39", "null", "40", "null", "41", "null", "42", "null", "43", "null", "44", "null", "45", "null", "46", "null", "47", "null", "48", "null", "49", "null", "50", "null", "51", "null", "52", "null", "53", "null", "54", "null", "55", "null", "56", "null", "57", "null", "58", "null", "59", "null", "60", "null", "61", "null", "62", "null", "63", "null", "64", "null", "65", "null", "66", "null", "67", "null", "68", "null", "69", "null", "70", "null", "71", "null", "72", "null", "73", "null", "74", "null", "75", "null", "76", "null", "77", "null", "78", "null", "79", "null", "80", "null", "81", "null", "82", "null", "83", "null", "84", "null", "85", "null", "86", "null", "87", "null", "88", "null", "89", "null", "90", "null", "91", "null", "92", "null", "93", "null", "94", "null", "95", "null", "96", "null", "97", "null", "98", "null", "99", "null", "100", "null", "101", "null", "102", "null", "103", "null", "104", "null", "105", "null", "106", "null", "107", "null", "108", "null", "109", "null", "110", "null", "111", "null", "112", "null", "113", "null", "114", "null", "115", "null", "116", "null", "117", "null", "118", "null", "119", "null", "120", "null", "121", "null", "122", "null", "123", "null", "124", "null", "125", "null", "126", "null", "127", "null", "128", "null", "129", "null", "130", "null", "131", "null", "132", "null", "133", "null", "134", "null", "135", "null", "136", "null", "137", "null", "138", "null", "139", "null", "140", "null", "141", "null", "142", "null", "143", "null", "144", "null", "145", "null", "146", "null", "147", "null", "148", "null", "149", "null", "150", "null", "151", "null", "152", "null", "153", "null", "154", "null", "155", "null", "156", "null", "157", "null", "158", "null", "159", "null", "160", "null", "161", "null", "162", "null", "163", "null", "164", "null", "165", "null", "166", "null", "167", "null", "168", "null", "169", "null", "170", "null", "171", "null", "172", "null", "173", "null", "174", "null", "175", "null", "176", "null", "177", "null", "178", "null", "179", "null", "180", "null", "181", "null", "182", "null", "183", "null", "184", "null", "185", "null", "186", "null", "187", "null", "188", "null", "189", "null", "190", "null", "191", "null", "192", "null", "193", "null", "194", "null", "195", "null", "196", "null", "197", "null", "198", "null", "199", "null", "200", "null", "201", "null", "202", "null", "203", "null", "204", "null", "205", "null", "206", "null", "207", "null", "208", "null", "209", "null", "210", "null", "211", "null", "212", "null", "213", "null", "214", "null", "215", "null", "216", "null", "217", "null", "218", "null", "219", "null", "220", "null", "221", "null", "222", "null", "223", "null", "224", "null", "225", "null", "226", "null", "227", "null", "228", "null", "229", "null", "230", "null", "231", "null", "232", "null", "233", "null", "234", "null", "235", "null", "236", "null", "237", "null", "238", "null", "239", "null", "240", "null", "241", "null", "242", "null", "243", "null", "244", "null", "245", "null", "246", "null", "247", "null", "248", "null", "249", "null", "250", "null", "251", "null", "252", "null", "253", "null", "254", "null", "255", "null", "256", "null", "257", "null", "258", "null", "259", "null", "260", "null", "261", "null", "262", "null", "263", "null", "264", "null", "265", "null", "266", "null", "267", "null", "268", "null", "269", "null", "270", "null", "271", "null", "272", "null", "273", "null", "274", "null", "275", "null", "276", "null", "277", "null", "278", "null", "279", "null", "280", "null", "281", "null", "282", "null", "283", "null", "284", "null", "285", "null", "286", "null", "287", "null", "288", "null", "289", "null", "290", "null", "291", "null", "292", "null", "293", "null", "294", "null", "295", "null", "296", "null", "297", "null", "298", "null", "299", "null", "300", "null", "301", "null", "302", "null", "303", "null", "304", "null", "305", "null", "306", "null", "307", "null", "308", "null", "309", "null", "310", "null", "311", "null", "312", "null", "313", "null", "314", "null", "315", "null", "316", "null", "317", "null", "318", "null", "319", "null", "320", "null", "321", "null", "322", "null", "323", "null", "324", "null", "325", "null", "326", "null", "327", "null", "328", "null", "329", "null", "330", "null", "331", "null", "332", "null", "333", "null", "334", "null", "335", "null", "336", "null", "337", "null", "338", "null", "339", "null", "340", "null", "341", "null", "342", "null", "343", "null", "344", "null", "345", "null", "346", "null", "347", "null", "348", "null", "349", "null", "350", "null", "351", "null", "352", "null", "353", "null", "354", "null", "355", "null", "356", "null", "357", "null", "358", "null", "359", "null", "360", "null", "361", "null", "362", "null", "363", "null", "364", "null", "365", "null", "366", "null", "367", "null", "368", "null", "369", "null", "370", "null", "371", "null", "372", "null", "373", "null", "374", "null", "375", "null", "376", "null", "377", "null", "378", "null", "379", "null", "380", "null", "381", "null", "382", "null", "383", "null", "384", "null", "385", "null", "386", "null", "387", "null", "388", "null", "389", "null", "390", "null", "391", "null", "392", "null", "393", "null", "394", "null", "395", "null", "396", "null", "397", "null", "398", "null", "399", "null", "400", "null", "401", "null", "402", "null", "403", "null", "404", "null", "405", "null", "406", "null", "407", "null", "408", "null", "409", "null", "410", "null", "411", "null", "412", "null", "413", "null", "414", "null", "415", "null", "416", "null", "417", "null", "418", "null", "419", "null", "420", "null", "421", "null", "422", "null", "423", "null", "424", "null", "425", "null", "426", "null", "427", "null", "428", "null", "429", "null", "430", "null", "431", "null", "432", "null", "433", "null", "434", "null", "435", "null", "436", "null", "437", "null", "438", "null", "439", "null", "440", "null", "441", "null", "442", "null", "443", "null", "444", "null", "445", "null", "446", "null", "447", "null", "448", "null", "449", "null", "450", "null", "451", "null", "452", "null", "453", "null", "454", "null", "455", "null", "456", "null", "457", "null", "458", "null", "459", "null", "460", "null", "461", "null", "462", "null", "463", "null", "464", "null", "465", "null", "466", "null", "467", "null", "468", "null", "469", "null", "470", "null", "471", "null", "472", "null", "473", "null", "474", "null", "475", "null", "476", "null", "477", "null", "478", "null", "479", "null", "480", "null", "481", "null", "482", "null", "483", "null", "484", "null", "485", "null", "486", "null", "487", "null", "488", "null", "489", "null", "490", "null", "491", "null", "492", "null", "493", "null", "494", "null", "495", "null", "496", "null", "497", "null", "498", "null", "499", "null", "500", "null", "501", "null", "502", "null", "503", "null", "504", "null", "505", "null", "506", "null", "507", "null", "508", "null", "509", "null", "510", "null", "511", "null", "512", "null", "513", "null", "514", "null", "515", "null", "516", "null", "517", "null", "518", "null", "519", "null", "520", "null", "521", "null", "522", "null", "523", "null", "524", "null", "525", "null", "526", "null", "527", "null", "528", "null", "529", "null", "530", "null", "531", "null", "532", "null", "533", "null", "534", "null", "535", "null", "536", "null", "537", "null", "538", "null", "539", "null", "540", "null", "541", "null", "542", "null", "543", "null", "544", "null", "545", "null", "546", "null", "547", "null", "548", "null", "549", "null", "550", "null", "551", "null", "552", "null", "553", "null", "554", "null", "555", "null", "556", "null", "557", "null", "558", "null", "559", "null", "560", "null", "561", "null", "562", "null", "563", "null", "564", "null", "565", "null", "566", "null", "567", "null", "568", "null", "569", "null", "570", "null", "571", "null", "572", "null", "573", "null", "574", "null", "575", "null", "576", "null", "577", "null", "578", "null", "579", "null", "580", "null", "581", "null", "582", "null", "583", "null", "584", "null", "585", "null", "586", "null", "587", "null", "588", "null", "589", "null", "590", "null", "591", "null", "592", "null", "593", "null", "594", "null", "595", "null", "596", "null", "597", "null", "598", "null", "599", "null", "600", "null", "601", "null", "602", "null", "603", "null", "604", "null", "605", "null", "606", "null", "607", "null", "608", "null", "609", "null", "610", "null", "611", "null", "612", "null", "613", "null", "614", "null", "615", "null", "616", "null", "617", "null", "618", "null", "619", "null", "620", "null", "621", "null", "622", "null", "623", "null", "624", "null", "625", "null", "626", "null", "627", "null", "628", "null", "629", "null", "630", "null", "631", "null", "632", "null", "633", "null", "634", "null", "635", "null", "636", "null", "637", "null", "638", "null", "639", "null", "640", "null", "641", "null", "642", "null", "643", "null", "644", "null", "645", "null", "646", "null", "647", "null", "648", "null", "649", "null", "650", "null", "651", "null", "652", "null", "653", "null", "654", "null", "655", "null", "656", "null", "657", "null", "658", "null", "659", "null", "660", "null", "661", "null", "662", "null", "663", "null", "664", "null", "665", "null", "666", "null", "667", "null", "668", "null", "669", "null", "670", "null", "671", "null", "672", "null", "673", "null", "674", "null", "675", "null", "676", "null", "677", "null", "678", "null", "679", "null", "680", "null", "681", "null", "682", "null", "683", "null", "684", "null", "685", "null", "686", "null", "687", "null", "688", "null", "689", "null", "690", "null", "691", "null", "692", "null", "693", "null", "694", "null", "695", "null", "696", "null", "697", "null", "698", "null", "699", "null", "700", "null", "701", "null", "702", "null", "703", "null", "704", "null", "705", "null", "706", "null", "707", "null", "708", "null", "709", "null", "710", "null", "711", "null", "712", "null", "713", "null", "714", "null", "715", "null", "716", "null", "717", "null", "718", "null", "719", "null", "720", "null", "721", "null", "722", "null", "723", "null", "724", "null", "725", "null", "726", "null", "727", "null", "728", "null", "729", "null", "730", "null", "731", "null", "732", "null", "733", "null", "734", "null", "735", "null", "736", "null", "737", "null", "738", "null", "739", "null", "740", "null", "741", "null", "742", "null", "743", "null", "744", "null", "745", "null", "746", "null", "747", "null", "748", "null", "749", "null", "750", "null", "751", "null", "752", "null", "753", "null", "754", "null", "755", "null", "756", "null", "757", "null", "758", "null", "759", "null", "760", "null", "761", "null", "762", "null", "763", "null", "764", "null", "765", "null", "766", "null", "767", "null", "768", "null", "769", "null", "770", "null", "771", "null", "772", "null", "773", "null", "774", "null", "775", "null", "776", "null", "777", "null", "778", "null", "779", "null", "780", "null", "781", "null", "782", "null", "783", "null", "784", "null", "785", "null", "786", "null", "787", "null", "788", "null", "789", "null", "790", "null", "791", "null", "792", "null", "793", "null", "794", "null", "795", "null", "796", "null", "797", "null", "798", "null", "799", "null", "800", "null", "801", "null", "802", "null", "803", "null", "804", "null", "805", "null", "806", "null", "807", "null", "808", "null", "809", "null", "810", "null", "811", "null", "812", "null", "813", "null", "814", "null", "815", "null", "816", "null", "817", "null", "818", "null", "819", "null", "820", "null", "821", "null", "822", "null", "823", "null", "824", "null", "825", "null", "826", "null", "827", "null", "828", "null", "829", "null", "830", "null", "831", "null", "832", "null", "833", "null", "834", "null", "835", "null", "836", "null", "837", "null", "838", "null", "839", "null", "840", "null", "841", "null", "842", "null", "843", "null", "844", "null", "845", "null", "846", "null", "847", "null", "848", "null", "849", "null", "850", "null", "851", "null", "852", "null", "853", "null", "854", "null", "855", "null", "856", "null", "857", "null", "858", "null", "859", "null", "860", "null", "861", "null", "862", "null", "863", "null", "864", "null", "865", "null", "866", "null", "867", "null", "868", "null", "869", "null", "870", "null", "871", "null", "872", "null", "873", "null", "874", "null", "875", "null", "876", "null", "877", "null", "878", "null", "879", "null", "880", "null", "881", "null", "882", "null", "883", "null", "884", "null", "885", "null", "886", "null", "887", "null", "888", "null", "889", "null", "890", "null", "891", "null", "892", "null", "893", "null", "894", "null", "895", "null", "896", "null", "897", "null", "898", "null", "899", "null", "900", "null", "901", "null", "902", "null", "903", "null", "904", "null", "905", "null", "906", "null", "907", "null", "908", "null", "909", "null", "910", "null", "911", "null", "912", "null", "913", "null", "914", "null", "915", "null", "916", "null", "917", "null", "918", "null", "919", "null", "920", "null", "921", "null", "922", "null", "923", "null", "924", "null", "925", "null", "926", "null", "927", "null", "928", "null", "929", "null", "930", "null", "931", "null", "932", "null", "933", "null", "934", "null", "935", "null", "936", "null", "937", "null", "938", "null", "939", "null", "940", "null", "941", "null", "942", "null", "943", "null", "944", "null", "945", "null", "946", "null", "947", "null", "948", "null", "949", "null", "950", "null", "951", "null", "952", "null", "953", "null", "954", "null", "955", "null", "956", "null", "957", "null", "958", "null", "959", "null", "960", "null", "961", "null", "962", "null", "963", "null", "964", "null", "965", "null", "966", "null", "967", "null", "968", "null", "969", "null", "970", "null", "971", "null", "972", "null", "973", "null", "974", "null", "975", "null", "976", "null", "977", "null", "978", "null", "979", "null", "980", "null", "981", "null", "982", "null", "983", "null", "984", "null", "985", "null", "986", "null", "987", "null", "988", "null", "989", "null", "990", "null", "991", "null", "992", "null", "993", "null", "994", "null", "995", "null", "996", "null", "997", "null", "998", "null", "999", "null", "1000", "null", "1001", "null", "1002", "null", "1003", "null", "1004", "null", "1005", "null", "1006", "null", "1007", "null", "1008", "null", "1009", "null", "1010", "null", "1011", "null", "1012", "null", "1013", "null", "1014", "null", "1015", "null", "1016", "null", "1017", "null", "1018", "null", "1019", "null", "1020", "null", "1021", "null", "1022", "null", "1023", "null", "1024", "null", "1025", "null", "1026", "null", "1027", "null", "1028", "null", "1029", "null", "1030", "null", "1031", "null", "1032", "null", "1033", "null", "1034", "null", "1035", "null", "1036", "null", "1037", "null", "1038", "null", "1039", "null", "1040", "null", "1041", "null", "1042", "null", "1043", "null", "1044", "null", "1045", "null", "1046", "null", "1047", "null", "1048", "null", "1049", "null", "1050", "null", "1051", "null", "1052", "null", "1053", "null", "1054", "null", "1055", "null", "1056", "null", "1057", "null", "1058", "null", "1059", "null", "1060", "null", "1061", "null", "1062", "null", "1063", "null", "1064", "null", "1065", "null", "1066", "null", "1067", "null", "1068", "null", "1069", "null", "1070", "null", "1071", "null", "1072", "null", "1073", "null", "1074", "null", "1075", "null", "1076", "null", "1077", "null", "1078", "null", "1079", "null", "1080", "null", "1081", "null", "1082", "null", "1083", "null", "1084", "null", "1085", "null", "1086", "null", "1087", "null", "1088", "null", "1089", "null", "1090", "null", "1091", "null", "1092", "null", "1093", "null", "1094", "null", "1095", "null", "1096", "null", "1097", "null", "1098", "null", "1099", "null", "1100", "null", "1101", "null", "1102", "null", "1103", "null", "1104", "null", "1105", "null", "1106", "null", "1107", "null", "1108", "null", "1109", "null", "1110", "null", "1111", "null", "1112", "null", "1113", "null", "1114", "null", "1115", "null", "1116", "null", "1117", "null", "1118", "null", "1119", "null", "1120", "null", "1121", "null", "1122", "null", "1123", "null", "1124", "null", "1125", "null", "1126", "null", "1127", "null", "1128", "null", "1129", "null", "1130", "null", "1131", "null", "1132", "null", "1133", "null", "1134", "null", "1135", "null", "1136", "null", "1137", "null", "1138", "null", "1139", "null", "1140", "null", "1141", "null", "1142", "null", "1143", "null", "1144", "null", "1145", "null", "1146", "null", "1147", "null", "1148", "null", "1149", "null", "1150", "null", "1151", "null", "1152", "null", "1153", "null", "1154", "null", "1155", "null", "1156", "null", "1157", "null", "1158", "null", "1159", "null", "1160", "null", "1161", "null", "1162", "null", "1163", "null", "1164", "null", "1165", "null", "1166", "null", "1167", "null", "1168", "null", "1169", "null", "1170", "null", "1171", "null", "1172", "null", "1173", "null", "1174", "null", "1175", "null", "1176", "null", "1177", "null", "1178", "null", "1179", "null", "1180", "null", "1181", "null", "1182", "null", "1183", "null", "1184", "null", "1185", "null", "1186", "null", "1187", "null", "1188", "null", "1189", "null", "1190", "null", "1191", "null", "1192", "null", "1193", "null", "1194", "null", "1195", "null", "1196", "null", "1197", "null", "1198", "null", "1199", "null", "1200", "null", "1201", "null", "1202", "null", "1203", "null", "1204", "null", "1205", "null", "1206", "null", "1207", "null", "1208", "null", "1209", "null", "1210", "null", "1211", "null", "1212", "null", "1213", "null", "1214", "null", "1215", "null", "1216", "null", "1217", "null", "1218", "null", "1219", "null", "1220", "null", "1221", "null", "1222", "null", "1223", "null", "1224", "null", "1225", "null", "1226", "null", "1227", "null", "1228", "null", "1229", "null", "1230", "null", "1231", "null", "1232", "null", "1233", "null", "1234", "null", "1235", "null", "1236", "null", "1237", "null", "1238", "null", "1239", "null", "1240", "null", "1241", "null", "1242", "null", "1243", "null", "1244", "null", "1245", "null", "1246", "null", "1247", "null", "1248", "null", "1249", "null", "1250", "null", "1251", "null", "1252", "null", "1253", "null", "1254", "null", "1255", "null", "1256", "null", "1257", "null", "1258", "null", "1259", "null", "1260", "null", "1261", "null", "1262", "null", "1263", "null", "1264", "null", "1265", "null", "1266", "null", "1267", "null", "1268", "null", "1269", "null", "1270", "null", "1271", "null", "1272", "null", "1273", "null", "1274", "null", "1275", "null", "1276", "null", "1277", "null", "1278", "null", "1279", "null", "1280", "null", "1281", "null", "1282", "null", "1283", "null", "1284", "null", "1285", "null", "1286", "null", "1287", "null", "1288", "null", "1289", "null", "1290", "null", "1291", "null", "1292", "null", "1293", "null", "1294", "null", "1295", "null", "1296", "null", "1297", "null", "1298", "null", "1299", "null", "1300", "null", "1301", "null", "1302", "null", "1303", "null", "1304", "null", "1305", "null", "1306", "null", "1307", "null", "1308", "null", "1309", "null", "1310", "null", "1311", "null", "1312", "null", "1313", "null", "1314", "null", "1315", "null", "1316", "null", "1317", "null", "1318", "null", "1319", "null", "1320", "null", "1321", "null", "1322", "null", "1323", "null", "1324", "null", "1325", "null", "1326", "null", "1327", "null", "1328", "null", "1329", "null", "1330", "null", "1331", "null", "1332", "null", "1333", "null", "1334", "null", "1335", "null", "1336", "null", "1337", "null", "1338", "null", "1339", "null", "1340", "null", "1341", "null", "1342", "null", "1343", "null", "1344", "null", "1345", "null", "1346", "null", "1347", "null", "1348", "null", "1349", "null", "1350", "null", "1351", "null", "1352", "null", "1353", "null", "1354", "null", "1355", "null", "1356", "null", "1357", "null", "1358", "null", "1359", "null", "1360", "null", "1361", "null", "1362", "null", "1363", "null", "1364", "null", "1365", "null", "1366", "null", "1367", "null", "1368", "null", "1369", "null", "1370", "null", "1371", "null", "1372", "null", "1373", "null", "1374", "null", "1375", "null", "1376", "null", "1377", "null", "1378", "null", "1379", "null", "1380", "null", "1381", "null", "1382", "null", "1383", "null", "1384", "null", "1385", "null", "1386", "null", "1387", "null", "1388", "null", "1389", "null", "1390", "null", "1391", "null", "1392", "null", "1393", "null", "1394", "null", "1395", "null", "1396", "null", "1397", "null", "1398", "null", "1399", "null", "1400", "null", "1401", "null", "1402", "null", "1403", "null", "1404", "null", "1405", "null", "1406", "null", "1407", "null", "1408", "null", "1409", "null", "1410", "null", "1411", "null", "1412", "null", "1413", "null", "1414", "null", "1415", "null", "1416", "null", "1417", "null", "1418", "null", "1419", "null", "1420", "null", "1421", "null", "1422", "null", "1423", "null", "1424", "null", "1425", "null", "1426", "null", "1427", "null", "1428", "null", "1429", "null", "1430", "null", "1431", "null", "1432", "null", "1433", "null", "1434", "null", "1435", "null", "1436", "null", "1437", "null", "1438", "null", "1439", "null", "1440", "null", "1441", "null", "1442", "null", "1443", "null", "1444", "null", "1445", "null", "1446", "null", "1447", "null", "1448", "null", "1449", "null", "1450", "null", "1451", "null", "1452", "null", "1453", "null", "1454", "null", "1455", "null", "1456", "null", "1457", "null", "1458", "null", "1459", "null", "1460", "null", "1461", "null", "1462", "null", "1463", "null", "1464", "null", "1465", "null", "1466", "null", "1467", "null", "1468", "null", "1469", "null", "1470", "null", "1471", "null", "1472", "null", "1473", "null", "1474", "null", "1475", "null", "1476", "null", "1477", "null", "1478", "null", "1479", "null", "1480", "null", "1481", "null", "1482", "null", "1483", "null", "1484", "null", "1485", "null", "1486", "null", "1487", "null", "1488", "null", "1489", "null", "1490", "null", "1491", "null", "1492", "null", "1493", "null", "1494", "null", "1495", "null", "1496", "null", "1497", "null", "1498", "null", "1499", "null", "1500", "null", "1501", "null", "1502", "null", "1503", "null", "1504", "null", "1505", "null", "1506", "null", "1507", "null", "1508", "null", "1509", "null", "1510", "null", "1511", "null", "1512", "null", "1513", "null", "1514", "null", "1515", "null", "1516", "null", "1517", "null", "1518", "null", "1519", "null", "1520", "null", "1521", "null", "1522", "null", "1523", "null", "1524", "null", "1525", "null", "1526", "null", "1527", "null", "1528", "null", "1529", "null", "1530", "null", "1531", "null", "1532", "null", "1533", "null", "1534", "null", "1535", "null", "1536", "null", "1537", "null", "1538", "null", "1539", "null", "1540", "null", "1541", "null", "1542", "null", "1543", "null", "1544", "null", "1545", "null", "1546", "null", "1547", "null", "1548", "null", "1549", "null", "1550", "null", "1551", "null", "1552", "null", "1553", "null", "1554", "null", "1555", "null", "1556", "null", "1557", "null", "1558", "null", "1559", "null", "1560", "null", "1561", "null", "1562", "null", "1563", "null", "1564", "null", "1565", "null", "1566", "null", "1567", "null", "1568", "null", "1569", "null", "1570", "null", "1571", "null", "1572", "null", "1573", "null", "1574", "null", "1575", "null", "1576", "null", "1577", "null", "1578", "null", "1579", "null", "1580", "null", "1581", "null", "1582", "null", "1583", "null", "1584", "null", "1585", "null", "1586", "null", "1587", "null", "1588", "null", "1589", "null", "1590", "null", "1591", "null", "1592", "null", "1593", "null", "1594", "null", "1595", "null", "1596", "null", "1597", "null", "1598", "null", "1599", "null", "1600", "null", "1601", "null", "1602", "null", "1603", "null", "1604", "null", "1605", "null", "1606", "null", "1607", "null", "1608", "null", "1609", "null", "1610", "null", "1611", "null", "1612", "null", "1613", "null", "1614", "null", "1615", "null", "1616", "null", "1617", "null", "1618", "null", "1619", "null", "1620", "null", "1621", "null", "1622", "null", "1623", "null", "1624", "null", "1625", "null", "1626", "null", "1627", "null", "1628", "null", "1629", "null", "1630", "null", "1631", "null", "1632", "null", "1633", "null", "1634", "null", "1635", "null", "1636", "null", "1637", "null", "1638", "null", "1639", "null", "1640", "null", "1641", "null", "1642", "null", "1643", "null", "1644", "null", "1645", "null", "1646", "null", "1647", "null", "1648", "null", "1649", "null", "1650", "null", "1651", "null", "1652", "null", "1653", "null", "1654", "null", "1655", "null", "1656", "null", "1657", "null", "1658", "null", "1659", "null", "1660", "null", "1661", "null", "1662", "null", "1663", "null", "1664", "null", "1665", "null", "1666", "null", "1667", "null", "1668", "null", "1669", "null", "1670", "null", "1671", "null", "1672", "null", "1673", "null", "1674", "null", "1675", "null", "1676", "null", "1677", "null", "1678", "null", "1679", "null", "1680", "null", "1681", "null", "1682", "null", "1683", "null", "1684", "null", "1685", "null", "1686", "null", "1687", "null", "1688", "null", "1689", "null", "1690", "null", "1691", "null", "1692", "null", "1693", "null", "1694", "null", "1695", "null", "1696", "null", "1697", "null", "1698", "null", "1699", "null", "1700", "null", "1701", "null", "1702", "null", "1703", "null", "1704", "null", "1705", "null", "1706", "null", "1707", "null", "1708", "null", "1709", "null", "1710", "null", "1711", "null", "1712", "null", "1713", "null", "1714", "null", "1715", "null", "1716", "null", "1717", "null", "1718", "null", "1719", "null", "1720", "null", "1721", "null", "1722", "null", "1723", "null", "1724", "null", "1725", "null", "1726", "null", "1727", "null", "1728", "null", "1729", "null", "1730", "null", "1731", "null", "1732", "null", "1733", "null", "1734", "null", "1735", "null", "1736", "null", "1737", "null", "1738", "null", "1739", "null", "1740", "null", "1741", "null", "1742", "null", "1743", "null", "1744", "null", "1745", "null", "1746", "null", "1747", "null", "1748", "null", "1749", "null", "1750", "null", "1751", "null", "1752", "null", "1753", "null", "1754", "null", "1755", "null", "1756", "null", "1757", "null", "1758", "null", "1759", "null", "1760", "null", "1761", "null", "1762", "null", "1763", "null", "1764", "null", "1765", "null", "1766", "null", "1767", "null", "1768", "null", "1769", "null", "1770", "null", "1771", "null", "1772", "null", "1773", "null", "1774", "null", "1775", "null", "1776", "null", "1777", "null", "1778", "null", "1779", "null", "1780", "null", "1781", "null", "1782", "null", "1783", "null", "1784", "null", "1785", "null", "1786", "null", "1787", "null", "1788", "null", "1789", "null", "1790", "null", "1791", "null", "1792", "null", "1793", "null", "1794", "null", "1795", "null", "1796", "null", "1797", "null", "1798", "null", "1799", "null", "1800", "null", "1801", "null", "1802", "null", "1803", "1804"] TODO diff --git a/test_data/tree_from_preorder_with_null.tsv b/test_data/tree_from_preorder_with_null.tsv index 38c1d0cb7..87677776b 100644 --- a/test_data/tree_from_preorder_with_null.tsv +++ b/test_data/tree_from_preorder_with_null.tsv @@ -1,5 +1,4 @@ array(string) binary_tree(int) -@ data ["1", "2", "3", "4", "5", "6", "null", "null", "null", "null", "null", "null", "null"] ["1", "2", "null", "3", "null", "4", "null", "5", "null", "6"] TODO ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", "264", "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276", "277", "278", "279", "280", "281", "282", "283", "284", "285", "286", "287", "288", "289", "290", "291", "292", "293", "294", "295", "296", "297", "298", "299", "300", "301", "302", "303", "304", "305", "306", "307", "308", "309", "310", "311", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "322", "323", "324", "325", "326", "327", "328", "329", "330", "331", "332", "333", "334", "335", "336", "337", "338", "339", "340", "341", "342", "343", "344", "345", "346", "347", "348", "349", "350", "351", "352", "353", "354", "355", "356", "357", "358", "359", "360", "361", "362", "363", "364", "365", "366", "367", "368", "369", "370", "371", "372", "373", "374", "375", "376", "377", "378", "379", "380", "381", "382", "383", "384", "385", "386", "387", "388", "389", "390", "391", "392", "393", "394", "395", "396", "397", "398", "399", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "418", "419", "420", "421", "422", "423", "424", "425", "426", "427", "428", "429", "430", "431", "432", "433", "434", "435", "436", "437", "438", "439", "440", "441", "442", "443", "444", "445", "446", "447", "448", "449", "450", "451", "452", "453", "454", "455", "456", "457", "458", "459", "460", "461", "462", "463", "464", "465", "466", "467", "468", "469", "470", "471", "472", "473", "474", "475", "476", "477", "478", "479", "480", "481", "482", "483", "484", "485", "486", "487", "488", "489", "490", "491", "492", "493", "494", "495", "496", "497", "498", "499", "500", "501", "502", "503", "504", "505", "506", "507", "508", "509", "510", "511", "512", "513", "514", "515", "516", "517", "518", "519", "520", "521", "522", "523", "524", "525", "526", "527", "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538", "539", "540", "541", "542", "543", "544", "545", "546", "547", "548", "549", "550", "551", "552", "553", "554", "555", "556", "557", "558", "559", "560", "561", "562", "563", "564", "565", "566", "567", "568", "569", "570", "571", "572", "573", "574", "575", "576", "577", "578", "579", "580", "581", "582", "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", "594", "595", "596", "597", "598", "599", "600", "601", "602", "603", "604", "605", "606", "607", "608", "609", "610", "611", "612", "613", "614", "615", "616", "617", "618", "619", "620", "621", "622", "623", "624", "625", "626", "627", "628", "629", "630", "631", "632", "633", "634", "635", "636", "637", "638", "639", "640", "641", "642", "643", "644", "645", "646", "647", "648", "649", "650", "651", "652", "653", "654", "655", "656", "657", "658", "659", "660", "661", "662", "663", "664", "665", "666", "667", "668", "669", "670", "671", "672", "673", "674", "675", "676", "677", "678", "679", "680", "681", "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", "693", "694", "695", "696", "697", "698", "699", "700", "701", "702", "703", "704", "705", "706", "707", "708", "709", "710", "711", "712", "713", "714", "715", "716", "717", "718", "719", "720", "721", "722", "723", "724", "725", "726", "727", "728", "729", "730", "731", "732", "733", "734", "735", "736", "737", "738", "739", "740", "741", "742", "743", "744", "745", "746", "747", "748", "749", "750", "751", "752", "753", "754", "755", "756", "757", "758", "759", "760", "761", "762", "763", "764", "765", "766", "767", "768", "769", "770", "771", "772", "773", "774", "775", "776", "777", "778", "779", "780", "781", "782", "783", "784", "785", "786", "787", "788", "789", "790", "791", "792", "793", "794", "795", "796", "797", "798", "799", "800", "801", "802", "803", "804", "805", "806", "807", "808", "809", "810", "811", "812", "813", "814", "815", "816", "817", "818", "819", "820", "821", "822", "823", "824", "825", "826", "827", "828", "829", "830", "831", "832", "833", "834", "835", "836", "837", "838", "839", "840", "841", "842", "843", "844", "845", "846", "847", "848", "849", "850", "851", "852", "853", "854", "855", "856", "857", "858", "859", "860", "861", "862", "863", "864", "865", "866", "867", "868", "869", "870", "871", "872", "873", "874", "875", "876", "877", "878", "879", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889", "890", "891", "892", "893", "894", "895", "896", "897", "898", "899", "900", "901", "902", "903", "904", "905", "906", "907", "908", "909", "910", "911", "912", "913", "914", "915", "916", "917", "918", "919", "920", "921", "922", "923", "924", "925", "926", "927", "928", "929", "930", "931", "932", "933", "934", "935", "936", "937", "938", "939", "940", "941", "942", "943", "944", "945", "946", "947", "948", "949", "950", "951", "952", "953", "954", "955", "956", "957", "958", "959", "960", "961", "962", "963", "964", "965", "966", "967", "968", "969", "970", "971", "972", "973", "974", "975", "976", "977", "978", "979", "980", "981", "982", "983", "984", "985", "986", "987", "988", "989", "990", "991", "992", "993", "994", "995", "996", "997", "998", "999", "1000", "1001", "1002", "1003", "1004", "1005", "1006", "1007", "1008", "1009", "1010", "1011", "1012", "1013", "1014", "1015", "1016", "1017", "1018", "1019", "1020", "1021", "1022", "1023", "1024", "1025", "1026", "1027", "1028", "1029", "1030", "1031", "1032", "1033", "1034", "1035", "1036", "1037", "1038", "1039", "1040", "1041", "1042", "1043", "1044", "1045", "1046", "1047", "1048", "1049", "1050", "1051", "1052", "1053", "1054", "1055", "1056", "1057", "1058", "1059", "1060", "1061", "1062", "1063", "1064", "1065", "1066", "1067", "1068", "1069", "1070", "1071", "1072", "1073", "1074", "1075", "1076", "1077", "1078", "1079", "1080", "1081", "1082", "1083", "1084", "1085", "1086", "1087", "1088", "1089", "1090", "1091", "1092", "1093", "1094", "1095", "1096", "1097", "1098", "1099", "1100", "1101", "1102", "1103", "1104", "1105", "1106", "1107", "1108", "1109", "1110", "1111", "1112", "1113", "1114", "1115", "1116", "1117", "1118", "1119", "1120", "1121", "1122", "1123", "1124", "1125", "1126", "1127", "1128", "1129", "1130", "1131", "1132", "1133", "1134", "1135", "1136", "1137", "1138", "1139", "1140", "1141", "1142", "1143", "1144", "1145", "1146", "1147", "1148", "1149", "1150", "1151", "1152", "1153", "1154", "1155", "1156", "1157", "1158", "1159", "1160", "1161", "1162", "1163", "1164", "1165", "1166", "1167", "1168", "1169", "1170", "1171", "1172", "1173", "1174", "1175", "1176", "1177", "1178", "1179", "1180", "1181", "1182", "1183", "1184", "1185", "1186", "1187", "1188", "1189", "1190", "1191", "1192", "1193", "1194", "1195", "1196", "1197", "1198", "1199", "1200", "1201", "1202", "1203", "1204", "1205", "1206", "1207", "1208", "1209", "1210", "1211", "1212", "1213", "1214", "1215", "1216", "1217", "1218", "1219", "1220", "1221", "1222", "1223", "1224", "1225", "1226", "1227", "1228", "1229", "1230", "1231", "1232", "1233", "1234", "1235", "1236", "1237", "1238", "1239", "1240", "1241", "1242", "1243", "1244", "1245", "1246", "1247", "1248", "1249", "1250", "1251", "1252", "1253", "1254", "1255", "1256", "1257", "1258", "1259", "1260", "1261", "1262", "1263", "1264", "1265", "1266", "1267", "1268", "1269", "1270", "1271", "1272", "1273", "1274", "1275", "1276", "1277", "1278", "1279", "1280", "1281", "1282", "1283", "1284", "1285", "1286", "1287", "1288", "1289", "1290", "1291", "1292", "1293", "1294", "1295", "1296", "1297", "1298", "1299", "1300", "1301", "1302", "1303", "1304", "1305", "1306", "1307", "1308", "1309", "1310", "1311", "1312", "1313", "1314", "1315", "1316", "1317", "1318", "1319", "1320", "1321", "1322", "1323", "1324", "1325", "1326", "1327", "1328", "1329", "1330", "1331", "1332", "1333", "1334", "1335", "1336", "1337", "1338", "1339", "1340", "1341", "1342", "1343", "1344", "1345", "1346", "1347", "1348", "1349", "1350", "1351", "1352", "1353", "1354", "1355", "1356", "1357", "1358", "1359", "1360", "1361", "1362", "1363", "1364", "1365", "1366", "1367", "1368", "1369", "1370", "1371", "1372", "1373", "1374", "1375", "1376", "1377", "1378", "1379", "1380", "1381", "1382", "1383", "1384", "1385", "1386", "1387", "1388", "1389", "1390", "1391", "1392", "1393", "1394", "1395", "1396", "1397", "1398", "1399", "1400", "1401", "1402", "1403", "1404", "1405", "1406", "1407", "1408", "1409", "1410", "1411", "1412", "1413", "1414", "1415", "1416", "1417", "1418", "1419", "1420", "1421", "1422", "1423", "1424", "1425", "1426", "1427", "1428", "1429", "1430", "1431", "1432", "1433", "1434", "1435", "1436", "1437", "1438", "1439", "1440", "1441", "1442", "1443", "1444", "1445", "1446", "1447", "1448", "1449", "1450", "1451", "1452", "1453", "1454", "1455", "1456", "1457", "1458", "1459", "1460", "1461", "1462", "1463", "1464", "1465", "1466", "1467", "1468", "1469", "1470", "1471", "1472", "1473", "1474", "1475", "1476", "1477", "1478", "1479", "1480", "1481", "1482", "1483", "1484", "1485", "1486", "1487", "1488", "1489", "1490", "1491", "1492", "1493", "1494", "1495", "1496", "1497", "1498", "1499", "1500", "1501", "1502", "1503", "1504", "1505", "1506", "1507", "1508", "1509", "1510", "1511", "1512", "1513", "1514", "1515", "1516", "1517", "1518", "1519", "1520", "1521", "1522", "1523", "1524", "1525", "1526", "1527", "1528", "1529", "1530", "1531", "1532", "1533", "1534", "1535", "1536", "1537", "1538", "1539", "1540", "1541", "1542", "1543", "1544", "1545", "1546", "1547", "1548", "1549", "1550", "1551", "1552", "1553", "1554", "1555", "1556", "1557", "1558", "1559", "1560", "1561", "1562", "1563", "1564", "1565", "1566", "1567", "1568", "1569", "1570", "1571", "1572", "1573", "1574", "1575", "1576", "1577", "1578", "1579", "1580", "1581", "1582", "1583", "1584", "1585", "1586", "1587", "1588", "1589", "1590", "1591", "1592", "1593", "1594", "1595", "1596", "1597", "1598", "1599", "1600", "1601", "1602", "1603", "1604", "1605", "1606", "1607", "1608", "1609", "1610", "1611", "1612", "1613", "1614", "1615", "1616", "1617", "1618", "1619", "1620", "1621", "1622", "1623", "1624", "1625", "1626", "1627", "1628", "1629", "1630", "1631", "1632", "1633", "1634", "1635", "1636", "1637", "1638", "1639", "1640", "1641", "1642", "1643", "1644", "1645", "1646", "1647", "1648", "1649", "1650", "1651", "1652", "1653", "1654", "1655", "1656", "1657", "1658", "1659", "1660", "1661", "1662", "1663", "1664", "1665", "1666", "1667", "1668", "1669", "1670", "1671", "1672", "1673", "1674", "1675", "1676", "1677", "1678", "1679", "1680", "1681", "1682", "1683", "1684", "1685", "1686", "1687", "1688", "1689", "1690", "1691", "1692", "1693", "1694", "1695", "1696", "1697", "1698", "1699", "1700", "1701", "1702", "1703", "1704", "1705", "1706", "1707", "1708", "1709", "1710", "1711", "1712", "1713", "1714", "1715", "1716", "1717", "1718", "1719", "1720", "1721", "1722", "1723", "1724", "1725", "1726", "1727", "1728", "1729", "1730", "1731", "1732", "1733", "1734", "1735", "1736", "1737", "1738", "1739", "1740", "1741", "1742", "1743", "1744", "1745", "1746", "1747", "1748", "1749", "1750", "1751", "1752", "1753", "1754", "1755", "1756", "1757", "1758", "1759", "1760", "1761", "1762", "1763", "1764", "1765", "1766", "1767", "1768", "1769", "1770", "1771", "1772", "1773", "1774", "1775", "1776", "1777", "1778", "1779", "1780", "1781", "1782", "1783", "1784", "1785", "1786", "1787", "1788", "1789", "1790", "1791", "1792", "1793", "1794", "1795", "1796", "1797", "1798", "1799", "1800", "1801", "1802", "1803", "1804", "1805", "1806", "1807", "1808", "1809", "1810", "1811", "1812", "1813", "1814", "1815", "1816", "1817", "1818", "1819", "1820", "1821", "1822", "1823", "1824", "1825", "1826", "1827", "1828", "1829", "1830", "1831", "1832", "1833", "1834", "1835", "1836", "1837", "1838", "1839", "1840", "1841", "1842", "1843", "1844", "1845", "1846", "1847", "1848", "1849", "1850", "1851", "1852", "1853", "1854", "1855", "1856", "1857", "1858", "1859", "1860", "1861", "1862", "1863", "1864", "1865", "1866", "1867", "1868", "1869", "1870", "1871", "1872", "1873", "1874", "1875", "1876", "1877", "1878", "1879", "1880", "1881", "1882", "1883", "1884", "1885", "1886", "1887", "1888", "1889", "1890", "1891", "1892", "1893", "1894", "1895", "1896", "1897", "1898", "1899", "1900", "1901", "1902", "1903", "1904", "1905", "1906", "1907", "1908", "1909", "1910", "1911", "1912", "1913", "1914", "1915", "1916", "1917", "1918", "1919", "1920", "1921", "1922", "1923", "1924", "1925", "1926", "1927", "1928", "1929", "1930", "1931", "1932", "1933", "1934", "1935", "1936", "1937", "1938", "1939", "1940", "1941", "1942", "1943", "1944", "1945", "1946", "1947", "1948", "1949", "1950", "1951", "1952", "1953", "1954", "1955", "1956", "1957", "1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969", "1970", "1971", "1972", "1973", "1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", "1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033", "2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", "2046", "2047", "2048", "2049", "2050", "2051", "2052", "2053", "2054", "2055", "2056", "2057", "2058", "2059", "2060", "2061", "2062", "2063", "2064", "2065", "2066", "2067", "2068", "2069", "2070", "2071", "2072", "2073", "2074", "2075", "2076", "2077", "2078", "2079", "2080", "2081", "2082", "2083", "2084", "2085", "2086", "2087", "2088", "2089", "2090", "2091", "2092", "2093", "2094", "2095", "2096", "2097", "2098", "2099", "2100", "2101", "2102", "2103", "2104", "2105", "2106", "2107", "2108", "2109", "2110", "2111", "2112", "2113", "2114", "2115", "2116", "2117", "2118", "2119", "2120", "2121", "2122", "2123", "2124", "2125", "2126", "2127", "2128", "2129", "2130", "2131", "2132", "2133", "2134", "2135", "2136", "2137", "2138", "2139", "2140", "2141", "2142", "2143", "2144", "2145", "2146", "2147", "2148", "2149", "2150", "2151", "2152", "2153", "2154", "2155", "2156", "2157", "2158", "2159", "2160", "2161", "2162", "2163", "2164", "2165", "2166", "2167", "2168", "2169", "2170", "2171", "2172", "2173", "2174", "2175", "2176", "2177", "2178", "2179", "2180", "2181", "2182", "2183", "2184", "2185", "2186", "2187", "2188", "2189", "2190", "2191", "2192", "2193", "2194", "2195", "2196", "2197", "2198", "2199", "2200", "2201", "2202", "2203", "2204", "2205", "2206", "2207", "2208", "2209", "2210", "2211", "2212", "2213", "2214", "2215", "2216", "2217", "2218", "2219", "2220", "2221", "2222", "2223", "2224", "2225", "2226", "2227", "2228", "2229", "2230", "2231", "2232", "2233", "2234", "2235", "2236", "2237", "2238", "2239", "2240", "2241", "2242", "2243", "2244", "2245", "2246", "2247", "2248", "2249", "2250", "2251", "2252", "2253", "2254", "2255", "2256", "2257", "2258", "2259", "2260", "2261", "2262", "2263", "2264", "2265", "2266", "2267", "2268", "2269", "2270", "2271", "2272", "2273", "2274", "2275", "2276", "2277", "2278", "2279", "2280", "2281", "2282", "2283", "2284", "2285", "2286", "2287", "2288", "2289", "2290", "2291", "2292", "2293", "2294", "2295", "2296", "2297", "2298", "2299", "2300", "2301", "2302", "2303", "2304", "2305", "2306", "2307", "2308", "2309", "2310", "2311", "2312", "2313", "2314", "2315", "2316", "2317", "2318", "2319", "2320", "2321", "2322", "2323", "2324", "2325", "2326", "2327", "2328", "2329", "2330", "2331", "2332", "2333", "2334", "2335", "2336", "2337", "2338", "2339", "2340", "2341", "2342", "2343", "2344", "2345", "2346", "2347", "2348", "2349", "2350", "2351", "2352", "2353", "2354", "2355", "2356", "2357", "2358", "2359", "2360", "2361", "2362", "2363", "2364", "2365", "2366", "2367", "2368", "2369", "2370", "2371", "2372", "2373", "2374", "2375", "2376", "2377", "2378", "2379", "2380", "2381", "2382", "2383", "2384", "2385", "2386", "2387", "2388", "2389", "2390", "2391", "2392", "2393", "2394", "2395", "2396", "2397", "2398", "2399", "2400", "2401", "2402", "2403", "2404", "2405", "2406", "2407", "2408", "2409", "2410", "2411", "2412", "2413", "2414", "2415", "2416", "2417", "2418", "2419", "2420", "2421", "2422", "2423", "2424", "2425", "2426", "2427", "2428", "2429", "2430", "2431", "2432", "2433", "2434", "2435", "2436", "2437", "2438", "2439", "2440", "2441", "2442", "2443", "2444", "2445", "2446", "2447", "2448", "2449", "2450", "2451", "2452", "2453", "2454", "2455", "2456", "2457", "2458", "2459", "2460", "2461", "2462", "2463", "2464", "2465", "2466", "2467", "2468", "2469", "2470", "2471", "2472", "2473", "2474", "2475", "2476", "2477", "2478", "2479", "2480", "2481", "2482", "2483", "2484", "2485", "2486", "2487", "2488", "2489", "2490", "2491", "2492", "2493", "2494", "2495", "2496", "2497", "2498", "2499", "2500", "2501", "2502", "2503", "2504", "2505", "2506", "2507", "2508", "2509", "2510", "2511", "2512", "2513", "2514", "2515", "2516", "2517", "2518", "2519", "2520", "2521", "2522", "2523", "2524", "2525", "2526", "2527", "2528", "2529", "2530", "2531", "2532", "2533", "2534", "2535", "2536", "2537", "2538", "2539", "2540", "2541", "2542", "2543", "2544", "2545", "2546", "2547", "2548", "2549", "2550", "2551", "2552", "2553", "2554", "2555", "2556", "2557", "2558", "2559", "2560", "2561", "2562", "2563", "2564", "2565", "2566", "2567", "2568", "2569", "2570", "2571", "2572", "2573", "2574", "2575", "2576", "2577", "2578", "2579", "2580", "2581", "2582", "2583", "2584", "2585", "2586", "2587", "2588", "2589", "2590", "2591", "2592", "2593", "2594", "2595", "2596", "2597", "2598", "2599", "2600", "2601", "2602", "2603", "2604", "2605", "2606", "2607", "2608", "2609", "2610", "2611", "2612", "2613", "2614", "2615", "2616", "2617", "2618", "2619", "2620", "2621", "2622", "2623", "2624", "2625", "2626", "2627", "2628", "2629", "2630", "2631", "2632", "2633", "2634", "2635", "2636", "2637", "2638", "2639", "2640", "2641", "2642", "2643", "2644", "2645", "2646", "2647", "2648", "2649", "2650", "2651", "2652", "2653", "2654", "2655", "2656", "2657", "2658", "2659", "2660", "2661", "2662", "2663", "2664", "2665", "2666", "2667", "2668", "2669", "2670", "2671", "2672", "2673", "2674", "2675", "2676", "2677", "2678", "2679", "2680", "2681", "2682", "2683", "2684", "2685", "2686", "2687", "2688", "2689", "2690", "2691", "2692", "2693", "2694", "2695", "2696", "2697", "2698", "2699", "2700", "2701", "2702", "2703", "2704", "2705", "2706", "2707", "2708", "2709", "2710", "2711", "2712", "2713", "2714", "2715", "2716", "2717", "2718", "2719", "2720", "2721", "2722", "2723", "2724", "2725", "2726", "2727", "2728", "2729", "2730", "2731", "2732", "2733", "2734", "2735", "2736", "2737", "2738", "2739", "2740", "2741", "2742", "2743", "2744", "2745", "2746", "2747", "2748", "2749", "2750", "2751", "2752", "2753", "2754", "2755", "2756", "2757", "2758", "2759", "2760", "2761", "2762", "2763", "2764", "2765", "2766", "2767", "2768", "2769", "2770", "2771", "2772", "2773", "2774", "2775", "2776", "2777", "2778", "2779", "2780", "2781", "2782", "2783", "2784", "2785", "2786", "2787", "2788", "2789", "2790", "2791", "2792", "2793", "2794", "2795", "2796", "2797", "2798", "2799", "2800", "2801", "2802", "2803", "2804", "2805", "2806", "2807", "2808", "2809", "2810", "2811", "2812", "2813", "2814", "2815", "2816", "2817", "2818", "2819", "2820", "2821", "2822", "2823", "2824", "2825", "2826", "2827", "2828", "2829", "2830", "2831", "2832", "2833", "2834", "2835", "2836", "2837", "2838", "2839", "2840", "2841", "2842", "2843", "2844", "2845", "2846", "2847", "2848", "2849", "2850", "2851", "2852", "2853", "2854", "2855", "2856", "2857", "2858", "2859", "2860", "2861", "2862", "2863", "2864", "2865", "2866", "2867", "2868", "2869", "2870", "2871", "2872", "2873", "2874", "2875", "2876", "2877", "2878", "2879", "2880", "2881", "2882", "2883", "2884", "2885", "2886", "2887", "2888", "2889", "2890", "2891", "2892", "2893", "2894", "2895", "2896", "2897", "2898", "2899", "2900", "2901", "2902", "2903", "2904", "2905", "2906", "2907", "2908", "2909", "2910", "2911", "2912", "2913", "2914", "2915", "2916", "2917", "2918", "2919", "2920", "2921", "2922", "2923", "2924", "2925", "2926", "2927", "2928", "2929", "2930", "2931", "2932", "2933", "2934", "2935", "2936", "2937", "2938", "2939", "2940", "2941", "2942", "2943", "2944", "2945", "2946", "2947", "2948", "2949", "2950", "2951", "2952", "2953", "2954", "2955", "2956", "2957", "2958", "2959", "2960", "2961", "2962", "2963", "2964", "2965", "2966", "2967", "2968", "2969", "2970", "2971", "2972", "2973", "2974", "2975", "2976", "2977", "2978", "2979", "2980", "2981", "2982", "2983", "2984", "2985", "2986", "2987", "2988", "2989", "2990", "2991", "2992", "2993", "2994", "2995", "2996", "2997", "2998", "2999", "3000", "3001", "3002", "3003", "3004", "3005", "3006", "3007", "3008", "3009", "3010", "3011", "3012", "3013", "3014", "3015", "3016", "3017", "3018", "3019", "3020", "3021", "3022", "3023", "3024", "3025", "3026", "3027", "3028", "3029", "3030", "3031", "3032", "3033", "3034", "3035", "3036", "3037", "3038", "3039", "3040", "3041", "3042", "3043", "3044", "3045", "3046", "3047", "3048", "3049", "3050", "3051", "3052", "3053", "3054", "3055", "3056", "3057", "3058", "3059", "3060", "3061", "3062", "3063", "3064", "3065", "3066", "3067", "3068", "3069", "3070", "3071", "3072", "3073", "3074", "3075", "3076", "3077", "3078", "3079", "3080", "3081", "3082", "3083", "3084", "3085", "3086", "3087", "3088", "3089", "3090", "3091", "3092", "3093", "3094", "3095", "3096", "3097", "3098", "3099", "3100", "3101", "3102", "3103", "3104", "3105", "3106", "3107", "3108", "3109", "3110", "3111", "3112", "3113", "3114", "3115", "3116", "3117", "3118", "3119", "3120", "3121", "3122", "3123", "3124", "3125", "3126", "3127", "3128", "3129", "3130", "3131", "3132", "3133", "3134", "3135", "3136", "3137", "3138", "3139", "3140", "3141", "3142", "3143", "3144", "3145", "3146", "3147", "3148", "3149", "3150", "3151", "3152", "3153", "3154", "3155", "3156", "3157", "3158", "3159", "3160", "3161", "3162", "3163", "3164", "3165", "3166", "3167", "3168", "3169", "3170", "3171", "3172", "3173", "3174", "3175", "3176", "3177", "3178", "3179", "3180", "3181", "3182", "3183", "3184", "3185", "3186", "3187", "3188", "3189", "3190", "3191", "3192", "3193", "3194", "3195", "3196", "3197", "3198", "3199", "3200", "3201", "3202", "3203", "3204", "3205", "3206", "3207", "3208", "3209", "3210", "3211", "3212", "3213", "3214", "3215", "3216", "3217", "3218", "3219", "3220", "3221", "3222", "3223", "3224", "3225", "3226", "3227", "3228", "3229", "3230", "3231", "3232", "3233", "3234", "3235", "3236", "3237", "3238", "3239", "3240", "3241", "3242", "3243", "3244", "3245", "3246", "3247", "3248", "3249", "3250", "3251", "3252", "3253", "3254", "3255", "3256", "3257", "3258", "3259", "3260", "3261", "3262", "3263", "3264", "3265", "3266", "3267", "3268", "3269", "3270", "3271", "3272", "3273", "3274", "3275", "3276", "3277", "3278", "3279", "3280", "3281", "3282", "3283", "3284", "3285", "3286", "3287", "3288", "3289", "3290", "3291", "3292", "3293", "3294", "3295", "3296", "3297", "3298", "3299", "3300", "3301", "3302", "3303", "3304", "3305", "3306", "3307", "3308", "3309", "3310", "3311", "3312", "3313", "3314", "3315", "3316", "3317", "3318", "3319", "3320", "3321", "3322", "3323", "3324", "3325", "3326", "3327", "3328", "3329", "3330", "3331", "3332", "3333", "3334", "3335", "3336", "3337", "3338", "3339", "3340", "3341", "3342", "3343", "3344", "3345", "3346", "3347", "3348", "3349", "3350", "3351", "3352", "3353", "3354", "3355", "3356", "3357", "3358", "3359", "3360", "3361", "3362", "3363", "3364", "3365", "3366", "3367", "3368", "3369", "3370", "3371", "3372", "3373", "3374", "3375", "3376", "3377", "3378", "3379", "3380", "3381", "3382", "3383", "3384", "3385", "3386", "3387", "3388", "3389", "3390", "3391", "3392", "3393", "3394", "3395", "3396", "3397", "3398", "3399", "3400", "3401", "3402", "3403", "3404", "3405", "3406", "3407", "3408", "3409", "3410", "3411", "3412", "3413", "3414", "3415", "3416", "3417", "3418", "3419", "3420", "3421", "3422", "3423", "3424", "3425", "3426", "3427", "3428", "3429", "3430", "3431", "3432", "3433", "3434", "3435", "3436", "3437", "3438", "3439", "3440", "3441", "3442", "3443", "3444", "3445", "3446", "3447", "3448", "3449", "3450", "3451", "3452", "3453", "3454", "3455", "3456", "3457", "3458", "3459", "3460", "3461", "3462", "3463", "3464", "3465", "3466", "3467", "3468", "3469", "3470", "3471", "3472", "3473", "3474", "3475", "3476", "3477", "3478", "3479", "3480", "3481", "3482", "3483", "3484", "3485", "3486", "3487", "3488", "3489", "3490", "3491", "3492", "3493", "3494", "3495", "3496", "3497", "3498", "3499", "3500", "3501", "3502", "3503", "3504", "3505", "3506", "3507", "3508", "3509", "3510", "3511", "3512", "3513", "3514", "3515", "3516", "3517", "3518", "3519", "3520", "3521", "3522", "3523", "3524", "3525", "3526", "3527", "3528", "3529", "3530", "3531", "3532", "3533", "3534", "3535", "3536", "3537", "3538", "3539", "3540", "3541", "3542", "3543", "3544", "3545", "3546", "3547", "3548", "3549", "3550", "3551", "3552", "3553", "3554", "3555", "3556", "3557", "3558", "3559", "3560", "3561", "3562", "3563", "3564", "3565", "3566", "3567", "3568", "3569", "3570", "3571", "3572", "3573", "3574", "3575", "3576", "3577", "3578", "3579", "3580", "3581", "3582", "3583", "3584", "3585", "3586", "3587", "3588", "3589", "3590", "3591", "3592", "3593", "3594", "3595", "3596", "3597", "3598", "3599", "3600", "3601", "3602", "3603", "3604", "3605", "3606", "3607", "3608", "3609", "3610", "3611", "3612", "3613", "3614", "3615", "3616", "3617", "3618", "3619", "3620", "3621", "3622", "3623", "3624", "3625", "3626", "3627", "3628", "3629", "3630", "3631", "3632", "3633", "3634", "3635", "3636", "3637", "3638", "3639", "3640", "3641", "3642", "3643", "3644", "3645", "3646", "3647", "3648", "3649", "3650", "3651", "3652", "3653", "3654", "3655", "3656", "3657", "3658", "3659", "3660", "3661", "3662", "3663", "3664", "3665", "3666", "3667", "3668", "3669", "3670", "3671", "3672", "3673", "3674", "3675", "3676", "3677", "3678", "3679", "3680", "3681", "3682", "3683", "3684", "3685", "3686", "3687", "3688", "3689", "3690", "3691", "3692", "3693", "3694", "3695", "3696", "3697", "3698", "3699", "3700", "3701", "3702", "3703", "3704", "3705", "3706", "3707", "3708", "3709", "3710", "3711", "3712", "3713", "3714", "3715", "3716", "3717", "3718", "3719", "3720", "3721", "3722", "3723", "3724", "3725", "3726", "3727", "3728", "3729", "3730", "3731", "3732", "3733", "3734", "3735", "3736", "3737", "3738", "3739", "3740", "3741", "3742", "3743", "3744", "3745", "3746", "3747", "3748", "3749", "3750", "3751", "3752", "3753", "3754", "3755", "3756", "3757", "3758", "3759", "3760", "3761", "3762", "3763", "3764", "3765", "3766", "3767", "3768", "3769", "3770", "3771", "3772", "3773", "3774", "3775", "3776", "3777", "3778", "3779", "3780", "3781", "3782", "3783", "3784", "3785", "3786", "3787", "3788", "3789", "3790", "3791", "3792", "3793", "3794", "3795", "3796", "3797", "3798", "3799", "3800", "3801", "3802", "3803", "3804", "3805", "3806", "3807", "3808", "3809", "3810", "3811", "3812", "3813", "3814", "3815", "3816", "3817", "3818", "3819", "3820", "3821", "3822", "3823", "3824", "3825", "3826", "3827", "3828", "3829", "3830", "3831", "3832", "3833", "3834", "3835", "3836", "3837", "3838", "3839", "3840", "3841", "3842", "3843", "3844", "3845", "3846", "3847", "3848", "3849", "3850", "3851", "3852", "3853", "3854", "3855", "3856", "3857", "3858", "3859", "3860", "3861", "3862", "3863", "3864", "3865", "3866", "3867", "3868", "3869", "3870", "3871", "3872", "3873", "3874", "3875", "3876", "3877", "3878", "3879", "3880", "3881", "3882", "3883", "3884", "3885", "3886", "3887", "3888", "3889", "3890", "3891", "3892", "3893", "3894", "3895", "3896", "3897", "3898", "3899", "3900", "3901", "3902", "3903", "3904", "3905", "3906", "3907", "3908", "3909", "3910", "3911", "3912", "3913", "3914", "3915", "3916", "3917", "3918", "3919", "3920", "3921", "3922", "3923", "3924", "3925", "3926", "3927", "3928", "3929", "3930", "3931", "3932", "3933", "3934", "3935", "3936", "3937", "3938", "3939", "3940", "3941", "3942", "3943", "3944", "3945", "3946", "3947", "3948", "3949", "3950", "3951", "3952", "3953", "3954", "3955", "3956", "3957", "3958", "3959", "3960", "3961", "3962", "3963", "3964", "3965", "3966", "3967", "3968", "3969", "3970", "3971", "3972", "3973", "3974", "3975", "3976", "3977", "3978", "3979", "3980", "3981", "3982", "3983", "3984", "3985", "3986", "3987", "3988", "3989", "3990", "3991", "3992", "3993", "3994", "3995", "3996", "3997", "3998", "3999", "4000", "4001", "4002", "4003", "4004", "4005", "4006", "4007", "4008", "4009", "4010", "4011", "4012", "4013", "4014", "4015", "4016", "4017", "4018", "4019", "4020", "4021", "4022", "4023", "4024", "4025", "4026", "4027", "4028", "4029", "4030", "4031", "4032", "4033", "4034", "4035", "4036", "4037", "4038", "4039", "4040", "4041", "4042", "4043", "4044", "4045", "4046", "4047", "4048", "4049", "4050", "4051", "4052", "4053", "4054", "4055", "4056", "4057", "4058", "4059", "4060", "4061", "4062", "4063", "4064", "4065", "4066", "4067", "4068", "4069", "4070", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null"] ["1", "2", "null", "3", "null", "4", "null", "5", "null", "6", "null", "7", "null", "8", "null", "9", "null", "10", "null", "11", "null", "12", "null", "13", "null", "14", "null", "15", "null", "16", "null", "17", "null", "18", "null", "19", "null", "20", "null", "21", "null", "22", "null", "23", "null", "24", "null", "25", "null", "26", "null", "27", "null", "28", "null", "29", "null", "30", "null", "31", "null", "32", "null", "33", "null", "34", "null", "35", "null", "36", "null", "37", "null", "38", "null", "39", "null", "40", "null", "41", "null", "42", "null", "43", "null", "44", "null", "45", "null", "46", "null", "47", "null", "48", "null", "49", "null", "50", "null", "51", "null", "52", "null", "53", "null", "54", "null", "55", "null", "56", "null", "57", "null", "58", "null", "59", "null", "60", "null", "61", "null", "62", "null", "63", "null", "64", "null", "65", "null", "66", "null", "67", "null", "68", "null", "69", "null", "70", "null", "71", "null", "72", "null", "73", "null", "74", "null", "75", "null", "76", "null", "77", "null", "78", "null", "79", "null", "80", "null", "81", "null", "82", "null", "83", "null", "84", "null", "85", "null", "86", "null", "87", "null", "88", "null", "89", "null", "90", "null", "91", "null", "92", "null", "93", "null", "94", "null", "95", "null", "96", "null", "97", "null", "98", "null", "99", "null", "100", "null", "101", "null", "102", "null", "103", "null", "104", "null", "105", "null", "106", "null", "107", "null", "108", "null", "109", "null", "110", "null", "111", "null", "112", "null", "113", "null", "114", "null", "115", "null", "116", "null", "117", "null", "118", "null", "119", "null", "120", "null", "121", "null", "122", "null", "123", "null", "124", "null", "125", "null", "126", "null", "127", "null", "128", "null", "129", "null", "130", "null", "131", "null", "132", "null", "133", "null", "134", "null", "135", "null", "136", "null", "137", "null", "138", "null", "139", "null", "140", "null", "141", "null", "142", "null", "143", "null", "144", "null", "145", "null", "146", "null", "147", "null", "148", "null", "149", "null", "150", "null", "151", "null", "152", "null", "153", "null", "154", "null", "155", "null", "156", "null", "157", "null", "158", "null", "159", "null", "160", "null", "161", "null", "162", "null", "163", "null", "164", "null", "165", "null", "166", "null", "167", "null", "168", "null", "169", "null", "170", "null", "171", "null", "172", "null", "173", "null", "174", "null", "175", "null", "176", "null", "177", "null", "178", "null", "179", "null", "180", "null", "181", "null", "182", "null", "183", "null", "184", "null", "185", "null", "186", "null", "187", "null", "188", "null", "189", "null", "190", "null", "191", "null", "192", "null", "193", "null", "194", "null", "195", "null", "196", "null", "197", "null", "198", "null", "199", "null", "200", "null", "201", "null", "202", "null", "203", "null", "204", "null", "205", "null", "206", "null", "207", "null", "208", "null", "209", "null", "210", "null", "211", "null", "212", "null", "213", "null", "214", "null", "215", "null", "216", "null", "217", "null", "218", "null", "219", "null", "220", "null", "221", "null", "222", "null", "223", "null", "224", "null", "225", "null", "226", "null", "227", "null", "228", "null", "229", "null", "230", "null", "231", "null", "232", "null", "233", "null", "234", "null", "235", "null", "236", "null", "237", "null", "238", "null", "239", "null", "240", "null", "241", "null", "242", "null", "243", "null", "244", "null", "245", "null", "246", "null", "247", "null", "248", "null", "249", "null", "250", "null", "251", "null", "252", "null", "253", "null", "254", "null", "255", "null", "256", "null", "257", "null", "258", "null", "259", "null", "260", "null", "261", "null", "262", "null", "263", "null", "264", "null", "265", "null", "266", "null", "267", "null", "268", "null", "269", "null", "270", "null", "271", "null", "272", "null", "273", "null", "274", "null", "275", "null", "276", "null", "277", "null", "278", "null", "279", "null", "280", "null", "281", "null", "282", "null", "283", "null", "284", "null", "285", "null", "286", "null", "287", "null", "288", "null", "289", "null", "290", "null", "291", "null", "292", "null", "293", "null", "294", "null", "295", "null", "296", "null", "297", "null", "298", "null", "299", "null", "300", "null", "301", "null", "302", "null", "303", "null", "304", "null", "305", "null", "306", "null", "307", "null", "308", "null", "309", "null", "310", "null", "311", "null", "312", "null", "313", "null", "314", "null", "315", "null", "316", "null", "317", "null", "318", "null", "319", "null", "320", "null", "321", "null", "322", "null", "323", "null", "324", "null", "325", "null", "326", "null", "327", "null", "328", "null", "329", "null", "330", "null", "331", "null", "332", "null", "333", "null", "334", "null", "335", "null", "336", "null", "337", "null", "338", "null", "339", "null", "340", "null", "341", "null", "342", "null", "343", "null", "344", "null", "345", "null", "346", "null", "347", "null", "348", "null", "349", "null", "350", "null", "351", "null", "352", "null", "353", "null", "354", "null", "355", "null", "356", "null", "357", "null", "358", "null", "359", "null", "360", "null", "361", "null", "362", "null", "363", "null", "364", "null", "365", "null", "366", "null", "367", "null", "368", "null", "369", "null", "370", "null", "371", "null", "372", "null", "373", "null", "374", "null", "375", "null", "376", "null", "377", "null", "378", "null", "379", "null", "380", "null", "381", "null", "382", "null", "383", "null", "384", "null", "385", "null", "386", "null", "387", "null", "388", "null", "389", "null", "390", "null", "391", "null", "392", "null", "393", "null", "394", "null", "395", "null", "396", "null", "397", "null", "398", "null", "399", "null", "400", "null", "401", "null", "402", "null", "403", "null", "404", "null", "405", "null", "406", "null", "407", "null", "408", "null", "409", "null", "410", "null", "411", "null", "412", "null", "413", "null", "414", "null", "415", "null", "416", "null", "417", "null", "418", "null", "419", "null", "420", "null", "421", "null", "422", "null", "423", "null", "424", "null", "425", "null", "426", "null", "427", "null", "428", "null", "429", "null", "430", "null", "431", "null", "432", "null", "433", "null", "434", "null", "435", "null", "436", "null", "437", "null", "438", "null", "439", "null", "440", "null", "441", "null", "442", "null", "443", "null", "444", "null", "445", "null", "446", "null", "447", "null", "448", "null", "449", "null", "450", "null", "451", "null", "452", "null", "453", "null", "454", "null", "455", "null", "456", "null", "457", "null", "458", "null", "459", "null", "460", "null", "461", "null", "462", "null", "463", "null", "464", "null", "465", "null", "466", "null", "467", "null", "468", "null", "469", "null", "470", "null", "471", "null", "472", "null", "473", "null", "474", "null", "475", "null", "476", "null", "477", "null", "478", "null", "479", "null", "480", "null", "481", "null", "482", "null", "483", "null", "484", "null", "485", "null", "486", "null", "487", "null", "488", "null", "489", "null", "490", "null", "491", "null", "492", "null", "493", "null", "494", "null", "495", "null", "496", "null", "497", "null", "498", "null", "499", "null", "500", "null", "501", "null", "502", "null", "503", "null", "504", "null", "505", "null", "506", "null", "507", "null", "508", "null", "509", "null", "510", "null", "511", "null", "512", "null", "513", "null", "514", "null", "515", "null", "516", "null", "517", "null", "518", "null", "519", "null", "520", "null", "521", "null", "522", "null", "523", "null", "524", "null", "525", "null", "526", "null", "527", "null", "528", "null", "529", "null", "530", "null", "531", "null", "532", "null", "533", "null", "534", "null", "535", "null", "536", "null", "537", "null", "538", "null", "539", "null", "540", "null", "541", "null", "542", "null", "543", "null", "544", "null", "545", "null", "546", "null", "547", "null", "548", "null", "549", "null", "550", "null", "551", "null", "552", "null", "553", "null", "554", "null", "555", "null", "556", "null", "557", "null", "558", "null", "559", "null", "560", "null", "561", "null", "562", "null", "563", "null", "564", "null", "565", "null", "566", "null", "567", "null", "568", "null", "569", "null", "570", "null", "571", "null", "572", "null", "573", "null", "574", "null", "575", "null", "576", "null", "577", "null", "578", "null", "579", "null", "580", "null", "581", "null", "582", "null", "583", "null", "584", "null", "585", "null", "586", "null", "587", "null", "588", "null", "589", "null", "590", "null", "591", "null", "592", "null", "593", "null", "594", "null", "595", "null", "596", "null", "597", "null", "598", "null", "599", "null", "600", "null", "601", "null", "602", "null", "603", "null", "604", "null", "605", "null", "606", "null", "607", "null", "608", "null", "609", "null", "610", "null", "611", "null", "612", "null", "613", "null", "614", "null", "615", "null", "616", "null", "617", "null", "618", "null", "619", "null", "620", "null", "621", "null", "622", "null", "623", "null", "624", "null", "625", "null", "626", "null", "627", "null", "628", "null", "629", "null", "630", "null", "631", "null", "632", "null", "633", "null", "634", "null", "635", "null", "636", "null", "637", "null", "638", "null", "639", "null", "640", "null", "641", "null", "642", "null", "643", "null", "644", "null", "645", "null", "646", "null", "647", "null", "648", "null", "649", "null", "650", "null", "651", "null", "652", "null", "653", "null", "654", "null", "655", "null", "656", "null", "657", "null", "658", "null", "659", "null", "660", "null", "661", "null", "662", "null", "663", "null", "664", "null", "665", "null", "666", "null", "667", "null", "668", "null", "669", "null", "670", "null", "671", "null", "672", "null", "673", "null", "674", "null", "675", "null", "676", "null", "677", "null", "678", "null", "679", "null", "680", "null", "681", "null", "682", "null", "683", "null", "684", "null", "685", "null", "686", "null", "687", "null", "688", "null", "689", "null", "690", "null", "691", "null", "692", "null", "693", "null", "694", "null", "695", "null", "696", "null", "697", "null", "698", "null", "699", "null", "700", "null", "701", "null", "702", "null", "703", "null", "704", "null", "705", "null", "706", "null", "707", "null", "708", "null", "709", "null", "710", "null", "711", "null", "712", "null", "713", "null", "714", "null", "715", "null", "716", "null", "717", "null", "718", "null", "719", "null", "720", "null", "721", "null", "722", "null", "723", "null", "724", "null", "725", "null", "726", "null", "727", "null", "728", "null", "729", "null", "730", "null", "731", "null", "732", "null", "733", "null", "734", "null", "735", "null", "736", "null", "737", "null", "738", "null", "739", "null", "740", "null", "741", "null", "742", "null", "743", "null", "744", "null", "745", "null", "746", "null", "747", "null", "748", "null", "749", "null", "750", "null", "751", "null", "752", "null", "753", "null", "754", "null", "755", "null", "756", "null", "757", "null", "758", "null", "759", "null", "760", "null", "761", "null", "762", "null", "763", "null", "764", "null", "765", "null", "766", "null", "767", "null", "768", "null", "769", "null", "770", "null", "771", "null", "772", "null", "773", "null", "774", "null", "775", "null", "776", "null", "777", "null", "778", "null", "779", "null", "780", "null", "781", "null", "782", "null", "783", "null", "784", "null", "785", "null", "786", "null", "787", "null", "788", "null", "789", "null", "790", "null", "791", "null", "792", "null", "793", "null", "794", "null", "795", "null", "796", "null", "797", "null", "798", "null", "799", "null", "800", "null", "801", "null", "802", "null", "803", "null", "804", "null", "805", "null", "806", "null", "807", "null", "808", "null", "809", "null", "810", "null", "811", "null", "812", "null", "813", "null", "814", "null", "815", "null", "816", "null", "817", "null", "818", "null", "819", "null", "820", "null", "821", "null", "822", "null", "823", "null", "824", "null", "825", "null", "826", "null", "827", "null", "828", "null", "829", "null", "830", "null", "831", "null", "832", "null", "833", "null", "834", "null", "835", "null", "836", "null", "837", "null", "838", "null", "839", "null", "840", "null", "841", "null", "842", "null", "843", "null", "844", "null", "845", "null", "846", "null", "847", "null", "848", "null", "849", "null", "850", "null", "851", "null", "852", "null", "853", "null", "854", "null", "855", "null", "856", "null", "857", "null", "858", "null", "859", "null", "860", "null", "861", "null", "862", "null", "863", "null", "864", "null", "865", "null", "866", "null", "867", "null", "868", "null", "869", "null", "870", "null", "871", "null", "872", "null", "873", "null", "874", "null", "875", "null", "876", "null", "877", "null", "878", "null", "879", "null", "880", "null", "881", "null", "882", "null", "883", "null", "884", "null", "885", "null", "886", "null", "887", "null", "888", "null", "889", "null", "890", "null", "891", "null", "892", "null", "893", "null", "894", "null", "895", "null", "896", "null", "897", "null", "898", "null", "899", "null", "900", "null", "901", "null", "902", "null", "903", "null", "904", "null", "905", "null", "906", "null", "907", "null", "908", "null", "909", "null", "910", "null", "911", "null", "912", "null", "913", "null", "914", "null", "915", "null", "916", "null", "917", "null", "918", "null", "919", "null", "920", "null", "921", "null", "922", "null", "923", "null", "924", "null", "925", "null", "926", "null", "927", "null", "928", "null", "929", "null", "930", "null", "931", "null", "932", "null", "933", "null", "934", "null", "935", "null", "936", "null", "937", "null", "938", "null", "939", "null", "940", "null", "941", "null", "942", "null", "943", "null", "944", "null", "945", "null", "946", "null", "947", "null", "948", "null", "949", "null", "950", "null", "951", "null", "952", "null", "953", "null", "954", "null", "955", "null", "956", "null", "957", "null", "958", "null", "959", "null", "960", "null", "961", "null", "962", "null", "963", "null", "964", "null", "965", "null", "966", "null", "967", "null", "968", "null", "969", "null", "970", "null", "971", "null", "972", "null", "973", "null", "974", "null", "975", "null", "976", "null", "977", "null", "978", "null", "979", "null", "980", "null", "981", "null", "982", "null", "983", "null", "984", "null", "985", "null", "986", "null", "987", "null", "988", "null", "989", "null", "990", "null", "991", "null", "992", "null", "993", "null", "994", "null", "995", "null", "996", "null", "997", "null", "998", "null", "999", "null", "1000", "null", "1001", "null", "1002", "null", "1003", "null", "1004", "null", "1005", "null", "1006", "null", "1007", "null", "1008", "null", "1009", "null", "1010", "null", "1011", "null", "1012", "null", "1013", "null", "1014", "null", "1015", "null", "1016", "null", "1017", "null", "1018", "null", "1019", "null", "1020", "null", "1021", "null", "1022", "null", "1023", "null", "1024", "null", "1025", "null", "1026", "null", "1027", "null", "1028", "null", "1029", "null", "1030", "null", "1031", "null", "1032", "null", "1033", "null", "1034", "null", "1035", "null", "1036", "null", "1037", "null", "1038", "null", "1039", "null", "1040", "null", "1041", "null", "1042", "null", "1043", "null", "1044", "null", "1045", "null", "1046", "null", "1047", "null", "1048", "null", "1049", "null", "1050", "null", "1051", "null", "1052", "null", "1053", "null", "1054", "null", "1055", "null", "1056", "null", "1057", "null", "1058", "null", "1059", "null", "1060", "null", "1061", "null", "1062", "null", "1063", "null", "1064", "null", "1065", "null", "1066", "null", "1067", "null", "1068", "null", "1069", "null", "1070", "null", "1071", "null", "1072", "null", "1073", "null", "1074", "null", "1075", "null", "1076", "null", "1077", "null", "1078", "null", "1079", "null", "1080", "null", "1081", "null", "1082", "null", "1083", "null", "1084", "null", "1085", "null", "1086", "null", "1087", "null", "1088", "null", "1089", "null", "1090", "null", "1091", "null", "1092", "null", "1093", "null", "1094", "null", "1095", "null", "1096", "null", "1097", "null", "1098", "null", "1099", "null", "1100", "null", "1101", "null", "1102", "null", "1103", "null", "1104", "null", "1105", "null", "1106", "null", "1107", "null", "1108", "null", "1109", "null", "1110", "null", "1111", "null", "1112", "null", "1113", "null", "1114", "null", "1115", "null", "1116", "null", "1117", "null", "1118", "null", "1119", "null", "1120", "null", "1121", "null", "1122", "null", "1123", "null", "1124", "null", "1125", "null", "1126", "null", "1127", "null", "1128", "null", "1129", "null", "1130", "null", "1131", "null", "1132", "null", "1133", "null", "1134", "null", "1135", "null", "1136", "null", "1137", "null", "1138", "null", "1139", "null", "1140", "null", "1141", "null", "1142", "null", "1143", "null", "1144", "null", "1145", "null", "1146", "null", "1147", "null", "1148", "null", "1149", "null", "1150", "null", "1151", "null", "1152", "null", "1153", "null", "1154", "null", "1155", "null", "1156", "null", "1157", "null", "1158", "null", "1159", "null", "1160", "null", "1161", "null", "1162", "null", "1163", "null", "1164", "null", "1165", "null", "1166", "null", "1167", "null", "1168", "null", "1169", "null", "1170", "null", "1171", "null", "1172", "null", "1173", "null", "1174", "null", "1175", "null", "1176", "null", "1177", "null", "1178", "null", "1179", "null", "1180", "null", "1181", "null", "1182", "null", "1183", "null", "1184", "null", "1185", "null", "1186", "null", "1187", "null", "1188", "null", "1189", "null", "1190", "null", "1191", "null", "1192", "null", "1193", "null", "1194", "null", "1195", "null", "1196", "null", "1197", "null", "1198", "null", "1199", "null", "1200", "null", "1201", "null", "1202", "null", "1203", "null", "1204", "null", "1205", "null", "1206", "null", "1207", "null", "1208", "null", "1209", "null", "1210", "null", "1211", "null", "1212", "null", "1213", "null", "1214", "null", "1215", "null", "1216", "null", "1217", "null", "1218", "null", "1219", "null", "1220", "null", "1221", "null", "1222", "null", "1223", "null", "1224", "null", "1225", "null", "1226", "null", "1227", "null", "1228", "null", "1229", "null", "1230", "null", "1231", "null", "1232", "null", "1233", "null", "1234", "null", "1235", "null", "1236", "null", "1237", "null", "1238", "null", "1239", "null", "1240", "null", "1241", "null", "1242", "null", "1243", "null", "1244", "null", "1245", "null", "1246", "null", "1247", "null", "1248", "null", "1249", "null", "1250", "null", "1251", "null", "1252", "null", "1253", "null", "1254", "null", "1255", "null", "1256", "null", "1257", "null", "1258", "null", "1259", "null", "1260", "null", "1261", "null", "1262", "null", "1263", "null", "1264", "null", "1265", "null", "1266", "null", "1267", "null", "1268", "null", "1269", "null", "1270", "null", "1271", "null", "1272", "null", "1273", "null", "1274", "null", "1275", "null", "1276", "null", "1277", "null", "1278", "null", "1279", "null", "1280", "null", "1281", "null", "1282", "null", "1283", "null", "1284", "null", "1285", "null", "1286", "null", "1287", "null", "1288", "null", "1289", "null", "1290", "null", "1291", "null", "1292", "null", "1293", "null", "1294", "null", "1295", "null", "1296", "null", "1297", "null", "1298", "null", "1299", "null", "1300", "null", "1301", "null", "1302", "null", "1303", "null", "1304", "null", "1305", "null", "1306", "null", "1307", "null", "1308", "null", "1309", "null", "1310", "null", "1311", "null", "1312", "null", "1313", "null", "1314", "null", "1315", "null", "1316", "null", "1317", "null", "1318", "null", "1319", "null", "1320", "null", "1321", "null", "1322", "null", "1323", "null", "1324", "null", "1325", "null", "1326", "null", "1327", "null", "1328", "null", "1329", "null", "1330", "null", "1331", "null", "1332", "null", "1333", "null", "1334", "null", "1335", "null", "1336", "null", "1337", "null", "1338", "null", "1339", "null", "1340", "null", "1341", "null", "1342", "null", "1343", "null", "1344", "null", "1345", "null", "1346", "null", "1347", "null", "1348", "null", "1349", "null", "1350", "null", "1351", "null", "1352", "null", "1353", "null", "1354", "null", "1355", "null", "1356", "null", "1357", "null", "1358", "null", "1359", "null", "1360", "null", "1361", "null", "1362", "null", "1363", "null", "1364", "null", "1365", "null", "1366", "null", "1367", "null", "1368", "null", "1369", "null", "1370", "null", "1371", "null", "1372", "null", "1373", "null", "1374", "null", "1375", "null", "1376", "null", "1377", "null", "1378", "null", "1379", "null", "1380", "null", "1381", "null", "1382", "null", "1383", "null", "1384", "null", "1385", "null", "1386", "null", "1387", "null", "1388", "null", "1389", "null", "1390", "null", "1391", "null", "1392", "null", "1393", "null", "1394", "null", "1395", "null", "1396", "null", "1397", "null", "1398", "null", "1399", "null", "1400", "null", "1401", "null", "1402", "null", "1403", "null", "1404", "null", "1405", "null", "1406", "null", "1407", "null", "1408", "null", "1409", "null", "1410", "null", "1411", "null", "1412", "null", "1413", "null", "1414", "null", "1415", "null", "1416", "null", "1417", "null", "1418", "null", "1419", "null", "1420", "null", "1421", "null", "1422", "null", "1423", "null", "1424", "null", "1425", "null", "1426", "null", "1427", "null", "1428", "null", "1429", "null", "1430", "null", "1431", "null", "1432", "null", "1433", "null", "1434", "null", "1435", "null", "1436", "null", "1437", "null", "1438", "null", "1439", "null", "1440", "null", "1441", "null", "1442", "null", "1443", "null", "1444", "null", "1445", "null", "1446", "null", "1447", "null", "1448", "null", "1449", "null", "1450", "null", "1451", "null", "1452", "null", "1453", "null", "1454", "null", "1455", "null", "1456", "null", "1457", "null", "1458", "null", "1459", "null", "1460", "null", "1461", "null", "1462", "null", "1463", "null", "1464", "null", "1465", "null", "1466", "null", "1467", "null", "1468", "null", "1469", "null", "1470", "null", "1471", "null", "1472", "null", "1473", "null", "1474", "null", "1475", "null", "1476", "null", "1477", "null", "1478", "null", "1479", "null", "1480", "null", "1481", "null", "1482", "null", "1483", "null", "1484", "null", "1485", "null", "1486", "null", "1487", "null", "1488", "null", "1489", "null", "1490", "null", "1491", "null", "1492", "null", "1493", "null", "1494", "null", "1495", "null", "1496", "null", "1497", "null", "1498", "null", "1499", "null", "1500", "null", "1501", "null", "1502", "null", "1503", "null", "1504", "null", "1505", "null", "1506", "null", "1507", "null", "1508", "null", "1509", "null", "1510", "null", "1511", "null", "1512", "null", "1513", "null", "1514", "null", "1515", "null", "1516", "null", "1517", "null", "1518", "null", "1519", "null", "1520", "null", "1521", "null", "1522", "null", "1523", "null", "1524", "null", "1525", "null", "1526", "null", "1527", "null", "1528", "null", "1529", "null", "1530", "null", "1531", "null", "1532", "null", "1533", "null", "1534", "null", "1535", "null", "1536", "null", "1537", "null", "1538", "null", "1539", "null", "1540", "null", "1541", "null", "1542", "null", "1543", "null", "1544", "null", "1545", "null", "1546", "null", "1547", "null", "1548", "null", "1549", "null", "1550", "null", "1551", "null", "1552", "null", "1553", "null", "1554", "null", "1555", "null", "1556", "null", "1557", "null", "1558", "null", "1559", "null", "1560", "null", "1561", "null", "1562", "null", "1563", "null", "1564", "null", "1565", "null", "1566", "null", "1567", "null", "1568", "null", "1569", "null", "1570", "null", "1571", "null", "1572", "null", "1573", "null", "1574", "null", "1575", "null", "1576", "null", "1577", "null", "1578", "null", "1579", "null", "1580", "null", "1581", "null", "1582", "null", "1583", "null", "1584", "null", "1585", "null", "1586", "null", "1587", "null", "1588", "null", "1589", "null", "1590", "null", "1591", "null", "1592", "null", "1593", "null", "1594", "null", "1595", "null", "1596", "null", "1597", "null", "1598", "null", "1599", "null", "1600", "null", "1601", "null", "1602", "null", "1603", "null", "1604", "null", "1605", "null", "1606", "null", "1607", "null", "1608", "null", "1609", "null", "1610", "null", "1611", "null", "1612", "null", "1613", "null", "1614", "null", "1615", "null", "1616", "null", "1617", "null", "1618", "null", "1619", "null", "1620", "null", "1621", "null", "1622", "null", "1623", "null", "1624", "null", "1625", "null", "1626", "null", "1627", "null", "1628", "null", "1629", "null", "1630", "null", "1631", "null", "1632", "null", "1633", "null", "1634", "null", "1635", "null", "1636", "null", "1637", "null", "1638", "null", "1639", "null", "1640", "null", "1641", "null", "1642", "null", "1643", "null", "1644", "null", "1645", "null", "1646", "null", "1647", "null", "1648", "null", "1649", "null", "1650", "null", "1651", "null", "1652", "null", "1653", "null", "1654", "null", "1655", "null", "1656", "null", "1657", "null", "1658", "null", "1659", "null", "1660", "null", "1661", "null", "1662", "null", "1663", "null", "1664", "null", "1665", "null", "1666", "null", "1667", "null", "1668", "null", "1669", "null", "1670", "null", "1671", "null", "1672", "null", "1673", "null", "1674", "null", "1675", "null", "1676", "null", "1677", "null", "1678", "null", "1679", "null", "1680", "null", "1681", "null", "1682", "null", "1683", "null", "1684", "null", "1685", "null", "1686", "null", "1687", "null", "1688", "null", "1689", "null", "1690", "null", "1691", "null", "1692", "null", "1693", "null", "1694", "null", "1695", "null", "1696", "null", "1697", "null", "1698", "null", "1699", "null", "1700", "null", "1701", "null", "1702", "null", "1703", "null", "1704", "null", "1705", "null", "1706", "null", "1707", "null", "1708", "null", "1709", "null", "1710", "null", "1711", "null", "1712", "null", "1713", "null", "1714", "null", "1715", "null", "1716", "null", "1717", "null", "1718", "null", "1719", "null", "1720", "null", "1721", "null", "1722", "null", "1723", "null", "1724", "null", "1725", "null", "1726", "null", "1727", "null", "1728", "null", "1729", "null", "1730", "null", "1731", "null", "1732", "null", "1733", "null", "1734", "null", "1735", "null", "1736", "null", "1737", "null", "1738", "null", "1739", "null", "1740", "null", "1741", "null", "1742", "null", "1743", "null", "1744", "null", "1745", "null", "1746", "null", "1747", "null", "1748", "null", "1749", "null", "1750", "null", "1751", "null", "1752", "null", "1753", "null", "1754", "null", "1755", "null", "1756", "null", "1757", "null", "1758", "null", "1759", "null", "1760", "null", "1761", "null", "1762", "null", "1763", "null", "1764", "null", "1765", "null", "1766", "null", "1767", "null", "1768", "null", "1769", "null", "1770", "null", "1771", "null", "1772", "null", "1773", "null", "1774", "null", "1775", "null", "1776", "null", "1777", "null", "1778", "null", "1779", "null", "1780", "null", "1781", "null", "1782", "null", "1783", "null", "1784", "null", "1785", "null", "1786", "null", "1787", "null", "1788", "null", "1789", "null", "1790", "null", "1791", "null", "1792", "null", "1793", "null", "1794", "null", "1795", "null", "1796", "null", "1797", "null", "1798", "null", "1799", "null", "1800", "null", "1801", "null", "1802", "null", "1803", "null", "1804", "null", "1805", "null", "1806", "null", "1807", "null", "1808", "null", "1809", "null", "1810", "null", "1811", "null", "1812", "null", "1813", "null", "1814", "null", "1815", "null", "1816", "null", "1817", "null", "1818", "null", "1819", "null", "1820", "null", "1821", "null", "1822", "null", "1823", "null", "1824", "null", "1825", "null", "1826", "null", "1827", "null", "1828", "null", "1829", "null", "1830", "null", "1831", "null", "1832", "null", "1833", "null", "1834", "null", "1835", "null", "1836", "null", "1837", "null", "1838", "null", "1839", "null", "1840", "null", "1841", "null", "1842", "null", "1843", "null", "1844", "null", "1845", "null", "1846", "null", "1847", "null", "1848", "null", "1849", "null", "1850", "null", "1851", "null", "1852", "null", "1853", "null", "1854", "null", "1855", "null", "1856", "null", "1857", "null", "1858", "null", "1859", "null", "1860", "null", "1861", "null", "1862", "null", "1863", "null", "1864", "null", "1865", "null", "1866", "null", "1867", "null", "1868", "null", "1869", "null", "1870", "null", "1871", "null", "1872", "null", "1873", "null", "1874", "null", "1875", "null", "1876", "null", "1877", "null", "1878", "null", "1879", "null", "1880", "null", "1881", "null", "1882", "null", "1883", "null", "1884", "null", "1885", "null", "1886", "null", "1887", "null", "1888", "null", "1889", "null", "1890", "null", "1891", "null", "1892", "null", "1893", "null", "1894", "null", "1895", "null", "1896", "null", "1897", "null", "1898", "null", "1899", "null", "1900", "null", "1901", "null", "1902", "null", "1903", "null", "1904", "null", "1905", "null", "1906", "null", "1907", "null", "1908", "null", "1909", "null", "1910", "null", "1911", "null", "1912", "null", "1913", "null", "1914", "null", "1915", "null", "1916", "null", "1917", "null", "1918", "null", "1919", "null", "1920", "null", "1921", "null", "1922", "null", "1923", "null", "1924", "null", "1925", "null", "1926", "null", "1927", "null", "1928", "null", "1929", "null", "1930", "null", "1931", "null", "1932", "null", "1933", "null", "1934", "null", "1935", "null", "1936", "null", "1937", "null", "1938", "null", "1939", "null", "1940", "null", "1941", "null", "1942", "null", "1943", "null", "1944", "null", "1945", "null", "1946", "null", "1947", "null", "1948", "null", "1949", "null", "1950", "null", "1951", "null", "1952", "null", "1953", "null", "1954", "null", "1955", "null", "1956", "null", "1957", "null", "1958", "null", "1959", "null", "1960", "null", "1961", "null", "1962", "null", "1963", "null", "1964", "null", "1965", "null", "1966", "null", "1967", "null", "1968", "null", "1969", "null", "1970", "null", "1971", "null", "1972", "null", "1973", "null", "1974", "null", "1975", "null", "1976", "null", "1977", "null", "1978", "null", "1979", "null", "1980", "null", "1981", "null", "1982", "null", "1983", "null", "1984", "null", "1985", "null", "1986", "null", "1987", "null", "1988", "null", "1989", "null", "1990", "null", "1991", "null", "1992", "null", "1993", "null", "1994", "null", "1995", "null", "1996", "null", "1997", "null", "1998", "null", "1999", "null", "2000", "null", "2001", "null", "2002", "null", "2003", "null", "2004", "null", "2005", "null", "2006", "null", "2007", "null", "2008", "null", "2009", "null", "2010", "null", "2011", "null", "2012", "null", "2013", "null", "2014", "null", "2015", "null", "2016", "null", "2017", "null", "2018", "null", "2019", "null", "2020", "null", "2021", "null", "2022", "null", "2023", "null", "2024", "null", "2025", "null", "2026", "null", "2027", "null", "2028", "null", "2029", "null", "2030", "null", "2031", "null", "2032", "null", "2033", "null", "2034", "null", "2035", "null", "2036", "null", "2037", "null", "2038", "null", "2039", "null", "2040", "null", "2041", "null", "2042", "null", "2043", "null", "2044", "null", "2045", "null", "2046", "null", "2047", "null", "2048", "null", "2049", "null", "2050", "null", "2051", "null", "2052", "null", "2053", "null", "2054", "null", "2055", "null", "2056", "null", "2057", "null", "2058", "null", "2059", "null", "2060", "null", "2061", "null", "2062", "null", "2063", "null", "2064", "null", "2065", "null", "2066", "null", "2067", "null", "2068", "null", "2069", "null", "2070", "null", "2071", "null", "2072", "null", "2073", "null", "2074", "null", "2075", "null", "2076", "null", "2077", "null", "2078", "null", "2079", "null", "2080", "null", "2081", "null", "2082", "null", "2083", "null", "2084", "null", "2085", "null", "2086", "null", "2087", "null", "2088", "null", "2089", "null", "2090", "null", "2091", "null", "2092", "null", "2093", "null", "2094", "null", "2095", "null", "2096", "null", "2097", "null", "2098", "null", "2099", "null", "2100", "null", "2101", "null", "2102", "null", "2103", "null", "2104", "null", "2105", "null", "2106", "null", "2107", "null", "2108", "null", "2109", "null", "2110", "null", "2111", "null", "2112", "null", "2113", "null", "2114", "null", "2115", "null", "2116", "null", "2117", "null", "2118", "null", "2119", "null", "2120", "null", "2121", "null", "2122", "null", "2123", "null", "2124", "null", "2125", "null", "2126", "null", "2127", "null", "2128", "null", "2129", "null", "2130", "null", "2131", "null", "2132", "null", "2133", "null", "2134", "null", "2135", "null", "2136", "null", "2137", "null", "2138", "null", "2139", "null", "2140", "null", "2141", "null", "2142", "null", "2143", "null", "2144", "null", "2145", "null", "2146", "null", "2147", "null", "2148", "null", "2149", "null", "2150", "null", "2151", "null", "2152", "null", "2153", "null", "2154", "null", "2155", "null", "2156", "null", "2157", "null", "2158", "null", "2159", "null", "2160", "null", "2161", "null", "2162", "null", "2163", "null", "2164", "null", "2165", "null", "2166", "null", "2167", "null", "2168", "null", "2169", "null", "2170", "null", "2171", "null", "2172", "null", "2173", "null", "2174", "null", "2175", "null", "2176", "null", "2177", "null", "2178", "null", "2179", "null", "2180", "null", "2181", "null", "2182", "null", "2183", "null", "2184", "null", "2185", "null", "2186", "null", "2187", "null", "2188", "null", "2189", "null", "2190", "null", "2191", "null", "2192", "null", "2193", "null", "2194", "null", "2195", "null", "2196", "null", "2197", "null", "2198", "null", "2199", "null", "2200", "null", "2201", "null", "2202", "null", "2203", "null", "2204", "null", "2205", "null", "2206", "null", "2207", "null", "2208", "null", "2209", "null", "2210", "null", "2211", "null", "2212", "null", "2213", "null", "2214", "null", "2215", "null", "2216", "null", "2217", "null", "2218", "null", "2219", "null", "2220", "null", "2221", "null", "2222", "null", "2223", "null", "2224", "null", "2225", "null", "2226", "null", "2227", "null", "2228", "null", "2229", "null", "2230", "null", "2231", "null", "2232", "null", "2233", "null", "2234", "null", "2235", "null", "2236", "null", "2237", "null", "2238", "null", "2239", "null", "2240", "null", "2241", "null", "2242", "null", "2243", "null", "2244", "null", "2245", "null", "2246", "null", "2247", "null", "2248", "null", "2249", "null", "2250", "null", "2251", "null", "2252", "null", "2253", "null", "2254", "null", "2255", "null", "2256", "null", "2257", "null", "2258", "null", "2259", "null", "2260", "null", "2261", "null", "2262", "null", "2263", "null", "2264", "null", "2265", "null", "2266", "null", "2267", "null", "2268", "null", "2269", "null", "2270", "null", "2271", "null", "2272", "null", "2273", "null", "2274", "null", "2275", "null", "2276", "null", "2277", "null", "2278", "null", "2279", "null", "2280", "null", "2281", "null", "2282", "null", "2283", "null", "2284", "null", "2285", "null", "2286", "null", "2287", "null", "2288", "null", "2289", "null", "2290", "null", "2291", "null", "2292", "null", "2293", "null", "2294", "null", "2295", "null", "2296", "null", "2297", "null", "2298", "null", "2299", "null", "2300", "null", "2301", "null", "2302", "null", "2303", "null", "2304", "null", "2305", "null", "2306", "null", "2307", "null", "2308", "null", "2309", "null", "2310", "null", "2311", "null", "2312", "null", "2313", "null", "2314", "null", "2315", "null", "2316", "null", "2317", "null", "2318", "null", "2319", "null", "2320", "null", "2321", "null", "2322", "null", "2323", "null", "2324", "null", "2325", "null", "2326", "null", "2327", "null", "2328", "null", "2329", "null", "2330", "null", "2331", "null", "2332", "null", "2333", "null", "2334", "null", "2335", "null", "2336", "null", "2337", "null", "2338", "null", "2339", "null", "2340", "null", "2341", "null", "2342", "null", "2343", "null", "2344", "null", "2345", "null", "2346", "null", "2347", "null", "2348", "null", "2349", "null", "2350", "null", "2351", "null", "2352", "null", "2353", "null", "2354", "null", "2355", "null", "2356", "null", "2357", "null", "2358", "null", "2359", "null", "2360", "null", "2361", "null", "2362", "null", "2363", "null", "2364", "null", "2365", "null", "2366", "null", "2367", "null", "2368", "null", "2369", "null", "2370", "null", "2371", "null", "2372", "null", "2373", "null", "2374", "null", "2375", "null", "2376", "null", "2377", "null", "2378", "null", "2379", "null", "2380", "null", "2381", "null", "2382", "null", "2383", "null", "2384", "null", "2385", "null", "2386", "null", "2387", "null", "2388", "null", "2389", "null", "2390", "null", "2391", "null", "2392", "null", "2393", "null", "2394", "null", "2395", "null", "2396", "null", "2397", "null", "2398", "null", "2399", "null", "2400", "null", "2401", "null", "2402", "null", "2403", "null", "2404", "null", "2405", "null", "2406", "null", "2407", "null", "2408", "null", "2409", "null", "2410", "null", "2411", "null", "2412", "null", "2413", "null", "2414", "null", "2415", "null", "2416", "null", "2417", "null", "2418", "null", "2419", "null", "2420", "null", "2421", "null", "2422", "null", "2423", "null", "2424", "null", "2425", "null", "2426", "null", "2427", "null", "2428", "null", "2429", "null", "2430", "null", "2431", "null", "2432", "null", "2433", "null", "2434", "null", "2435", "null", "2436", "null", "2437", "null", "2438", "null", "2439", "null", "2440", "null", "2441", "null", "2442", "null", "2443", "null", "2444", "null", "2445", "null", "2446", "null", "2447", "null", "2448", "null", "2449", "null", "2450", "null", "2451", "null", "2452", "null", "2453", "null", "2454", "null", "2455", "null", "2456", "null", "2457", "null", "2458", "null", "2459", "null", "2460", "null", "2461", "null", "2462", "null", "2463", "null", "2464", "null", "2465", "null", "2466", "null", "2467", "null", "2468", "null", "2469", "null", "2470", "null", "2471", "null", "2472", "null", "2473", "null", "2474", "null", "2475", "null", "2476", "null", "2477", "null", "2478", "null", "2479", "null", "2480", "null", "2481", "null", "2482", "null", "2483", "null", "2484", "null", "2485", "null", "2486", "null", "2487", "null", "2488", "null", "2489", "null", "2490", "null", "2491", "null", "2492", "null", "2493", "null", "2494", "null", "2495", "null", "2496", "null", "2497", "null", "2498", "null", "2499", "null", "2500", "null", "2501", "null", "2502", "null", "2503", "null", "2504", "null", "2505", "null", "2506", "null", "2507", "null", "2508", "null", "2509", "null", "2510", "null", "2511", "null", "2512", "null", "2513", "null", "2514", "null", "2515", "null", "2516", "null", "2517", "null", "2518", "null", "2519", "null", "2520", "null", "2521", "null", "2522", "null", "2523", "null", "2524", "null", "2525", "null", "2526", "null", "2527", "null", "2528", "null", "2529", "null", "2530", "null", "2531", "null", "2532", "null", "2533", "null", "2534", "null", "2535", "null", "2536", "null", "2537", "null", "2538", "null", "2539", "null", "2540", "null", "2541", "null", "2542", "null", "2543", "null", "2544", "null", "2545", "null", "2546", "null", "2547", "null", "2548", "null", "2549", "null", "2550", "null", "2551", "null", "2552", "null", "2553", "null", "2554", "null", "2555", "null", "2556", "null", "2557", "null", "2558", "null", "2559", "null", "2560", "null", "2561", "null", "2562", "null", "2563", "null", "2564", "null", "2565", "null", "2566", "null", "2567", "null", "2568", "null", "2569", "null", "2570", "null", "2571", "null", "2572", "null", "2573", "null", "2574", "null", "2575", "null", "2576", "null", "2577", "null", "2578", "null", "2579", "null", "2580", "null", "2581", "null", "2582", "null", "2583", "null", "2584", "null", "2585", "null", "2586", "null", "2587", "null", "2588", "null", "2589", "null", "2590", "null", "2591", "null", "2592", "null", "2593", "null", "2594", "null", "2595", "null", "2596", "null", "2597", "null", "2598", "null", "2599", "null", "2600", "null", "2601", "null", "2602", "null", "2603", "null", "2604", "null", "2605", "null", "2606", "null", "2607", "null", "2608", "null", "2609", "null", "2610", "null", "2611", "null", "2612", "null", "2613", "null", "2614", "null", "2615", "null", "2616", "null", "2617", "null", "2618", "null", "2619", "null", "2620", "null", "2621", "null", "2622", "null", "2623", "null", "2624", "null", "2625", "null", "2626", "null", "2627", "null", "2628", "null", "2629", "null", "2630", "null", "2631", "null", "2632", "null", "2633", "null", "2634", "null", "2635", "null", "2636", "null", "2637", "null", "2638", "null", "2639", "null", "2640", "null", "2641", "null", "2642", "null", "2643", "null", "2644", "null", "2645", "null", "2646", "null", "2647", "null", "2648", "null", "2649", "null", "2650", "null", "2651", "null", "2652", "null", "2653", "null", "2654", "null", "2655", "null", "2656", "null", "2657", "null", "2658", "null", "2659", "null", "2660", "null", "2661", "null", "2662", "null", "2663", "null", "2664", "null", "2665", "null", "2666", "null", "2667", "null", "2668", "null", "2669", "null", "2670", "null", "2671", "null", "2672", "null", "2673", "null", "2674", "null", "2675", "null", "2676", "null", "2677", "null", "2678", "null", "2679", "null", "2680", "null", "2681", "null", "2682", "null", "2683", "null", "2684", "null", "2685", "null", "2686", "null", "2687", "null", "2688", "null", "2689", "null", "2690", "null", "2691", "null", "2692", "null", "2693", "null", "2694", "null", "2695", "null", "2696", "null", "2697", "null", "2698", "null", "2699", "null", "2700", "null", "2701", "null", "2702", "null", "2703", "null", "2704", "null", "2705", "null", "2706", "null", "2707", "null", "2708", "null", "2709", "null", "2710", "null", "2711", "null", "2712", "null", "2713", "null", "2714", "null", "2715", "null", "2716", "null", "2717", "null", "2718", "null", "2719", "null", "2720", "null", "2721", "null", "2722", "null", "2723", "null", "2724", "null", "2725", "null", "2726", "null", "2727", "null", "2728", "null", "2729", "null", "2730", "null", "2731", "null", "2732", "null", "2733", "null", "2734", "null", "2735", "null", "2736", "null", "2737", "null", "2738", "null", "2739", "null", "2740", "null", "2741", "null", "2742", "null", "2743", "null", "2744", "null", "2745", "null", "2746", "null", "2747", "null", "2748", "null", "2749", "null", "2750", "null", "2751", "null", "2752", "null", "2753", "null", "2754", "null", "2755", "null", "2756", "null", "2757", "null", "2758", "null", "2759", "null", "2760", "null", "2761", "null", "2762", "null", "2763", "null", "2764", "null", "2765", "null", "2766", "null", "2767", "null", "2768", "null", "2769", "null", "2770", "null", "2771", "null", "2772", "null", "2773", "null", "2774", "null", "2775", "null", "2776", "null", "2777", "null", "2778", "null", "2779", "null", "2780", "null", "2781", "null", "2782", "null", "2783", "null", "2784", "null", "2785", "null", "2786", "null", "2787", "null", "2788", "null", "2789", "null", "2790", "null", "2791", "null", "2792", "null", "2793", "null", "2794", "null", "2795", "null", "2796", "null", "2797", "null", "2798", "null", "2799", "null", "2800", "null", "2801", "null", "2802", "null", "2803", "null", "2804", "null", "2805", "null", "2806", "null", "2807", "null", "2808", "null", "2809", "null", "2810", "null", "2811", "null", "2812", "null", "2813", "null", "2814", "null", "2815", "null", "2816", "null", "2817", "null", "2818", "null", "2819", "null", "2820", "null", "2821", "null", "2822", "null", "2823", "null", "2824", "null", "2825", "null", "2826", "null", "2827", "null", "2828", "null", "2829", "null", "2830", "null", "2831", "null", "2832", "null", "2833", "null", "2834", "null", "2835", "null", "2836", "null", "2837", "null", "2838", "null", "2839", "null", "2840", "null", "2841", "null", "2842", "null", "2843", "null", "2844", "null", "2845", "null", "2846", "null", "2847", "null", "2848", "null", "2849", "null", "2850", "null", "2851", "null", "2852", "null", "2853", "null", "2854", "null", "2855", "null", "2856", "null", "2857", "null", "2858", "null", "2859", "null", "2860", "null", "2861", "null", "2862", "null", "2863", "null", "2864", "null", "2865", "null", "2866", "null", "2867", "null", "2868", "null", "2869", "null", "2870", "null", "2871", "null", "2872", "null", "2873", "null", "2874", "null", "2875", "null", "2876", "null", "2877", "null", "2878", "null", "2879", "null", "2880", "null", "2881", "null", "2882", "null", "2883", "null", "2884", "null", "2885", "null", "2886", "null", "2887", "null", "2888", "null", "2889", "null", "2890", "null", "2891", "null", "2892", "null", "2893", "null", "2894", "null", "2895", "null", "2896", "null", "2897", "null", "2898", "null", "2899", "null", "2900", "null", "2901", "null", "2902", "null", "2903", "null", "2904", "null", "2905", "null", "2906", "null", "2907", "null", "2908", "null", "2909", "null", "2910", "null", "2911", "null", "2912", "null", "2913", "null", "2914", "null", "2915", "null", "2916", "null", "2917", "null", "2918", "null", "2919", "null", "2920", "null", "2921", "null", "2922", "null", "2923", "null", "2924", "null", "2925", "null", "2926", "null", "2927", "null", "2928", "null", "2929", "null", "2930", "null", "2931", "null", "2932", "null", "2933", "null", "2934", "null", "2935", "null", "2936", "null", "2937", "null", "2938", "null", "2939", "null", "2940", "null", "2941", "null", "2942", "null", "2943", "null", "2944", "null", "2945", "null", "2946", "null", "2947", "null", "2948", "null", "2949", "null", "2950", "null", "2951", "null", "2952", "null", "2953", "null", "2954", "null", "2955", "null", "2956", "null", "2957", "null", "2958", "null", "2959", "null", "2960", "null", "2961", "null", "2962", "null", "2963", "null", "2964", "null", "2965", "null", "2966", "null", "2967", "null", "2968", "null", "2969", "null", "2970", "null", "2971", "null", "2972", "null", "2973", "null", "2974", "null", "2975", "null", "2976", "null", "2977", "null", "2978", "null", "2979", "null", "2980", "null", "2981", "null", "2982", "null", "2983", "null", "2984", "null", "2985", "null", "2986", "null", "2987", "null", "2988", "null", "2989", "null", "2990", "null", "2991", "null", "2992", "null", "2993", "null", "2994", "null", "2995", "null", "2996", "null", "2997", "null", "2998", "null", "2999", "null", "3000", "null", "3001", "null", "3002", "null", "3003", "null", "3004", "null", "3005", "null", "3006", "null", "3007", "null", "3008", "null", "3009", "null", "3010", "null", "3011", "null", "3012", "null", "3013", "null", "3014", "null", "3015", "null", "3016", "null", "3017", "null", "3018", "null", "3019", "null", "3020", "null", "3021", "null", "3022", "null", "3023", "null", "3024", "null", "3025", "null", "3026", "null", "3027", "null", "3028", "null", "3029", "null", "3030", "null", "3031", "null", "3032", "null", "3033", "null", "3034", "null", "3035", "null", "3036", "null", "3037", "null", "3038", "null", "3039", "null", "3040", "null", "3041", "null", "3042", "null", "3043", "null", "3044", "null", "3045", "null", "3046", "null", "3047", "null", "3048", "null", "3049", "null", "3050", "null", "3051", "null", "3052", "null", "3053", "null", "3054", "null", "3055", "null", "3056", "null", "3057", "null", "3058", "null", "3059", "null", "3060", "null", "3061", "null", "3062", "null", "3063", "null", "3064", "null", "3065", "null", "3066", "null", "3067", "null", "3068", "null", "3069", "null", "3070", "null", "3071", "null", "3072", "null", "3073", "null", "3074", "null", "3075", "null", "3076", "null", "3077", "null", "3078", "null", "3079", "null", "3080", "null", "3081", "null", "3082", "null", "3083", "null", "3084", "null", "3085", "null", "3086", "null", "3087", "null", "3088", "null", "3089", "null", "3090", "null", "3091", "null", "3092", "null", "3093", "null", "3094", "null", "3095", "null", "3096", "null", "3097", "null", "3098", "null", "3099", "null", "3100", "null", "3101", "null", "3102", "null", "3103", "null", "3104", "null", "3105", "null", "3106", "null", "3107", "null", "3108", "null", "3109", "null", "3110", "null", "3111", "null", "3112", "null", "3113", "null", "3114", "null", "3115", "null", "3116", "null", "3117", "null", "3118", "null", "3119", "null", "3120", "null", "3121", "null", "3122", "null", "3123", "null", "3124", "null", "3125", "null", "3126", "null", "3127", "null", "3128", "null", "3129", "null", "3130", "null", "3131", "null", "3132", "null", "3133", "null", "3134", "null", "3135", "null", "3136", "null", "3137", "null", "3138", "null", "3139", "null", "3140", "null", "3141", "null", "3142", "null", "3143", "null", "3144", "null", "3145", "null", "3146", "null", "3147", "null", "3148", "null", "3149", "null", "3150", "null", "3151", "null", "3152", "null", "3153", "null", "3154", "null", "3155", "null", "3156", "null", "3157", "null", "3158", "null", "3159", "null", "3160", "null", "3161", "null", "3162", "null", "3163", "null", "3164", "null", "3165", "null", "3166", "null", "3167", "null", "3168", "null", "3169", "null", "3170", "null", "3171", "null", "3172", "null", "3173", "null", "3174", "null", "3175", "null", "3176", "null", "3177", "null", "3178", "null", "3179", "null", "3180", "null", "3181", "null", "3182", "null", "3183", "null", "3184", "null", "3185", "null", "3186", "null", "3187", "null", "3188", "null", "3189", "null", "3190", "null", "3191", "null", "3192", "null", "3193", "null", "3194", "null", "3195", "null", "3196", "null", "3197", "null", "3198", "null", "3199", "null", "3200", "null", "3201", "null", "3202", "null", "3203", "null", "3204", "null", "3205", "null", "3206", "null", "3207", "null", "3208", "null", "3209", "null", "3210", "null", "3211", "null", "3212", "null", "3213", "null", "3214", "null", "3215", "null", "3216", "null", "3217", "null", "3218", "null", "3219", "null", "3220", "null", "3221", "null", "3222", "null", "3223", "null", "3224", "null", "3225", "null", "3226", "null", "3227", "null", "3228", "null", "3229", "null", "3230", "null", "3231", "null", "3232", "null", "3233", "null", "3234", "null", "3235", "null", "3236", "null", "3237", "null", "3238", "null", "3239", "null", "3240", "null", "3241", "null", "3242", "null", "3243", "null", "3244", "null", "3245", "null", "3246", "null", "3247", "null", "3248", "null", "3249", "null", "3250", "null", "3251", "null", "3252", "null", "3253", "null", "3254", "null", "3255", "null", "3256", "null", "3257", "null", "3258", "null", "3259", "null", "3260", "null", "3261", "null", "3262", "null", "3263", "null", "3264", "null", "3265", "null", "3266", "null", "3267", "null", "3268", "null", "3269", "null", "3270", "null", "3271", "null", "3272", "null", "3273", "null", "3274", "null", "3275", "null", "3276", "null", "3277", "null", "3278", "null", "3279", "null", "3280", "null", "3281", "null", "3282", "null", "3283", "null", "3284", "null", "3285", "null", "3286", "null", "3287", "null", "3288", "null", "3289", "null", "3290", "null", "3291", "null", "3292", "null", "3293", "null", "3294", "null", "3295", "null", "3296", "null", "3297", "null", "3298", "null", "3299", "null", "3300", "null", "3301", "null", "3302", "null", "3303", "null", "3304", "null", "3305", "null", "3306", "null", "3307", "null", "3308", "null", "3309", "null", "3310", "null", "3311", "null", "3312", "null", "3313", "null", "3314", "null", "3315", "null", "3316", "null", "3317", "null", "3318", "null", "3319", "null", "3320", "null", "3321", "null", "3322", "null", "3323", "null", "3324", "null", "3325", "null", "3326", "null", "3327", "null", "3328", "null", "3329", "null", "3330", "null", "3331", "null", "3332", "null", "3333", "null", "3334", "null", "3335", "null", "3336", "null", "3337", "null", "3338", "null", "3339", "null", "3340", "null", "3341", "null", "3342", "null", "3343", "null", "3344", "null", "3345", "null", "3346", "null", "3347", "null", "3348", "null", "3349", "null", "3350", "null", "3351", "null", "3352", "null", "3353", "null", "3354", "null", "3355", "null", "3356", "null", "3357", "null", "3358", "null", "3359", "null", "3360", "null", "3361", "null", "3362", "null", "3363", "null", "3364", "null", "3365", "null", "3366", "null", "3367", "null", "3368", "null", "3369", "null", "3370", "null", "3371", "null", "3372", "null", "3373", "null", "3374", "null", "3375", "null", "3376", "null", "3377", "null", "3378", "null", "3379", "null", "3380", "null", "3381", "null", "3382", "null", "3383", "null", "3384", "null", "3385", "null", "3386", "null", "3387", "null", "3388", "null", "3389", "null", "3390", "null", "3391", "null", "3392", "null", "3393", "null", "3394", "null", "3395", "null", "3396", "null", "3397", "null", "3398", "null", "3399", "null", "3400", "null", "3401", "null", "3402", "null", "3403", "null", "3404", "null", "3405", "null", "3406", "null", "3407", "null", "3408", "null", "3409", "null", "3410", "null", "3411", "null", "3412", "null", "3413", "null", "3414", "null", "3415", "null", "3416", "null", "3417", "null", "3418", "null", "3419", "null", "3420", "null", "3421", "null", "3422", "null", "3423", "null", "3424", "null", "3425", "null", "3426", "null", "3427", "null", "3428", "null", "3429", "null", "3430", "null", "3431", "null", "3432", "null", "3433", "null", "3434", "null", "3435", "null", "3436", "null", "3437", "null", "3438", "null", "3439", "null", "3440", "null", "3441", "null", "3442", "null", "3443", "null", "3444", "null", "3445", "null", "3446", "null", "3447", "null", "3448", "null", "3449", "null", "3450", "null", "3451", "null", "3452", "null", "3453", "null", "3454", "null", "3455", "null", "3456", "null", "3457", "null", "3458", "null", "3459", "null", "3460", "null", "3461", "null", "3462", "null", "3463", "null", "3464", "null", "3465", "null", "3466", "null", "3467", "null", "3468", "null", "3469", "null", "3470", "null", "3471", "null", "3472", "null", "3473", "null", "3474", "null", "3475", "null", "3476", "null", "3477", "null", "3478", "null", "3479", "null", "3480", "null", "3481", "null", "3482", "null", "3483", "null", "3484", "null", "3485", "null", "3486", "null", "3487", "null", "3488", "null", "3489", "null", "3490", "null", "3491", "null", "3492", "null", "3493", "null", "3494", "null", "3495", "null", "3496", "null", "3497", "null", "3498", "null", "3499", "null", "3500", "null", "3501", "null", "3502", "null", "3503", "null", "3504", "null", "3505", "null", "3506", "null", "3507", "null", "3508", "null", "3509", "null", "3510", "null", "3511", "null", "3512", "null", "3513", "null", "3514", "null", "3515", "null", "3516", "null", "3517", "null", "3518", "null", "3519", "null", "3520", "null", "3521", "null", "3522", "null", "3523", "null", "3524", "null", "3525", "null", "3526", "null", "3527", "null", "3528", "null", "3529", "null", "3530", "null", "3531", "null", "3532", "null", "3533", "null", "3534", "null", "3535", "null", "3536", "null", "3537", "null", "3538", "null", "3539", "null", "3540", "null", "3541", "null", "3542", "null", "3543", "null", "3544", "null", "3545", "null", "3546", "null", "3547", "null", "3548", "null", "3549", "null", "3550", "null", "3551", "null", "3552", "null", "3553", "null", "3554", "null", "3555", "null", "3556", "null", "3557", "null", "3558", "null", "3559", "null", "3560", "null", "3561", "null", "3562", "null", "3563", "null", "3564", "null", "3565", "null", "3566", "null", "3567", "null", "3568", "null", "3569", "null", "3570", "null", "3571", "null", "3572", "null", "3573", "null", "3574", "null", "3575", "null", "3576", "null", "3577", "null", "3578", "null", "3579", "null", "3580", "null", "3581", "null", "3582", "null", "3583", "null", "3584", "null", "3585", "null", "3586", "null", "3587", "null", "3588", "null", "3589", "null", "3590", "null", "3591", "null", "3592", "null", "3593", "null", "3594", "null", "3595", "null", "3596", "null", "3597", "null", "3598", "null", "3599", "null", "3600", "null", "3601", "null", "3602", "null", "3603", "null", "3604", "null", "3605", "null", "3606", "null", "3607", "null", "3608", "null", "3609", "null", "3610", "null", "3611", "null", "3612", "null", "3613", "null", "3614", "null", "3615", "null", "3616", "null", "3617", "null", "3618", "null", "3619", "null", "3620", "null", "3621", "null", "3622", "null", "3623", "null", "3624", "null", "3625", "null", "3626", "null", "3627", "null", "3628", "null", "3629", "null", "3630", "null", "3631", "null", "3632", "null", "3633", "null", "3634", "null", "3635", "null", "3636", "null", "3637", "null", "3638", "null", "3639", "null", "3640", "null", "3641", "null", "3642", "null", "3643", "null", "3644", "null", "3645", "null", "3646", "null", "3647", "null", "3648", "null", "3649", "null", "3650", "null", "3651", "null", "3652", "null", "3653", "null", "3654", "null", "3655", "null", "3656", "null", "3657", "null", "3658", "null", "3659", "null", "3660", "null", "3661", "null", "3662", "null", "3663", "null", "3664", "null", "3665", "null", "3666", "null", "3667", "null", "3668", "null", "3669", "null", "3670", "null", "3671", "null", "3672", "null", "3673", "null", "3674", "null", "3675", "null", "3676", "null", "3677", "null", "3678", "null", "3679", "null", "3680", "null", "3681", "null", "3682", "null", "3683", "null", "3684", "null", "3685", "null", "3686", "null", "3687", "null", "3688", "null", "3689", "null", "3690", "null", "3691", "null", "3692", "null", "3693", "null", "3694", "null", "3695", "null", "3696", "null", "3697", "null", "3698", "null", "3699", "null", "3700", "null", "3701", "null", "3702", "null", "3703", "null", "3704", "null", "3705", "null", "3706", "null", "3707", "null", "3708", "null", "3709", "null", "3710", "null", "3711", "null", "3712", "null", "3713", "null", "3714", "null", "3715", "null", "3716", "null", "3717", "null", "3718", "null", "3719", "null", "3720", "null", "3721", "null", "3722", "null", "3723", "null", "3724", "null", "3725", "null", "3726", "null", "3727", "null", "3728", "null", "3729", "null", "3730", "null", "3731", "null", "3732", "null", "3733", "null", "3734", "null", "3735", "null", "3736", "null", "3737", "null", "3738", "null", "3739", "null", "3740", "null", "3741", "null", "3742", "null", "3743", "null", "3744", "null", "3745", "null", "3746", "null", "3747", "null", "3748", "null", "3749", "null", "3750", "null", "3751", "null", "3752", "null", "3753", "null", "3754", "null", "3755", "null", "3756", "null", "3757", "null", "3758", "null", "3759", "null", "3760", "null", "3761", "null", "3762", "null", "3763", "null", "3764", "null", "3765", "null", "3766", "null", "3767", "null", "3768", "null", "3769", "null", "3770", "null", "3771", "null", "3772", "null", "3773", "null", "3774", "null", "3775", "null", "3776", "null", "3777", "null", "3778", "null", "3779", "null", "3780", "null", "3781", "null", "3782", "null", "3783", "null", "3784", "null", "3785", "null", "3786", "null", "3787", "null", "3788", "null", "3789", "null", "3790", "null", "3791", "null", "3792", "null", "3793", "null", "3794", "null", "3795", "null", "3796", "null", "3797", "null", "3798", "null", "3799", "null", "3800", "null", "3801", "null", "3802", "null", "3803", "null", "3804", "null", "3805", "null", "3806", "null", "3807", "null", "3808", "null", "3809", "null", "3810", "null", "3811", "null", "3812", "null", "3813", "null", "3814", "null", "3815", "null", "3816", "null", "3817", "null", "3818", "null", "3819", "null", "3820", "null", "3821", "null", "3822", "null", "3823", "null", "3824", "null", "3825", "null", "3826", "null", "3827", "null", "3828", "null", "3829", "null", "3830", "null", "3831", "null", "3832", "null", "3833", "null", "3834", "null", "3835", "null", "3836", "null", "3837", "null", "3838", "null", "3839", "null", "3840", "null", "3841", "null", "3842", "null", "3843", "null", "3844", "null", "3845", "null", "3846", "null", "3847", "null", "3848", "null", "3849", "null", "3850", "null", "3851", "null", "3852", "null", "3853", "null", "3854", "null", "3855", "null", "3856", "null", "3857", "null", "3858", "null", "3859", "null", "3860", "null", "3861", "null", "3862", "null", "3863", "null", "3864", "null", "3865", "null", "3866", "null", "3867", "null", "3868", "null", "3869", "null", "3870", "null", "3871", "null", "3872", "null", "3873", "null", "3874", "null", "3875", "null", "3876", "null", "3877", "null", "3878", "null", "3879", "null", "3880", "null", "3881", "null", "3882", "null", "3883", "null", "3884", "null", "3885", "null", "3886", "null", "3887", "null", "3888", "null", "3889", "null", "3890", "null", "3891", "null", "3892", "null", "3893", "null", "3894", "null", "3895", "null", "3896", "null", "3897", "null", "3898", "null", "3899", "null", "3900", "null", "3901", "null", "3902", "null", "3903", "null", "3904", "null", "3905", "null", "3906", "null", "3907", "null", "3908", "null", "3909", "null", "3910", "null", "3911", "null", "3912", "null", "3913", "null", "3914", "null", "3915", "null", "3916", "null", "3917", "null", "3918", "null", "3919", "null", "3920", "null", "3921", "null", "3922", "null", "3923", "null", "3924", "null", "3925", "null", "3926", "null", "3927", "null", "3928", "null", "3929", "null", "3930", "null", "3931", "null", "3932", "null", "3933", "null", "3934", "null", "3935", "null", "3936", "null", "3937", "null", "3938", "null", "3939", "null", "3940", "null", "3941", "null", "3942", "null", "3943", "null", "3944", "null", "3945", "null", "3946", "null", "3947", "null", "3948", "null", "3949", "null", "3950", "null", "3951", "null", "3952", "null", "3953", "null", "3954", "null", "3955", "null", "3956", "null", "3957", "null", "3958", "null", "3959", "null", "3960", "null", "3961", "null", "3962", "null", "3963", "null", "3964", "null", "3965", "null", "3966", "null", "3967", "null", "3968", "null", "3969", "null", "3970", "null", "3971", "null", "3972", "null", "3973", "null", "3974", "null", "3975", "null", "3976", "null", "3977", "null", "3978", "null", "3979", "null", "3980", "null", "3981", "null", "3982", "null", "3983", "null", "3984", "null", "3985", "null", "3986", "null", "3987", "null", "3988", "null", "3989", "null", "3990", "null", "3991", "null", "3992", "null", "3993", "null", "3994", "null", "3995", "null", "3996", "null", "3997", "null", "3998", "null", "3999", "null", "4000", "null", "4001", "null", "4002", "null", "4003", "null", "4004", "null", "4005", "null", "4006", "null", "4007", "null", "4008", "null", "4009", "null", "4010", "null", "4011", "null", "4012", "null", "4013", "null", "4014", "null", "4015", "null", "4016", "null", "4017", "null", "4018", "null", "4019", "null", "4020", "null", "4021", "null", "4022", "null", "4023", "null", "4024", "null", "4025", "null", "4026", "null", "4027", "null", "4028", "null", "4029", "null", "4030", "null", "4031", "null", "4032", "null", "4033", "null", "4034", "null", "4035", "null", "4036", "null", "4037", "null", "4038", "null", "4039", "null", "4040", "null", "4041", "null", "4042", "null", "4043", "null", "4044", "null", "4045", "null", "4046", "null", "4047", "null", "4048", "null", "4049", "null", "4050", "null", "4051", "null", "4052", "null", "4053", "null", "4054", "null", "4055", "null", "4056", "null", "4057", "null", "4058", "null", "4059", "null", "4060", "null", "4061", "null", "4062", "null", "4063", "null", "4064", "null", "4065", "null", "4066", "null", "4067", "null", "4068", "null", "4069", "null", "4070"] TODO ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", "264", "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276", "277", "278", "279", "280", "281", "282", "283", "284", "285", "286", "287", "288", "289", "290", "291", "292", "293", "294", "295", "296", "297", "298", "299", "300", "301", "302", "303", "304", "305", "306", "307", "308", "309", "310", "311", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "322", "323", "324", "325", "326", "327", "328", "329", "330", "331", "332", "333", "334", "335", "336", "337", "338", "339", "340", "341", "342", "343", "344", "345", "346", "347", "348", "349", "350", "351", "352", "353", "354", "355", "356", "357", "358", "359", "360", "361", "362", "363", "364", "365", "366", "367", "368", "369", "370", "371", "372", "373", "374", "375", "376", "377", "378", "379", "380", "381", "382", "383", "384", "385", "386", "387", "388", "389", "390", "391", "392", "393", "394", "395", "396", "397", "398", "399", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "418", "419", "420", "421", "422", "423", "424", "425", "426", "427", "428", "429", "430", "431", "432", "433", "434", "435", "436", "437", "438", "439", "440", "441", "442", "443", "444", "445", "446", "447", "448", "449", "450", "451", "452", "453", "454", "455", "456", "457", "458", "459", "460", "461", "462", "463", "464", "465", "466", "467", "468", "469", "470", "471", "472", "473", "474", "475", "476", "477", "478", "479", "480", "481", "482", "483", "484", "485", "486", "487", "488", "489", "490", "491", "492", "493", "494", "495", "496", "497", "498", "499", "500", "501", "502", "503", "504", "505", "506", "507", "508", "509", "510", "511", "512", "513", "514", "515", "516", "517", "518", "519", "520", "521", "522", "523", "524", "525", "526", "527", "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538", "539", "540", "541", "542", "543", "544", "545", "546", "547", "548", "549", "550", "551", "552", "553", "554", "555", "556", "557", "558", "559", "560", "561", "562", "563", "564", "565", "566", "567", "568", "569", "570", "571", "572", "573", "574", "575", "576", "577", "578", "579", "580", "581", "582", "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", "594", "595", "596", "597", "598", "599", "600", "601", "602", "603", "604", "605", "606", "607", "608", "609", "610", "611", "612", "613", "614", "615", "616", "617", "618", "619", "620", "621", "622", "623", "624", "625", "626", "627", "628", "629", "630", "631", "632", "633", "634", "635", "636", "637", "638", "639", "640", "641", "642", "643", "644", "645", "646", "647", "648", "649", "650", "651", "652", "653", "654", "655", "656", "657", "658", "659", "660", "661", "662", "663", "664", "665", "666", "667", "668", "669", "670", "671", "672", "673", "674", "675", "676", "677", "678", "679", "680", "681", "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", "693", "694", "695", "696", "697", "698", "699", "700", "701", "702", "703", "704", "705", "706", "707", "708", "709", "710", "711", "712", "713", "714", "715", "716", "717", "718", "719", "720", "721", "722", "723", "724", "725", "726", "727", "728", "729", "730", "731", "732", "733", "734", "735", "736", "737", "738", "739", "740", "741", "742", "743", "744", "745", "746", "747", "748", "749", "750", "751", "752", "753", "754", "755", "756", "757", "758", "759", "760", "761", "762", "763", "764", "765", "766", "767", "768", "769", "770", "771", "772", "773", "774", "775", "776", "777", "778", "779", "780", "781", "782", "783", "784", "785", "786", "787", "788", "789", "790", "791", "792", "793", "794", "795", "796", "797", "798", "799", "800", "801", "802", "803", "804", "805", "806", "807", "808", "809", "810", "811", "812", "813", "814", "815", "816", "817", "818", "819", "820", "821", "822", "823", "824", "825", "826", "827", "828", "829", "830", "831", "832", "833", "834", "835", "836", "837", "838", "839", "840", "841", "842", "843", "844", "845", "846", "847", "848", "849", "850", "851", "852", "853", "854", "855", "856", "857", "858", "859", "860", "861", "862", "863", "864", "865", "866", "867", "868", "869", "870", "871", "872", "873", "874", "875", "876", "877", "878", "879", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889", "890", "891", "892", "893", "894", "895", "896", "897", "898", "899", "900", "901", "902", "903", "904", "905", "906", "907", "908", "909", "910", "911", "912", "913", "914", "915", "916", "917", "918", "919", "920", "921", "922", "923", "924", "925", "926", "927", "928", "929", "930", "931", "932", "933", "934", "935", "936", "937", "938", "939", "940", "941", "942", "943", "944", "945", "946", "947", "948", "949", "950", "951", "952", "953", "954", "955", "956", "957", "958", "959", "960", "961", "962", "963", "964", "965", "966", "967", "968", "969", "970", "971", "972", "973", "974", "975", "976", "977", "978", "979", "980", "981", "982", "983", "984", "985", "986", "987", "988", "989", "990", "991", "992", "993", "994", "995", "996", "997", "998", "999", "1000", "1001", "1002", "1003", "1004", "1005", "1006", "1007", "1008", "1009", "1010", "1011", "1012", "1013", "1014", "1015", "1016", "1017", "1018", "1019", "1020", "1021", "1022", "1023", "1024", "1025", "1026", "1027", "1028", "1029", "1030", "1031", "1032", "1033", "1034", "1035", "1036", "1037", "1038", "1039", "1040", "1041", "1042", "1043", "1044", "1045", "1046", "1047", "1048", "1049", "1050", "1051", "1052", "1053", "1054", "1055", "1056", "1057", "1058", "1059", "1060", "1061", "1062", "1063", "1064", "1065", "1066", "1067", "1068", "1069", "1070", "1071", "1072", "1073", "1074", "1075", "1076", "1077", "1078", "1079", "1080", "1081", "1082", "1083", "1084", "1085", "1086", "1087", "1088", "1089", "1090", "1091", "1092", "1093", "1094", "1095", "1096", "1097", "1098", "1099", "1100", "1101", "1102", "1103", "1104", "1105", "1106", "1107", "1108", "1109", "1110", "1111", "1112", "1113", "1114", "1115", "1116", "1117", "1118", "1119", "1120", "1121", "1122", "1123", "1124", "1125", "1126", "1127", "1128", "1129", "1130", "1131", "1132", "1133", "1134", "1135", "1136", "1137", "1138", "1139", "1140", "1141", "1142", "1143", "1144", "1145", "1146", "1147", "1148", "1149", "1150", "1151", "1152", "1153", "1154", "1155", "1156", "1157", "1158", "1159", "1160", "1161", "1162", "1163", "1164", "1165", "1166", "1167", "1168", "1169", "1170", "1171", "1172", "1173", "1174", "1175", "1176", "1177", "1178", "1179", "1180", "1181", "1182", "1183", "1184", "1185", "1186", "1187", "1188", "1189", "1190", "1191", "1192", "1193", "1194", "1195", "1196", "1197", "1198", "1199", "1200", "1201", "1202", "1203", "1204", "1205", "1206", "1207", "1208", "1209", "1210", "1211", "1212", "1213", "1214", "1215", "1216", "1217", "1218", "1219", "1220", "1221", "1222", "1223", "1224", "1225", "1226", "1227", "1228", "1229", "1230", "1231", "1232", "1233", "1234", "1235", "1236", "1237", "1238", "1239", "1240", "1241", "1242", "1243", "1244", "1245", "1246", "1247", "1248", "1249", "1250", "1251", "1252", "1253", "1254", "1255", "1256", "1257", "1258", "1259", "1260", "1261", "1262", "1263", "1264", "1265", "1266", "1267", "1268", "1269", "1270", "1271", "1272", "1273", "1274", "1275", "1276", "1277", "1278", "1279", "1280", "1281", "1282", "1283", "1284", "1285", "1286", "1287", "1288", "1289", "1290", "1291", "1292", "1293", "1294", "1295", "1296", "1297", "1298", "1299", "1300", "1301", "1302", "1303", "1304", "1305", "1306", "1307", "1308", "1309", "1310", "1311", "1312", "1313", "1314", "1315", "1316", "1317", "1318", "1319", "1320", "1321", "1322", "1323", "1324", "1325", "1326", "1327", "1328", "1329", "1330", "1331", "1332", "1333", "1334", "1335", "1336", "1337", "1338", "1339", "1340", "1341", "1342", "1343", "1344", "1345", "1346", "1347", "1348", "1349", "1350", "1351", "1352", "1353", "1354", "1355", "1356", "1357", "1358", "1359", "1360", "1361", "1362", "1363", "1364", "1365", "1366", "1367", "1368", "1369", "1370", "1371", "1372", "1373", "1374", "1375", "1376", "1377", "1378", "1379", "1380", "1381", "1382", "1383", "1384", "1385", "1386", "1387", "1388", "1389", "1390", "1391", "1392", "1393", "1394", "1395", "1396", "1397", "1398", "1399", "1400", "1401", "1402", "1403", "1404", "1405", "1406", "1407", "1408", "1409", "1410", "1411", "1412", "1413", "1414", "1415", "1416", "1417", "1418", "1419", "1420", "1421", "1422", "1423", "1424", "1425", "1426", "1427", "1428", "1429", "1430", "1431", "1432", "1433", "1434", "1435", "1436", "1437", "1438", "1439", "1440", "1441", "1442", "1443", "1444", "1445", "1446", "1447", "1448", "1449", "1450", "1451", "1452", "1453", "1454", "1455", "1456", "1457", "1458", "1459", "1460", "1461", "1462", "1463", "1464", "1465", "1466", "1467", "1468", "1469", "1470", "1471", "1472", "1473", "1474", "1475", "1476", "1477", "1478", "1479", "1480", "1481", "1482", "1483", "1484", "1485", "1486", "1487", "1488", "1489", "1490", "1491", "1492", "1493", "1494", "1495", "1496", "1497", "1498", "1499", "1500", "1501", "1502", "1503", "1504", "1505", "1506", "1507", "1508", "1509", "1510", "1511", "1512", "1513", "1514", "1515", "1516", "1517", "1518", "1519", "1520", "1521", "1522", "1523", "1524", "1525", "1526", "1527", "1528", "1529", "1530", "1531", "1532", "1533", "1534", "1535", "1536", "1537", "1538", "1539", "1540", "1541", "1542", "1543", "1544", "1545", "1546", "1547", "1548", "1549", "1550", "1551", "1552", "1553", "1554", "1555", "1556", "1557", "1558", "1559", "1560", "1561", "1562", "1563", "1564", "1565", "1566", "1567", "1568", "1569", "1570", "1571", "1572", "1573", "1574", "1575", "1576", "1577", "1578", "1579", "1580", "1581", "1582", "1583", "1584", "1585", "1586", "1587", "1588", "1589", "1590", "1591", "1592", "1593", "1594", "1595", "1596", "1597", "1598", "1599", "1600", "1601", "1602", "1603", "1604", "1605", "1606", "1607", "1608", "1609", "1610", "1611", "1612", "1613", "1614", "1615", "1616", "1617", "1618", "1619", "1620", "1621", "1622", "1623", "1624", "1625", "1626", "1627", "1628", "1629", "1630", "1631", "1632", "1633", "1634", "1635", "1636", "1637", "1638", "1639", "1640", "1641", "1642", "1643", "1644", "1645", "1646", "1647", "1648", "1649", "1650", "1651", "1652", "1653", "1654", "1655", "1656", "1657", "1658", "1659", "1660", "1661", "1662", "1663", "1664", "1665", "1666", "1667", "1668", "1669", "1670", "1671", "1672", "1673", "1674", "1675", "1676", "1677", "1678", "1679", "1680", "1681", "1682", "1683", "1684", "1685", "1686", "1687", "1688", "1689", "1690", "1691", "1692", "1693", "1694", "1695", "1696", "1697", "1698", "1699", "1700", "1701", "1702", "1703", "1704", "1705", "1706", "1707", "1708", "1709", "1710", "1711", "1712", "1713", "1714", "1715", "1716", "1717", "1718", "1719", "1720", "1721", "1722", "1723", "1724", "1725", "1726", "1727", "1728", "1729", "1730", "1731", "1732", "1733", "1734", "1735", "1736", "1737", "1738", "1739", "1740", "1741", "1742", "1743", "1744", "1745", "1746", "1747", "1748", "1749", "1750", "1751", "1752", "1753", "1754", "1755", "1756", "1757", "1758", "1759", "1760", "1761", "1762", "1763", "1764", "1765", "1766", "1767", "1768", "1769", "1770", "1771", "1772", "1773", "1774", "1775", "1776", "1777", "1778", "1779", "1780", "1781", "1782", "1783", "1784", "1785", "1786", "1787", "1788", "1789", "1790", "1791", "1792", "1793", "1794", "1795", "1796", "1797", "1798", "1799", "1800", "1801", "1802", "1803", "1804", "1805", "1806", "1807", "1808", "1809", "1810", "1811", "1812", "1813", "1814", "1815", "1816", "1817", "1818", "1819", "1820", "1821", "1822", "1823", "1824", "1825", "1826", "1827", "1828", "1829", "1830", "1831", "1832", "1833", "1834", "1835", "1836", "1837", "1838", "1839", "1840", "1841", "1842", "1843", "1844", "1845", "1846", "1847", "1848", "1849", "1850", "1851", "1852", "1853", "1854", "1855", "1856", "1857", "1858", "1859", "1860", "1861", "1862", "1863", "1864", "1865", "1866", "1867", "1868", "1869", "1870", "1871", "1872", "1873", "1874", "1875", "1876", "1877", "1878", "1879", "1880", "1881", "1882", "1883", "1884", "1885", "1886", "1887", "1888", "1889", "1890", "1891", "1892", "1893", "1894", "1895", "1896", "1897", "1898", "1899", "1900", "1901", "1902", "1903", "1904", "1905", "1906", "1907", "1908", "1909", "1910", "1911", "1912", "1913", "1914", "1915", "1916", "1917", "1918", "1919", "1920", "1921", "1922", "1923", "1924", "1925", "1926", "1927", "1928", "1929", "1930", "1931", "1932", "1933", "1934", "1935", "1936", "1937", "1938", "1939", "1940", "1941", "1942", "1943", "1944", "1945", "1946", "1947", "1948", "1949", "1950", "1951", "1952", "1953", "1954", "1955", "1956", "1957", "1958", "1959", "1960", "1961", "1962", "1963", "1964", "1965", "1966", "1967", "1968", "1969", "1970", "1971", "1972", "1973", "1974", "1975", "1976", "1977", "1978", "1979", "1980", "1981", "1982", "1983", "1984", "1985", "1986", "1987", "1988", "1989", "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033", "2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", "2046", "2047", "2048", "2049", "2050", "2051", "2052", "2053", "2054", "2055", "2056", "2057", "2058", "2059", "2060", "2061", "2062", "2063", "2064", "2065", "2066", "2067", "2068", "2069", "2070", "2071", "2072", "2073", "2074", "2075", "2076", "2077", "2078", "2079", "2080", "2081", "2082", "2083", "2084", "2085", "2086", "2087", "2088", "2089", "2090", "2091", "2092", "2093", "2094", "2095", "2096", "2097", "2098", "2099", "2100", "2101", "2102", "2103", "2104", "2105", "2106", "2107", "2108", "2109", "2110", "2111", "2112", "2113", "2114", "2115", "2116", "2117", "2118", "2119", "2120", "2121", "2122", "2123", "2124", "2125", "2126", "2127", "2128", "2129", "2130", "2131", "2132", "2133", "2134", "2135", "2136", "2137", "2138", "2139", "2140", "2141", "2142", "2143", "2144", "2145", "2146", "2147", "2148", "2149", "2150", "2151", "2152", "2153", "2154", "2155", "2156", "2157", "2158", "2159", "2160", "2161", "2162", "2163", "2164", "2165", "2166", "2167", "2168", "2169", "2170", "2171", "2172", "2173", "2174", "2175", "2176", "2177", "2178", "2179", "2180", "2181", "2182", "2183", "2184", "2185", "2186", "2187", "2188", "2189", "2190", "2191", "2192", "2193", "2194", "2195", "2196", "2197", "2198", "2199", "2200", "2201", "2202", "2203", "2204", "2205", "2206", "2207", "2208", "2209", "2210", "2211", "2212", "2213", "2214", "2215", "2216", "2217", "2218", "2219", "2220", "2221", "2222", "2223", "2224", "2225", "2226", "2227", "2228", "2229", "2230", "2231", "2232", "2233", "2234", "2235", "2236", "2237", "2238", "2239", "2240", "2241", "2242", "2243", "2244", "2245", "2246", "2247", "2248", "2249", "2250", "2251", "2252", "2253", "2254", "2255", "2256", "2257", "2258", "2259", "2260", "2261", "2262", "2263", "2264", "2265", "2266", "2267", "2268", "2269", "2270", "2271", "2272", "2273", "2274", "2275", "2276", "2277", "2278", "2279", "2280", "2281", "2282", "2283", "2284", "2285", "2286", "2287", "2288", "2289", "2290", "2291", "2292", "2293", "2294", "2295", "2296", "2297", "2298", "2299", "2300", "2301", "2302", "2303", "2304", "2305", "2306", "2307", "2308", "2309", "2310", "2311", "2312", "2313", "2314", "2315", "2316", "2317", "2318", "2319", "2320", "2321", "2322", "2323", "2324", "2325", "2326", "2327", "2328", "2329", "2330", "2331", "2332", "2333", "2334", "2335", "2336", "2337", "2338", "2339", "2340", "2341", "2342", "2343", "2344", "2345", "2346", "2347", "2348", "2349", "2350", "2351", "2352", "2353", "2354", "2355", "2356", "2357", "2358", "2359", "2360", "2361", "2362", "2363", "2364", "2365", "2366", "2367", "2368", "2369", "2370", "2371", "2372", "2373", "2374", "2375", "2376", "2377", "2378", "2379", "2380", "2381", "2382", "2383", "2384", "2385", "2386", "2387", "2388", "2389", "2390", "2391", "2392", "2393", "2394", "2395", "2396", "2397", "2398", "2399", "2400", "2401", "2402", "2403", "2404", "2405", "2406", "2407", "2408", "2409", "2410", "2411", "2412", "2413", "2414", "2415", "2416", "2417", "2418", "2419", "2420", "2421", "2422", "2423", "2424", "2425", "2426", "2427", "2428", "2429", "2430", "2431", "2432", "2433", "2434", "2435", "2436", "2437", "2438", "2439", "2440", "2441", "2442", "2443", "2444", "2445", "2446", "2447", "2448", "2449", "2450", "2451", "2452", "2453", "2454", "2455", "2456", "2457", "2458", "2459", "2460", "2461", "2462", "2463", "2464", "2465", "2466", "2467", "2468", "2469", "2470", "2471", "2472", "2473", "2474", "2475", "2476", "2477", "2478", "2479", "2480", "2481", "2482", "2483", "2484", "2485", "2486", "2487", "2488", "2489", "2490", "2491", "2492", "2493", "2494", "2495", "2496", "2497", "2498", "2499", "2500", "2501", "2502", "2503", "2504", "2505", "2506", "2507", "2508", "2509", "2510", "2511", "2512", "2513", "2514", "2515", "2516", "2517", "2518", "2519", "2520", "2521", "2522", "2523", "2524", "2525", "2526", "2527", "2528", "2529", "2530", "2531", "2532", "2533", "2534", "2535", "2536", "2537", "2538", "2539", "2540", "2541", "2542", "2543", "2544", "2545", "2546", "2547", "2548", "2549", "2550", "2551", "2552", "2553", "2554", "2555", "2556", "2557", "2558", "2559", "2560", "2561", "2562", "2563", "2564", "2565", "2566", "2567", "2568", "2569", "2570", "2571", "2572", "2573", "2574", "2575", "2576", "2577", "2578", "2579", "2580", "2581", "2582", "2583", "2584", "2585", "2586", "2587", "2588", "2589", "2590", "2591", "2592", "2593", "2594", "2595", "2596", "2597", "2598", "2599", "2600", "2601", "2602", "2603", "2604", "2605", "2606", "2607", "2608", "2609", "2610", "2611", "2612", "2613", "2614", "2615", "2616", "2617", "2618", "2619", "2620", "2621", "2622", "2623", "2624", "2625", "2626", "2627", "2628", "2629", "2630", "2631", "2632", "2633", "2634", "2635", "2636", "2637", "2638", "2639", "2640", "2641", "2642", "2643", "2644", "2645", "2646", "2647", "2648", "2649", "2650", "2651", "2652", "2653", "2654", "2655", "2656", "2657", "2658", "2659", "2660", "2661", "2662", "2663", "2664", "2665", "2666", "2667", "2668", "2669", "2670", "2671", "2672", "2673", "2674", "2675", "2676", "2677", "2678", "2679", "2680", "2681", "2682", "2683", "2684", "2685", "2686", "2687", "2688", "2689", "2690", "2691", "2692", "2693", "2694", "2695", "2696", "2697", "2698", "2699", "2700", "2701", "2702", "2703", "2704", "2705", "2706", "2707", "2708", "2709", "2710", "2711", "2712", "2713", "2714", "2715", "2716", "2717", "2718", "2719", "2720", "2721", "2722", "2723", "2724", "2725", "2726", "2727", "2728", "2729", "2730", "2731", "2732", "2733", "2734", "2735", "2736", "2737", "2738", "2739", "2740", "2741", "2742", "2743", "2744", "2745", "2746", "2747", "2748", "2749", "2750", "2751", "2752", "2753", "2754", "2755", "2756", "2757", "2758", "2759", "2760", "2761", "2762", "2763", "2764", "2765", "2766", "2767", "2768", "2769", "2770", "2771", "2772", "2773", "2774", "2775", "2776", "2777", "2778", "2779", "2780", "2781", "2782", "2783", "2784", "2785", "2786", "2787", "2788", "2789", "2790", "2791", "2792", "2793", "2794", "2795", "2796", "2797", "2798", "2799", "2800", "2801", "2802", "2803", "2804", "2805", "2806", "2807", "2808", "2809", "2810", "2811", "2812", "2813", "2814", "2815", "2816", "2817", "2818", "2819", "2820", "2821", "2822", "2823", "2824", "2825", "2826", "2827", "2828", "2829", "2830", "2831", "2832", "2833", "2834", "2835", "2836", "2837", "2838", "2839", "2840", "2841", "2842", "2843", "2844", "2845", "2846", "2847", "2848", "2849", "2850", "2851", "2852", "2853", "2854", "2855", "2856", "2857", "2858", "2859", "2860", "2861", "2862", "2863", "2864", "2865", "2866", "2867", "2868", "2869", "2870", "2871", "2872", "2873", "2874", "2875", "2876", "2877", "2878", "2879", "2880", "2881", "2882", "2883", "2884", "2885", "2886", "2887", "2888", "2889", "2890", "2891", "2892", "2893", "2894", "2895", "2896", "2897", "2898", "2899", "2900", "2901", "2902", "2903", "2904", "2905", "2906", "2907", "2908", "2909", "2910", "2911", "2912", "2913", "2914", "2915", "2916", "2917", "2918", "2919", "2920", "2921", "2922", "2923", "2924", "2925", "2926", "2927", "2928", "2929", "2930", "2931", "2932", "2933", "2934", "2935", "2936", "2937", "2938", "2939", "2940", "2941", "2942", "2943", "2944", "2945", "2946", "2947", "2948", "2949", "2950", "2951", "2952", "2953", "2954", "2955", "2956", "2957", "2958", "2959", "2960", "2961", "2962", "2963", "2964", "2965", "2966", "2967", "2968", "2969", "2970", "2971", "2972", "2973", "2974", "2975", "2976", "2977", "2978", "2979", "2980", "2981", "2982", "2983", "2984", "2985", "2986", "2987", "2988", "2989", "2990", "2991", "2992", "2993", "2994", "2995", "2996", "2997", "2998", "2999", "3000", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null"] ["1", "2", "null", "3", "null", "4", "null", "5", "null", "6", "null", "7", "null", "8", "null", "9", "null", "10", "null", "11", "null", "12", "null", "13", "null", "14", "null", "15", "null", "16", "null", "17", "null", "18", "null", "19", "null", "20", "null", "21", "null", "22", "null", "23", "null", "24", "null", "25", "null", "26", "null", "27", "null", "28", "null", "29", "null", "30", "null", "31", "null", "32", "null", "33", "null", "34", "null", "35", "null", "36", "null", "37", "null", "38", "null", "39", "null", "40", "null", "41", "null", "42", "null", "43", "null", "44", "null", "45", "null", "46", "null", "47", "null", "48", "null", "49", "null", "50", "null", "51", "null", "52", "null", "53", "null", "54", "null", "55", "null", "56", "null", "57", "null", "58", "null", "59", "null", "60", "null", "61", "null", "62", "null", "63", "null", "64", "null", "65", "null", "66", "null", "67", "null", "68", "null", "69", "null", "70", "null", "71", "null", "72", "null", "73", "null", "74", "null", "75", "null", "76", "null", "77", "null", "78", "null", "79", "null", "80", "null", "81", "null", "82", "null", "83", "null", "84", "null", "85", "null", "86", "null", "87", "null", "88", "null", "89", "null", "90", "null", "91", "null", "92", "null", "93", "null", "94", "null", "95", "null", "96", "null", "97", "null", "98", "null", "99", "null", "100", "null", "101", "null", "102", "null", "103", "null", "104", "null", "105", "null", "106", "null", "107", "null", "108", "null", "109", "null", "110", "null", "111", "null", "112", "null", "113", "null", "114", "null", "115", "null", "116", "null", "117", "null", "118", "null", "119", "null", "120", "null", "121", "null", "122", "null", "123", "null", "124", "null", "125", "null", "126", "null", "127", "null", "128", "null", "129", "null", "130", "null", "131", "null", "132", "null", "133", "null", "134", "null", "135", "null", "136", "null", "137", "null", "138", "null", "139", "null", "140", "null", "141", "null", "142", "null", "143", "null", "144", "null", "145", "null", "146", "null", "147", "null", "148", "null", "149", "null", "150", "null", "151", "null", "152", "null", "153", "null", "154", "null", "155", "null", "156", "null", "157", "null", "158", "null", "159", "null", "160", "null", "161", "null", "162", "null", "163", "null", "164", "null", "165", "null", "166", "null", "167", "null", "168", "null", "169", "null", "170", "null", "171", "null", "172", "null", "173", "null", "174", "null", "175", "null", "176", "null", "177", "null", "178", "null", "179", "null", "180", "null", "181", "null", "182", "null", "183", "null", "184", "null", "185", "null", "186", "null", "187", "null", "188", "null", "189", "null", "190", "null", "191", "null", "192", "null", "193", "null", "194", "null", "195", "null", "196", "null", "197", "null", "198", "null", "199", "null", "200", "null", "201", "null", "202", "null", "203", "null", "204", "null", "205", "null", "206", "null", "207", "null", "208", "null", "209", "null", "210", "null", "211", "null", "212", "null", "213", "null", "214", "null", "215", "null", "216", "null", "217", "null", "218", "null", "219", "null", "220", "null", "221", "null", "222", "null", "223", "null", "224", "null", "225", "null", "226", "null", "227", "null", "228", "null", "229", "null", "230", "null", "231", "null", "232", "null", "233", "null", "234", "null", "235", "null", "236", "null", "237", "null", "238", "null", "239", "null", "240", "null", "241", "null", "242", "null", "243", "null", "244", "null", "245", "null", "246", "null", "247", "null", "248", "null", "249", "null", "250", "null", "251", "null", "252", "null", "253", "null", "254", "null", "255", "null", "256", "null", "257", "null", "258", "null", "259", "null", "260", "null", "261", "null", "262", "null", "263", "null", "264", "null", "265", "null", "266", "null", "267", "null", "268", "null", "269", "null", "270", "null", "271", "null", "272", "null", "273", "null", "274", "null", "275", "null", "276", "null", "277", "null", "278", "null", "279", "null", "280", "null", "281", "null", "282", "null", "283", "null", "284", "null", "285", "null", "286", "null", "287", "null", "288", "null", "289", "null", "290", "null", "291", "null", "292", "null", "293", "null", "294", "null", "295", "null", "296", "null", "297", "null", "298", "null", "299", "null", "300", "null", "301", "null", "302", "null", "303", "null", "304", "null", "305", "null", "306", "null", "307", "null", "308", "null", "309", "null", "310", "null", "311", "null", "312", "null", "313", "null", "314", "null", "315", "null", "316", "null", "317", "null", "318", "null", "319", "null", "320", "null", "321", "null", "322", "null", "323", "null", "324", "null", "325", "null", "326", "null", "327", "null", "328", "null", "329", "null", "330", "null", "331", "null", "332", "null", "333", "null", "334", "null", "335", "null", "336", "null", "337", "null", "338", "null", "339", "null", "340", "null", "341", "null", "342", "null", "343", "null", "344", "null", "345", "null", "346", "null", "347", "null", "348", "null", "349", "null", "350", "null", "351", "null", "352", "null", "353", "null", "354", "null", "355", "null", "356", "null", "357", "null", "358", "null", "359", "null", "360", "null", "361", "null", "362", "null", "363", "null", "364", "null", "365", "null", "366", "null", "367", "null", "368", "null", "369", "null", "370", "null", "371", "null", "372", "null", "373", "null", "374", "null", "375", "null", "376", "null", "377", "null", "378", "null", "379", "null", "380", "null", "381", "null", "382", "null", "383", "null", "384", "null", "385", "null", "386", "null", "387", "null", "388", "null", "389", "null", "390", "null", "391", "null", "392", "null", "393", "null", "394", "null", "395", "null", "396", "null", "397", "null", "398", "null", "399", "null", "400", "null", "401", "null", "402", "null", "403", "null", "404", "null", "405", "null", "406", "null", "407", "null", "408", "null", "409", "null", "410", "null", "411", "null", "412", "null", "413", "null", "414", "null", "415", "null", "416", "null", "417", "null", "418", "null", "419", "null", "420", "null", "421", "null", "422", "null", "423", "null", "424", "null", "425", "null", "426", "null", "427", "null", "428", "null", "429", "null", "430", "null", "431", "null", "432", "null", "433", "null", "434", "null", "435", "null", "436", "null", "437", "null", "438", "null", "439", "null", "440", "null", "441", "null", "442", "null", "443", "null", "444", "null", "445", "null", "446", "null", "447", "null", "448", "null", "449", "null", "450", "null", "451", "null", "452", "null", "453", "null", "454", "null", "455", "null", "456", "null", "457", "null", "458", "null", "459", "null", "460", "null", "461", "null", "462", "null", "463", "null", "464", "null", "465", "null", "466", "null", "467", "null", "468", "null", "469", "null", "470", "null", "471", "null", "472", "null", "473", "null", "474", "null", "475", "null", "476", "null", "477", "null", "478", "null", "479", "null", "480", "null", "481", "null", "482", "null", "483", "null", "484", "null", "485", "null", "486", "null", "487", "null", "488", "null", "489", "null", "490", "null", "491", "null", "492", "null", "493", "null", "494", "null", "495", "null", "496", "null", "497", "null", "498", "null", "499", "null", "500", "null", "501", "null", "502", "null", "503", "null", "504", "null", "505", "null", "506", "null", "507", "null", "508", "null", "509", "null", "510", "null", "511", "null", "512", "null", "513", "null", "514", "null", "515", "null", "516", "null", "517", "null", "518", "null", "519", "null", "520", "null", "521", "null", "522", "null", "523", "null", "524", "null", "525", "null", "526", "null", "527", "null", "528", "null", "529", "null", "530", "null", "531", "null", "532", "null", "533", "null", "534", "null", "535", "null", "536", "null", "537", "null", "538", "null", "539", "null", "540", "null", "541", "null", "542", "null", "543", "null", "544", "null", "545", "null", "546", "null", "547", "null", "548", "null", "549", "null", "550", "null", "551", "null", "552", "null", "553", "null", "554", "null", "555", "null", "556", "null", "557", "null", "558", "null", "559", "null", "560", "null", "561", "null", "562", "null", "563", "null", "564", "null", "565", "null", "566", "null", "567", "null", "568", "null", "569", "null", "570", "null", "571", "null", "572", "null", "573", "null", "574", "null", "575", "null", "576", "null", "577", "null", "578", "null", "579", "null", "580", "null", "581", "null", "582", "null", "583", "null", "584", "null", "585", "null", "586", "null", "587", "null", "588", "null", "589", "null", "590", "null", "591", "null", "592", "null", "593", "null", "594", "null", "595", "null", "596", "null", "597", "null", "598", "null", "599", "null", "600", "null", "601", "null", "602", "null", "603", "null", "604", "null", "605", "null", "606", "null", "607", "null", "608", "null", "609", "null", "610", "null", "611", "null", "612", "null", "613", "null", "614", "null", "615", "null", "616", "null", "617", "null", "618", "null", "619", "null", "620", "null", "621", "null", "622", "null", "623", "null", "624", "null", "625", "null", "626", "null", "627", "null", "628", "null", "629", "null", "630", "null", "631", "null", "632", "null", "633", "null", "634", "null", "635", "null", "636", "null", "637", "null", "638", "null", "639", "null", "640", "null", "641", "null", "642", "null", "643", "null", "644", "null", "645", "null", "646", "null", "647", "null", "648", "null", "649", "null", "650", "null", "651", "null", "652", "null", "653", "null", "654", "null", "655", "null", "656", "null", "657", "null", "658", "null", "659", "null", "660", "null", "661", "null", "662", "null", "663", "null", "664", "null", "665", "null", "666", "null", "667", "null", "668", "null", "669", "null", "670", "null", "671", "null", "672", "null", "673", "null", "674", "null", "675", "null", "676", "null", "677", "null", "678", "null", "679", "null", "680", "null", "681", "null", "682", "null", "683", "null", "684", "null", "685", "null", "686", "null", "687", "null", "688", "null", "689", "null", "690", "null", "691", "null", "692", "null", "693", "null", "694", "null", "695", "null", "696", "null", "697", "null", "698", "null", "699", "null", "700", "null", "701", "null", "702", "null", "703", "null", "704", "null", "705", "null", "706", "null", "707", "null", "708", "null", "709", "null", "710", "null", "711", "null", "712", "null", "713", "null", "714", "null", "715", "null", "716", "null", "717", "null", "718", "null", "719", "null", "720", "null", "721", "null", "722", "null", "723", "null", "724", "null", "725", "null", "726", "null", "727", "null", "728", "null", "729", "null", "730", "null", "731", "null", "732", "null", "733", "null", "734", "null", "735", "null", "736", "null", "737", "null", "738", "null", "739", "null", "740", "null", "741", "null", "742", "null", "743", "null", "744", "null", "745", "null", "746", "null", "747", "null", "748", "null", "749", "null", "750", "null", "751", "null", "752", "null", "753", "null", "754", "null", "755", "null", "756", "null", "757", "null", "758", "null", "759", "null", "760", "null", "761", "null", "762", "null", "763", "null", "764", "null", "765", "null", "766", "null", "767", "null", "768", "null", "769", "null", "770", "null", "771", "null", "772", "null", "773", "null", "774", "null", "775", "null", "776", "null", "777", "null", "778", "null", "779", "null", "780", "null", "781", "null", "782", "null", "783", "null", "784", "null", "785", "null", "786", "null", "787", "null", "788", "null", "789", "null", "790", "null", "791", "null", "792", "null", "793", "null", "794", "null", "795", "null", "796", "null", "797", "null", "798", "null", "799", "null", "800", "null", "801", "null", "802", "null", "803", "null", "804", "null", "805", "null", "806", "null", "807", "null", "808", "null", "809", "null", "810", "null", "811", "null", "812", "null", "813", "null", "814", "null", "815", "null", "816", "null", "817", "null", "818", "null", "819", "null", "820", "null", "821", "null", "822", "null", "823", "null", "824", "null", "825", "null", "826", "null", "827", "null", "828", "null", "829", "null", "830", "null", "831", "null", "832", "null", "833", "null", "834", "null", "835", "null", "836", "null", "837", "null", "838", "null", "839", "null", "840", "null", "841", "null", "842", "null", "843", "null", "844", "null", "845", "null", "846", "null", "847", "null", "848", "null", "849", "null", "850", "null", "851", "null", "852", "null", "853", "null", "854", "null", "855", "null", "856", "null", "857", "null", "858", "null", "859", "null", "860", "null", "861", "null", "862", "null", "863", "null", "864", "null", "865", "null", "866", "null", "867", "null", "868", "null", "869", "null", "870", "null", "871", "null", "872", "null", "873", "null", "874", "null", "875", "null", "876", "null", "877", "null", "878", "null", "879", "null", "880", "null", "881", "null", "882", "null", "883", "null", "884", "null", "885", "null", "886", "null", "887", "null", "888", "null", "889", "null", "890", "null", "891", "null", "892", "null", "893", "null", "894", "null", "895", "null", "896", "null", "897", "null", "898", "null", "899", "null", "900", "null", "901", "null", "902", "null", "903", "null", "904", "null", "905", "null", "906", "null", "907", "null", "908", "null", "909", "null", "910", "null", "911", "null", "912", "null", "913", "null", "914", "null", "915", "null", "916", "null", "917", "null", "918", "null", "919", "null", "920", "null", "921", "null", "922", "null", "923", "null", "924", "null", "925", "null", "926", "null", "927", "null", "928", "null", "929", "null", "930", "null", "931", "null", "932", "null", "933", "null", "934", "null", "935", "null", "936", "null", "937", "null", "938", "null", "939", "null", "940", "null", "941", "null", "942", "null", "943", "null", "944", "null", "945", "null", "946", "null", "947", "null", "948", "null", "949", "null", "950", "null", "951", "null", "952", "null", "953", "null", "954", "null", "955", "null", "956", "null", "957", "null", "958", "null", "959", "null", "960", "null", "961", "null", "962", "null", "963", "null", "964", "null", "965", "null", "966", "null", "967", "null", "968", "null", "969", "null", "970", "null", "971", "null", "972", "null", "973", "null", "974", "null", "975", "null", "976", "null", "977", "null", "978", "null", "979", "null", "980", "null", "981", "null", "982", "null", "983", "null", "984", "null", "985", "null", "986", "null", "987", "null", "988", "null", "989", "null", "990", "null", "991", "null", "992", "null", "993", "null", "994", "null", "995", "null", "996", "null", "997", "null", "998", "null", "999", "null", "1000", "null", "1001", "null", "1002", "null", "1003", "null", "1004", "null", "1005", "null", "1006", "null", "1007", "null", "1008", "null", "1009", "null", "1010", "null", "1011", "null", "1012", "null", "1013", "null", "1014", "null", "1015", "null", "1016", "null", "1017", "null", "1018", "null", "1019", "null", "1020", "null", "1021", "null", "1022", "null", "1023", "null", "1024", "null", "1025", "null", "1026", "null", "1027", "null", "1028", "null", "1029", "null", "1030", "null", "1031", "null", "1032", "null", "1033", "null", "1034", "null", "1035", "null", "1036", "null", "1037", "null", "1038", "null", "1039", "null", "1040", "null", "1041", "null", "1042", "null", "1043", "null", "1044", "null", "1045", "null", "1046", "null", "1047", "null", "1048", "null", "1049", "null", "1050", "null", "1051", "null", "1052", "null", "1053", "null", "1054", "null", "1055", "null", "1056", "null", "1057", "null", "1058", "null", "1059", "null", "1060", "null", "1061", "null", "1062", "null", "1063", "null", "1064", "null", "1065", "null", "1066", "null", "1067", "null", "1068", "null", "1069", "null", "1070", "null", "1071", "null", "1072", "null", "1073", "null", "1074", "null", "1075", "null", "1076", "null", "1077", "null", "1078", "null", "1079", "null", "1080", "null", "1081", "null", "1082", "null", "1083", "null", "1084", "null", "1085", "null", "1086", "null", "1087", "null", "1088", "null", "1089", "null", "1090", "null", "1091", "null", "1092", "null", "1093", "null", "1094", "null", "1095", "null", "1096", "null", "1097", "null", "1098", "null", "1099", "null", "1100", "null", "1101", "null", "1102", "null", "1103", "null", "1104", "null", "1105", "null", "1106", "null", "1107", "null", "1108", "null", "1109", "null", "1110", "null", "1111", "null", "1112", "null", "1113", "null", "1114", "null", "1115", "null", "1116", "null", "1117", "null", "1118", "null", "1119", "null", "1120", "null", "1121", "null", "1122", "null", "1123", "null", "1124", "null", "1125", "null", "1126", "null", "1127", "null", "1128", "null", "1129", "null", "1130", "null", "1131", "null", "1132", "null", "1133", "null", "1134", "null", "1135", "null", "1136", "null", "1137", "null", "1138", "null", "1139", "null", "1140", "null", "1141", "null", "1142", "null", "1143", "null", "1144", "null", "1145", "null", "1146", "null", "1147", "null", "1148", "null", "1149", "null", "1150", "null", "1151", "null", "1152", "null", "1153", "null", "1154", "null", "1155", "null", "1156", "null", "1157", "null", "1158", "null", "1159", "null", "1160", "null", "1161", "null", "1162", "null", "1163", "null", "1164", "null", "1165", "null", "1166", "null", "1167", "null", "1168", "null", "1169", "null", "1170", "null", "1171", "null", "1172", "null", "1173", "null", "1174", "null", "1175", "null", "1176", "null", "1177", "null", "1178", "null", "1179", "null", "1180", "null", "1181", "null", "1182", "null", "1183", "null", "1184", "null", "1185", "null", "1186", "null", "1187", "null", "1188", "null", "1189", "null", "1190", "null", "1191", "null", "1192", "null", "1193", "null", "1194", "null", "1195", "null", "1196", "null", "1197", "null", "1198", "null", "1199", "null", "1200", "null", "1201", "null", "1202", "null", "1203", "null", "1204", "null", "1205", "null", "1206", "null", "1207", "null", "1208", "null", "1209", "null", "1210", "null", "1211", "null", "1212", "null", "1213", "null", "1214", "null", "1215", "null", "1216", "null", "1217", "null", "1218", "null", "1219", "null", "1220", "null", "1221", "null", "1222", "null", "1223", "null", "1224", "null", "1225", "null", "1226", "null", "1227", "null", "1228", "null", "1229", "null", "1230", "null", "1231", "null", "1232", "null", "1233", "null", "1234", "null", "1235", "null", "1236", "null", "1237", "null", "1238", "null", "1239", "null", "1240", "null", "1241", "null", "1242", "null", "1243", "null", "1244", "null", "1245", "null", "1246", "null", "1247", "null", "1248", "null", "1249", "null", "1250", "null", "1251", "null", "1252", "null", "1253", "null", "1254", "null", "1255", "null", "1256", "null", "1257", "null", "1258", "null", "1259", "null", "1260", "null", "1261", "null", "1262", "null", "1263", "null", "1264", "null", "1265", "null", "1266", "null", "1267", "null", "1268", "null", "1269", "null", "1270", "null", "1271", "null", "1272", "null", "1273", "null", "1274", "null", "1275", "null", "1276", "null", "1277", "null", "1278", "null", "1279", "null", "1280", "null", "1281", "null", "1282", "null", "1283", "null", "1284", "null", "1285", "null", "1286", "null", "1287", "null", "1288", "null", "1289", "null", "1290", "null", "1291", "null", "1292", "null", "1293", "null", "1294", "null", "1295", "null", "1296", "null", "1297", "null", "1298", "null", "1299", "null", "1300", "null", "1301", "null", "1302", "null", "1303", "null", "1304", "null", "1305", "null", "1306", "null", "1307", "null", "1308", "null", "1309", "null", "1310", "null", "1311", "null", "1312", "null", "1313", "null", "1314", "null", "1315", "null", "1316", "null", "1317", "null", "1318", "null", "1319", "null", "1320", "null", "1321", "null", "1322", "null", "1323", "null", "1324", "null", "1325", "null", "1326", "null", "1327", "null", "1328", "null", "1329", "null", "1330", "null", "1331", "null", "1332", "null", "1333", "null", "1334", "null", "1335", "null", "1336", "null", "1337", "null", "1338", "null", "1339", "null", "1340", "null", "1341", "null", "1342", "null", "1343", "null", "1344", "null", "1345", "null", "1346", "null", "1347", "null", "1348", "null", "1349", "null", "1350", "null", "1351", "null", "1352", "null", "1353", "null", "1354", "null", "1355", "null", "1356", "null", "1357", "null", "1358", "null", "1359", "null", "1360", "null", "1361", "null", "1362", "null", "1363", "null", "1364", "null", "1365", "null", "1366", "null", "1367", "null", "1368", "null", "1369", "null", "1370", "null", "1371", "null", "1372", "null", "1373", "null", "1374", "null", "1375", "null", "1376", "null", "1377", "null", "1378", "null", "1379", "null", "1380", "null", "1381", "null", "1382", "null", "1383", "null", "1384", "null", "1385", "null", "1386", "null", "1387", "null", "1388", "null", "1389", "null", "1390", "null", "1391", "null", "1392", "null", "1393", "null", "1394", "null", "1395", "null", "1396", "null", "1397", "null", "1398", "null", "1399", "null", "1400", "null", "1401", "null", "1402", "null", "1403", "null", "1404", "null", "1405", "null", "1406", "null", "1407", "null", "1408", "null", "1409", "null", "1410", "null", "1411", "null", "1412", "null", "1413", "null", "1414", "null", "1415", "null", "1416", "null", "1417", "null", "1418", "null", "1419", "null", "1420", "null", "1421", "null", "1422", "null", "1423", "null", "1424", "null", "1425", "null", "1426", "null", "1427", "null", "1428", "null", "1429", "null", "1430", "null", "1431", "null", "1432", "null", "1433", "null", "1434", "null", "1435", "null", "1436", "null", "1437", "null", "1438", "null", "1439", "null", "1440", "null", "1441", "null", "1442", "null", "1443", "null", "1444", "null", "1445", "null", "1446", "null", "1447", "null", "1448", "null", "1449", "null", "1450", "null", "1451", "null", "1452", "null", "1453", "null", "1454", "null", "1455", "null", "1456", "null", "1457", "null", "1458", "null", "1459", "null", "1460", "null", "1461", "null", "1462", "null", "1463", "null", "1464", "null", "1465", "null", "1466", "null", "1467", "null", "1468", "null", "1469", "null", "1470", "null", "1471", "null", "1472", "null", "1473", "null", "1474", "null", "1475", "null", "1476", "null", "1477", "null", "1478", "null", "1479", "null", "1480", "null", "1481", "null", "1482", "null", "1483", "null", "1484", "null", "1485", "null", "1486", "null", "1487", "null", "1488", "null", "1489", "null", "1490", "null", "1491", "null", "1492", "null", "1493", "null", "1494", "null", "1495", "null", "1496", "null", "1497", "null", "1498", "null", "1499", "null", "1500", "null", "1501", "null", "1502", "null", "1503", "null", "1504", "null", "1505", "null", "1506", "null", "1507", "null", "1508", "null", "1509", "null", "1510", "null", "1511", "null", "1512", "null", "1513", "null", "1514", "null", "1515", "null", "1516", "null", "1517", "null", "1518", "null", "1519", "null", "1520", "null", "1521", "null", "1522", "null", "1523", "null", "1524", "null", "1525", "null", "1526", "null", "1527", "null", "1528", "null", "1529", "null", "1530", "null", "1531", "null", "1532", "null", "1533", "null", "1534", "null", "1535", "null", "1536", "null", "1537", "null", "1538", "null", "1539", "null", "1540", "null", "1541", "null", "1542", "null", "1543", "null", "1544", "null", "1545", "null", "1546", "null", "1547", "null", "1548", "null", "1549", "null", "1550", "null", "1551", "null", "1552", "null", "1553", "null", "1554", "null", "1555", "null", "1556", "null", "1557", "null", "1558", "null", "1559", "null", "1560", "null", "1561", "null", "1562", "null", "1563", "null", "1564", "null", "1565", "null", "1566", "null", "1567", "null", "1568", "null", "1569", "null", "1570", "null", "1571", "null", "1572", "null", "1573", "null", "1574", "null", "1575", "null", "1576", "null", "1577", "null", "1578", "null", "1579", "null", "1580", "null", "1581", "null", "1582", "null", "1583", "null", "1584", "null", "1585", "null", "1586", "null", "1587", "null", "1588", "null", "1589", "null", "1590", "null", "1591", "null", "1592", "null", "1593", "null", "1594", "null", "1595", "null", "1596", "null", "1597", "null", "1598", "null", "1599", "null", "1600", "null", "1601", "null", "1602", "null", "1603", "null", "1604", "null", "1605", "null", "1606", "null", "1607", "null", "1608", "null", "1609", "null", "1610", "null", "1611", "null", "1612", "null", "1613", "null", "1614", "null", "1615", "null", "1616", "null", "1617", "null", "1618", "null", "1619", "null", "1620", "null", "1621", "null", "1622", "null", "1623", "null", "1624", "null", "1625", "null", "1626", "null", "1627", "null", "1628", "null", "1629", "null", "1630", "null", "1631", "null", "1632", "null", "1633", "null", "1634", "null", "1635", "null", "1636", "null", "1637", "null", "1638", "null", "1639", "null", "1640", "null", "1641", "null", "1642", "null", "1643", "null", "1644", "null", "1645", "null", "1646", "null", "1647", "null", "1648", "null", "1649", "null", "1650", "null", "1651", "null", "1652", "null", "1653", "null", "1654", "null", "1655", "null", "1656", "null", "1657", "null", "1658", "null", "1659", "null", "1660", "null", "1661", "null", "1662", "null", "1663", "null", "1664", "null", "1665", "null", "1666", "null", "1667", "null", "1668", "null", "1669", "null", "1670", "null", "1671", "null", "1672", "null", "1673", "null", "1674", "null", "1675", "null", "1676", "null", "1677", "null", "1678", "null", "1679", "null", "1680", "null", "1681", "null", "1682", "null", "1683", "null", "1684", "null", "1685", "null", "1686", "null", "1687", "null", "1688", "null", "1689", "null", "1690", "null", "1691", "null", "1692", "null", "1693", "null", "1694", "null", "1695", "null", "1696", "null", "1697", "null", "1698", "null", "1699", "null", "1700", "null", "1701", "null", "1702", "null", "1703", "null", "1704", "null", "1705", "null", "1706", "null", "1707", "null", "1708", "null", "1709", "null", "1710", "null", "1711", "null", "1712", "null", "1713", "null", "1714", "null", "1715", "null", "1716", "null", "1717", "null", "1718", "null", "1719", "null", "1720", "null", "1721", "null", "1722", "null", "1723", "null", "1724", "null", "1725", "null", "1726", "null", "1727", "null", "1728", "null", "1729", "null", "1730", "null", "1731", "null", "1732", "null", "1733", "null", "1734", "null", "1735", "null", "1736", "null", "1737", "null", "1738", "null", "1739", "null", "1740", "null", "1741", "null", "1742", "null", "1743", "null", "1744", "null", "1745", "null", "1746", "null", "1747", "null", "1748", "null", "1749", "null", "1750", "null", "1751", "null", "1752", "null", "1753", "null", "1754", "null", "1755", "null", "1756", "null", "1757", "null", "1758", "null", "1759", "null", "1760", "null", "1761", "null", "1762", "null", "1763", "null", "1764", "null", "1765", "null", "1766", "null", "1767", "null", "1768", "null", "1769", "null", "1770", "null", "1771", "null", "1772", "null", "1773", "null", "1774", "null", "1775", "null", "1776", "null", "1777", "null", "1778", "null", "1779", "null", "1780", "null", "1781", "null", "1782", "null", "1783", "null", "1784", "null", "1785", "null", "1786", "null", "1787", "null", "1788", "null", "1789", "null", "1790", "null", "1791", "null", "1792", "null", "1793", "null", "1794", "null", "1795", "null", "1796", "null", "1797", "null", "1798", "null", "1799", "null", "1800", "null", "1801", "null", "1802", "null", "1803", "null", "1804", "null", "1805", "null", "1806", "null", "1807", "null", "1808", "null", "1809", "null", "1810", "null", "1811", "null", "1812", "null", "1813", "null", "1814", "null", "1815", "null", "1816", "null", "1817", "null", "1818", "null", "1819", "null", "1820", "null", "1821", "null", "1822", "null", "1823", "null", "1824", "null", "1825", "null", "1826", "null", "1827", "null", "1828", "null", "1829", "null", "1830", "null", "1831", "null", "1832", "null", "1833", "null", "1834", "null", "1835", "null", "1836", "null", "1837", "null", "1838", "null", "1839", "null", "1840", "null", "1841", "null", "1842", "null", "1843", "null", "1844", "null", "1845", "null", "1846", "null", "1847", "null", "1848", "null", "1849", "null", "1850", "null", "1851", "null", "1852", "null", "1853", "null", "1854", "null", "1855", "null", "1856", "null", "1857", "null", "1858", "null", "1859", "null", "1860", "null", "1861", "null", "1862", "null", "1863", "null", "1864", "null", "1865", "null", "1866", "null", "1867", "null", "1868", "null", "1869", "null", "1870", "null", "1871", "null", "1872", "null", "1873", "null", "1874", "null", "1875", "null", "1876", "null", "1877", "null", "1878", "null", "1879", "null", "1880", "null", "1881", "null", "1882", "null", "1883", "null", "1884", "null", "1885", "null", "1886", "null", "1887", "null", "1888", "null", "1889", "null", "1890", "null", "1891", "null", "1892", "null", "1893", "null", "1894", "null", "1895", "null", "1896", "null", "1897", "null", "1898", "null", "1899", "null", "1900", "null", "1901", "null", "1902", "null", "1903", "null", "1904", "null", "1905", "null", "1906", "null", "1907", "null", "1908", "null", "1909", "null", "1910", "null", "1911", "null", "1912", "null", "1913", "null", "1914", "null", "1915", "null", "1916", "null", "1917", "null", "1918", "null", "1919", "null", "1920", "null", "1921", "null", "1922", "null", "1923", "null", "1924", "null", "1925", "null", "1926", "null", "1927", "null", "1928", "null", "1929", "null", "1930", "null", "1931", "null", "1932", "null", "1933", "null", "1934", "null", "1935", "null", "1936", "null", "1937", "null", "1938", "null", "1939", "null", "1940", "null", "1941", "null", "1942", "null", "1943", "null", "1944", "null", "1945", "null", "1946", "null", "1947", "null", "1948", "null", "1949", "null", "1950", "null", "1951", "null", "1952", "null", "1953", "null", "1954", "null", "1955", "null", "1956", "null", "1957", "null", "1958", "null", "1959", "null", "1960", "null", "1961", "null", "1962", "null", "1963", "null", "1964", "null", "1965", "null", "1966", "null", "1967", "null", "1968", "null", "1969", "null", "1970", "null", "1971", "null", "1972", "null", "1973", "null", "1974", "null", "1975", "null", "1976", "null", "1977", "null", "1978", "null", "1979", "null", "1980", "null", "1981", "null", "1982", "null", "1983", "null", "1984", "null", "1985", "null", "1986", "null", "1987", "null", "1988", "null", "1989", "null", "1990", "null", "1991", "null", "1992", "null", "1993", "null", "1994", "null", "1995", "null", "1996", "null", "1997", "null", "1998", "null", "1999", "null", "2000", "null", "2001", "null", "2002", "null", "2003", "null", "2004", "null", "2005", "null", "2006", "null", "2007", "null", "2008", "null", "2009", "null", "2010", "null", "2011", "null", "2012", "null", "2013", "null", "2014", "null", "2015", "null", "2016", "null", "2017", "null", "2018", "null", "2019", "null", "2020", "null", "2021", "null", "2022", "null", "2023", "null", "2024", "null", "2025", "null", "2026", "null", "2027", "null", "2028", "null", "2029", "null", "2030", "null", "2031", "null", "2032", "null", "2033", "null", "2034", "null", "2035", "null", "2036", "null", "2037", "null", "2038", "null", "2039", "null", "2040", "null", "2041", "null", "2042", "null", "2043", "null", "2044", "null", "2045", "null", "2046", "null", "2047", "null", "2048", "null", "2049", "null", "2050", "null", "2051", "null", "2052", "null", "2053", "null", "2054", "null", "2055", "null", "2056", "null", "2057", "null", "2058", "null", "2059", "null", "2060", "null", "2061", "null", "2062", "null", "2063", "null", "2064", "null", "2065", "null", "2066", "null", "2067", "null", "2068", "null", "2069", "null", "2070", "null", "2071", "null", "2072", "null", "2073", "null", "2074", "null", "2075", "null", "2076", "null", "2077", "null", "2078", "null", "2079", "null", "2080", "null", "2081", "null", "2082", "null", "2083", "null", "2084", "null", "2085", "null", "2086", "null", "2087", "null", "2088", "null", "2089", "null", "2090", "null", "2091", "null", "2092", "null", "2093", "null", "2094", "null", "2095", "null", "2096", "null", "2097", "null", "2098", "null", "2099", "null", "2100", "null", "2101", "null", "2102", "null", "2103", "null", "2104", "null", "2105", "null", "2106", "null", "2107", "null", "2108", "null", "2109", "null", "2110", "null", "2111", "null", "2112", "null", "2113", "null", "2114", "null", "2115", "null", "2116", "null", "2117", "null", "2118", "null", "2119", "null", "2120", "null", "2121", "null", "2122", "null", "2123", "null", "2124", "null", "2125", "null", "2126", "null", "2127", "null", "2128", "null", "2129", "null", "2130", "null", "2131", "null", "2132", "null", "2133", "null", "2134", "null", "2135", "null", "2136", "null", "2137", "null", "2138", "null", "2139", "null", "2140", "null", "2141", "null", "2142", "null", "2143", "null", "2144", "null", "2145", "null", "2146", "null", "2147", "null", "2148", "null", "2149", "null", "2150", "null", "2151", "null", "2152", "null", "2153", "null", "2154", "null", "2155", "null", "2156", "null", "2157", "null", "2158", "null", "2159", "null", "2160", "null", "2161", "null", "2162", "null", "2163", "null", "2164", "null", "2165", "null", "2166", "null", "2167", "null", "2168", "null", "2169", "null", "2170", "null", "2171", "null", "2172", "null", "2173", "null", "2174", "null", "2175", "null", "2176", "null", "2177", "null", "2178", "null", "2179", "null", "2180", "null", "2181", "null", "2182", "null", "2183", "null", "2184", "null", "2185", "null", "2186", "null", "2187", "null", "2188", "null", "2189", "null", "2190", "null", "2191", "null", "2192", "null", "2193", "null", "2194", "null", "2195", "null", "2196", "null", "2197", "null", "2198", "null", "2199", "null", "2200", "null", "2201", "null", "2202", "null", "2203", "null", "2204", "null", "2205", "null", "2206", "null", "2207", "null", "2208", "null", "2209", "null", "2210", "null", "2211", "null", "2212", "null", "2213", "null", "2214", "null", "2215", "null", "2216", "null", "2217", "null", "2218", "null", "2219", "null", "2220", "null", "2221", "null", "2222", "null", "2223", "null", "2224", "null", "2225", "null", "2226", "null", "2227", "null", "2228", "null", "2229", "null", "2230", "null", "2231", "null", "2232", "null", "2233", "null", "2234", "null", "2235", "null", "2236", "null", "2237", "null", "2238", "null", "2239", "null", "2240", "null", "2241", "null", "2242", "null", "2243", "null", "2244", "null", "2245", "null", "2246", "null", "2247", "null", "2248", "null", "2249", "null", "2250", "null", "2251", "null", "2252", "null", "2253", "null", "2254", "null", "2255", "null", "2256", "null", "2257", "null", "2258", "null", "2259", "null", "2260", "null", "2261", "null", "2262", "null", "2263", "null", "2264", "null", "2265", "null", "2266", "null", "2267", "null", "2268", "null", "2269", "null", "2270", "null", "2271", "null", "2272", "null", "2273", "null", "2274", "null", "2275", "null", "2276", "null", "2277", "null", "2278", "null", "2279", "null", "2280", "null", "2281", "null", "2282", "null", "2283", "null", "2284", "null", "2285", "null", "2286", "null", "2287", "null", "2288", "null", "2289", "null", "2290", "null", "2291", "null", "2292", "null", "2293", "null", "2294", "null", "2295", "null", "2296", "null", "2297", "null", "2298", "null", "2299", "null", "2300", "null", "2301", "null", "2302", "null", "2303", "null", "2304", "null", "2305", "null", "2306", "null", "2307", "null", "2308", "null", "2309", "null", "2310", "null", "2311", "null", "2312", "null", "2313", "null", "2314", "null", "2315", "null", "2316", "null", "2317", "null", "2318", "null", "2319", "null", "2320", "null", "2321", "null", "2322", "null", "2323", "null", "2324", "null", "2325", "null", "2326", "null", "2327", "null", "2328", "null", "2329", "null", "2330", "null", "2331", "null", "2332", "null", "2333", "null", "2334", "null", "2335", "null", "2336", "null", "2337", "null", "2338", "null", "2339", "null", "2340", "null", "2341", "null", "2342", "null", "2343", "null", "2344", "null", "2345", "null", "2346", "null", "2347", "null", "2348", "null", "2349", "null", "2350", "null", "2351", "null", "2352", "null", "2353", "null", "2354", "null", "2355", "null", "2356", "null", "2357", "null", "2358", "null", "2359", "null", "2360", "null", "2361", "null", "2362", "null", "2363", "null", "2364", "null", "2365", "null", "2366", "null", "2367", "null", "2368", "null", "2369", "null", "2370", "null", "2371", "null", "2372", "null", "2373", "null", "2374", "null", "2375", "null", "2376", "null", "2377", "null", "2378", "null", "2379", "null", "2380", "null", "2381", "null", "2382", "null", "2383", "null", "2384", "null", "2385", "null", "2386", "null", "2387", "null", "2388", "null", "2389", "null", "2390", "null", "2391", "null", "2392", "null", "2393", "null", "2394", "null", "2395", "null", "2396", "null", "2397", "null", "2398", "null", "2399", "null", "2400", "null", "2401", "null", "2402", "null", "2403", "null", "2404", "null", "2405", "null", "2406", "null", "2407", "null", "2408", "null", "2409", "null", "2410", "null", "2411", "null", "2412", "null", "2413", "null", "2414", "null", "2415", "null", "2416", "null", "2417", "null", "2418", "null", "2419", "null", "2420", "null", "2421", "null", "2422", "null", "2423", "null", "2424", "null", "2425", "null", "2426", "null", "2427", "null", "2428", "null", "2429", "null", "2430", "null", "2431", "null", "2432", "null", "2433", "null", "2434", "null", "2435", "null", "2436", "null", "2437", "null", "2438", "null", "2439", "null", "2440", "null", "2441", "null", "2442", "null", "2443", "null", "2444", "null", "2445", "null", "2446", "null", "2447", "null", "2448", "null", "2449", "null", "2450", "null", "2451", "null", "2452", "null", "2453", "null", "2454", "null", "2455", "null", "2456", "null", "2457", "null", "2458", "null", "2459", "null", "2460", "null", "2461", "null", "2462", "null", "2463", "null", "2464", "null", "2465", "null", "2466", "null", "2467", "null", "2468", "null", "2469", "null", "2470", "null", "2471", "null", "2472", "null", "2473", "null", "2474", "null", "2475", "null", "2476", "null", "2477", "null", "2478", "null", "2479", "null", "2480", "null", "2481", "null", "2482", "null", "2483", "null", "2484", "null", "2485", "null", "2486", "null", "2487", "null", "2488", "null", "2489", "null", "2490", "null", "2491", "null", "2492", "null", "2493", "null", "2494", "null", "2495", "null", "2496", "null", "2497", "null", "2498", "null", "2499", "null", "2500", "null", "2501", "null", "2502", "null", "2503", "null", "2504", "null", "2505", "null", "2506", "null", "2507", "null", "2508", "null", "2509", "null", "2510", "null", "2511", "null", "2512", "null", "2513", "null", "2514", "null", "2515", "null", "2516", "null", "2517", "null", "2518", "null", "2519", "null", "2520", "null", "2521", "null", "2522", "null", "2523", "null", "2524", "null", "2525", "null", "2526", "null", "2527", "null", "2528", "null", "2529", "null", "2530", "null", "2531", "null", "2532", "null", "2533", "null", "2534", "null", "2535", "null", "2536", "null", "2537", "null", "2538", "null", "2539", "null", "2540", "null", "2541", "null", "2542", "null", "2543", "null", "2544", "null", "2545", "null", "2546", "null", "2547", "null", "2548", "null", "2549", "null", "2550", "null", "2551", "null", "2552", "null", "2553", "null", "2554", "null", "2555", "null", "2556", "null", "2557", "null", "2558", "null", "2559", "null", "2560", "null", "2561", "null", "2562", "null", "2563", "null", "2564", "null", "2565", "null", "2566", "null", "2567", "null", "2568", "null", "2569", "null", "2570", "null", "2571", "null", "2572", "null", "2573", "null", "2574", "null", "2575", "null", "2576", "null", "2577", "null", "2578", "null", "2579", "null", "2580", "null", "2581", "null", "2582", "null", "2583", "null", "2584", "null", "2585", "null", "2586", "null", "2587", "null", "2588", "null", "2589", "null", "2590", "null", "2591", "null", "2592", "null", "2593", "null", "2594", "null", "2595", "null", "2596", "null", "2597", "null", "2598", "null", "2599", "null", "2600", "null", "2601", "null", "2602", "null", "2603", "null", "2604", "null", "2605", "null", "2606", "null", "2607", "null", "2608", "null", "2609", "null", "2610", "null", "2611", "null", "2612", "null", "2613", "null", "2614", "null", "2615", "null", "2616", "null", "2617", "null", "2618", "null", "2619", "null", "2620", "null", "2621", "null", "2622", "null", "2623", "null", "2624", "null", "2625", "null", "2626", "null", "2627", "null", "2628", "null", "2629", "null", "2630", "null", "2631", "null", "2632", "null", "2633", "null", "2634", "null", "2635", "null", "2636", "null", "2637", "null", "2638", "null", "2639", "null", "2640", "null", "2641", "null", "2642", "null", "2643", "null", "2644", "null", "2645", "null", "2646", "null", "2647", "null", "2648", "null", "2649", "null", "2650", "null", "2651", "null", "2652", "null", "2653", "null", "2654", "null", "2655", "null", "2656", "null", "2657", "null", "2658", "null", "2659", "null", "2660", "null", "2661", "null", "2662", "null", "2663", "null", "2664", "null", "2665", "null", "2666", "null", "2667", "null", "2668", "null", "2669", "null", "2670", "null", "2671", "null", "2672", "null", "2673", "null", "2674", "null", "2675", "null", "2676", "null", "2677", "null", "2678", "null", "2679", "null", "2680", "null", "2681", "null", "2682", "null", "2683", "null", "2684", "null", "2685", "null", "2686", "null", "2687", "null", "2688", "null", "2689", "null", "2690", "null", "2691", "null", "2692", "null", "2693", "null", "2694", "null", "2695", "null", "2696", "null", "2697", "null", "2698", "null", "2699", "null", "2700", "null", "2701", "null", "2702", "null", "2703", "null", "2704", "null", "2705", "null", "2706", "null", "2707", "null", "2708", "null", "2709", "null", "2710", "null", "2711", "null", "2712", "null", "2713", "null", "2714", "null", "2715", "null", "2716", "null", "2717", "null", "2718", "null", "2719", "null", "2720", "null", "2721", "null", "2722", "null", "2723", "null", "2724", "null", "2725", "null", "2726", "null", "2727", "null", "2728", "null", "2729", "null", "2730", "null", "2731", "null", "2732", "null", "2733", "null", "2734", "null", "2735", "null", "2736", "null", "2737", "null", "2738", "null", "2739", "null", "2740", "null", "2741", "null", "2742", "null", "2743", "null", "2744", "null", "2745", "null", "2746", "null", "2747", "null", "2748", "null", "2749", "null", "2750", "null", "2751", "null", "2752", "null", "2753", "null", "2754", "null", "2755", "null", "2756", "null", "2757", "null", "2758", "null", "2759", "null", "2760", "null", "2761", "null", "2762", "null", "2763", "null", "2764", "null", "2765", "null", "2766", "null", "2767", "null", "2768", "null", "2769", "null", "2770", "null", "2771", "null", "2772", "null", "2773", "null", "2774", "null", "2775", "null", "2776", "null", "2777", "null", "2778", "null", "2779", "null", "2780", "null", "2781", "null", "2782", "null", "2783", "null", "2784", "null", "2785", "null", "2786", "null", "2787", "null", "2788", "null", "2789", "null", "2790", "null", "2791", "null", "2792", "null", "2793", "null", "2794", "null", "2795", "null", "2796", "null", "2797", "null", "2798", "null", "2799", "null", "2800", "null", "2801", "null", "2802", "null", "2803", "null", "2804", "null", "2805", "null", "2806", "null", "2807", "null", "2808", "null", "2809", "null", "2810", "null", "2811", "null", "2812", "null", "2813", "null", "2814", "null", "2815", "null", "2816", "null", "2817", "null", "2818", "null", "2819", "null", "2820", "null", "2821", "null", "2822", "null", "2823", "null", "2824", "null", "2825", "null", "2826", "null", "2827", "null", "2828", "null", "2829", "null", "2830", "null", "2831", "null", "2832", "null", "2833", "null", "2834", "null", "2835", "null", "2836", "null", "2837", "null", "2838", "null", "2839", "null", "2840", "null", "2841", "null", "2842", "null", "2843", "null", "2844", "null", "2845", "null", "2846", "null", "2847", "null", "2848", "null", "2849", "null", "2850", "null", "2851", "null", "2852", "null", "2853", "null", "2854", "null", "2855", "null", "2856", "null", "2857", "null", "2858", "null", "2859", "null", "2860", "null", "2861", "null", "2862", "null", "2863", "null", "2864", "null", "2865", "null", "2866", "null", "2867", "null", "2868", "null", "2869", "null", "2870", "null", "2871", "null", "2872", "null", "2873", "null", "2874", "null", "2875", "null", "2876", "null", "2877", "null", "2878", "null", "2879", "null", "2880", "null", "2881", "null", "2882", "null", "2883", "null", "2884", "null", "2885", "null", "2886", "null", "2887", "null", "2888", "null", "2889", "null", "2890", "null", "2891", "null", "2892", "null", "2893", "null", "2894", "null", "2895", "null", "2896", "null", "2897", "null", "2898", "null", "2899", "null", "2900", "null", "2901", "null", "2902", "null", "2903", "null", "2904", "null", "2905", "null", "2906", "null", "2907", "null", "2908", "null", "2909", "null", "2910", "null", "2911", "null", "2912", "null", "2913", "null", "2914", "null", "2915", "null", "2916", "null", "2917", "null", "2918", "null", "2919", "null", "2920", "null", "2921", "null", "2922", "null", "2923", "null", "2924", "null", "2925", "null", "2926", "null", "2927", "null", "2928", "null", "2929", "null", "2930", "null", "2931", "null", "2932", "null", "2933", "null", "2934", "null", "2935", "null", "2936", "null", "2937", "null", "2938", "null", "2939", "null", "2940", "null", "2941", "null", "2942", "null", "2943", "null", "2944", "null", "2945", "null", "2946", "null", "2947", "null", "2948", "null", "2949", "null", "2950", "null", "2951", "null", "2952", "null", "2953", "null", "2954", "null", "2955", "null", "2956", "null", "2957", "null", "2958", "null", "2959", "null", "2960", "null", "2961", "null", "2962", "null", "2963", "null", "2964", "null", "2965", "null", "2966", "null", "2967", "null", "2968", "null", "2969", "null", "2970", "null", "2971", "null", "2972", "null", "2973", "null", "2974", "null", "2975", "null", "2976", "null", "2977", "null", "2978", "null", "2979", "null", "2980", "null", "2981", "null", "2982", "null", "2983", "null", "2984", "null", "2985", "null", "2986", "null", "2987", "null", "2988", "null", "2989", "null", "2990", "null", "2991", "null", "2992", "null", "2993", "null", "2994", "null", "2995", "null", "2996", "null", "2997", "null", "2998", "null", "2999", "null", "3000"] TODO diff --git a/test_data/tree_inorder.tsv b/test_data/tree_inorder.tsv index 2dc61a2a5..c62ac889f 100644 --- a/test_data/tree_inorder.tsv +++ b/test_data/tree_inorder.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["-1", "-1", "-3", "5", "10", "0"] [5, -1, 10, -1, 0, -3] TODO ["-1", "-1", "-3", "6", "null", "null", "4"] [6, -1, -1, -3, 4] TODO ["-1", "-1", "0", "null", "8", "null", "11", "1"] [-1, 1, 8, -1, 0, 11] TODO diff --git a/test_data/tree_level_order.tsv b/test_data/tree_level_order.tsv index e0e87566b..cd57c10ae 100644 --- a/test_data/tree_level_order.tsv +++ b/test_data/tree_level_order.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(array(int)) -@ tree ["3", "2", "5", "1", "null", "4", "6", "10", "null", "null", "null", "null", "null", "13"] [[3], [2, 5], [1, 4, 6], [10], [13]] TODO ["-1", "-1", "-2", "null", "2", "null", "9"] [[-1], [-1, -2], [2, 9]] TODO ["-1", "-1", "2", "0", "null", "6", "null", "3"] [[-1], [-1, 2], [0, 6], [3]] TODO diff --git a/test_data/tree_postorder.tsv b/test_data/tree_postorder.tsv index a00fbfa04..9a76bd193 100644 --- a/test_data/tree_postorder.tsv +++ b/test_data/tree_postorder.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["2", "-7", "-2", "-13", "-7", "5", "11", "-9", "3", "2", "1", "-5", "5", "1", "-14", "1", "2", "6", "-8", "6", "-4", "-11", "13", "9", "10", "1", "-3", "-6", "-10", "-7", "-7"] [1, 2, -9, 6, -8, 3, -13, 6, -4, 2, -11, 13, 1, -7, -7, 9, 10, -5, 1, -3, 5, 5, -6, -10, 1, -7, -7, -14, 11, -2, 2] TODO ["4", "-1", "-2", "null", "13", "7", "null", "null", "8"] [8, 13, -1, 7, -2, 4] TODO ["1", "-7", "12", "-11", "null", "9", "13", "null", "0", "9", "13", "null", "14", "null", "-8", "-3", "2", "11", "11"] [-8, 0, -11, -7, -3, 2, 9, 11, 11, 13, 9, 14, 13, 12, 1] TODO diff --git a/test_data/tree_preorder.tsv b/test_data/tree_preorder.tsv index 4f74473ee..4f589e75e 100644 --- a/test_data/tree_preorder.tsv +++ b/test_data/tree_preorder.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["2", "-1", "-3", "-10", "-11", "0", "7", "-9", "3", "-1", "5", "-2", "2", "6", "-9", "-1", "-1", "-2", "-1", "9", "-3", "-14", "12", "7", "8", "6", "-2", "-2", "-4", "-11", "-6"] [2, -1, -10, -9, -1, -1, 3, -2, -1, -11, -1, 9, -3, 5, -14, 12, -3, 0, -2, 7, 8, 2, 6, -2, 7, 6, -2, -4, -9, -11, -6] TODO ["-6", "-4", "2", "null", "9", "4", "null", "null", "7"] [-6, -4, 9, 7, 2, 4] TODO ["4", "0", "18", "-2", "null", "5", "14", "null", "-5", "1", "9", "null", "17", "null", "0", "5", "9", "10", "11"] [4, 0, -2, -5, 0, 18, 5, 1, 5, 9, 9, 10, 11, 14, 17] TODO diff --git a/test_data/tree_right_sibling.tsv b/test_data/tree_right_sibling.tsv index f949cfdd5..cccc66c2c 100644 --- a/test_data/tree_right_sibling.tsv +++ b/test_data/tree_right_sibling.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(array(int)) -@ tree ["null"] [] TODO ["518"] [[518]] TODO ["305", "588", "929"] [[305], [588, 929]] TODO diff --git a/test_data/tree_with_parent_inorder.tsv b/test_data/tree_with_parent_inorder.tsv index d791ad36b..4c208054e 100644 --- a/test_data/tree_with_parent_inorder.tsv +++ b/test_data/tree_with_parent_inorder.tsv @@ -1,5 +1,4 @@ binary_tree(int) array(int) -@ tree ["-1", "-1", "5", "5", "-2", "5", "2"] [5, -1, -2, -1, 5, 5, 2] TODO ["-1", "-1", "6"] [-1, -1, 6] TODO ["-1", "-1", "null", "-1", "7", "null", "0"] [-1, 0, -1, 7, -1] TODO diff --git a/test_data/two_sorted_arrays_merge.tsv b/test_data/two_sorted_arrays_merge.tsv index 2f15b2a59..aa3de0c2c 100644 --- a/test_data/two_sorted_arrays_merge.tsv +++ b/test_data/two_sorted_arrays_merge.tsv @@ -1,5 +1,4 @@ array(int) int array(int) int array(int) -@ A m B n [-1, 0, 0, 0, 0] 1 [-3, -1, 0, 3] 4 [-3, -1, -1, 0, 3] TODO [-126, -126, -124, -118, -116, -115, -109, -108, -104, -100, -98, -98, -96, -92, -91, -85, -84, -84, -82, -82, -80, -76, -76, -73, -72, -70, -70, -68, -67, -66, -66, -64, -64, -59, -54, -52, -51, -51, -49, -46, -43, -43, -43, -42, -39, -39, -39, -38, -38, -37, -32, -31, -31, -29, -27, -26, -25, -25, -22, -21, -16, -16, -13, -11, -10, -9, -5, -5, 3, 3, 8, 9, 12, 13, 14, 15, 16, 16, 18, 23, 24, 26, 28, 36, 38, 39, 39, 43, 44, 45, 47, 47, 47, 49, 52, 53, 59, 60, 66, 66, 67, 73, 73, 73, 74, 75, 77, 78, 81, 84, 89, 89, 92, 98, 100, 101, 102, 109, 110, 111, 116, 116, 117, 118, 123, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 126 [-95, -93, -93, -93, -87, -87, -86, -85, -84, -82, -81, -80, -79, -79, -75, -74, -73, -73, -73, -68, -67, -67, -66, -64, -62, -61, -60, -60, -58, -57, -57, -56, -54, -53, -53, -52, -50, -47, -45, -44, -42, -42, -41, -41, -41, -36, -30, -30, -28, -18, -13, -12, -10, -2, -1, 2, 4, 4, 5, 6, 8, 10, 10, 12, 12, 14, 15, 16, 19, 20, 21, 24, 25, 26, 26, 28, 29, 33, 38, 42, 44, 44, 55, 60, 63, 71, 71, 72, 73, 75, 75, 79, 80, 82, 85, 89, 91, 91, 92, 96] 100 [-126, -126, -124, -118, -116, -115, -109, -108, -104, -100, -98, -98, -96, -95, -93, -93, -93, -92, -91, -87, -87, -86, -85, -85, -84, -84, -84, -82, -82, -82, -81, -80, -80, -79, -79, -76, -76, -75, -74, -73, -73, -73, -73, -72, -70, -70, -68, -68, -67, -67, -67, -66, -66, -66, -64, -64, -64, -62, -61, -60, -60, -59, -58, -57, -57, -56, -54, -54, -53, -53, -52, -52, -51, -51, -50, -49, -47, -46, -45, -44, -43, -43, -43, -42, -42, -42, -41, -41, -41, -39, -39, -39, -38, -38, -37, -36, -32, -31, -31, -30, -30, -29, -28, -27, -26, -25, -25, -22, -21, -18, -16, -16, -13, -13, -12, -11, -10, -10, -9, -5, -5, -2, -1, 2, 3, 3, 4, 4, 5, 6, 8, 8, 9, 10, 10, 12, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 18, 19, 20, 21, 23, 24, 24, 25, 26, 26, 26, 28, 28, 29, 33, 36, 38, 38, 39, 39, 42, 43, 44, 44, 44, 45, 47, 47, 47, 49, 52, 53, 55, 59, 60, 60, 63, 66, 66, 67, 71, 71, 72, 73, 73, 73, 73, 74, 75, 75, 75, 77, 78, 79, 80, 81, 82, 84, 85, 89, 89, 89, 91, 91, 92, 92, 96, 98, 100, 101, 102, 109, 110, 111, 116, 116, 117, 118, 123, 125] TODO [-6, 2, 3, 4, 4, 6, 0] 6 [1] 1 [-6, 1, 2, 3, 4, 4, 6] TODO diff --git a/test_data/two_sum.tsv b/test_data/two_sum.tsv index bfe68727b..b5a0f607e 100644 --- a/test_data/two_sum.tsv +++ b/test_data/two_sum.tsv @@ -1,5 +1,4 @@ array(int) int bool -@ A t [-2, 1, 2, 4, 7, 11] 6 true Example in the book. 2 + 4 = 6 [-2, 1, 2, 4, 7, 11] 0 true Example in the book. -2 + 2 = 0 [-2, 1, 2, 4, 7, 11] 13 true Example in the book. 2 + 11 = 13 diff --git a/test_data/uniform_random_number.tsv b/test_data/uniform_random_number.tsv index 92c6f04c5..bac5bd2b4 100644 --- a/test_data/uniform_random_number.tsv +++ b/test_data/uniform_random_number.tsv @@ -1,5 +1,4 @@ int int void -@ lower_bound upper_bound 0 10 TODO 10 25 TODO 1 100 TODO diff --git a/test_data/valid_ip_addresses.tsv b/test_data/valid_ip_addresses.tsv index 0888b7007..2d2b407a1 100644 --- a/test_data/valid_ip_addresses.tsv +++ b/test_data/valid_ip_addresses.tsv @@ -1,5 +1,4 @@ string array(string) -@ s 255255255255 ["255.255.255.255"] TODO 1111 ["1.1.1.1"] TODO 11000 ["1.10.0.0", "11.0.0.0"] TODO diff --git a/test_data/zip_list.tsv b/test_data/zip_list.tsv index 96b1bb05b..5c03f461c 100644 --- a/test_data/zip_list.tsv +++ b/test_data/zip_list.tsv @@ -1,5 +1,4 @@ linked_list(int) linked_list(int) -@ L [0] [0] TODO [1, 0] [1, 0] TODO [1, 0, 2] [1, 2, 0] TODO