offcode 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -2
- package/data/index.json +1 -0
- package/data/problems/01-matrix.json +1 -0
- package/data/problems/1-bit-and-2-bit-characters.json +1 -0
- package/data/problems/132-pattern.json +1 -0
- package/data/problems/2-keys-keyboard.json +1 -0
- package/data/problems/24-game.json +1 -0
- package/data/problems/3sum-closest.json +1 -0
- package/data/problems/3sum-smaller.json +1 -0
- package/data/problems/3sum-with-multiplicity.json +1 -0
- package/data/problems/3sum.json +1 -0
- package/data/problems/4-keys-keyboard.json +1 -0
- package/data/problems/4sum-ii.json +1 -0
- package/data/problems/4sum.json +1 -0
- package/data/problems/accounts-merge.json +1 -0
- package/data/problems/add-binary.json +1 -0
- package/data/problems/add-bold-tag-in-string.json +1 -0
- package/data/problems/add-digits.json +1 -0
- package/data/problems/add-one-row-to-tree.json +1 -0
- package/data/problems/add-strings.json +1 -0
- package/data/problems/add-to-array-form-of-integer.json +1 -0
- package/data/problems/add-two-numbers-ii.json +1 -0
- package/data/problems/add-two-numbers.json +1 -0
- package/data/problems/additive-number.json +1 -0
- package/data/problems/advantage-shuffle.json +1 -0
- package/data/problems/alien-dictionary.json +1 -0
- package/data/problems/all-nodes-distance-k-in-binary-tree.json +1 -0
- package/data/problems/all-oone-data-structure.json +1 -0
- package/data/problems/all-paths-from-source-to-target.json +1 -0
- package/data/problems/all-possible-full-binary-trees.json +1 -0
- package/data/problems/ambiguous-coordinates.json +1 -0
- package/data/problems/android-unlock-patterns.json +1 -0
- package/data/problems/arithmetic-slices-ii-subsequence.json +1 -0
- package/data/problems/arithmetic-slices.json +1 -0
- package/data/problems/arranging-coins.json +1 -0
- package/data/problems/array-nesting.json +1 -0
- package/data/problems/array-of-doubled-pairs.json +1 -0
- package/data/problems/array-partition.json +1 -0
- package/data/problems/assign-cookies.json +1 -0
- package/data/problems/asteroid-collision.json +1 -0
- package/data/problems/available-captures-for-rook.json +1 -0
- package/data/problems/average-of-levels-in-binary-tree.json +1 -0
- package/data/problems/backspace-string-compare.json +1 -0
- package/data/problems/bag-of-tokens.json +1 -0
- package/data/problems/balanced-binary-tree.json +1 -0
- package/data/problems/base-7.json +1 -0
- package/data/problems/baseball-game.json +1 -0
- package/data/problems/basic-absolute-value.json +1 -0
- package/data/problems/basic-array-max.json +1 -0
- package/data/problems/basic-array-min.json +1 -0
- package/data/problems/basic-array-sum-rec.json +1 -0
- package/data/problems/basic-array-sum.json +1 -0
- package/data/problems/basic-average-floor.json +1 -0
- package/data/problems/basic-bubble-sort.json +1 -0
- package/data/problems/basic-calculator-ii.json +1 -0
- package/data/problems/basic-calculator-iii.json +1 -0
- package/data/problems/basic-calculator-iv.json +1 -0
- package/data/problems/basic-calculator.json +1 -0
- package/data/problems/basic-collatz-steps.json +1 -0
- package/data/problems/basic-contains-value.json +1 -0
- package/data/problems/basic-count-above.json +1 -0
- package/data/problems/basic-count-char.json +1 -0
- package/data/problems/basic-count-digits.json +1 -0
- package/data/problems/basic-count-evens.json +1 -0
- package/data/problems/basic-count-pairs.json +1 -0
- package/data/problems/basic-count-vowels.json +1 -0
- package/data/problems/basic-count-words.json +1 -0
- package/data/problems/basic-countdown.json +1 -0
- package/data/problems/basic-double-array.json +1 -0
- package/data/problems/basic-factorial-rec.json +1 -0
- package/data/problems/basic-factorial.json +1 -0
- package/data/problems/basic-fibonacci.json +1 -0
- package/data/problems/basic-find-index.json +1 -0
- package/data/problems/basic-gcd.json +1 -0
- package/data/problems/basic-grade-letter.json +1 -0
- package/data/problems/basic-has-duplicate.json +1 -0
- package/data/problems/basic-is-even.json +1 -0
- package/data/problems/basic-is-leap-year.json +1 -0
- package/data/problems/basic-is-sorted.json +1 -0
- package/data/problems/basic-max-frequency.json +1 -0
- package/data/problems/basic-max-of-three.json +1 -0
- package/data/problems/basic-max-of-two.json +1 -0
- package/data/problems/basic-palindrome-text.json +1 -0
- package/data/problems/basic-power-rec.json +1 -0
- package/data/problems/basic-power.json +1 -0
- package/data/problems/basic-repeat-string.json +1 -0
- package/data/problems/basic-reverse-array.json +1 -0
- package/data/problems/basic-reverse-number.json +1 -0
- package/data/problems/basic-reverse-text-rec.json +1 -0
- package/data/problems/basic-reverse-text.json +1 -0
- package/data/problems/basic-second-largest.json +1 -0
- package/data/problems/basic-sort-two.json +1 -0
- package/data/problems/basic-staircase.json +1 -0
- package/data/problems/basic-string-length.json +1 -0
- package/data/problems/basic-sum-1-to-n.json +1 -0
- package/data/problems/basic-sum-digits-rec.json +1 -0
- package/data/problems/basic-sum-multiples.json +1 -0
- package/data/problems/basic-sum-of-digits.json +1 -0
- package/data/problems/basic-temperature-advice.json +1 -0
- package/data/problems/basic-to-upper.json +1 -0
- package/data/problems/basic-triangle-sum.json +1 -0
- package/data/problems/battleships-in-a-board.json +1 -0
- package/data/problems/beautiful-arrangement-ii.json +1 -0
- package/data/problems/beautiful-arrangement.json +1 -0
- package/data/problems/beautiful-array.json +1 -0
- package/data/problems/best-meeting-point.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock-ii.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock-iii.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock-iv.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock-with-cooldown.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock-with-transaction-fee.json +1 -0
- package/data/problems/best-time-to-buy-and-sell-stock.json +1 -0
- package/data/problems/binary-gap.json +1 -0
- package/data/problems/binary-number-with-alternating-bits.json +1 -0
- package/data/problems/binary-search-tree-iterator.json +1 -0
- package/data/problems/binary-search.json +1 -0
- package/data/problems/binary-subarrays-with-sum.json +1 -0
- package/data/problems/binary-tree-cameras.json +1 -0
- package/data/problems/binary-tree-inorder-traversal.json +1 -0
- package/data/problems/binary-tree-level-order-traversal-ii.json +1 -0
- package/data/problems/binary-tree-level-order-traversal.json +1 -0
- package/data/problems/binary-tree-longest-consecutive-sequence-ii.json +1 -0
- package/data/problems/binary-tree-longest-consecutive-sequence.json +1 -0
- package/data/problems/binary-tree-maximum-path-sum.json +1 -0
- package/data/problems/binary-tree-paths.json +1 -0
- package/data/problems/binary-tree-postorder-traversal.json +1 -0
- package/data/problems/binary-tree-preorder-traversal.json +1 -0
- package/data/problems/binary-tree-pruning.json +1 -0
- package/data/problems/binary-tree-right-side-view.json +1 -0
- package/data/problems/binary-tree-tilt.json +1 -0
- package/data/problems/binary-tree-upside-down.json +1 -0
- package/data/problems/binary-tree-vertical-order-traversal.json +1 -0
- package/data/problems/binary-tree-zigzag-level-order-traversal.json +1 -0
- package/data/problems/binary-trees-with-factors.json +1 -0
- package/data/problems/binary-watch.json +1 -0
- package/data/problems/bitwise-and-of-numbers-range.json +1 -0
- package/data/problems/bitwise-ors-of-subarrays.json +1 -0
- package/data/problems/boats-to-save-people.json +1 -0
- package/data/problems/bold-words-in-string.json +1 -0
- package/data/problems/bomb-enemy.json +1 -0
- package/data/problems/boundary-of-binary-tree.json +1 -0
- package/data/problems/brick-wall.json +1 -0
- package/data/problems/bricks-falling-when-hit.json +1 -0
- package/data/problems/broken-calculator.json +1 -0
- package/data/problems/buddy-strings.json +1 -0
- package/data/problems/build-a-matrix-with-conditions.json +1 -0
- package/data/problems/bulb-switcher-ii.json +1 -0
- package/data/problems/bulb-switcher.json +1 -0
- package/data/problems/bulls-and-cows.json +1 -0
- package/data/problems/burst-balloons.json +1 -0
- package/data/problems/bus-routes.json +1 -0
- package/data/problems/can-i-win.json +1 -0
- package/data/problems/can-place-flowers.json +1 -0
- package/data/problems/candy-crush.json +1 -0
- package/data/problems/candy.json +1 -0
- package/data/problems/capacity-to-ship-packages-within-d-days.json +1 -0
- package/data/problems/car-fleet.json +1 -0
- package/data/problems/car-pooling.json +1 -0
- package/data/problems/card-flipping-game.json +1 -0
- package/data/problems/cat-and-mouse.json +1 -0
- package/data/problems/chalkboard-xor-game.json +1 -0
- package/data/problems/champagne-tower.json +1 -0
- package/data/problems/cheapest-flights-within-k-stops.json +1 -0
- package/data/problems/check-completeness-of-a-binary-tree.json +1 -0
- package/data/problems/cherry-pickup.json +1 -0
- package/data/problems/circular-array-loop.json +1 -0
- package/data/problems/climbing-stairs.json +1 -0
- package/data/problems/clone-graph.json +1 -0
- package/data/problems/closest-binary-search-tree-value-ii.json +1 -0
- package/data/problems/closest-binary-search-tree-value.json +1 -0
- package/data/problems/closest-leaf-in-a-binary-tree.json +1 -0
- package/data/problems/coin-change-ii.json +1 -0
- package/data/problems/coin-change.json +1 -0
- package/data/problems/coin-path.json +1 -0
- package/data/problems/combination-sum-ii.json +1 -0
- package/data/problems/combination-sum-iii.json +1 -0
- package/data/problems/combination-sum-iv.json +1 -0
- package/data/problems/combination-sum.json +1 -0
- package/data/problems/combinations.json +1 -0
- package/data/problems/compare-version-numbers.json +1 -0
- package/data/problems/complete-binary-tree-inserter.json +1 -0
- package/data/problems/complex-number-multiplication.json +1 -0
- package/data/problems/concatenated-words.json +1 -0
- package/data/problems/concatenation-of-array.json +1 -0
- package/data/problems/consecutive-numbers-sum.json +1 -0
- package/data/problems/construct-binary-tree-from-inorder-and-postorder-traversal.json +1 -0
- package/data/problems/construct-binary-tree-from-preorder-and-inorder-traversal.json +1 -0
- package/data/problems/construct-binary-tree-from-preorder-and-postorder-traversal.json +1 -0
- package/data/problems/construct-binary-tree-from-string.json +1 -0
- package/data/problems/construct-quad-tree.json +1 -0
- package/data/problems/construct-string-from-binary-tree.json +1 -0
- package/data/problems/construct-the-rectangle.json +1 -0
- package/data/problems/contain-virus.json +1 -0
- package/data/problems/container-with-most-water.json +1 -0
- package/data/problems/contains-duplicate-ii.json +1 -0
- package/data/problems/contains-duplicate-iii.json +1 -0
- package/data/problems/contains-duplicate.json +1 -0
- package/data/problems/contiguous-array.json +1 -0
- package/data/problems/continuous-subarray-sum.json +1 -0
- package/data/problems/convert-a-number-to-hexadecimal.json +1 -0
- package/data/problems/convert-binary-search-tree-to-sorted-doubly-linked-list.json +1 -0
- package/data/problems/convert-bst-to-greater-tree.json +1 -0
- package/data/problems/convert-sorted-array-to-binary-search-tree.json +1 -0
- package/data/problems/convert-sorted-list-to-binary-search-tree.json +1 -0
- package/data/problems/convex-polygon.json +1 -0
- package/data/problems/copy-list-with-random-pointer.json +1 -0
- package/data/problems/count-and-say.json +1 -0
- package/data/problems/count-binary-substrings.json +1 -0
- package/data/problems/count-complete-tree-nodes.json +1 -0
- package/data/problems/count-different-palindromic-subsequences.json +1 -0
- package/data/problems/count-good-nodes-in-binary-tree.json +1 -0
- package/data/problems/count-numbers-with-unique-digits.json +1 -0
- package/data/problems/count-of-range-sum.json +1 -0
- package/data/problems/count-of-smaller-numbers-after-self.json +1 -0
- package/data/problems/count-primes.json +1 -0
- package/data/problems/count-the-repetitions.json +1 -0
- package/data/problems/count-unique-characters-of-all-substrings-of-a-given-string.json +1 -0
- package/data/problems/count-univalue-subtrees.json +1 -0
- package/data/problems/counting-bits.json +1 -0
- package/data/problems/couples-holding-hands.json +1 -0
- package/data/problems/course-schedule-ii.json +1 -0
- package/data/problems/course-schedule-iii.json +1 -0
- package/data/problems/course-schedule-iv.json +1 -0
- package/data/problems/course-schedule.json +1 -0
- package/data/problems/cousins-in-binary-tree.json +1 -0
- package/data/problems/cracking-the-safe.json +1 -0
- package/data/problems/create-maximum-number.json +1 -0
- package/data/problems/custom-sort-string.json +1 -0
- package/data/problems/cut-off-trees-for-golf-event.json +1 -0
- package/data/problems/daily-temperatures.json +1 -0
- package/data/problems/data-stream-as-disjoint-intervals.json +1 -0
- package/data/problems/decode-string.json +1 -0
- package/data/problems/decode-ways-ii.json +1 -0
- package/data/problems/decode-ways.json +1 -0
- package/data/problems/decoded-string-at-index.json +1 -0
- package/data/problems/degree-of-an-array.json +1 -0
- package/data/problems/delete-and-earn.json +1 -0
- package/data/problems/delete-columns-to-make-sorted-ii.json +1 -0
- package/data/problems/delete-columns-to-make-sorted-iii.json +1 -0
- package/data/problems/delete-columns-to-make-sorted.json +1 -0
- package/data/problems/delete-leaves-with-a-given-value.json +1 -0
- package/data/problems/delete-node-in-a-bst.json +1 -0
- package/data/problems/delete-node-in-a-linked-list.json +1 -0
- package/data/problems/delete-operation-for-two-strings.json +1 -0
- package/data/problems/design-add-and-search-words-data-structure.json +1 -0
- package/data/problems/design-circular-deque.json +1 -0
- package/data/problems/design-circular-queue.json +1 -0
- package/data/problems/design-compressed-string-iterator.json +1 -0
- package/data/problems/design-excel-sum-formula.json +1 -0
- package/data/problems/design-hashmap.json +1 -0
- package/data/problems/design-hashset.json +1 -0
- package/data/problems/design-hit-counter.json +1 -0
- package/data/problems/design-in-memory-file-system.json +1 -0
- package/data/problems/design-linked-list.json +1 -0
- package/data/problems/design-log-storage-system.json +1 -0
- package/data/problems/design-phone-directory.json +1 -0
- package/data/problems/design-search-autocomplete-system.json +1 -0
- package/data/problems/design-snake-game.json +1 -0
- package/data/problems/design-tic-tac-toe.json +1 -0
- package/data/problems/design-twitter.json +1 -0
- package/data/problems/detect-capital.json +1 -0
- package/data/problems/detect-squares.json +1 -0
- package/data/problems/di-string-match.json +1 -0
- package/data/problems/diagonal-traverse.json +1 -0
- package/data/problems/diameter-of-binary-tree.json +1 -0
- package/data/problems/different-ways-to-add-parentheses.json +1 -0
- package/data/problems/distinct-subsequences-ii.json +1 -0
- package/data/problems/distinct-subsequences.json +1 -0
- package/data/problems/distribute-candies.json +1 -0
- package/data/problems/distribute-coins-in-binary-tree.json +1 -0
- package/data/problems/divide-two-integers.json +1 -0
- package/data/problems/domino-and-tromino-tiling.json +1 -0
- package/data/problems/dota2-senate.json +1 -0
- package/data/problems/dungeon-game.json +1 -0
- package/data/problems/edit-distance.json +1 -0
- package/data/problems/elimination-game.json +1 -0
- package/data/problems/employee-free-time.json +1 -0
- package/data/problems/employee-importance.json +1 -0
- package/data/problems/encode-and-decode-strings.json +1 -0
- package/data/problems/encode-and-decode-tinyurl.json +1 -0
- package/data/problems/encode-n-ary-tree-to-binary-tree.json +1 -0
- package/data/problems/encode-string-with-shortest-length.json +1 -0
- package/data/problems/equal-rational-numbers.json +1 -0
- package/data/problems/equal-tree-partition.json +1 -0
- package/data/problems/erect-the-fence.json +1 -0
- package/data/problems/escape-the-ghosts.json +1 -0
- package/data/problems/evaluate-division.json +1 -0
- package/data/problems/evaluate-reverse-polish-notation.json +1 -0
- package/data/problems/exam-room.json +1 -0
- package/data/problems/excel-sheet-column-number.json +1 -0
- package/data/problems/excel-sheet-column-title.json +1 -0
- package/data/problems/exclusive-time-of-functions.json +1 -0
- package/data/problems/expression-add-operators.json +1 -0
- package/data/problems/expressive-words.json +1 -0
- package/data/problems/extra-characters-in-a-string.json +1 -0
- package/data/problems/factor-combinations.json +1 -0
- package/data/problems/factorial-trailing-zeroes.json +1 -0
- package/data/problems/fair-candy-swap.json +1 -0
- package/data/problems/falling-squares.json +1 -0
- package/data/problems/fibonacci-number.json +1 -0
- package/data/problems/find-all-anagrams-in-a-string.json +1 -0
- package/data/problems/find-all-duplicates-in-an-array.json +1 -0
- package/data/problems/find-all-numbers-disappeared-in-an-array.json +1 -0
- package/data/problems/find-anagram-mappings.json +1 -0
- package/data/problems/find-and-replace-in-string.json +1 -0
- package/data/problems/find-and-replace-pattern.json +1 -0
- package/data/problems/find-bottom-left-tree-value.json +1 -0
- package/data/problems/find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree.json +1 -0
- package/data/problems/find-duplicate-file-in-system.json +1 -0
- package/data/problems/find-duplicate-subtrees.json +1 -0
- package/data/problems/find-eventual-safe-states.json +1 -0
- package/data/problems/find-first-and-last-position-of-element-in-sorted-array.json +1 -0
- package/data/problems/find-in-mountain-array.json +1 -0
- package/data/problems/find-k-closest-elements.json +1 -0
- package/data/problems/find-k-pairs-with-smallest-sums.json +1 -0
- package/data/problems/find-k-th-smallest-pair-distance.json +1 -0
- package/data/problems/find-largest-value-in-each-tree-row.json +1 -0
- package/data/problems/find-leaves-of-binary-tree.json +1 -0
- package/data/problems/find-median-from-data-stream.json +1 -0
- package/data/problems/find-minimum-in-rotated-sorted-array-ii.json +1 -0
- package/data/problems/find-minimum-in-rotated-sorted-array.json +1 -0
- package/data/problems/find-mode-in-binary-search-tree.json +1 -0
- package/data/problems/find-peak-element.json +1 -0
- package/data/problems/find-permutation.json +1 -0
- package/data/problems/find-pivot-index.json +1 -0
- package/data/problems/find-right-interval.json +1 -0
- package/data/problems/find-smallest-letter-greater-than-target.json +1 -0
- package/data/problems/find-the-celebrity.json +1 -0
- package/data/problems/find-the-closest-palindrome.json +1 -0
- package/data/problems/find-the-derangement-of-an-array.json +1 -0
- package/data/problems/find-the-difference.json +1 -0
- package/data/problems/find-the-duplicate-number.json +1 -0
- package/data/problems/find-the-index-of-the-first-occurrence-in-a-string.json +1 -0
- package/data/problems/find-the-shortest-superstring.json +1 -0
- package/data/problems/find-the-town-judge.json +1 -0
- package/data/problems/first-bad-version.json +1 -0
- package/data/problems/first-missing-positive.json +1 -0
- package/data/problems/first-unique-character-in-a-string.json +1 -0
- package/data/problems/fizz-buzz.json +1 -0
- package/data/problems/flatten-2d-vector.json +1 -0
- package/data/problems/flatten-a-multilevel-doubly-linked-list.json +1 -0
- package/data/problems/flatten-binary-tree-to-linked-list.json +1 -0
- package/data/problems/flatten-nested-list-iterator.json +1 -0
- package/data/problems/flip-binary-tree-to-match-preorder-traversal.json +1 -0
- package/data/problems/flip-equivalent-binary-trees.json +1 -0
- package/data/problems/flip-game-ii.json +1 -0
- package/data/problems/flip-game.json +1 -0
- package/data/problems/flip-string-to-monotone-increasing.json +1 -0
- package/data/problems/flipping-an-image.json +1 -0
- package/data/problems/flood-fill.json +1 -0
- package/data/problems/fraction-addition-and-subtraction.json +1 -0
- package/data/problems/fraction-to-recurring-decimal.json +1 -0
- package/data/problems/freedom-trail.json +1 -0
- package/data/problems/friends-of-appropriate-ages.json +1 -0
- package/data/problems/frog-jump.json +1 -0
- package/data/problems/fruit-into-baskets.json +1 -0
- package/data/problems/game-of-life.json +1 -0
- package/data/problems/gas-station.json +1 -0
- package/data/problems/generalized-abbreviation.json +1 -0
- package/data/problems/generate-parentheses.json +1 -0
- package/data/problems/generate-random-point-in-a-circle.json +1 -0
- package/data/problems/global-and-local-inversions.json +1 -0
- package/data/problems/goat-latin.json +1 -0
- package/data/problems/graph-valid-tree.json +1 -0
- package/data/problems/gray-code.json +1 -0
- package/data/problems/greatest-common-divisor-of-strings.json +1 -0
- package/data/problems/greatest-common-divisor-traversal.json +1 -0
- package/data/problems/group-anagrams.json +1 -0
- package/data/problems/group-shifted-strings.json +1 -0
- package/data/problems/groups-of-special-equivalent-strings.json +1 -0
- package/data/problems/guess-number-higher-or-lower-ii.json +1 -0
- package/data/problems/guess-number-higher-or-lower.json +1 -0
- package/data/problems/guess-the-word.json +1 -0
- package/data/problems/h-index-ii.json +1 -0
- package/data/problems/h-index.json +1 -0
- package/data/problems/hamming-distance.json +1 -0
- package/data/problems/hand-of-straights.json +1 -0
- package/data/problems/happy-number.json +1 -0
- package/data/problems/heaters.json +1 -0
- package/data/problems/house-robber-ii.json +1 -0
- package/data/problems/house-robber-iii.json +1 -0
- package/data/problems/house-robber.json +1 -0
- package/data/problems/image-overlap.json +1 -0
- package/data/problems/image-smoother.json +1 -0
- package/data/problems/implement-magic-dictionary.json +1 -0
- package/data/problems/implement-queue-using-stacks.json +1 -0
- package/data/problems/implement-rand10-using-rand7.json +1 -0
- package/data/problems/implement-stack-using-queues.json +1 -0
- package/data/problems/implement-trie-prefix-tree.json +1 -0
- package/data/problems/increasing-order-search-tree.json +1 -0
- package/data/problems/increasing-triplet-subsequence.json +1 -0
- package/data/problems/inorder-successor-in-bst-ii.json +1 -0
- package/data/problems/inorder-successor-in-bst.json +1 -0
- package/data/problems/insert-delete-getrandom-o1-duplicates-allowed.json +1 -0
- package/data/problems/insert-delete-getrandom-o1.json +1 -0
- package/data/problems/insert-greatest-common-divisors-in-linked-list.json +1 -0
- package/data/problems/insert-interval.json +1 -0
- package/data/problems/insert-into-a-binary-search-tree.json +1 -0
- package/data/problems/insert-into-a-sorted-circular-linked-list.json +1 -0
- package/data/problems/insertion-sort-list.json +1 -0
- package/data/problems/integer-break.json +1 -0
- package/data/problems/integer-replacement.json +1 -0
- package/data/problems/integer-to-english-words.json +1 -0
- package/data/problems/integer-to-roman.json +1 -0
- package/data/problems/interleaving-string.json +1 -0
- package/data/problems/intersection-of-two-arrays-ii.json +1 -0
- package/data/problems/intersection-of-two-arrays.json +1 -0
- package/data/problems/intersection-of-two-linked-lists.json +1 -0
- package/data/problems/interval-list-intersections.json +1 -0
- package/data/problems/invert-binary-tree.json +1 -0
- package/data/problems/ip-to-cidr.json +1 -0
- package/data/problems/ipo.json +1 -0
- package/data/problems/is-graph-bipartite.json +1 -0
- package/data/problems/is-subsequence.json +1 -0
- package/data/problems/island-perimeter.json +1 -0
- package/data/problems/isomorphic-strings.json +1 -0
- package/data/problems/jewels-and-stones.json +1 -0
- package/data/problems/jump-game-ii.json +1 -0
- package/data/problems/jump-game-vii.json +1 -0
- package/data/problems/jump-game.json +1 -0
- package/data/problems/k-closest-points-to-origin.json +1 -0
- package/data/problems/k-diff-pairs-in-an-array.json +1 -0
- package/data/problems/k-empty-slots.json +1 -0
- package/data/problems/k-inverse-pairs-array.json +1 -0
- package/data/problems/k-similar-strings.json +1 -0
- package/data/problems/k-th-smallest-in-lexicographical-order.json +1 -0
- package/data/problems/k-th-smallest-prime-fraction.json +1 -0
- package/data/problems/k-th-symbol-in-grammar.json +1 -0
- package/data/problems/keyboard-row.json +1 -0
- package/data/problems/keys-and-rooms.json +1 -0
- package/data/problems/kill-process.json +1 -0
- package/data/problems/knight-dialer.json +1 -0
- package/data/problems/knight-probability-in-chessboard.json +1 -0
- package/data/problems/koko-eating-bananas.json +1 -0
- package/data/problems/kth-largest-element-in-a-stream.json +1 -0
- package/data/problems/kth-largest-element-in-an-array.json +1 -0
- package/data/problems/kth-smallest-element-in-a-bst.json +1 -0
- package/data/problems/kth-smallest-element-in-a-sorted-matrix.json +1 -0
- package/data/problems/kth-smallest-number-in-multiplication-table.json +1 -0
- package/data/problems/largest-bst-subtree.json +1 -0
- package/data/problems/largest-component-size-by-common-factor.json +1 -0
- package/data/problems/largest-divisible-subset.json +1 -0
- package/data/problems/largest-number-at-least-twice-of-others.json +1 -0
- package/data/problems/largest-number.json +1 -0
- package/data/problems/largest-palindrome-product.json +1 -0
- package/data/problems/largest-perimeter-triangle.json +1 -0
- package/data/problems/largest-plus-sign.json +1 -0
- package/data/problems/largest-rectangle-in-histogram.json +1 -0
- package/data/problems/largest-sum-of-averages.json +1 -0
- package/data/problems/largest-time-for-given-digits.json +1 -0
- package/data/problems/largest-triangle-area.json +1 -0
- package/data/problems/last-stone-weight-ii.json +1 -0
- package/data/problems/last-stone-weight.json +1 -0
- package/data/problems/leaf-similar-trees.json +1 -0
- package/data/problems/least-operators-to-express-number.json +1 -0
- package/data/problems/lemonade-change.json +1 -0
- package/data/problems/length-of-last-word.json +1 -0
- package/data/problems/length-of-longest-fibonacci-subsequence.json +1 -0
- package/data/problems/letter-case-permutation.json +1 -0
- package/data/problems/letter-combinations-of-a-phone-number.json +1 -0
- package/data/problems/lexicographical-numbers.json +1 -0
- package/data/problems/lfu-cache.json +1 -0
- package/data/problems/license-key-formatting.json +1 -0
- package/data/problems/line-reflection.json +1 -0
- package/data/problems/linked-list-components.json +1 -0
- package/data/problems/linked-list-cycle-ii.json +1 -0
- package/data/problems/linked-list-cycle.json +1 -0
- package/data/problems/linked-list-random-node.json +1 -0
- package/data/problems/logger-rate-limiter.json +1 -0
- package/data/problems/logical-or-of-two-binary-grids-represented-as-quad-trees.json +1 -0
- package/data/problems/lonely-pixel-i.json +1 -0
- package/data/problems/lonely-pixel-ii.json +1 -0
- package/data/problems/long-pressed-name.json +1 -0
- package/data/problems/longest-absolute-file-path.json +1 -0
- package/data/problems/longest-common-prefix.json +1 -0
- package/data/problems/longest-common-subsequence.json +1 -0
- package/data/problems/longest-consecutive-sequence.json +1 -0
- package/data/problems/longest-continuous-increasing-subsequence.json +1 -0
- package/data/problems/longest-happy-string.json +1 -0
- package/data/problems/longest-harmonious-subsequence.json +1 -0
- package/data/problems/longest-increasing-path-in-a-matrix.json +1 -0
- package/data/problems/longest-increasing-subsequence.json +1 -0
- package/data/problems/longest-line-of-consecutive-one-in-matrix.json +1 -0
- package/data/problems/longest-mountain-in-array.json +1 -0
- package/data/problems/longest-palindrome.json +1 -0
- package/data/problems/longest-palindromic-subsequence.json +1 -0
- package/data/problems/longest-palindromic-substring.json +1 -0
- package/data/problems/longest-repeating-character-replacement.json +1 -0
- package/data/problems/longest-substring-with-at-least-k-repeating-characters.json +1 -0
- package/data/problems/longest-substring-with-at-most-k-distinct-characters.json +1 -0
- package/data/problems/longest-substring-with-at-most-two-distinct-characters.json +1 -0
- package/data/problems/longest-substring-without-repeating-characters.json +1 -0
- package/data/problems/longest-turbulent-subarray.json +1 -0
- package/data/problems/longest-uncommon-subsequence-i.json +1 -0
- package/data/problems/longest-uncommon-subsequence-ii.json +1 -0
- package/data/problems/longest-univalue-path.json +1 -0
- package/data/problems/longest-valid-parentheses.json +1 -0
- package/data/problems/longest-word-in-dictionary-through-deleting.json +1 -0
- package/data/problems/longest-word-in-dictionary.json +1 -0
- package/data/problems/loud-and-rich.json +1 -0
- package/data/problems/lowest-common-ancestor-of-a-binary-search-tree.json +1 -0
- package/data/problems/lowest-common-ancestor-of-a-binary-tree.json +1 -0
- package/data/problems/lru-cache.json +1 -0
- package/data/problems/magic-squares-in-grid.json +1 -0
- package/data/problems/magical-string.json +1 -0
- package/data/problems/majority-element-ii.json +1 -0
- package/data/problems/majority-element.json +1 -0
- package/data/problems/making-a-large-island.json +1 -0
- package/data/problems/map-sum-pairs.json +1 -0
- package/data/problems/masking-personal-information.json +1 -0
- package/data/problems/matchsticks-to-square.json +1 -0
- package/data/problems/max-area-of-island.json +1 -0
- package/data/problems/max-chunks-to-make-sorted-ii.json +1 -0
- package/data/problems/max-chunks-to-make-sorted.json +1 -0
- package/data/problems/max-consecutive-ones-ii.json +1 -0
- package/data/problems/max-consecutive-ones.json +1 -0
- package/data/problems/max-increase-to-keep-city-skyline.json +1 -0
- package/data/problems/max-points-on-a-line.json +1 -0
- package/data/problems/max-stack.json +1 -0
- package/data/problems/max-sum-of-rectangle-no-larger-than-k.json +1 -0
- package/data/problems/maximal-rectangle.json +1 -0
- package/data/problems/maximal-square.json +1 -0
- package/data/problems/maximize-distance-to-closest-person.json +1 -0
- package/data/problems/maximum-average-subarray-i.json +1 -0
- package/data/problems/maximum-average-subarray-ii.json +1 -0
- package/data/problems/maximum-binary-tree-ii.json +1 -0
- package/data/problems/maximum-binary-tree.json +1 -0
- package/data/problems/maximum-depth-of-binary-tree.json +1 -0
- package/data/problems/maximum-depth-of-n-ary-tree.json +1 -0
- package/data/problems/maximum-distance-in-arrays.json +1 -0
- package/data/problems/maximum-frequency-stack.json +1 -0
- package/data/problems/maximum-gap.json +1 -0
- package/data/problems/maximum-length-of-pair-chain.json +1 -0
- package/data/problems/maximum-length-of-repeated-subarray.json +1 -0
- package/data/problems/maximum-product-of-three-numbers.json +1 -0
- package/data/problems/maximum-product-of-word-lengths.json +1 -0
- package/data/problems/maximum-product-subarray.json +1 -0
- package/data/problems/maximum-size-subarray-sum-equals-k.json +1 -0
- package/data/problems/maximum-subarray.json +1 -0
- package/data/problems/maximum-sum-circular-subarray.json +1 -0
- package/data/problems/maximum-sum-of-3-non-overlapping-subarrays.json +1 -0
- package/data/problems/maximum-swap.json +1 -0
- package/data/problems/maximum-vacation-days.json +1 -0
- package/data/problems/maximum-width-of-binary-tree.json +1 -0
- package/data/problems/maximum-width-ramp.json +1 -0
- package/data/problems/maximum-xor-of-two-numbers-in-an-array.json +1 -0
- package/data/problems/median-of-two-sorted-arrays.json +1 -0
- package/data/problems/meeting-rooms-ii.json +1 -0
- package/data/problems/meeting-rooms-iii.json +1 -0
- package/data/problems/meeting-rooms.json +1 -0
- package/data/problems/merge-intervals.json +1 -0
- package/data/problems/merge-k-sorted-lists.json +1 -0
- package/data/problems/merge-sorted-array.json +1 -0
- package/data/problems/merge-strings-alternately.json +1 -0
- package/data/problems/merge-triplets-to-form-target-triplet.json +1 -0
- package/data/problems/merge-two-binary-trees.json +1 -0
- package/data/problems/merge-two-sorted-lists.json +1 -0
- package/data/problems/middle-of-the-linked-list.json +1 -0
- package/data/problems/min-cost-climbing-stairs.json +1 -0
- package/data/problems/min-cost-to-connect-all-points.json +1 -0
- package/data/problems/min-stack.json +1 -0
- package/data/problems/minesweeper.json +1 -0
- package/data/problems/mini-parser.json +1 -0
- package/data/problems/minimize-malware-spread-ii.json +1 -0
- package/data/problems/minimize-malware-spread.json +1 -0
- package/data/problems/minimize-max-distance-to-gas-station.json +1 -0
- package/data/problems/minimum-absolute-difference-in-bst.json +1 -0
- package/data/problems/minimum-add-to-make-parentheses-valid.json +1 -0
- package/data/problems/minimum-area-rectangle-ii.json +1 -0
- package/data/problems/minimum-area-rectangle.json +1 -0
- package/data/problems/minimum-array-end.json +1 -0
- package/data/problems/minimum-ascii-delete-sum-for-two-strings.json +1 -0
- package/data/problems/minimum-cost-for-tickets.json +1 -0
- package/data/problems/minimum-cost-to-hire-k-workers.json +1 -0
- package/data/problems/minimum-cost-to-merge-stones.json +1 -0
- package/data/problems/minimum-depth-of-binary-tree.json +1 -0
- package/data/problems/minimum-distance-between-bst-nodes.json +1 -0
- package/data/problems/minimum-factorization.json +1 -0
- package/data/problems/minimum-falling-path-sum.json +1 -0
- package/data/problems/minimum-genetic-mutation.json +1 -0
- package/data/problems/minimum-height-trees.json +1 -0
- package/data/problems/minimum-increment-to-make-array-unique.json +1 -0
- package/data/problems/minimum-index-sum-of-two-lists.json +1 -0
- package/data/problems/minimum-interval-to-include-each-query.json +1 -0
- package/data/problems/minimum-moves-to-equal-array-elements-ii.json +1 -0
- package/data/problems/minimum-moves-to-equal-array-elements.json +1 -0
- package/data/problems/minimum-number-of-arrows-to-burst-balloons.json +1 -0
- package/data/problems/minimum-number-of-k-consecutive-bit-flips.json +1 -0
- package/data/problems/minimum-number-of-refueling-stops.json +1 -0
- package/data/problems/minimum-path-sum.json +1 -0
- package/data/problems/minimum-size-subarray-sum.json +1 -0
- package/data/problems/minimum-swaps-to-make-sequences-increasing.json +1 -0
- package/data/problems/minimum-time-difference.json +1 -0
- package/data/problems/minimum-unique-word-abbreviation.json +1 -0
- package/data/problems/minimum-window-subsequence.json +1 -0
- package/data/problems/minimum-window-substring.json +1 -0
- package/data/problems/mirror-reflection.json +1 -0
- package/data/problems/missing-number.json +1 -0
- package/data/problems/missing-ranges.json +1 -0
- package/data/problems/monotone-increasing-digits.json +1 -0
- package/data/problems/monotonic-array.json +1 -0
- package/data/problems/most-common-word.json +1 -0
- package/data/problems/most-frequent-subtree-sum.json +1 -0
- package/data/problems/most-profit-assigning-work.json +1 -0
- package/data/problems/most-stones-removed-with-same-row-or-column.json +1 -0
- package/data/problems/move-zeroes.json +1 -0
- package/data/problems/moving-average-from-data-stream.json +1 -0
- package/data/problems/multiply-strings.json +1 -0
- package/data/problems/my-calendar-i.json +1 -0
- package/data/problems/my-calendar-ii.json +1 -0
- package/data/problems/my-calendar-iii.json +1 -0
- package/data/problems/n-ary-tree-level-order-traversal.json +1 -0
- package/data/problems/n-ary-tree-postorder-traversal.json +1 -0
- package/data/problems/n-ary-tree-preorder-traversal.json +1 -0
- package/data/problems/n-queens-ii.json +1 -0
- package/data/problems/n-queens.json +1 -0
- package/data/problems/n-repeated-element-in-size-2n-array.json +1 -0
- package/data/problems/n-th-tribonacci-number.json +1 -0
- package/data/problems/nested-list-weight-sum-ii.json +1 -0
- package/data/problems/nested-list-weight-sum.json +1 -0
- package/data/problems/network-delay-time.json +1 -0
- package/data/problems/new-21-game.json +1 -0
- package/data/problems/next-closest-time.json +1 -0
- package/data/problems/next-greater-element-i.json +1 -0
- package/data/problems/next-greater-element-ii.json +1 -0
- package/data/problems/next-greater-element-iii.json +1 -0
- package/data/problems/next-permutation.json +1 -0
- package/data/problems/nim-game.json +1 -0
- package/data/problems/non-decreasing-array.json +1 -0
- package/data/problems/non-decreasing-subsequences.json +1 -0
- package/data/problems/non-negative-integers-without-consecutive-ones.json +1 -0
- package/data/problems/non-overlapping-intervals.json +1 -0
- package/data/problems/nth-digit.json +1 -0
- package/data/problems/nth-magical-number.json +1 -0
- package/data/problems/number-complement.json +1 -0
- package/data/problems/number-of-1-bits.json +1 -0
- package/data/problems/number-of-atoms.json +1 -0
- package/data/problems/number-of-boomerangs.json +1 -0
- package/data/problems/number-of-connected-components-in-an-undirected-graph.json +1 -0
- package/data/problems/number-of-corner-rectangles.json +1 -0
- package/data/problems/number-of-digit-one.json +1 -0
- package/data/problems/number-of-distinct-islands-ii.json +1 -0
- package/data/problems/number-of-distinct-islands.json +1 -0
- package/data/problems/number-of-islands-ii.json +1 -0
- package/data/problems/number-of-islands.json +1 -0
- package/data/problems/number-of-lines-to-write-string.json +1 -0
- package/data/problems/number-of-longest-increasing-subsequence.json +1 -0
- package/data/problems/number-of-matching-subsequences.json +1 -0
- package/data/problems/number-of-music-playlists.json +1 -0
- package/data/problems/number-of-provinces.json +1 -0
- package/data/problems/number-of-recent-calls.json +1 -0
- package/data/problems/number-of-segments-in-a-string.json +1 -0
- package/data/problems/number-of-squareful-arrays.json +1 -0
- package/data/problems/number-of-subarrays-with-bounded-maximum.json +1 -0
- package/data/problems/numbers-at-most-n-given-digit-set.json +1 -0
- package/data/problems/numbers-with-same-consecutive-differences.json +1 -0
- package/data/problems/odd-even-jump.json +1 -0
- package/data/problems/odd-even-linked-list.json +1 -0
- package/data/problems/one-edit-distance.json +1 -0
- package/data/problems/ones-and-zeroes.json +1 -0
- package/data/problems/online-election.json +1 -0
- package/data/problems/online-stock-span.json +1 -0
- package/data/problems/open-the-lock.json +1 -0
- package/data/problems/optimal-account-balancing.json +1 -0
- package/data/problems/optimal-division.json +1 -0
- package/data/problems/orderly-queue.json +1 -0
- package/data/problems/out-of-boundary-paths.json +1 -0
- package/data/problems/output-contest-matches.json +1 -0
- package/data/problems/pacific-atlantic-water-flow.json +1 -0
- package/data/problems/paint-fence.json +1 -0
- package/data/problems/paint-house-ii.json +1 -0
- package/data/problems/paint-house.json +1 -0
- package/data/problems/palindrome-linked-list.json +1 -0
- package/data/problems/palindrome-number.json +1 -0
- package/data/problems/palindrome-pairs.json +1 -0
- package/data/problems/palindrome-partitioning-ii.json +1 -0
- package/data/problems/palindrome-partitioning.json +1 -0
- package/data/problems/palindrome-permutation-ii.json +1 -0
- package/data/problems/palindrome-permutation.json +1 -0
- package/data/problems/palindromic-substrings.json +1 -0
- package/data/problems/pancake-sorting.json +1 -0
- package/data/problems/parse-lisp-expression.json +1 -0
- package/data/problems/partition-array-into-disjoint-intervals.json +1 -0
- package/data/problems/partition-equal-subset-sum.json +1 -0
- package/data/problems/partition-labels.json +1 -0
- package/data/problems/partition-list.json +1 -0
- package/data/problems/partition-to-k-equal-sum-subsets.json +1 -0
- package/data/problems/pascals-triangle-ii.json +1 -0
- package/data/problems/pascals-triangle.json +1 -0
- package/data/problems/patching-array.json +1 -0
- package/data/problems/path-sum-ii.json +1 -0
- package/data/problems/path-sum-iii.json +1 -0
- package/data/problems/path-sum-iv.json +1 -0
- package/data/problems/path-sum.json +1 -0
- package/data/problems/path-with-minimum-effort.json +1 -0
- package/data/problems/peak-index-in-a-mountain-array.json +1 -0
- package/data/problems/peeking-iterator.json +1 -0
- package/data/problems/perfect-number.json +1 -0
- package/data/problems/perfect-rectangle.json +1 -0
- package/data/problems/perfect-squares.json +1 -0
- package/data/problems/permutation-in-string.json +1 -0
- package/data/problems/permutation-sequence.json +1 -0
- package/data/problems/permutations-ii.json +1 -0
- package/data/problems/permutations.json +1 -0
- package/data/problems/plus-one-linked-list.json +1 -0
- package/data/problems/plus-one.json +1 -0
- package/data/problems/poor-pigs.json +1 -0
- package/data/problems/populating-next-right-pointers-in-each-node-ii.json +1 -0
- package/data/problems/populating-next-right-pointers-in-each-node.json +1 -0
- package/data/problems/positions-of-large-groups.json +1 -0
- package/data/problems/possible-bipartition.json +1 -0
- package/data/problems/pour-water.json +1 -0
- package/data/problems/power-of-four.json +1 -0
- package/data/problems/power-of-three.json +1 -0
- package/data/problems/power-of-two.json +1 -0
- package/data/problems/powerful-integers.json +1 -0
- package/data/problems/powx-n.json +1 -0
- package/data/problems/predict-the-winner.json +1 -0
- package/data/problems/prefix-and-suffix-search.json +1 -0
- package/data/problems/preimage-size-of-factorial-zeroes-function.json +1 -0
- package/data/problems/prime-number-of-set-bits-in-binary-representation.json +1 -0
- package/data/problems/prime-palindrome.json +1 -0
- package/data/problems/print-binary-tree.json +1 -0
- package/data/problems/prison-cells-after-n-days.json +1 -0
- package/data/problems/product-of-array-except-self.json +1 -0
- package/data/problems/profitable-schemes.json +1 -0
- package/data/problems/projection-area-of-3d-shapes.json +1 -0
- package/data/problems/push-dominoes.json +1 -0
- package/data/problems/pyramid-transition-matrix.json +1 -0
- package/data/problems/queue-reconstruction-by-height.json +1 -0
- package/data/problems/rabbits-in-forest.json +1 -0
- package/data/problems/race-car.json +1 -0
- package/data/problems/random-flip-matrix.json +1 -0
- package/data/problems/random-pick-index.json +1 -0
- package/data/problems/random-pick-with-blacklist.json +1 -0
- package/data/problems/random-pick-with-weight.json +1 -0
- package/data/problems/random-point-in-non-overlapping-rectangles.json +1 -0
- package/data/problems/range-addition-ii.json +1 -0
- package/data/problems/range-addition.json +1 -0
- package/data/problems/range-module.json +1 -0
- package/data/problems/range-sum-of-bst.json +1 -0
- package/data/problems/range-sum-query-2d-immutable.json +1 -0
- package/data/problems/range-sum-query-2d-mutable.json +1 -0
- package/data/problems/range-sum-query-immutable.json +1 -0
- package/data/problems/range-sum-query-mutable.json +1 -0
- package/data/problems/ransom-note.json +1 -0
- package/data/problems/reach-a-number.json +1 -0
- package/data/problems/reachable-nodes-in-subdivided-graph.json +1 -0
- package/data/problems/reaching-points.json +1 -0
- package/data/problems/read-n-characters-given-read4-ii-call-multiple-times.json +1 -0
- package/data/problems/read-n-characters-given-read4.json +1 -0
- package/data/problems/rearrange-string-k-distance-apart.json +1 -0
- package/data/problems/reconstruct-itinerary.json +1 -0
- package/data/problems/reconstruct-original-digits-from-english.json +1 -0
- package/data/problems/recover-binary-search-tree.json +1 -0
- package/data/problems/rectangle-area-ii.json +1 -0
- package/data/problems/rectangle-area.json +1 -0
- package/data/problems/rectangle-overlap.json +1 -0
- package/data/problems/redundant-connection-ii.json +1 -0
- package/data/problems/redundant-connection.json +1 -0
- package/data/problems/regions-cut-by-slashes.json +1 -0
- package/data/problems/regular-expression-matching.json +1 -0
- package/data/problems/relative-ranks.json +1 -0
- package/data/problems/remove-9.json +1 -0
- package/data/problems/remove-boxes.json +1 -0
- package/data/problems/remove-comments.json +1 -0
- package/data/problems/remove-duplicate-letters.json +1 -0
- package/data/problems/remove-duplicates-from-sorted-array-ii.json +1 -0
- package/data/problems/remove-duplicates-from-sorted-array.json +1 -0
- package/data/problems/remove-duplicates-from-sorted-list-ii.json +1 -0
- package/data/problems/remove-duplicates-from-sorted-list.json +1 -0
- package/data/problems/remove-element.json +1 -0
- package/data/problems/remove-invalid-parentheses.json +1 -0
- package/data/problems/remove-k-digits.json +1 -0
- package/data/problems/remove-linked-list-elements.json +1 -0
- package/data/problems/remove-nth-node-from-end-of-list.json +1 -0
- package/data/problems/reorder-data-in-log-files.json +1 -0
- package/data/problems/reorder-list.json +1 -0
- package/data/problems/reordered-power-of-2.json +1 -0
- package/data/problems/reorganize-string.json +1 -0
- package/data/problems/repeated-dna-sequences.json +1 -0
- package/data/problems/repeated-string-match.json +1 -0
- package/data/problems/repeated-substring-pattern.json +1 -0
- package/data/problems/replace-words.json +1 -0
- package/data/problems/reshape-the-matrix.json +1 -0
- package/data/problems/restore-ip-addresses.json +1 -0
- package/data/problems/reveal-cards-in-increasing-order.json +1 -0
- package/data/problems/reverse-bits.json +1 -0
- package/data/problems/reverse-integer.json +1 -0
- package/data/problems/reverse-linked-list-ii.json +1 -0
- package/data/problems/reverse-linked-list.json +1 -0
- package/data/problems/reverse-nodes-in-k-group.json +1 -0
- package/data/problems/reverse-only-letters.json +1 -0
- package/data/problems/reverse-pairs.json +1 -0
- package/data/problems/reverse-string-ii.json +1 -0
- package/data/problems/reverse-string.json +1 -0
- package/data/problems/reverse-vowels-of-a-string.json +1 -0
- package/data/problems/reverse-words-in-a-string-ii.json +1 -0
- package/data/problems/reverse-words-in-a-string-iii.json +1 -0
- package/data/problems/reverse-words-in-a-string.json +1 -0
- package/data/problems/rle-iterator.json +1 -0
- package/data/problems/robot-return-to-origin.json +1 -0
- package/data/problems/robot-room-cleaner.json +1 -0
- package/data/problems/roman-to-integer.json +1 -0
- package/data/problems/rotate-array.json +1 -0
- package/data/problems/rotate-function.json +1 -0
- package/data/problems/rotate-image.json +1 -0
- package/data/problems/rotate-list.json +1 -0
- package/data/problems/rotate-string.json +1 -0
- package/data/problems/rotated-digits.json +1 -0
- package/data/problems/rotting-oranges.json +1 -0
- package/data/problems/russian-doll-envelopes.json +1 -0
- package/data/problems/same-tree.json +1 -0
- package/data/problems/satisfiability-of-equality-equations.json +1 -0
- package/data/problems/score-after-flipping-matrix.json +1 -0
- package/data/problems/score-of-parentheses.json +1 -0
- package/data/problems/scramble-string.json +1 -0
- package/data/problems/search-a-2d-matrix-ii.json +1 -0
- package/data/problems/search-a-2d-matrix.json +1 -0
- package/data/problems/search-in-a-binary-search-tree.json +1 -0
- package/data/problems/search-in-a-sorted-array-of-unknown-size.json +1 -0
- package/data/problems/search-in-rotated-sorted-array-ii.json +1 -0
- package/data/problems/search-in-rotated-sorted-array.json +1 -0
- package/data/problems/search-insert-position.json +1 -0
- package/data/problems/second-minimum-node-in-a-binary-tree.json +1 -0
- package/data/problems/self-crossing.json +1 -0
- package/data/problems/self-dividing-numbers.json +1 -0
- package/data/problems/sentence-screen-fitting.json +1 -0
- package/data/problems/sentence-similarity-ii.json +1 -0
- package/data/problems/sentence-similarity.json +1 -0
- package/data/problems/sequence-reconstruction.json +1 -0
- package/data/problems/serialize-and-deserialize-binary-tree.json +1 -0
- package/data/problems/serialize-and-deserialize-bst.json +1 -0
- package/data/problems/serialize-and-deserialize-n-ary-tree.json +1 -0
- package/data/problems/set-intersection-size-at-least-two.json +1 -0
- package/data/problems/set-matrix-zeroes.json +1 -0
- package/data/problems/set-mismatch.json +1 -0
- package/data/problems/shifting-letters.json +1 -0
- package/data/problems/shopping-offers.json +1 -0
- package/data/problems/short-encoding-of-words.json +1 -0
- package/data/problems/shortest-bridge.json +1 -0
- package/data/problems/shortest-completing-word.json +1 -0
- package/data/problems/shortest-distance-from-all-buildings.json +1 -0
- package/data/problems/shortest-distance-to-a-character.json +1 -0
- package/data/problems/shortest-palindrome.json +1 -0
- package/data/problems/shortest-path-to-get-all-keys.json +1 -0
- package/data/problems/shortest-path-visiting-all-nodes.json +1 -0
- package/data/problems/shortest-subarray-with-sum-at-least-k.json +1 -0
- package/data/problems/shortest-unsorted-continuous-subarray.json +1 -0
- package/data/problems/shortest-word-distance-ii.json +1 -0
- package/data/problems/shortest-word-distance-iii.json +1 -0
- package/data/problems/shortest-word-distance.json +1 -0
- package/data/problems/shuffle-an-array.json +1 -0
- package/data/problems/similar-rgb-color.json +1 -0
- package/data/problems/similar-string-groups.json +1 -0
- package/data/problems/simplify-path.json +1 -0
- package/data/problems/single-element-in-a-sorted-array.json +1 -0
- package/data/problems/single-number-ii.json +1 -0
- package/data/problems/single-number-iii.json +1 -0
- package/data/problems/single-number.json +1 -0
- package/data/problems/single-threaded-cpu.json +1 -0
- package/data/problems/sliding-puzzle.json +1 -0
- package/data/problems/sliding-window-maximum.json +1 -0
- package/data/problems/sliding-window-median.json +1 -0
- package/data/problems/smallest-good-base.json +1 -0
- package/data/problems/smallest-range-covering-elements-from-k-lists.json +1 -0
- package/data/problems/smallest-range-i.json +1 -0
- package/data/problems/smallest-range-ii.json +1 -0
- package/data/problems/smallest-rectangle-enclosing-black-pixels.json +1 -0
- package/data/problems/smallest-rotation-with-highest-score.json +1 -0
- package/data/problems/smallest-string-starting-from-leaf.json +1 -0
- package/data/problems/smallest-subtree-with-all-the-deepest-nodes.json +1 -0
- package/data/problems/snakes-and-ladders.json +1 -0
- package/data/problems/solve-the-equation.json +1 -0
- package/data/problems/sort-an-array.json +1 -0
- package/data/problems/sort-array-by-parity-ii.json +1 -0
- package/data/problems/sort-array-by-parity.json +1 -0
- package/data/problems/sort-characters-by-frequency.json +1 -0
- package/data/problems/sort-colors.json +1 -0
- package/data/problems/sort-list.json +1 -0
- package/data/problems/sort-transformed-array.json +1 -0
- package/data/problems/soup-servings.json +1 -0
- package/data/problems/sparse-matrix-multiplication.json +1 -0
- package/data/problems/special-binary-string.json +1 -0
- package/data/problems/spiral-matrix-ii.json +1 -0
- package/data/problems/spiral-matrix-iii.json +1 -0
- package/data/problems/spiral-matrix.json +1 -0
- package/data/problems/split-array-into-consecutive-subsequences.json +1 -0
- package/data/problems/split-array-into-fibonacci-sequence.json +1 -0
- package/data/problems/split-array-largest-sum.json +1 -0
- package/data/problems/split-array-with-equal-sum.json +1 -0
- package/data/problems/split-array-with-same-average.json +1 -0
- package/data/problems/split-bst.json +1 -0
- package/data/problems/split-concatenated-strings.json +1 -0
- package/data/problems/split-linked-list-in-parts.json +1 -0
- package/data/problems/sqrtx.json +1 -0
- package/data/problems/squares-of-a-sorted-array.json +1 -0
- package/data/problems/squirrel-simulation.json +1 -0
- package/data/problems/stamping-the-sequence.json +1 -0
- package/data/problems/stickers-to-spell-word.json +1 -0
- package/data/problems/stone-game-ii.json +1 -0
- package/data/problems/stone-game-iii.json +1 -0
- package/data/problems/stone-game.json +1 -0
- package/data/problems/strange-printer.json +1 -0
- package/data/problems/string-compression.json +1 -0
- package/data/problems/string-to-integer-atoi.json +1 -0
- package/data/problems/string-without-aaa-or-bbb.json +1 -0
- package/data/problems/strobogrammatic-number-ii.json +1 -0
- package/data/problems/strobogrammatic-number-iii.json +1 -0
- package/data/problems/strobogrammatic-number.json +1 -0
- package/data/problems/strong-password-checker.json +1 -0
- package/data/problems/student-attendance-record-i.json +1 -0
- package/data/problems/student-attendance-record-ii.json +1 -0
- package/data/problems/subarray-product-less-than-k.json +1 -0
- package/data/problems/subarray-sum-equals-k.json +1 -0
- package/data/problems/subarray-sums-divisible-by-k.json +1 -0
- package/data/problems/subarrays-with-k-different-integers.json +1 -0
- package/data/problems/subdomain-visit-count.json +1 -0
- package/data/problems/subsets-ii.json +1 -0
- package/data/problems/subsets.json +1 -0
- package/data/problems/substring-with-concatenation-of-all-words.json +1 -0
- package/data/problems/subtree-of-another-tree.json +1 -0
- package/data/problems/sudoku-solver.json +1 -0
- package/data/problems/sum-of-all-subset-xor-totals.json +1 -0
- package/data/problems/sum-of-distances-in-tree.json +1 -0
- package/data/problems/sum-of-even-numbers-after-queries.json +1 -0
- package/data/problems/sum-of-left-leaves.json +1 -0
- package/data/problems/sum-of-square-numbers.json +1 -0
- package/data/problems/sum-of-subarray-minimums.json +1 -0
- package/data/problems/sum-of-subsequence-widths.json +1 -0
- package/data/problems/sum-of-two-integers.json +1 -0
- package/data/problems/sum-root-to-leaf-numbers.json +1 -0
- package/data/problems/summary-ranges.json +1 -0
- package/data/problems/super-egg-drop.json +1 -0
- package/data/problems/super-palindromes.json +1 -0
- package/data/problems/super-pow.json +1 -0
- package/data/problems/super-ugly-number.json +1 -0
- package/data/problems/super-washing-machines.json +1 -0
- package/data/problems/surface-area-of-3d-shapes.json +1 -0
- package/data/problems/surrounded-regions.json +1 -0
- package/data/problems/swap-adjacent-in-lr-string.json +1 -0
- package/data/problems/swap-nodes-in-pairs.json +1 -0
- package/data/problems/swim-in-rising-water.json +1 -0
- package/data/problems/symmetric-tree.json +1 -0
- package/data/problems/tag-validator.json +1 -0
- package/data/problems/tallest-billboard.json +1 -0
- package/data/problems/target-sum.json +1 -0
- package/data/problems/task-scheduler.json +1 -0
- package/data/problems/teemo-attacking.json +1 -0
- package/data/problems/ternary-expression-parser.json +1 -0
- package/data/problems/text-justification.json +1 -0
- package/data/problems/the-maze-ii.json +1 -0
- package/data/problems/the-maze-iii.json +1 -0
- package/data/problems/the-maze.json +1 -0
- package/data/problems/the-skyline-problem.json +1 -0
- package/data/problems/third-maximum-number.json +1 -0
- package/data/problems/three-equal-parts.json +1 -0
- package/data/problems/time-based-key-value-store.json +1 -0
- package/data/problems/to-lower-case.json +1 -0
- package/data/problems/toeplitz-matrix.json +1 -0
- package/data/problems/top-k-frequent-elements.json +1 -0
- package/data/problems/top-k-frequent-words.json +1 -0
- package/data/problems/total-hamming-distance.json +1 -0
- package/data/problems/transform-to-chessboard.json +1 -0
- package/data/problems/transpose-matrix.json +1 -0
- package/data/problems/trapping-rain-water-ii.json +1 -0
- package/data/problems/trapping-rain-water.json +1 -0
- package/data/problems/triangle.json +1 -0
- package/data/problems/trim-a-binary-search-tree.json +1 -0
- package/data/problems/triples-with-bitwise-and-equal-to-zero.json +1 -0
- package/data/problems/two-sum-ii-input-array-is-sorted.json +1 -0
- package/data/problems/two-sum-iii-data-structure-design.json +1 -0
- package/data/problems/two-sum-iv-input-is-a-bst.json +1 -0
- package/data/problems/two-sum.json +1 -0
- package/data/problems/ugly-number-ii.json +1 -0
- package/data/problems/ugly-number.json +1 -0
- package/data/problems/uncommon-words-from-two-sentences.json +1 -0
- package/data/problems/unique-binary-search-trees-ii.json +1 -0
- package/data/problems/unique-binary-search-trees.json +1 -0
- package/data/problems/unique-email-addresses.json +1 -0
- package/data/problems/unique-morse-code-words.json +1 -0
- package/data/problems/unique-paths-ii.json +1 -0
- package/data/problems/unique-paths-iii.json +1 -0
- package/data/problems/unique-paths.json +1 -0
- package/data/problems/unique-substrings-in-wraparound-string.json +1 -0
- package/data/problems/unique-word-abbreviation.json +1 -0
- package/data/problems/univalued-binary-tree.json +1 -0
- package/data/problems/utf-8-validation.json +1 -0
- package/data/problems/valid-anagram.json +1 -0
- package/data/problems/valid-mountain-array.json +1 -0
- package/data/problems/valid-number.json +1 -0
- package/data/problems/valid-palindrome-ii.json +1 -0
- package/data/problems/valid-palindrome.json +1 -0
- package/data/problems/valid-parentheses.json +1 -0
- package/data/problems/valid-parenthesis-string.json +1 -0
- package/data/problems/valid-perfect-square.json +1 -0
- package/data/problems/valid-permutations-for-di-sequence.json +1 -0
- package/data/problems/valid-square.json +1 -0
- package/data/problems/valid-sudoku.json +1 -0
- package/data/problems/valid-tic-tac-toe-state.json +1 -0
- package/data/problems/valid-triangle-number.json +1 -0
- package/data/problems/valid-word-abbreviation.json +1 -0
- package/data/problems/valid-word-square.json +1 -0
- package/data/problems/validate-binary-search-tree.json +1 -0
- package/data/problems/validate-ip-address.json +1 -0
- package/data/problems/validate-stack-sequences.json +1 -0
- package/data/problems/verify-preorder-sequence-in-binary-search-tree.json +1 -0
- package/data/problems/verify-preorder-serialization-of-a-binary-tree.json +1 -0
- package/data/problems/verifying-an-alien-dictionary.json +1 -0
- package/data/problems/vertical-order-traversal-of-a-binary-tree.json +1 -0
- package/data/problems/vowel-spellchecker.json +1 -0
- package/data/problems/walking-robot-simulation.json +1 -0
- package/data/problems/walls-and-gates.json +1 -0
- package/data/problems/water-and-jug-problem.json +1 -0
- package/data/problems/wiggle-sort-ii.json +1 -0
- package/data/problems/wiggle-sort.json +1 -0
- package/data/problems/wiggle-subsequence.json +1 -0
- package/data/problems/wildcard-matching.json +1 -0
- package/data/problems/word-abbreviation.json +1 -0
- package/data/problems/word-break-ii.json +1 -0
- package/data/problems/word-break.json +1 -0
- package/data/problems/word-ladder-ii.json +1 -0
- package/data/problems/word-ladder.json +1 -0
- package/data/problems/word-pattern-ii.json +1 -0
- package/data/problems/word-pattern.json +1 -0
- package/data/problems/word-search-ii.json +1 -0
- package/data/problems/word-search.json +1 -0
- package/data/problems/word-squares.json +1 -0
- package/data/problems/word-subsets.json +1 -0
- package/data/problems/x-of-a-kind-in-a-deck-of-cards.json +1 -0
- package/data/problems/zigzag-conversion.json +1 -0
- package/data/problems/zigzag-iterator.json +1 -0
- package/data/problems/zuma-game.json +1 -0
- package/dist/cli.js +793 -0
- package/dist/web/assets/index-DCYvZg7a.js +150 -0
- package/dist/web/assets/index-gSBueMfH.css +1 -0
- package/dist/web/index.html +13 -0
- package/package.json +44 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "581", "slug": "longest-uncommon-subsequence-ii", "id": 581, "title": "Longest Uncommon Subsequence II", "difficulty": "Medium", "category": "string", "link": "https://leetcode.com/problems/longest-uncommon-subsequence-ii/", "examples": [{"input": "strs = [\"aba\",\"cdc\",\"eae\"]", "output": "3", "explanation": "All three strings have length 3 and none is a subsequence of another, so 3 is achievable."}, {"input": "strs = [\"aaa\",\"aaa\",\"aa\"]", "output": "3", "explanation": "\"aaa\" is not a subsequence of \"aa\", while \"aa\" is a subsequence of \"aaa\"."}, {"input": "strs = [\"a\",\"a\",\"a\"]", "output": "-1", "explanation": "Every string is a subsequence of another identical one."}], "hints": ["Only full strings from the array can be optimal: any proper subsequence of strs[i] that is missing elsewhere is also missed by the whole strs[i] comparison logic, so test each strs[i] itself.", "Check strs[i] against every other strs[j] with a linear subsequence scan; keep the longest length that fails everywhere."], "statement": "A subsequence keeps a selection of characters in their original order while possibly skipping others. A candidate string is uncommon when it appears as a subsequence of none of the other given strings.\n\nGiven an array `strs`, return the length of the longest string in `strs` that is not a subsequence of any other string in `strs`. Return `-1` when every string is a subsequence of some other string.\n\n**Constraints:**\n- `1 <= strs.length <= 50`\n- `1 <= strs[i].length <= 10`\n- `strs[i]` consists of lowercase English letters\n", "solution": "## Approach\n\nAn optimal answer can always be taken as one of the array entries themselves, so test each `strs[i]` in turn. Scan every other `strs[j]` once with two pointers to decide whether `strs[i]` hides inside it as a subsequence. If no other string contains it, its length is a candidate; the maximum candidate over all positions (or `-1` when none qualifies) is the result.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n^2 * L), where n is the array size and L the string length, for pairwise subsequence checks.\n- **Space Complexity:** O(1) extra memory.\n\n## Implementation\n\n```python\nfrom typing import List\n\nclass Solution:\n def findLUSlength(self, strs: List[str]) -> int:\n def is_subseq(a, b):\n i = 0\n for c in b:\n if i < len(a) and a[i] == c:\n i += 1\n return i == len(a)\n\n ans = -1\n for i, s in enumerate(strs):\n if all(i == j or not is_subseq(s, t) for j, t in enumerate(strs)):\n ans = max(ans, len(s))\n return ans\n```\n", "starter": {"go": "package main\n\nfunc FindLUSlength(strs []string) int {\n \n}", "python": "from typing import List\nclass Solution:\n def findLUSlength(self, strs: List[str]) -> int:\n pass", "cpp": "#include <vector>\n#include <string>\nusing namespace std;\nclass Solution {\npublic:\n int findLUSlength(vector<string>& strs) {\n return -1;\n }\n};"}, "fn": "findLUSlength", "params": [{"name": "strs", "type": "string_array"}], "outputType": "int", "tests": [["[\"aba\",\"cdc\",\"eae\"]"], ["[\"aaa\",\"aaa\",\"aa\"]"], ["[\"a\",\"a\",\"a\"]"], ["[\"a\",\"b\",\"c\"]"], ["[\"abc\",\"abc\"]"], ["[\"abc\",\"def\"]"], ["[\"abcd\",\"abc\"]"], ["[\"abc\",\"abcd\"]"], ["[\"a\"]"], ["[\"ab\",\"ab\",\"cd\"]"], ["[\"aaa\",\"aaaa\",\"aaaaa\"]"], ["[\"abcdef\",\"abcdeg\"]"], ["[\"aa\",\"aa\",\"a\"]"], ["[\"a\",\"aa\",\"aaa\"]"], ["[\"ab\",\"bc\",\"cd\",\"de\"]"], ["[\"abcde\",\"abcde\",\"abcde\"]"], ["[\"ab\",\"ba\"]"], ["[\"abcdefghij\",\"abcdefghik\",\"abcdefghil\"]"], ["[\"x\",\"xx\",\"xxx\",\"xxxx\"]"], ["[\"abc\",\"ab\",\"a\"]"], ["[\"a\",\"b\",\"a\"]"], ["[\"abcd\",\"efgh\",\"ijkl\"]"], ["[\"aab\",\"aac\",\"aad\"]"], ["[\"abcabc\",\"abcab\",\"abca\"]"], ["[\"z\",\"y\",\"x\",\"w\",\"v\"]"], ["[\"aaaa\",\"aa\",\"a\"]"], ["[\"abca\",\"bcab\",\"cabc\"]"], ["[\"helloworld\",\"helloworl\",\"hellowo\"]"]], "expected": [3, -1, -1, 1, -1, 3, 4, 4, 1, 2, 5, 6, -1, 3, 2, -1, 2, 10, 4, 3, 1, 4, 3, 6, 1, 4, 4, 10], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "702", "slug": "longest-univalue-path", "id": 702, "title": "Longest Univalue Path", "difficulty": "Medium", "category": "tree", "link": "https://leetcode.com/problems/longest-univalue-path/", "examples": [{"input": "root = [5,4,5,1,1,null,5]", "output": "2", "explanation": "Three 5s chain into two edges."}, {"input": "root = [1,4,5,4,4,null,5]", "output": "2", "explanation": "A 4 with two 4 children gives two edges."}, {"input": "root = [1]", "output": "0", "explanation": "A lone node has no edge."}], "hints": ["Do a depth-first walk that returns the longest single-side chain of equal values starting at each node.", "At a node, extend the left chain only when the left child shares the value (otherwise 0), and likewise on the right; the path through the node is the sum of both sides.", "Keep a global best across all nodes; the answer is measured in edges."], "statement": "Given the root of a binary tree, find the longest route in which every visited node carries the same value. The route may go through a node and extend into both its left and right sides, or it may lie entirely inside one subtree; it does not have to include the root.\n\nCount the route by edges (the number of links between nodes), not by nodes. A single node alone therefore scores `0`, and an empty tree also scores `0`.\n\n**Constraints:**\n- The tree holds between `0` and `10^4` nodes.\n- `-1000 <= Node.val <= 1000`\n- The depth never exceeds `1000`.\n", "solution": "## Approach\n\nWalk the tree from the bottom up. For every node, ask each child for the longest equal-valued arm reaching upward from that child. Keep the arm only when the child carries the same value as the parent (adding one edge); otherwise the arm resets to zero. The best route passing through the current node joins the left and right arms, and a shared maximum over all nodes becomes the answer. The value returned upward is the longer of the two arms.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n), each node is visited once.\n- **Space Complexity:** O(h) recursion depth, where h is the tree height.\n\n## Implementation\n\n```python\nclass Solution:\n def longestUnivaluePath(self, root) -> int:\n self.best = 0\n def dfs(node):\n if not node:\n return 0\n left = dfs(node.left)\n right = dfs(node.right)\n left_arm = left + 1 if node.left and node.left.val == node.val else 0\n right_arm = right + 1 if node.right and node.right.val == node.val else 0\n self.best = max(self.best, left_arm + right_arm)\n return max(left_arm, right_arm)\n dfs(root)\n return self.best\n```\n", "starter": {"go": "package main\n\n/*\nDefinition for a binary tree node.\ntype TreeNode struct {\n Val int\n Left *TreeNode\n Right *TreeNode\n}\n*/\n\nfunc LongestUnivaluePath(root *TreeNode) int {\n return 0\n}", "python": "# Definition for a binary tree node.\n# class TreeNode:\n# def __init__(self, val=0, left=None, right=None):\n# self.val = val\n# self.left = left\n# self.right = right\n\nclass Solution:\n def longestUnivaluePath(self, root) -> int:\n pass\n", "cpp": "/*\nDefinition for a binary tree node.\nstruct TreeNode {\n int val;\n TreeNode *left;\n TreeNode *right;\n TreeNode(): val(0), left(nullptr), right(nullptr) {}\n TreeNode(int x): val(x), left(nullptr), right(nullptr) {}\n TreeNode(int x, TreeNode* left, TreeNode* right): val(x), left(left), right(right) {}\n};\n*/\nclass Solution {\npublic:\n int longestUnivaluePath(TreeNode* root) {\n return 0;\n }\n};"}, "fn": "longestUnivaluePath", "params": [{"name": "root", "type": "tree_node", "visualizeType": "tree_node"}], "outputType": "int", "tests": [["[5,4,5,1,1,null,5]"], ["[1,4,5,4,4,null,5]"], ["[1]"], ["[]"], ["[1,1]"], ["[1,2]"], ["[1,1,1]"], ["[1,2,3]"], ["[1,1,null,1,1]"], ["[5,5,5,5,5,5,5]"], ["[1,2,2,3,3,null,null,4,4]"], ["[1,null,1,null,1,null,1]"], ["[2,2,2,null,2,null,2]"], ["[0,0,0,0,null,null,0]"], ["[-1000,-1000,null,-1000]"], ["[1,1,1,1,null,null,1,1]"], ["[3,3,null,3,3,null,null,3]"], ["[1,2,1,2,1,2,1]"], ["[7,7,7,null,null,7,7]"], ["[4,4,4,4,4,null,4]"], ["[1,null,2,null,3,null,4]"], ["[9,9,null,9,null,9,null,9]"], ["[1,1,2,1,1,1,2]"], ["[6,6,6,6,6,6,null]"], ["[1,2,null,3,null,4,null,5]"], ["[2,1,1,1,1,1,1]"], ["[5,4,5,4,4,5,5]"], ["[0]"]], "expected": [2, 2, 0, 0, 1, 0, 2, 0, 2, 4, 0, 3, 4, 4, 2, 5, 3, 2, 3, 4, 0, 4, 2, 4, 0, 2, 2, 0], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "261", "slug": "longest-valid-parentheses", "id": 261, "title": "Longest Valid Parentheses", "difficulty": "Hard", "category": "string", "link": "https://leetcode.com/problems/longest-valid-parentheses/", "examples": [{"input": "s = \"(()\"", "output": "2", "explanation": "The trailing \"()\" is the longest valid block."}, {"input": "s = \")()())\"", "output": "4", "explanation": "The block \"()()\" is valid and has length 4."}, {"input": "s = \"\"", "output": "0", "explanation": "An empty string contains no pairs."}], "hints": ["Push indices of '(' onto a stack seeded with -1; on ')' pop and measure the distance to the new stack top.", "Each time the stack empties, push the current index as the new base for future measurements."], "statement": "You are given a string `s` made up only of the characters `'('` and `')'`. A substring is *valid* when its brackets pair up correctly (every closing bracket matches the most recent unmatched opening bracket, leaving nothing unmatched).\n\nReturn the length of the longest contiguous valid substring. When no pair exists anywhere, the answer is `0`.\n\n**Constraints:**\n- `0 <= s.length <= 3 * 10^4`\n- Each character of `s` is `'('` or `')'`.\n", "solution": "## Approach\n\nKeep a stack of indices with -1 as the initial base. Push each opening bracket's index; on a closing bracket, pop and, when the stack still holds something, update the best length using the distance from the current index to the new top. If the stack empties, the current index becomes the new base because no valid block can cross it.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n), a single left-to-right scan.\n- **Space Complexity:** O(n) for the stack in the worst case.\n\n## Implementation\n\n```python\nclass Solution:\n def longestValidParentheses(self, s: str) -> int:\n best = 0\n stack = [-1]\n for i, c in enumerate(s):\n if c == '(':\n stack.append(i)\n else:\n stack.pop()\n if not stack:\n stack.append(i)\n else:\n best = max(best, i - stack[-1])\n return best\n```\n", "starter": {"go": "package main\n\nfunc LongestValidParentheses(s string) int {\n \n}", "python": "class Solution:\n def longestValidParentheses(self, s: str) -> int:\n pass", "cpp": "#include <string>\nusing namespace std;\nclass Solution {\npublic:\n int longestValidParentheses(string s) {\n return 0;\n }\n};"}, "fn": "longestValidParentheses", "params": [{"name": "s", "type": "string"}], "outputType": "int", "tests": [["(()"], [")()())"], [""], ["("], [")"], ["()"], [")("], ["(("], ["))"], ["(()())"], ["()(()"], [")()()"], ["()(())"], ["(()(()"], ["()()()"], ["((((("], [")))))"], ["(()))())("], ["(()())(())"], ["()((()))"], [")()())()()("], ["((()))"], ["(()(()))"], [")()())()((()))"], ["(()(((())))"], ["()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()"], ["(((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))"]], "expected": [2, 4, 0, 0, 0, 2, 0, 0, 0, 6, 2, 4, 6, 2, 6, 0, 0, 4, 10, 8, 4, 6, 8, 8, 10, 120, 100], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "583", "slug": "longest-word-in-dictionary-through-deleting", "id": 583, "title": "Longest Word in Dictionary through Deleting", "difficulty": "Medium", "category": "string", "link": "https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/", "examples": [{"input": "s = \"abpcplea\", dictionary = [\"ale\",\"apple\",\"monkey\",\"plea\"]", "output": "\"apple\"", "explanation": "\"apple\" is the longest dictionary word formable by deleting letters."}, {"input": "s = \"abpcplea\", dictionary = [\"a\",\"b\",\"c\"]", "output": "\"a\"", "explanation": "\"a\" and \"b\" tie at length 1; \"a\" is alphabetically smaller."}, {"input": "s = \"bab\", dictionary = [\"ba\",\"ab\",\"a\",\"b\"]", "output": "\"ab\"", "explanation": "\"ba\" and \"ab\" tie for longest; \"ab\" is alphabetically smaller."}], "hints": ["A word is formable exactly when it is a subsequence of s; test this with two pointers scanning s once per word.", "Track the best word so far: replace it when a longer formable word appears, or an equally long but alphabetically smaller one.", "Sorting the dictionary by decreasing length (ties broken alphabetically) lets you return the first formable word."], "statement": "You are given a string `s` and a list of candidate words called `dictionary`. By deleting zero or more characters from `s` (keeping the order of the remaining characters), you can form new strings. Among the dictionary words that can be formed this way, return the longest one. If several candidates share the maximum length, return the one that comes first alphabetically (lexicographically smallest).\n\nIt is guaranteed that at least one dictionary word can be formed from `s`.\n\n**Constraints:**\n- `1 <= s.length <= 1000`\n- `1 <= dictionary.length <= 1000`\n- `1 <= dictionary[i].length <= 1000`\n- `s` and every dictionary word contain only lowercase English letters.\n- At least one dictionary word is a subsequence of `s`.\n", "solution": "## Approach\n\nA dictionary word can be produced exactly when it appears as a subsequence of `s`. Each word is tested with a two-pointer scan that walks through `s` once while advancing through the word's characters on matches. Every formable word is compared against the best answer seen so far, preferring greater length and breaking ties by alphabetical order.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(D * (S + W)), where D is the dictionary size, S the length of `s`, and W the average word length.\n- **Space Complexity:** O(1) besides the output.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def findLongestWord(self, s: str, dictionary: List[str]) -> str:\n def is_subseq(word):\n j = 0\n for c in s:\n if j < len(word) and c == word[j]:\n j += 1\n return j == len(word)\n best = \"\"\n for w in dictionary:\n if is_subseq(w):\n if len(w) > len(best) or (len(w) == len(best) and w < best):\n best = w\n return best\n```\n", "starter": {"go": "package main\n\nfunc FindLongestWord(s string, dictionary []string) string {\n \n}", "python": "from typing import List\nclass Solution:\n def findLongestWord(self, s: str, dictionary: List[str]) -> str:\n pass", "cpp": "#include <string>\n#include <vector>\nusing namespace std;\nclass Solution {\npublic:\n string findLongestWord(string s, vector<string>& dictionary) {\n return \"\";\n }\n};"}, "fn": "findLongestWord", "params": [{"name": "s", "type": "string"}, {"name": "dictionary", "type": "string_array"}], "outputType": "string", "tests": [["abpcplea", "[\"ale\",\"apple\",\"monkey\",\"plea\"]"], ["abpcplea", "[\"a\",\"b\",\"c\"]"], ["bab", "[\"ba\",\"ab\",\"a\",\"b\"]"], ["aaa", "[\"a\",\"aa\",\"aaa\"]"], ["abc", "[\"abc\",\"acb\",\"bac\"]"], ["abcd", "[\"ab\",\"cd\",\"abcd\",\"abc\"]"], ["xyz", "[\"x\",\"y\",\"z\"]"], ["hello", "[\"hell\",\"hello\",\"helloo\",\"helo\"]"], ["abcde", "[\"abc\",\"abd\",\"abe\",\"abf\"]"], ["aabbcc", "[\"abc\",\"acb\",\"bac\",\"bca\",\"cab\",\"cba\"]"], ["zzz", "[\"z\",\"zz\",\"zzz\"]"], ["abcdef", "[\"fed\",\"abc\",\"def\",\"abcdef\"]"], ["a", "[\"a\"]"], ["ab", "[\"b\",\"a\",\"ab\"]"], ["mnomnom", "[\"mom\",\"nom\",\"mnom\",\"mon\"]"], ["applebanana", "[\"apple\",\"banana\",\"app\",\"ban\"]"], ["ttii", "[\"ti\",\"it\",\"tti\",\"tii\"]"], ["qwerty", "[\"qwe\",\"wert\",\"qwerty\",\"qy\"]"], ["aaaaab", "[\"aaab\",\"aab\",\"ab\",\"b\"]"], ["xyxyxy", "[\"xxx\",\"yyy\",\"xyxy\",\"yxyx\"]"], ["mnop", "[\"mno\",\"nop\",\"mnop\",\"mop\"]"], ["abcdabcd", "[\"abcd\",\"abab\",\"cdcd\",\"aabbccdd\"]"], ["zebra", "[\"zeb\",\"zera\",\"zebra\",\"bra\"]"], ["mississippi", "[\"miss\",\"sippi\",\"missi\",\"mississippi\"]"], ["abcdefg", "[\"aceg\",\"bdf\",\"abcdefg\",\"ace\"]"], ["aab", "[\"ab\",\"aa\",\"aab\",\"b\"]"], ["bacbab", "[\"abc\",\"cab\",\"bac\",\"bab\"]"], ["ggggaa", "[\"ga\",\"gga\",\"ggga\",\"ag\"]"]], "expected": ["apple", "a", "ab", "aaa", "abc", "abcd", "x", "hello", "abc", "abc", "zzz", "abcdef", "a", "ab", "mnom", "banana", "tii", "qwerty", "aaab", "xyxy", "mnop", "abab", "zebra", "mississippi", "abcdefg", "aab", "bab", "ggga"], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "728", "slug": "longest-word-in-dictionary", "id": 728, "title": "Longest Word in Dictionary", "difficulty": "Easy", "category": "string", "link": "https://leetcode.com/problems/longest-word-in-dictionary/", "examples": [{"input": "words = [\"w\",\"wo\",\"wor\",\"worl\",\"world\"]", "output": "\"world\"", "explanation": "Each prefix of world appears, so the full word is buildable and longest."}, {"input": "words = [\"a\",\"banana\",\"app\",\"appl\",\"ap\",\"apply\",\"apple\"]", "output": "\"apple\"", "explanation": "Both apple and apply are buildable at length 5; apple is alphabetically smaller."}, {"input": "words = [\"abc\",\"bcd\"]", "output": "\"\"", "explanation": "No single-letter word exists, so nothing is buildable."}], "hints": ["A word is buildable exactly when every one of its prefixes occurs in the set.", "Check words from longest to shortest (ties alphabetically) and return the first buildable one, or sort ascending and track the best.", "A trie also works, but a hash set of words plus prefix scans is simplest."], "statement": "You are given a list of distinct words. A word is called buildable when every strict prefix of it (dropping one or more trailing letters) also appears in the list; single-letter words are buildable by default.\n\nAmong all buildable words, pick the longest. When several share that length, pick the alphabetically smallest. Return an empty string when nothing is buildable.\n\n**Constraints:**\n- `1 <= words.length <= 1000`\n- `1 <= words[i].length <= 30`\n- All words are distinct lowercase English strings.\n", "solution": "## Approach\n\nLoad all words into a set for O(1) prefix checks. Order candidates by decreasing length with alphabetical tie-breaks, then return the first word whose every prefix (including itself) is in the set. If none qualifies, return the empty string.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(N * L^2), where N is the word count and L the max length (substring checks).\n- **Space Complexity:** O(N * L) for the set.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def longestWord(self, words: List[str]) -> str:\n s = set(words)\n words = sorted(words, key=lambda w: (-len(w), w))\n for w in words:\n if all(w[:i] in s for i in range(1, len(w) + 1)):\n return w\n return \"\"\n```\n", "starter": {"go": "package main\n\nfunc LongestWord(words []string) string {\n return \"\"\n}", "python": "from typing import List\nclass Solution:\n def longestWord(self, words: List[str]) -> str:\n return \"\"", "cpp": "#include <vector>\n#include <string>\nusing namespace std;\nclass Solution {\npublic:\n string longestWord(vector<string>& words) {\n return \"\";\n }\n};"}, "fn": "longestWord", "params": [{"name": "words", "type": "string_array"}], "outputType": "string", "tests": [["[\"w\",\"wo\",\"wor\",\"worl\",\"world\"]"], ["[\"a\",\"banana\",\"app\",\"appl\",\"ap\",\"apply\",\"apple\"]"], ["[\"abc\",\"bcd\"]"], ["[\"a\"]"], ["[\"b\",\"a\"]"], ["[\"t\",\"ti\",\"tig\",\"tige\",\"tiger\",\"e\",\"en\",\"eng\",\"engi\",\"engin\",\"engine\"]"], ["[\"m\",\"mo\",\"mou\",\"mous\",\"mouse\"]"], ["[\"a\",\"b\",\"c\"]"], ["[\"ab\",\"a\"]"], ["[\"a\",\"ab\",\"abc\",\"abcd\",\"abcde\"]"], ["[\"z\",\"zz\",\"zzz\"]"], ["[\"hello\",\"hell\",\"hel\",\"he\",\"h\"]"], ["[\"cat\",\"cats\",\"catsdogcats\",\"dog\",\"dogcatsdog\",\"hippopotamuses\",\"rat\",\"ratcatdogcat\"]"], ["[\"a\",\"ar\",\"arc\",\"arct\",\"arctic\"]"], ["[\"b\",\"br\",\"bra\",\"bran\",\"brand\"]"], ["[\"x\",\"xx\",\"xxx\",\"xxxx\",\"xxxxx\",\"y\"]"], ["[\"ap\",\"app\",\"apple\",\"apply\"]"], ["[\"k\",\"ki\",\"kit\",\"kitt\",\"kitte\",\"kitten\"]"], ["[\"a\",\"aa\",\"aaa\",\"aaaa\",\"b\",\"bb\",\"bbb\"]"], ["[\"og\",\"ogu\",\"oguz\",\"oguzh\",\"oguzha\",\"oguzhan\"]"], ["[\"c\",\"ca\",\"cat\",\"cats\"]"], ["[\"d\",\"do\",\"dog\",\"dogs\"]"], ["[\"p\",\"pp\",\"ppp\",\"pppp\"]"], ["[\"a\",\"ab\",\"abc\",\"abd\",\"abde\"]"], ["[\"v\",\"vo\",\"vot\",\"vote\",\"voter\"]"], ["[\"s\",\"st\",\"str\",\"stri\",\"strin\",\"string\"]"], ["[\"aa\",\"a\"]"], ["[\"q\",\"qr\",\"qrs\",\"qrst\",\"qrstu\"]"]], "expected": ["world", "apple", "", "a", "a", "engine", "mouse", "a", "ab", "abcde", "zzz", "hello", "", "arct", "brand", "xxxxx", "", "kitten", "aaaa", "", "cats", "dogs", "pppp", "abde", "voter", "string", "aa", "qrstu"], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "848", "slug": "loud-and-rich", "id": 848, "title": "Loud and Rich", "difficulty": "Medium", "category": "graph", "link": "https://leetcode.com/problems/loud-and-rich/", "examples": [{"input": "richer = [[1,0],[2,1],[3,1],[3,7],[4,2],[5,3],[6,3]], quiet = [3,2,5,4,6,1,7,0]", "output": "[5,5,2,5,4,5,6,7]", "explanation": "Each entry is the quietest among self plus richer ancestors."}, {"input": "richer = [], quiet = [0]", "output": "[0]", "explanation": "Single person answers themselves."}, {"input": "richer = [[1,0]], quiet = [1,0]", "output": "[1,1]", "explanation": "Person 1 is quieter than 0."}], "hints": ["Reverse the edges: from each person point to those poorer than them, then propagate the quietest candidate forward.", "Depth-first search with memoization computes answer[x] from already solved richer neighbours.", "Compare quiet values, keeping the person with the smaller score."], "statement": "Answer quietness queries over a richer-than hierarchy.\n\n`richer[i] = [a, b]` means person `a` is richer than person `b`. Separately, `quiet[i]` scores how quiet person `i` is (smaller means quieter). For every person `x`, consider `x` together with everyone richer than `x`, directly or transitively. Return an array `answer` where `answer[x]` is the person in that set with the smallest quiet value (ties cannot happen since quiet values are distinct in tests, otherwise pick the smallest index among minima).\n\n**Constraints:**\n- `1 <= quiet.length <= 500`\n- `0 <= richer.length <= quiet.length * (quiet.length - 1) / 2`\n- `0 <= richer[i][0], richer[i][1] < quiet.length`\n- `quiet` values are a permutation of `0..n-1` in tests (distinct).\n", "solution": "## Approach\n\nFlip each richer edge so it runs from the poorer person to the richer one. A memoized depth-first search then answers each node: start with yourself, recurse into every richer neighbour, and keep whichever candidate has the smallest quiet score. Memoization guarantees each node resolves once.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n + E), where n is the person count and E the richer pair count.\n- **Space Complexity:** O(n + E) for the reversed graph plus recursion state.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def loudAndRich(self, richer: List[List[int]], quiet: List[int]) -> List[int]:\n n = len(quiet)\n g = [[] for _ in range(n)]\n for a, b in richer:\n g[b].append(a)\n ans = [-1] * n\n def dfs(x):\n if ans[x] >= 0:\n return ans[x]\n ans[x] = x\n for y in g[x]:\n c = dfs(y)\n if quiet[c] < quiet[ans[x]]:\n ans[x] = c\n return ans[x]\n for i in range(n):\n dfs(i)\n return ans\n```\n", "starter": {"go": "package main\n\nfunc LoudAndRich(richer [][]int, quiet []int) []int {\n return []int{}\n}", "python": "from typing import List\nclass Solution:\n def loudAndRich(self, richer: List[List[int]], quiet: List[int]) -> List[int]:\n return []\n", "cpp": "#include <vector>\nusing namespace std;\nclass Solution {\npublic:\n vector<int> loudAndRich(vector<vector<int>>& richer, vector<int>& quiet) {\n return {};\n }\n};"}, "fn": "loudAndRich", "params": [{"name": "richer", "type": "int_array_2d"}, {"name": "quiet", "type": "int_array"}], "outputType": "int_array", "tests": [["[[1,0],[2,1],[3,1],[3,7],[4,2],[5,3],[6,3]]", "[3,2,5,4,6,1,7,0]"], ["[]", "[0]"], ["[[1,0]]", "[1,0]"], ["[[0,1]]", "[0,1]"], ["[[1,0],[2,0]]", "[2,1,0]"], ["[[0,1],[1,2],[2,3]]", "[3,2,1,0]"], ["[[0,1],[0,2],[0,3]]", "[0,1,2,3]"], ["[]", "[0,1,2]"], ["[[1,0],[2,0],[3,0]]", "[0,1,2,3]"], ["[[2,0],[3,1],[4,2]]", "[4,3,2,1,0]"], ["[[0,1]]", "[1,0]"], ["[[1,2],[2,3],[3,4]]", "[4,3,2,1,0]"], ["[[3,0],[2,0],[1,0]]", "[0,3,2,1]"], ["[[1,0],[1,2],[1,3]]", "[3,0,2,1]"], ["[[4,0],[3,0],[2,0],[1,0]]", "[4,3,2,1,0]"], ["[[0,2],[1,2]]", "[2,1,0]"], ["[[2,1],[1,0]]", "[0,1,2]"], ["[]", "[1,0]"], ["[[0,1],[2,1]]", "[1,2,0]"], ["[[5,0],[4,0],[3,0],[2,0],[1,0]]", "[5,4,3,2,1,0]"], ["[[1,0],[3,2]]", "[0,1,2,3]"], ["[[2,0],[2,1]]", "[1,0,2]"], ["[[0,1],[1,2]]", "[2,1,0]"], ["[[1,0],[2,1],[3,2],[4,3]]", "[4,3,2,1,0]"], ["[[3,2],[2,1],[1,0]]", "[0,1,2,3]"], ["[[0,4],[1,4],[2,4],[3,4]]", "[4,3,2,1,0]"], ["[[1,0]]", "[0,1]"], ["[[2,0],[0,1]]", "[2,0,1]"]], "expected": [[5, 5, 2, 5, 4, 5, 6, 7], [0], [1, 1], [0, 0], [2, 1, 2], [0, 1, 2, 3], [0, 0, 0, 0], [0, 1, 2], [0, 1, 2, 3], [4, 3, 4, 3, 4], [0, 1], [0, 1, 2, 3, 4], [0, 1, 2, 3], [1, 1, 1, 1], [4, 1, 2, 3, 4], [0, 1, 2], [0, 1, 2], [0, 1], [0, 2, 2], [5, 1, 2, 3, 4, 5], [0, 1, 2, 3], [0, 1, 2], [0, 1, 2], [4, 4, 4, 4, 4], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1], [2, 1, 2]], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "70", "slug": "lowest-common-ancestor-of-a-binary-search-tree", "id": 70, "title": "Lowest Common Ancestor of BST", "difficulty": "Medium", "category": "tree", "link": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/", "examples": [{"input": "root = [6,2,8,0,4,7,9,null,null,3,5], p = [2,0,4,null,null,3,5], q = [8,7,9]", "output": "6", "explanation": "Nodes 2 and 8 are in opposite subtrees of node 6, so 6 is the lowest common ancestor."}, {"input": "root = [6,2,8,0,4,7,9,null,null,3,5], p = [2,0,4,null,null,3,5], q = [4,3,5]", "output": "2", "explanation": "Node 4 is in the right subtree of node 2, and p=2 is the root of that subtree, so 2 is the lowest common ancestor."}, {"input": "root = [2,1], p = 2, q = 1", "output": "2", "explanation": "Node 1 is in the left subtree of node 2, and p=2 is the root, so 2 is the lowest common ancestor."}], "hints": [], "statement": "You receive a binary search tree (BST) together with two of its nodes. Locate the deepest node that sits above both of them \u2014 their lowest common ancestor (LCA). Every value in the tree is distinct.\n\n**Constraints:**\n\n- The number of nodes in the tree is in the range [2, 10^5].\n- -10^9 \u2264 Node.val \u2264 10^9\n- All Node.val are unique.\n- p != q\n- p and q will exist in the BST.\n", "solution": "## Approach\nLeverage the BST property: if both nodes have values less than the root, the LCA lies in the left subtree. If both are greater, it lies in the right subtree. Otherwise, the current root is the LCA (one node is on each side, or root equals one of them).\n\n## Complexity Analysis\n- **Time Complexity:** O(h)\n- **Space Complexity:** O(1)\n\n## Implementation\n```python\nclass Solution:\n def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':\n while root:\n if p.val < root.val and q.val < root.val:\n root = root.left\n elif p.val > root.val and q.val > root.val:\n root = root.right\n else:\n return root\n```\n", "starter": {"go": "// Definition for a binary tree node.\n// type TreeNode struct {\n// Val int\n// Left *TreeNode\n// Right *TreeNode\n// }\npackage main\n\nfunc LowestCommonAncestor(root *TreeNode, p *TreeNode, q *TreeNode) *TreeNode {\n \n}", "python": "# Definition for a binary tree node.\n# class TreeNode:\n# def __init__(self, val=0, left=None, right=None):\n# self.val = val\n# self.left = left\n# self.right = right\n\nclass Solution:\n def lowestCommonAncestor(self, root, p, q):\n pass\n", "cpp": "/*\nDefinition for a binary tree node.\nstruct TreeNode {\n int val;\n TreeNode *left;\n TreeNode *right;\n TreeNode(): val(0), left(nullptr), right(nullptr) {}\n TreeNode(int x): val(x), left(nullptr), right(nullptr) {}\n TreeNode(int x, TreeNode* left, TreeNode* right): val(x), left(left), right(right) {}\n};\n*/\nclass Solution {\npublic:\n TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {\n \n }\n};\n"}, "fn": "lowestCommonAncestor", "params": [{"name": "root", "type": "tree_node", "visualizeType": "tree_node"}, {"name": "p", "type": "tree_node", "visualizeType": "tree_node"}, {"name": "q", "type": "tree_node", "visualizeType": "tree_node"}], "outputType": "tree_node", "tests": [["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[8,7,9]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[4,3,5]"], ["[2,1]", "[2]", "[1]"], ["[5,3,6,2,4]", "[2]", "[4]"], ["[5,3,6,2,4]", "[3,2,4]", "[6]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[8,7,9]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[9]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[5]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[2,0,4,null,null,3,5]", "[3]"], ["[4,2,6,1,3,5,7]", "[1]", "[3]"], ["[4,2,6,1,3,5,7]", "[1]", "[7]"], ["[4,2,6,1,3,5,7]", "[5]", "[7]"], ["[4,2,6,1,3,5,7]", "[4,2,6,1,3,5,7]", "[7]"], ["[10,5,15,3,7,12,18]", "[3]", "[7]"], ["[10,5,15,3,7,12,18]", "[12]", "[18]"], ["[10,5,15,3,7,12,18]", "[3]", "[18]"], ["[10,5,15,3,7,12,18]", "[5,3,7]", "[15,12,18]"], ["[5,4,null,3,null,2,null,1]", "[1]", "[2]"], ["[5,4,null,3,null,2,null,1]", "[1]", "[5]"], ["[1,null,2,null,3,null,4]", "[1]", "[4]"], ["[1,null,2,null,3,null,4]", "[2,null,3,null,4]", "[4]"], ["[8,3,10,1,6,null,14,null,null,4,7,13,null]", "[1]", "[7]"], ["[8,3,10,1,6,null,14,null,null,4,7,13,null]", "[4]", "[7]"], ["[8,3,10,1,6,null,14,null,null,4,7,13,null]", "[13]", "[14]"], ["[8,3,10,1,6,null,14,null,null,4,7,13,null]", "[1]", "[14]"], ["[-10,-20,-5,null,null,-7,-3]", "[-20]", "[-3]"], ["[-10,-20,-5,null,null,-7,-3]", "[-7]", "[-3]"], ["[9,4]", "[9]", "[4]"], ["[7,null,9]", "[7]", "[9]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[0]", "[5]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[3]", "[5]"], ["[6,2,8,0,4,7,9,null,null,3,5]", "[7]", "[9]"], ["[5,3,6,2,4]", "[2]", "[3,2,4]"]], "expected": null, "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "345", "slug": "lowest-common-ancestor-of-a-binary-tree", "id": 345, "title": "Lowest Common Ancestor of a Binary Tree", "difficulty": "Medium", "category": "tree", "link": "https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/", "examples": [{"input": "root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1", "output": "[3,5,1,6,2,0,8,null,null,7,4]", "explanation": "Nodes 5 and 1 sit in opposite subtrees of 3, so the ancestor is 3."}, {"input": "root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4", "output": "[5,6,2,null,null,7,4]", "explanation": "Node 4 is inside the subtree of 5, so the ancestor is 5 itself."}, {"input": "root = [1,2], p = 1, q = 2", "output": "[1,2]", "explanation": "Node 2 is a direct child of 1, so the ancestor is 1."}], "hints": ["Recurse: when the current node holds p or q, report it upward.", "When the left and right subtrees each report a hit, the current node is the ancestor."], "statement": "Given the root of a binary tree and two distinct values `p` and `q` that both occur in the tree, find their lowest common ancestor.\n\nThe lowest common ancestor of two nodes is the deepest node that has both of them in its subtree, where a node counts as being in its own subtree. All node values in the tree are unique.\n\nReturn the ancestor node itself (as a tree).\n\n*Adaptation note:* the original statement passes the two target nodes as node references. Here they are passed as integer values `p` and `q` instead, since every value is unique; the returned tree is the subtree rooted at the ancestor.\n\n**Constraints:**\n- The number of nodes is in the range `[2, 10^5]`.\n- `-10^9 <= Node.val <= 10^9`\n- All node values are unique.\n- `p != q`, and both values exist in the tree.\n", "solution": "## Approach\n\nSearch the tree recursively for either target value. A null subtree reports nothing, and a node holding `p` or `q` reports itself. When both the left and right subtrees report a hit, the current node is the lowest node covering both targets. Otherwise pass up whichever single hit exists.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n), where n is the number of nodes. Each node is visited once.\n- **Space Complexity:** O(h) for the recursion stack, where h is the tree height.\n\n## Implementation\n\n```python\nclass Solution:\n def lowestCommonAncestor(self, root, p: int, q: int):\n if root is None or root.val == p or root.val == q:\n return root\n left = self.lowestCommonAncestor(root.left, p, q)\n right = self.lowestCommonAncestor(root.right, p, q)\n if left and right:\n return root\n return left if left else right\n```\n", "starter": {"go": "// Definition for a binary tree node.\n// type TreeNode struct {\n// Val int\n// Left *TreeNode\n// Right *TreeNode\n// }\npackage main\n\nfunc LowestCommonAncestor(root *TreeNode, p int, q int) *TreeNode {\n \n}", "python": "# Definition for a binary tree node.\n# class TreeNode:\n# def __init__(self, x):\n# self.val = x\n# self.left = None\n# self.right = None\n\nclass Solution:\n def lowestCommonAncestor(self, root, p: int, q: int):\n pass", "cpp": "/*\nDefinition for a binary tree node.\nstruct TreeNode {\n int val;\n TreeNode *left;\n TreeNode *right;\n TreeNode(int x) : val(x), left(NULL), right(NULL) {}\n};\n*/\nclass Solution {\npublic:\n TreeNode* lowestCommonAncestor(TreeNode* root, int p, int q) {\n \n }\n};"}, "fn": "lowestCommonAncestor", "params": [{"name": "root", "type": "tree_node", "visualizeType": "tree_node"}, {"name": "p", "type": "int"}, {"name": "q", "type": "int"}], "outputType": "tree_node", "tests": [["[3,5,1,6,2,0,8,null,null,7,4]", "5", "1"], ["[3,5,1,6,2,0,8,null,null,7,4]", "5", "4"], ["[3,5,1,6,2,0,8,null,null,7,4]", "6", "4"], ["[1,2]", "1", "2"], ["[1,2,3]", "2", "3"], ["[1,null,2,null,3]", "1", "3"], ["[1,null,2,null,3]", "2", "3"], ["[6,2,8,0,4,7,9,null,null,3,5]", "2", "8"], ["[6,2,8,0,4,7,9,null,null,3,5]", "3", "5"], ["[1,2,3,4,5,6,7]", "4", "7"], ["[1,2,3,4,5,6,7]", "4", "5"], ["[10,5,15,3,7,null,18]", "3", "18"], ["[-10,9,20,null,null,15,7]", "15", "7"], ["[1,2,null,3,null,4]", "3", "4"], ["[5,1,8]", "1", "8"], ["[3,5,1,6,2,0,8,null,null,7,4]", "6", "7"], ["[3,5,1,6,2,0,8,null,null,7,4]", "7", "4"], ["[3,5,1,6,2,0,8,null,null,7,4]", "0", "8"], ["[1,2,3]", "1", "2"], ["[1,2,3]", "1", "3"], ["[6,2,8,0,4,7,9,null,null,3,5]", "0", "5"], ["[6,2,8,0,4,7,9,null,null,3,5]", "7", "9"], ["[1,2,3,4,5]", "4", "5"], ["[5,3,8,1,4,7,9]", "1", "9"], ["[5,3,8,1,4,7,9]", "7", "4"], ["[10,5,15,3,7,null,18]", "5", "7"], ["[2,1,3]", "1", "3"], ["[1,null,2,null,3]", "1", "2"]], "expected": null, "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "95", "slug": "lru-cache", "id": 95, "title": "LRU Cache", "difficulty": "Medium", "category": "linked-list", "link": "https://leetcode.com/problems/lru-cache/", "examples": [{"input": "operations = [\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"], args = [[2],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]", "output": "[1,-1,-1,3,4]", "explanation": "Capacity is 2; after putting (1,1) and (2,2), key 1 is still cached so get(1) returns 1. Putting (3,3) evicts key 2, making get(2) return -1. Putting (4,4) evicts key 1, so get(1) returns -1, while keys 3 and 4 remain cached."}, {"input": "operations = [\"LRUCache\",\"put\",\"get\",\"put\",\"get\",\"get\"], args = [[1],[2,1],[2],[3,2],[2],[3]]", "output": "[1,-1,2]", "explanation": "Capacity is 1; after putting (2,1), get(2) returns 1. Then put(3,2) evicts key 2, so get(2) returns -1, but get(3) returns 2."}, {"input": "operations = [\"LRUCache\",\"put\",\"put\",\"get\",\"get\"], args = [[2],[1,1],[1,9],[1],[2]]", "output": "[9,-1]", "explanation": "Capacity is 2; put(1,1) then put(1,9) updates the value of key 1 to 9, so get(1) returns 9. Key 2 was never inserted, so get(2) returns -1."}], "hints": ["Combine a hash map for key lookup with a doubly linked recency list.", "Move an existing key to the most-recent end after a successful `get` or an updating `put`.", "When a new insertion exceeds capacity, remove the least-recent node from both the list and the map."], "statement": "Implement the behavior of a Least Recently Used (LRU) cache through one portable\nbatch function.\n\n`operations` and `args` are parallel arrays. The first operation is always\n`\"LRUCache\"` with one argument, the positive cache capacity. Every later operation\nis one of:\n\n- `\"put\"` with `[key, value]`: insert or update the key. If insertion exceeds\n capacity, evict the least recently used key.\n- `\"get\"` with `[key]`: return the value when present, otherwise return `-1`.\n A successful `get` makes that key the most recently used.\n\nReturn an array containing results from `get` operations only, in order. The\nconstructor and `put` operations do not add entries to the returned array.\n\nThis batch function is a portable adaptation of the usual class-design problem;\nimplement `runLruCache` directly rather than declaring an `LRUCache` user class.\nBoth `get` and `put` should run in average `O(1)` time.\n\n**Constraints:**\n\n- `operations.length == args.length`\n- `1 <= operations.length <= 200001`\n- `operations[0] == \"LRUCache\"`\n- `args[0].length == 1` and `1 <= args[0][0] <= 3000`\n- A `put` row has two integers `[key, value]`.\n- A `get` row has one integer `[key]`.\n- `0 <= key <= 10000`\n- `0 <= value <= 100000`\n", "solution": "## Approach\n\nUse an `OrderedDict` as the cache. Its final entry is the most recently used key: successful reads and updates move their key to that end, while an insertion beyond capacity removes the first entry. Append results only for `get` operations, as required by the batch API.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(q) expected for `q` operations, with O(1) expected work per operation.\n- **Space Complexity:** O(c + g), where `c` is the capacity and `g` is the number of returned `get` results.\n\n## Implementation\n\n```python\nfrom collections import OrderedDict\nfrom typing import List\n\nclass Solution:\n def runLruCache(\n self, operations: List[str], args: List[List[int]]\n ) -> List[int]:\n capacity = args[0][0]\n cache = OrderedDict()\n results = []\n\n for operation, values in zip(operations[1:], args[1:]):\n if operation == \"get\":\n key = values[0]\n if key not in cache:\n results.append(-1)\n else:\n cache.move_to_end(key)\n results.append(cache[key])\n else:\n key, value = values\n if key in cache:\n cache.move_to_end(key)\n cache[key] = value\n if len(cache) > capacity:\n cache.popitem(last=False)\n\n return results\n```\n", "starter": {"go": "package main\n\nfunc RunLruCache(operations []string, args [][]int) []int {\n return nil\n}", "python": "from typing import List\n\nclass Solution:\n def runLruCache(self, operations: List[str], args: List[List[int]]) -> List[int]:\n pass\n", "cpp": "#include <string>\n#include <vector>\nusing namespace std;\n\nclass Solution {\npublic:\n vector<int> runLruCache(vector<string>& operations, vector<vector<int>>& args) {\n return {};\n }\n};"}, "fn": "runLruCache", "params": [{"name": "operations", "type": "string_array"}, {"name": "args", "type": "int_array_2d"}], "outputType": "int_array", "tests": [["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]"], ["[\"LRUCache\",\"put\",\"get\",\"put\",\"get\",\"get\"]", "[[1],[2,1],[2],[3,2],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\"]", "[[2],[1,1],[1,9],[1],[2]]"], ["[\"LRUCache\"]", "[[1]]"], ["[\"LRUCache\",\"get\"]", "[[1],[0]]"], ["[\"LRUCache\",\"put\",\"get\"]", "[[1],[0,0],[0]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\"]", "[[1],[1,10],[2,20],[1],[2]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[1,10],[2,20],[3,30],[1],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\"]", "[[2],[1,10],[2,20],[1],[3,30],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\"]", "[[3],[1,1],[2,2],[3,3],[1]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[3,3],[4,4],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[1],[3,3],[1],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[3,3],[1],[4,4],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[1,10],[1],[2],[3,3],[1],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[2,22],[1],[2]]"], ["[\"LRUCache\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\"]", "[[1],[5,50],[5],[5,55],[5],[6,60],[5]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[0,100],[10000,200],[0],[10000],[5000]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\"]", "[[2],[7,0],[8,100000],[7],[9,9],[8],[7]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\"]", "[[2],[1,1],[2,2],[1],[2],[3,3],[1]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\"]", "[[2],[1,1],[2,2],[2],[1],[3,3],[2]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[1],[3,3],[4,4],[1],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[1],[1,1],[1,2],[1,3],[1],[2],[3]]"], ["[\"LRUCache\",\"put\",\"get\",\"get\",\"get\"]", "[[4],[4,44],[4],[4],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[4],[4,4],[3,3],[2,2],[1,1],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\",\"get\"]", "[[4],[1,10],[2,20],[3,30],[4,40],[5,50],[1],[2],[3],[4],[5]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,10],[2,20],[3,30],[1],[4,40],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,10],[2,20],[3,30],[2],[4,40],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,10],[2,20],[3,30],[3],[4,40],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[1,11],[3,3],[1],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[2,22],[3,3],[1],[2],[3]]"], ["[\"LRUCache\",\"get\",\"get\",\"put\",\"get\"]", "[[2],[1],[2],[1,5],[1]]"], ["[\"LRUCache\",\"put\",\"get\",\"get\",\"put\",\"get\"]", "[[2],[1,5],[2],[1],[2,6],[2]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\"]", "[[2],[1,1],[2,2],[9],[3,3],[9],[4,4],[9]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\"]", "[[2],[10,100],[20,200],[10],[30,300],[20],[30]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\"]", "[[2],[10,100],[20,200],[20],[30,300],[10],[20]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\",\"get\"]", "[[3],[10,1],[20,2],[30,3],[10],[20],[40,4],[30],[10]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\",\"get\"]", "[[3],[10,1],[20,2],[30,3],[20],[10],[40,4],[30],[20]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[1,10],[2,20],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[2],[1,1],[2,2],[3,3],[2,20],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\"]", "[[1],[1,1],[1],[2,2],[1],[3,3],[2],[4,4],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\",\"put\",\"get\"]", "[[5],[1,1],[2,2],[3,3],[1],[2],[3],[4,4],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"put\",\"put\",\"get\",\"get\",\"get\"]", "[[5],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[1],[5],[6]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[2],[100,1],[200,2],[100],[999],[300,3],[100],[200],[300]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[3],[0,0],[1,0],[2,0],[0],[3,0],[1],[2],[3]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[3],[0,100000],[10000,0],[5000,50000],[10000],[2500,25000],[0],[5000],[2500]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[1],[3,3],[4,4],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[2],[3,3],[4,4],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"get\",\"put\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[9],[3,3],[4,4],[1],[2],[3],[4]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[3,3],[1],[4,4],[2],[5,5],[1],[4],[5]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\"]", "[[3],[1,1],[2,2],[3,3],[2],[4,4],[3],[5,5],[2],[4],[5]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[4],[1,10],[2,20],[3,30],[4,40],[1],[5,50],[1],[2],[4],[5]]"], ["[\"LRUCache\",\"put\",\"put\",\"put\",\"put\",\"get\",\"put\",\"get\",\"get\",\"get\",\"get\"]", "[[4],[1,10],[2,20],[3,30],[4,40],[3],[5,50],[1],[2],[3],[5]]"], ["[\"LRUCache\",\"put\",\"get\"]", "[[3000],[10000,100000],[10000]]"], ["@javascript:(()=>{const a=[\"LRUCache\"];for(let i=0;i<19998;i++)a.push(i%2===0?\"put\":\"get\");return JSON.stringify(a)})()", "@javascript:(()=>{const a=[[2999]];for(let i=0;i<19998;i++)a.push(i%2===0?[Math.floor(i/2)%10001,100000-(i%100001)]:[Math.floor(i/2)%10001]);return JSON.stringify(a)})()"], ["@javascript:(()=>{const a=[\"LRUCache\"];for(let i=0;i<19999;i++)a.push(i<10000?\"put\":\"get\");return JSON.stringify(a)})()", "@javascript:(()=>{const a=[[3000]];for(let i=0;i<19999;i++)a.push(i<10000?[i%10001,i%100001]:[(i-10000)%10001]);return JSON.stringify(a)})()"]], "expected": [[1, -1, -1, 3, 4], [1, -1, 2], [9, -1], [], [-1], [0], [-1, 20], [-1, 20, 30], [10, -1, 30], [1], [-1, 2, 3, 4], [1, 1, 2, 3], [1, 1, -1, 3, 4], [10, 2, -1, 3], [1, 22], [50, 55, -1], [100, 200, -1], [0, -1, 0], [1, 2, -1], [2, 1, -1], [1, -1, 3, 4], [3, -1, -1], [44, 44, 44], [1, 2, 3, 4], [-1, 20, 30, 40, 50], [10, 10, -1, 30, 40], [20, -1, 20, 30, 40], [30, -1, 20, 30, 40], [11, -1, 3], [-1, 22, 3], [-1, -1, 5], [-1, 5, 6], [-1, -1, -1], [100, -1, 300], [200, -1, 200], [1, 2, -1, 1], [2, 1, -1, 2], [10, 20, -1, -1], [-1, 20, 3, -1], [1, -1, -1, 4], [1, 2, 3, 4], [-1, 5, 6], [1, -1, 1, -1, 3], [0, -1, 0, 0], [0, -1, 50000, 25000], [1, 1, -1, 3, 4], [2, -1, 2, 3, 4], [-1, -1, 2, 3, 4], [1, -1, 1, 4, 5], [2, 3, -1, 4, 5], [10, 10, -1, 40, 50], [30, -1, 20, 30, 50], [100000], [100000, 99998, 99996, 99994, 99992, 99990, 99988, 99986, 99984, 99982, 99980, 99978, 99976, 99974, 99972, 99970, 99968, 99966, 99964, 99962, 99960, 99958, 99956, 99954, 99952, 99950, 99948, 99946, 99944, 99942, 99940, 99938, 99936, 99934, 99932, 99930, 99928, 99926, 99924, 99922, 99920, 99918, 99916, 99914, 99912, 99910, 99908, 99906, 99904, 99902, 99900, 99898, 99896, 99894, 99892, 99890, 99888, 99886, 99884, 99882, 99880, 99878, 99876, 99874, 99872, 99870, 99868, 99866, 99864, 99862, 99860, 99858, 99856, 99854, 99852, 99850, 99848, 99846, 99844, 99842, 99840, 99838, 99836, 99834, 99832, 99830, 99828, 99826, 99824, 99822, 99820, 99818, 99816, 99814, 99812, 99810, 99808, 99806, 99804, 99802, 99800, 99798, 99796, 99794, 99792, 99790, 99788, 99786, 99784, 99782, 99780, 99778, 99776, 99774, 99772, 99770, 99768, 99766, 99764, 99762, 99760, 99758, 99756, 99754, 99752, 99750, 99748, 99746, 99744, 99742, 99740, 99738, 99736, 99734, 99732, 99730, 99728, 99726, 99724, 99722, 99720, 99718, 99716, 99714, 99712, 99710, 99708, 99706, 99704, 99702, 99700, 99698, 99696, 99694, 99692, 99690, 99688, 99686, 99684, 99682, 99680, 99678, 99676, 99674, 99672, 99670, 99668, 99666, 99664, 99662, 99660, 99658, 99656, 99654, 99652, 99650, 99648, 99646, 99644, 99642, 99640, 99638, 99636, 99634, 99632, 99630, 99628, 99626, 99624, 99622, 99620, 99618, 99616, 99614, 99612, 99610, 99608, 99606, 99604, 99602, 99600, 99598, 99596, 99594, 99592, 99590, 99588, 99586, 99584, 99582, 99580, 99578, 99576, 99574, 99572, 99570, 99568, 99566, 99564, 99562, 99560, 99558, 99556, 99554, 99552, 99550, 99548, 99546, 99544, 99542, 99540, 99538, 99536, 99534, 99532, 99530, 99528, 99526, 99524, 99522, 99520, 99518, 99516, 99514, 99512, 99510, 99508, 99506, 99504, 99502, 99500, 99498, 99496, 99494, 99492, 99490, 99488, 99486, 99484, 99482, 99480, 99478, 99476, 99474, 99472, 99470, 99468, 99466, 99464, 99462, 99460, 99458, 99456, 99454, 99452, 99450, 99448, 99446, 99444, 99442, 99440, 99438, 99436, 99434, 99432, 99430, 99428, 99426, 99424, 99422, 99420, 99418, 99416, 99414, 99412, 99410, 99408, 99406, 99404, 99402, 99400, 99398, 99396, 99394, 99392, 99390, 99388, 99386, 99384, 99382, 99380, 99378, 99376, 99374, 99372, 99370, 99368, 99366, 99364, 99362, 99360, 99358, 99356, 99354, 99352, 99350, 99348, 99346, 99344, 99342, 99340, 99338, 99336, 99334, 99332, 99330, 99328, 99326, 99324, 99322, 99320, 99318, 99316, 99314, 99312, 99310, 99308, 99306, 99304, 99302, 99300, 99298, 99296, 99294, 99292, 99290, 99288, 99286, 99284, 99282, 99280, 99278, 99276, 99274, 99272, 99270, 99268, 99266, 99264, 99262, 99260, 99258, 99256, 99254, 99252, 99250, 99248, 99246, 99244, 99242, 99240, 99238, 99236, 99234, 99232, 99230, 99228, 99226, 99224, 99222, 99220, 99218, 99216, 99214, 99212, 99210, 99208, 99206, 99204, 99202, 99200, 99198, 99196, 99194, 99192, 99190, 99188, 99186, 99184, 99182, 99180, 99178, 99176, 99174, 99172, 99170, 99168, 99166, 99164, 99162, 99160, 99158, 99156, 99154, 99152, 99150, 99148, 99146, 99144, 99142, 99140, 99138, 99136, 99134, 99132, 99130, 99128, 99126, 99124, 99122, 99120, 99118, 99116, 99114, 99112, 99110, 99108, 99106, 99104, 99102, 99100, 99098, 99096, 99094, 99092, 99090, 99088, 99086, 99084, 99082, 99080, 99078, 99076, 99074, 99072, 99070, 99068, 99066, 99064, 99062, 99060, 99058, 99056, 99054, 99052, 99050, 99048, 99046, 99044, 99042, 99040, 99038, 99036, 99034, 99032, 99030, 99028, 99026, 99024, 99022, 99020, 99018, 99016, 99014, 99012, 99010, 99008, 99006, 99004, 99002, 99000, 98998, 98996, 98994, 98992, 98990, 98988, 98986, 98984, 98982, 98980, 98978, 98976, 98974, 98972, 98970, 98968, 98966, 98964, 98962, 98960, 98958, 98956, 98954, 98952, 98950, 98948, 98946, 98944, 98942, 98940, 98938, 98936, 98934, 98932, 98930, 98928, 98926, 98924, 98922, 98920, 98918, 98916, 98914, 98912, 98910, 98908, 98906, 98904, 98902, 98900, 98898, 98896, 98894, 98892, 98890, 98888, 98886, 98884, 98882, 98880, 98878, 98876, 98874, 98872, 98870, 98868, 98866, 98864, 98862, 98860, 98858, 98856, 98854, 98852, 98850, 98848, 98846, 98844, 98842, 98840, 98838, 98836, 98834, 98832, 98830, 98828, 98826, 98824, 98822, 98820, 98818, 98816, 98814, 98812, 98810, 98808, 98806, 98804, 98802, 98800, 98798, 98796, 98794, 98792, 98790, 98788, 98786, 98784, 98782, 98780, 98778, 98776, 98774, 98772, 98770, 98768, 98766, 98764, 98762, 98760, 98758, 98756, 98754, 98752, 98750, 98748, 98746, 98744, 98742, 98740, 98738, 98736, 98734, 98732, 98730, 98728, 98726, 98724, 98722, 98720, 98718, 98716, 98714, 98712, 98710, 98708, 98706, 98704, 98702, 98700, 98698, 98696, 98694, 98692, 98690, 98688, 98686, 98684, 98682, 98680, 98678, 98676, 98674, 98672, 98670, 98668, 98666, 98664, 98662, 98660, 98658, 98656, 98654, 98652, 98650, 98648, 98646, 98644, 98642, 98640, 98638, 98636, 98634, 98632, 98630, 98628, 98626, 98624, 98622, 98620, 98618, 98616, 98614, 98612, 98610, 98608, 98606, 98604, 98602, 98600, 98598, 98596, 98594, 98592, 98590, 98588, 98586, 98584, 98582, 98580, 98578, 98576, 98574, 98572, 98570, 98568, 98566, 98564, 98562, 98560, 98558, 98556, 98554, 98552, 98550, 98548, 98546, 98544, 98542, 98540, 98538, 98536, 98534, 98532, 98530, 98528, 98526, 98524, 98522, 98520, 98518, 98516, 98514, 98512, 98510, 98508, 98506, 98504, 98502, 98500, 98498, 98496, 98494, 98492, 98490, 98488, 98486, 98484, 98482, 98480, 98478, 98476, 98474, 98472, 98470, 98468, 98466, 98464, 98462, 98460, 98458, 98456, 98454, 98452, 98450, 98448, 98446, 98444, 98442, 98440, 98438, 98436, 98434, 98432, 98430, 98428, 98426, 98424, 98422, 98420, 98418, 98416, 98414, 98412, 98410, 98408, 98406, 98404, 98402, 98400, 98398, 98396, 98394, 98392, 98390, 98388, 98386, 98384, 98382, 98380, 98378, 98376, 98374, 98372, 98370, 98368, 98366, 98364, 98362, 98360, 98358, 98356, 98354, 98352, 98350, 98348, 98346, 98344, 98342, 98340, 98338, 98336, 98334, 98332, 98330, 98328, 98326, 98324, 98322, 98320, 98318, 98316, 98314, 98312, 98310, 98308, 98306, 98304, 98302, 98300, 98298, 98296, 98294, 98292, 98290, 98288, 98286, 98284, 98282, 98280, 98278, 98276, 98274, 98272, 98270, 98268, 98266, 98264, 98262, 98260, 98258, 98256, 98254, 98252, 98250, 98248, 98246, 98244, 98242, 98240, 98238, 98236, 98234, 98232, 98230, 98228, 98226, 98224, 98222, 98220, 98218, 98216, 98214, 98212, 98210, 98208, 98206, 98204, 98202, 98200, 98198, 98196, 98194, 98192, 98190, 98188, 98186, 98184, 98182, 98180, 98178, 98176, 98174, 98172, 98170, 98168, 98166, 98164, 98162, 98160, 98158, 98156, 98154, 98152, 98150, 98148, 98146, 98144, 98142, 98140, 98138, 98136, 98134, 98132, 98130, 98128, 98126, 98124, 98122, 98120, 98118, 98116, 98114, 98112, 98110, 98108, 98106, 98104, 98102, 98100, 98098, 98096, 98094, 98092, 98090, 98088, 98086, 98084, 98082, 98080, 98078, 98076, 98074, 98072, 98070, 98068, 98066, 98064, 98062, 98060, 98058, 98056, 98054, 98052, 98050, 98048, 98046, 98044, 98042, 98040, 98038, 98036, 98034, 98032, 98030, 98028, 98026, 98024, 98022, 98020, 98018, 98016, 98014, 98012, 98010, 98008, 98006, 98004, 98002, 98000, 97998, 97996, 97994, 97992, 97990, 97988, 97986, 97984, 97982, 97980, 97978, 97976, 97974, 97972, 97970, 97968, 97966, 97964, 97962, 97960, 97958, 97956, 97954, 97952, 97950, 97948, 97946, 97944, 97942, 97940, 97938, 97936, 97934, 97932, 97930, 97928, 97926, 97924, 97922, 97920, 97918, 97916, 97914, 97912, 97910, 97908, 97906, 97904, 97902, 97900, 97898, 97896, 97894, 97892, 97890, 97888, 97886, 97884, 97882, 97880, 97878, 97876, 97874, 97872, 97870, 97868, 97866, 97864, 97862, 97860, 97858, 97856, 97854, 97852, 97850, 97848, 97846, 97844, 97842, 97840, 97838, 97836, 97834, 97832, 97830, 97828, 97826, 97824, 97822, 97820, 97818, 97816, 97814, 97812, 97810, 97808, 97806, 97804, 97802, 97800, 97798, 97796, 97794, 97792, 97790, 97788, 97786, 97784, 97782, 97780, 97778, 97776, 97774, 97772, 97770, 97768, 97766, 97764, 97762, 97760, 97758, 97756, 97754, 97752, 97750, 97748, 97746, 97744, 97742, 97740, 97738, 97736, 97734, 97732, 97730, 97728, 97726, 97724, 97722, 97720, 97718, 97716, 97714, 97712, 97710, 97708, 97706, 97704, 97702, 97700, 97698, 97696, 97694, 97692, 97690, 97688, 97686, 97684, 97682, 97680, 97678, 97676, 97674, 97672, 97670, 97668, 97666, 97664, 97662, 97660, 97658, 97656, 97654, 97652, 97650, 97648, 97646, 97644, 97642, 97640, 97638, 97636, 97634, 97632, 97630, 97628, 97626, 97624, 97622, 97620, 97618, 97616, 97614, 97612, 97610, 97608, 97606, 97604, 97602, 97600, 97598, 97596, 97594, 97592, 97590, 97588, 97586, 97584, 97582, 97580, 97578, 97576, 97574, 97572, 97570, 97568, 97566, 97564, 97562, 97560, 97558, 97556, 97554, 97552, 97550, 97548, 97546, 97544, 97542, 97540, 97538, 97536, 97534, 97532, 97530, 97528, 97526, 97524, 97522, 97520, 97518, 97516, 97514, 97512, 97510, 97508, 97506, 97504, 97502, 97500, 97498, 97496, 97494, 97492, 97490, 97488, 97486, 97484, 97482, 97480, 97478, 97476, 97474, 97472, 97470, 97468, 97466, 97464, 97462, 97460, 97458, 97456, 97454, 97452, 97450, 97448, 97446, 97444, 97442, 97440, 97438, 97436, 97434, 97432, 97430, 97428, 97426, 97424, 97422, 97420, 97418, 97416, 97414, 97412, 97410, 97408, 97406, 97404, 97402, 97400, 97398, 97396, 97394, 97392, 97390, 97388, 97386, 97384, 97382, 97380, 97378, 97376, 97374, 97372, 97370, 97368, 97366, 97364, 97362, 97360, 97358, 97356, 97354, 97352, 97350, 97348, 97346, 97344, 97342, 97340, 97338, 97336, 97334, 97332, 97330, 97328, 97326, 97324, 97322, 97320, 97318, 97316, 97314, 97312, 97310, 97308, 97306, 97304, 97302, 97300, 97298, 97296, 97294, 97292, 97290, 97288, 97286, 97284, 97282, 97280, 97278, 97276, 97274, 97272, 97270, 97268, 97266, 97264, 97262, 97260, 97258, 97256, 97254, 97252, 97250, 97248, 97246, 97244, 97242, 97240, 97238, 97236, 97234, 97232, 97230, 97228, 97226, 97224, 97222, 97220, 97218, 97216, 97214, 97212, 97210, 97208, 97206, 97204, 97202, 97200, 97198, 97196, 97194, 97192, 97190, 97188, 97186, 97184, 97182, 97180, 97178, 97176, 97174, 97172, 97170, 97168, 97166, 97164, 97162, 97160, 97158, 97156, 97154, 97152, 97150, 97148, 97146, 97144, 97142, 97140, 97138, 97136, 97134, 97132, 97130, 97128, 97126, 97124, 97122, 97120, 97118, 97116, 97114, 97112, 97110, 97108, 97106, 97104, 97102, 97100, 97098, 97096, 97094, 97092, 97090, 97088, 97086, 97084, 97082, 97080, 97078, 97076, 97074, 97072, 97070, 97068, 97066, 97064, 97062, 97060, 97058, 97056, 97054, 97052, 97050, 97048, 97046, 97044, 97042, 97040, 97038, 97036, 97034, 97032, 97030, 97028, 97026, 97024, 97022, 97020, 97018, 97016, 97014, 97012, 97010, 97008, 97006, 97004, 97002, 97000, 96998, 96996, 96994, 96992, 96990, 96988, 96986, 96984, 96982, 96980, 96978, 96976, 96974, 96972, 96970, 96968, 96966, 96964, 96962, 96960, 96958, 96956, 96954, 96952, 96950, 96948, 96946, 96944, 96942, 96940, 96938, 96936, 96934, 96932, 96930, 96928, 96926, 96924, 96922, 96920, 96918, 96916, 96914, 96912, 96910, 96908, 96906, 96904, 96902, 96900, 96898, 96896, 96894, 96892, 96890, 96888, 96886, 96884, 96882, 96880, 96878, 96876, 96874, 96872, 96870, 96868, 96866, 96864, 96862, 96860, 96858, 96856, 96854, 96852, 96850, 96848, 96846, 96844, 96842, 96840, 96838, 96836, 96834, 96832, 96830, 96828, 96826, 96824, 96822, 96820, 96818, 96816, 96814, 96812, 96810, 96808, 96806, 96804, 96802, 96800, 96798, 96796, 96794, 96792, 96790, 96788, 96786, 96784, 96782, 96780, 96778, 96776, 96774, 96772, 96770, 96768, 96766, 96764, 96762, 96760, 96758, 96756, 96754, 96752, 96750, 96748, 96746, 96744, 96742, 96740, 96738, 96736, 96734, 96732, 96730, 96728, 96726, 96724, 96722, 96720, 96718, 96716, 96714, 96712, 96710, 96708, 96706, 96704, 96702, 96700, 96698, 96696, 96694, 96692, 96690, 96688, 96686, 96684, 96682, 96680, 96678, 96676, 96674, 96672, 96670, 96668, 96666, 96664, 96662, 96660, 96658, 96656, 96654, 96652, 96650, 96648, 96646, 96644, 96642, 96640, 96638, 96636, 96634, 96632, 96630, 96628, 96626, 96624, 96622, 96620, 96618, 96616, 96614, 96612, 96610, 96608, 96606, 96604, 96602, 96600, 96598, 96596, 96594, 96592, 96590, 96588, 96586, 96584, 96582, 96580, 96578, 96576, 96574, 96572, 96570, 96568, 96566, 96564, 96562, 96560, 96558, 96556, 96554, 96552, 96550, 96548, 96546, 96544, 96542, 96540, 96538, 96536, 96534, 96532, 96530, 96528, 96526, 96524, 96522, 96520, 96518, 96516, 96514, 96512, 96510, 96508, 96506, 96504, 96502, 96500, 96498, 96496, 96494, 96492, 96490, 96488, 96486, 96484, 96482, 96480, 96478, 96476, 96474, 96472, 96470, 96468, 96466, 96464, 96462, 96460, 96458, 96456, 96454, 96452, 96450, 96448, 96446, 96444, 96442, 96440, 96438, 96436, 96434, 96432, 96430, 96428, 96426, 96424, 96422, 96420, 96418, 96416, 96414, 96412, 96410, 96408, 96406, 96404, 96402, 96400, 96398, 96396, 96394, 96392, 96390, 96388, 96386, 96384, 96382, 96380, 96378, 96376, 96374, 96372, 96370, 96368, 96366, 96364, 96362, 96360, 96358, 96356, 96354, 96352, 96350, 96348, 96346, 96344, 96342, 96340, 96338, 96336, 96334, 96332, 96330, 96328, 96326, 96324, 96322, 96320, 96318, 96316, 96314, 96312, 96310, 96308, 96306, 96304, 96302, 96300, 96298, 96296, 96294, 96292, 96290, 96288, 96286, 96284, 96282, 96280, 96278, 96276, 96274, 96272, 96270, 96268, 96266, 96264, 96262, 96260, 96258, 96256, 96254, 96252, 96250, 96248, 96246, 96244, 96242, 96240, 96238, 96236, 96234, 96232, 96230, 96228, 96226, 96224, 96222, 96220, 96218, 96216, 96214, 96212, 96210, 96208, 96206, 96204, 96202, 96200, 96198, 96196, 96194, 96192, 96190, 96188, 96186, 96184, 96182, 96180, 96178, 96176, 96174, 96172, 96170, 96168, 96166, 96164, 96162, 96160, 96158, 96156, 96154, 96152, 96150, 96148, 96146, 96144, 96142, 96140, 96138, 96136, 96134, 96132, 96130, 96128, 96126, 96124, 96122, 96120, 96118, 96116, 96114, 96112, 96110, 96108, 96106, 96104, 96102, 96100, 96098, 96096, 96094, 96092, 96090, 96088, 96086, 96084, 96082, 96080, 96078, 96076, 96074, 96072, 96070, 96068, 96066, 96064, 96062, 96060, 96058, 96056, 96054, 96052, 96050, 96048, 96046, 96044, 96042, 96040, 96038, 96036, 96034, 96032, 96030, 96028, 96026, 96024, 96022, 96020, 96018, 96016, 96014, 96012, 96010, 96008, 96006, 96004, 96002, 96000, 95998, 95996, 95994, 95992, 95990, 95988, 95986, 95984, 95982, 95980, 95978, 95976, 95974, 95972, 95970, 95968, 95966, 95964, 95962, 95960, 95958, 95956, 95954, 95952, 95950, 95948, 95946, 95944, 95942, 95940, 95938, 95936, 95934, 95932, 95930, 95928, 95926, 95924, 95922, 95920, 95918, 95916, 95914, 95912, 95910, 95908, 95906, 95904, 95902, 95900, 95898, 95896, 95894, 95892, 95890, 95888, 95886, 95884, 95882, 95880, 95878, 95876, 95874, 95872, 95870, 95868, 95866, 95864, 95862, 95860, 95858, 95856, 95854, 95852, 95850, 95848, 95846, 95844, 95842, 95840, 95838, 95836, 95834, 95832, 95830, 95828, 95826, 95824, 95822, 95820, 95818, 95816, 95814, 95812, 95810, 95808, 95806, 95804, 95802, 95800, 95798, 95796, 95794, 95792, 95790, 95788, 95786, 95784, 95782, 95780, 95778, 95776, 95774, 95772, 95770, 95768, 95766, 95764, 95762, 95760, 95758, 95756, 95754, 95752, 95750, 95748, 95746, 95744, 95742, 95740, 95738, 95736, 95734, 95732, 95730, 95728, 95726, 95724, 95722, 95720, 95718, 95716, 95714, 95712, 95710, 95708, 95706, 95704, 95702, 95700, 95698, 95696, 95694, 95692, 95690, 95688, 95686, 95684, 95682, 95680, 95678, 95676, 95674, 95672, 95670, 95668, 95666, 95664, 95662, 95660, 95658, 95656, 95654, 95652, 95650, 95648, 95646, 95644, 95642, 95640, 95638, 95636, 95634, 95632, 95630, 95628, 95626, 95624, 95622, 95620, 95618, 95616, 95614, 95612, 95610, 95608, 95606, 95604, 95602, 95600, 95598, 95596, 95594, 95592, 95590, 95588, 95586, 95584, 95582, 95580, 95578, 95576, 95574, 95572, 95570, 95568, 95566, 95564, 95562, 95560, 95558, 95556, 95554, 95552, 95550, 95548, 95546, 95544, 95542, 95540, 95538, 95536, 95534, 95532, 95530, 95528, 95526, 95524, 95522, 95520, 95518, 95516, 95514, 95512, 95510, 95508, 95506, 95504, 95502, 95500, 95498, 95496, 95494, 95492, 95490, 95488, 95486, 95484, 95482, 95480, 95478, 95476, 95474, 95472, 95470, 95468, 95466, 95464, 95462, 95460, 95458, 95456, 95454, 95452, 95450, 95448, 95446, 95444, 95442, 95440, 95438, 95436, 95434, 95432, 95430, 95428, 95426, 95424, 95422, 95420, 95418, 95416, 95414, 95412, 95410, 95408, 95406, 95404, 95402, 95400, 95398, 95396, 95394, 95392, 95390, 95388, 95386, 95384, 95382, 95380, 95378, 95376, 95374, 95372, 95370, 95368, 95366, 95364, 95362, 95360, 95358, 95356, 95354, 95352, 95350, 95348, 95346, 95344, 95342, 95340, 95338, 95336, 95334, 95332, 95330, 95328, 95326, 95324, 95322, 95320, 95318, 95316, 95314, 95312, 95310, 95308, 95306, 95304, 95302, 95300, 95298, 95296, 95294, 95292, 95290, 95288, 95286, 95284, 95282, 95280, 95278, 95276, 95274, 95272, 95270, 95268, 95266, 95264, 95262, 95260, 95258, 95256, 95254, 95252, 95250, 95248, 95246, 95244, 95242, 95240, 95238, 95236, 95234, 95232, 95230, 95228, 95226, 95224, 95222, 95220, 95218, 95216, 95214, 95212, 95210, 95208, 95206, 95204, 95202, 95200, 95198, 95196, 95194, 95192, 95190, 95188, 95186, 95184, 95182, 95180, 95178, 95176, 95174, 95172, 95170, 95168, 95166, 95164, 95162, 95160, 95158, 95156, 95154, 95152, 95150, 95148, 95146, 95144, 95142, 95140, 95138, 95136, 95134, 95132, 95130, 95128, 95126, 95124, 95122, 95120, 95118, 95116, 95114, 95112, 95110, 95108, 95106, 95104, 95102, 95100, 95098, 95096, 95094, 95092, 95090, 95088, 95086, 95084, 95082, 95080, 95078, 95076, 95074, 95072, 95070, 95068, 95066, 95064, 95062, 95060, 95058, 95056, 95054, 95052, 95050, 95048, 95046, 95044, 95042, 95040, 95038, 95036, 95034, 95032, 95030, 95028, 95026, 95024, 95022, 95020, 95018, 95016, 95014, 95012, 95010, 95008, 95006, 95004, 95002, 95000, 94998, 94996, 94994, 94992, 94990, 94988, 94986, 94984, 94982, 94980, 94978, 94976, 94974, 94972, 94970, 94968, 94966, 94964, 94962, 94960, 94958, 94956, 94954, 94952, 94950, 94948, 94946, 94944, 94942, 94940, 94938, 94936, 94934, 94932, 94930, 94928, 94926, 94924, 94922, 94920, 94918, 94916, 94914, 94912, 94910, 94908, 94906, 94904, 94902, 94900, 94898, 94896, 94894, 94892, 94890, 94888, 94886, 94884, 94882, 94880, 94878, 94876, 94874, 94872, 94870, 94868, 94866, 94864, 94862, 94860, 94858, 94856, 94854, 94852, 94850, 94848, 94846, 94844, 94842, 94840, 94838, 94836, 94834, 94832, 94830, 94828, 94826, 94824, 94822, 94820, 94818, 94816, 94814, 94812, 94810, 94808, 94806, 94804, 94802, 94800, 94798, 94796, 94794, 94792, 94790, 94788, 94786, 94784, 94782, 94780, 94778, 94776, 94774, 94772, 94770, 94768, 94766, 94764, 94762, 94760, 94758, 94756, 94754, 94752, 94750, 94748, 94746, 94744, 94742, 94740, 94738, 94736, 94734, 94732, 94730, 94728, 94726, 94724, 94722, 94720, 94718, 94716, 94714, 94712, 94710, 94708, 94706, 94704, 94702, 94700, 94698, 94696, 94694, 94692, 94690, 94688, 94686, 94684, 94682, 94680, 94678, 94676, 94674, 94672, 94670, 94668, 94666, 94664, 94662, 94660, 94658, 94656, 94654, 94652, 94650, 94648, 94646, 94644, 94642, 94640, 94638, 94636, 94634, 94632, 94630, 94628, 94626, 94624, 94622, 94620, 94618, 94616, 94614, 94612, 94610, 94608, 94606, 94604, 94602, 94600, 94598, 94596, 94594, 94592, 94590, 94588, 94586, 94584, 94582, 94580, 94578, 94576, 94574, 94572, 94570, 94568, 94566, 94564, 94562, 94560, 94558, 94556, 94554, 94552, 94550, 94548, 94546, 94544, 94542, 94540, 94538, 94536, 94534, 94532, 94530, 94528, 94526, 94524, 94522, 94520, 94518, 94516, 94514, 94512, 94510, 94508, 94506, 94504, 94502, 94500, 94498, 94496, 94494, 94492, 94490, 94488, 94486, 94484, 94482, 94480, 94478, 94476, 94474, 94472, 94470, 94468, 94466, 94464, 94462, 94460, 94458, 94456, 94454, 94452, 94450, 94448, 94446, 94444, 94442, 94440, 94438, 94436, 94434, 94432, 94430, 94428, 94426, 94424, 94422, 94420, 94418, 94416, 94414, 94412, 94410, 94408, 94406, 94404, 94402, 94400, 94398, 94396, 94394, 94392, 94390, 94388, 94386, 94384, 94382, 94380, 94378, 94376, 94374, 94372, 94370, 94368, 94366, 94364, 94362, 94360, 94358, 94356, 94354, 94352, 94350, 94348, 94346, 94344, 94342, 94340, 94338, 94336, 94334, 94332, 94330, 94328, 94326, 94324, 94322, 94320, 94318, 94316, 94314, 94312, 94310, 94308, 94306, 94304, 94302, 94300, 94298, 94296, 94294, 94292, 94290, 94288, 94286, 94284, 94282, 94280, 94278, 94276, 94274, 94272, 94270, 94268, 94266, 94264, 94262, 94260, 94258, 94256, 94254, 94252, 94250, 94248, 94246, 94244, 94242, 94240, 94238, 94236, 94234, 94232, 94230, 94228, 94226, 94224, 94222, 94220, 94218, 94216, 94214, 94212, 94210, 94208, 94206, 94204, 94202, 94200, 94198, 94196, 94194, 94192, 94190, 94188, 94186, 94184, 94182, 94180, 94178, 94176, 94174, 94172, 94170, 94168, 94166, 94164, 94162, 94160, 94158, 94156, 94154, 94152, 94150, 94148, 94146, 94144, 94142, 94140, 94138, 94136, 94134, 94132, 94130, 94128, 94126, 94124, 94122, 94120, 94118, 94116, 94114, 94112, 94110, 94108, 94106, 94104, 94102, 94100, 94098, 94096, 94094, 94092, 94090, 94088, 94086, 94084, 94082, 94080, 94078, 94076, 94074, 94072, 94070, 94068, 94066, 94064, 94062, 94060, 94058, 94056, 94054, 94052, 94050, 94048, 94046, 94044, 94042, 94040, 94038, 94036, 94034, 94032, 94030, 94028, 94026, 94024, 94022, 94020, 94018, 94016, 94014, 94012, 94010, 94008, 94006, 94004, 94002, 94000, 93998, 93996, 93994, 93992, 93990, 93988, 93986, 93984, 93982, 93980, 93978, 93976, 93974, 93972, 93970, 93968, 93966, 93964, 93962, 93960, 93958, 93956, 93954, 93952, 93950, 93948, 93946, 93944, 93942, 93940, 93938, 93936, 93934, 93932, 93930, 93928, 93926, 93924, 93922, 93920, 93918, 93916, 93914, 93912, 93910, 93908, 93906, 93904, 93902, 93900, 93898, 93896, 93894, 93892, 93890, 93888, 93886, 93884, 93882, 93880, 93878, 93876, 93874, 93872, 93870, 93868, 93866, 93864, 93862, 93860, 93858, 93856, 93854, 93852, 93850, 93848, 93846, 93844, 93842, 93840, 93838, 93836, 93834, 93832, 93830, 93828, 93826, 93824, 93822, 93820, 93818, 93816, 93814, 93812, 93810, 93808, 93806, 93804, 93802, 93800, 93798, 93796, 93794, 93792, 93790, 93788, 93786, 93784, 93782, 93780, 93778, 93776, 93774, 93772, 93770, 93768, 93766, 93764, 93762, 93760, 93758, 93756, 93754, 93752, 93750, 93748, 93746, 93744, 93742, 93740, 93738, 93736, 93734, 93732, 93730, 93728, 93726, 93724, 93722, 93720, 93718, 93716, 93714, 93712, 93710, 93708, 93706, 93704, 93702, 93700, 93698, 93696, 93694, 93692, 93690, 93688, 93686, 93684, 93682, 93680, 93678, 93676, 93674, 93672, 93670, 93668, 93666, 93664, 93662, 93660, 93658, 93656, 93654, 93652, 93650, 93648, 93646, 93644, 93642, 93640, 93638, 93636, 93634, 93632, 93630, 93628, 93626, 93624, 93622, 93620, 93618, 93616, 93614, 93612, 93610, 93608, 93606, 93604, 93602, 93600, 93598, 93596, 93594, 93592, 93590, 93588, 93586, 93584, 93582, 93580, 93578, 93576, 93574, 93572, 93570, 93568, 93566, 93564, 93562, 93560, 93558, 93556, 93554, 93552, 93550, 93548, 93546, 93544, 93542, 93540, 93538, 93536, 93534, 93532, 93530, 93528, 93526, 93524, 93522, 93520, 93518, 93516, 93514, 93512, 93510, 93508, 93506, 93504, 93502, 93500, 93498, 93496, 93494, 93492, 93490, 93488, 93486, 93484, 93482, 93480, 93478, 93476, 93474, 93472, 93470, 93468, 93466, 93464, 93462, 93460, 93458, 93456, 93454, 93452, 93450, 93448, 93446, 93444, 93442, 93440, 93438, 93436, 93434, 93432, 93430, 93428, 93426, 93424, 93422, 93420, 93418, 93416, 93414, 93412, 93410, 93408, 93406, 93404, 93402, 93400, 93398, 93396, 93394, 93392, 93390, 93388, 93386, 93384, 93382, 93380, 93378, 93376, 93374, 93372, 93370, 93368, 93366, 93364, 93362, 93360, 93358, 93356, 93354, 93352, 93350, 93348, 93346, 93344, 93342, 93340, 93338, 93336, 93334, 93332, 93330, 93328, 93326, 93324, 93322, 93320, 93318, 93316, 93314, 93312, 93310, 93308, 93306, 93304, 93302, 93300, 93298, 93296, 93294, 93292, 93290, 93288, 93286, 93284, 93282, 93280, 93278, 93276, 93274, 93272, 93270, 93268, 93266, 93264, 93262, 93260, 93258, 93256, 93254, 93252, 93250, 93248, 93246, 93244, 93242, 93240, 93238, 93236, 93234, 93232, 93230, 93228, 93226, 93224, 93222, 93220, 93218, 93216, 93214, 93212, 93210, 93208, 93206, 93204, 93202, 93200, 93198, 93196, 93194, 93192, 93190, 93188, 93186, 93184, 93182, 93180, 93178, 93176, 93174, 93172, 93170, 93168, 93166, 93164, 93162, 93160, 93158, 93156, 93154, 93152, 93150, 93148, 93146, 93144, 93142, 93140, 93138, 93136, 93134, 93132, 93130, 93128, 93126, 93124, 93122, 93120, 93118, 93116, 93114, 93112, 93110, 93108, 93106, 93104, 93102, 93100, 93098, 93096, 93094, 93092, 93090, 93088, 93086, 93084, 93082, 93080, 93078, 93076, 93074, 93072, 93070, 93068, 93066, 93064, 93062, 93060, 93058, 93056, 93054, 93052, 93050, 93048, 93046, 93044, 93042, 93040, 93038, 93036, 93034, 93032, 93030, 93028, 93026, 93024, 93022, 93020, 93018, 93016, 93014, 93012, 93010, 93008, 93006, 93004, 93002, 93000, 92998, 92996, 92994, 92992, 92990, 92988, 92986, 92984, 92982, 92980, 92978, 92976, 92974, 92972, 92970, 92968, 92966, 92964, 92962, 92960, 92958, 92956, 92954, 92952, 92950, 92948, 92946, 92944, 92942, 92940, 92938, 92936, 92934, 92932, 92930, 92928, 92926, 92924, 92922, 92920, 92918, 92916, 92914, 92912, 92910, 92908, 92906, 92904, 92902, 92900, 92898, 92896, 92894, 92892, 92890, 92888, 92886, 92884, 92882, 92880, 92878, 92876, 92874, 92872, 92870, 92868, 92866, 92864, 92862, 92860, 92858, 92856, 92854, 92852, 92850, 92848, 92846, 92844, 92842, 92840, 92838, 92836, 92834, 92832, 92830, 92828, 92826, 92824, 92822, 92820, 92818, 92816, 92814, 92812, 92810, 92808, 92806, 92804, 92802, 92800, 92798, 92796, 92794, 92792, 92790, 92788, 92786, 92784, 92782, 92780, 92778, 92776, 92774, 92772, 92770, 92768, 92766, 92764, 92762, 92760, 92758, 92756, 92754, 92752, 92750, 92748, 92746, 92744, 92742, 92740, 92738, 92736, 92734, 92732, 92730, 92728, 92726, 92724, 92722, 92720, 92718, 92716, 92714, 92712, 92710, 92708, 92706, 92704, 92702, 92700, 92698, 92696, 92694, 92692, 92690, 92688, 92686, 92684, 92682, 92680, 92678, 92676, 92674, 92672, 92670, 92668, 92666, 92664, 92662, 92660, 92658, 92656, 92654, 92652, 92650, 92648, 92646, 92644, 92642, 92640, 92638, 92636, 92634, 92632, 92630, 92628, 92626, 92624, 92622, 92620, 92618, 92616, 92614, 92612, 92610, 92608, 92606, 92604, 92602, 92600, 92598, 92596, 92594, 92592, 92590, 92588, 92586, 92584, 92582, 92580, 92578, 92576, 92574, 92572, 92570, 92568, 92566, 92564, 92562, 92560, 92558, 92556, 92554, 92552, 92550, 92548, 92546, 92544, 92542, 92540, 92538, 92536, 92534, 92532, 92530, 92528, 92526, 92524, 92522, 92520, 92518, 92516, 92514, 92512, 92510, 92508, 92506, 92504, 92502, 92500, 92498, 92496, 92494, 92492, 92490, 92488, 92486, 92484, 92482, 92480, 92478, 92476, 92474, 92472, 92470, 92468, 92466, 92464, 92462, 92460, 92458, 92456, 92454, 92452, 92450, 92448, 92446, 92444, 92442, 92440, 92438, 92436, 92434, 92432, 92430, 92428, 92426, 92424, 92422, 92420, 92418, 92416, 92414, 92412, 92410, 92408, 92406, 92404, 92402, 92400, 92398, 92396, 92394, 92392, 92390, 92388, 92386, 92384, 92382, 92380, 92378, 92376, 92374, 92372, 92370, 92368, 92366, 92364, 92362, 92360, 92358, 92356, 92354, 92352, 92350, 92348, 92346, 92344, 92342, 92340, 92338, 92336, 92334, 92332, 92330, 92328, 92326, 92324, 92322, 92320, 92318, 92316, 92314, 92312, 92310, 92308, 92306, 92304, 92302, 92300, 92298, 92296, 92294, 92292, 92290, 92288, 92286, 92284, 92282, 92280, 92278, 92276, 92274, 92272, 92270, 92268, 92266, 92264, 92262, 92260, 92258, 92256, 92254, 92252, 92250, 92248, 92246, 92244, 92242, 92240, 92238, 92236, 92234, 92232, 92230, 92228, 92226, 92224, 92222, 92220, 92218, 92216, 92214, 92212, 92210, 92208, 92206, 92204, 92202, 92200, 92198, 92196, 92194, 92192, 92190, 92188, 92186, 92184, 92182, 92180, 92178, 92176, 92174, 92172, 92170, 92168, 92166, 92164, 92162, 92160, 92158, 92156, 92154, 92152, 92150, 92148, 92146, 92144, 92142, 92140, 92138, 92136, 92134, 92132, 92130, 92128, 92126, 92124, 92122, 92120, 92118, 92116, 92114, 92112, 92110, 92108, 92106, 92104, 92102, 92100, 92098, 92096, 92094, 92092, 92090, 92088, 92086, 92084, 92082, 92080, 92078, 92076, 92074, 92072, 92070, 92068, 92066, 92064, 92062, 92060, 92058, 92056, 92054, 92052, 92050, 92048, 92046, 92044, 92042, 92040, 92038, 92036, 92034, 92032, 92030, 92028, 92026, 92024, 92022, 92020, 92018, 92016, 92014, 92012, 92010, 92008, 92006, 92004, 92002, 92000, 91998, 91996, 91994, 91992, 91990, 91988, 91986, 91984, 91982, 91980, 91978, 91976, 91974, 91972, 91970, 91968, 91966, 91964, 91962, 91960, 91958, 91956, 91954, 91952, 91950, 91948, 91946, 91944, 91942, 91940, 91938, 91936, 91934, 91932, 91930, 91928, 91926, 91924, 91922, 91920, 91918, 91916, 91914, 91912, 91910, 91908, 91906, 91904, 91902, 91900, 91898, 91896, 91894, 91892, 91890, 91888, 91886, 91884, 91882, 91880, 91878, 91876, 91874, 91872, 91870, 91868, 91866, 91864, 91862, 91860, 91858, 91856, 91854, 91852, 91850, 91848, 91846, 91844, 91842, 91840, 91838, 91836, 91834, 91832, 91830, 91828, 91826, 91824, 91822, 91820, 91818, 91816, 91814, 91812, 91810, 91808, 91806, 91804, 91802, 91800, 91798, 91796, 91794, 91792, 91790, 91788, 91786, 91784, 91782, 91780, 91778, 91776, 91774, 91772, 91770, 91768, 91766, 91764, 91762, 91760, 91758, 91756, 91754, 91752, 91750, 91748, 91746, 91744, 91742, 91740, 91738, 91736, 91734, 91732, 91730, 91728, 91726, 91724, 91722, 91720, 91718, 91716, 91714, 91712, 91710, 91708, 91706, 91704, 91702, 91700, 91698, 91696, 91694, 91692, 91690, 91688, 91686, 91684, 91682, 91680, 91678, 91676, 91674, 91672, 91670, 91668, 91666, 91664, 91662, 91660, 91658, 91656, 91654, 91652, 91650, 91648, 91646, 91644, 91642, 91640, 91638, 91636, 91634, 91632, 91630, 91628, 91626, 91624, 91622, 91620, 91618, 91616, 91614, 91612, 91610, 91608, 91606, 91604, 91602, 91600, 91598, 91596, 91594, 91592, 91590, 91588, 91586, 91584, 91582, 91580, 91578, 91576, 91574, 91572, 91570, 91568, 91566, 91564, 91562, 91560, 91558, 91556, 91554, 91552, 91550, 91548, 91546, 91544, 91542, 91540, 91538, 91536, 91534, 91532, 91530, 91528, 91526, 91524, 91522, 91520, 91518, 91516, 91514, 91512, 91510, 91508, 91506, 91504, 91502, 91500, 91498, 91496, 91494, 91492, 91490, 91488, 91486, 91484, 91482, 91480, 91478, 91476, 91474, 91472, 91470, 91468, 91466, 91464, 91462, 91460, 91458, 91456, 91454, 91452, 91450, 91448, 91446, 91444, 91442, 91440, 91438, 91436, 91434, 91432, 91430, 91428, 91426, 91424, 91422, 91420, 91418, 91416, 91414, 91412, 91410, 91408, 91406, 91404, 91402, 91400, 91398, 91396, 91394, 91392, 91390, 91388, 91386, 91384, 91382, 91380, 91378, 91376, 91374, 91372, 91370, 91368, 91366, 91364, 91362, 91360, 91358, 91356, 91354, 91352, 91350, 91348, 91346, 91344, 91342, 91340, 91338, 91336, 91334, 91332, 91330, 91328, 91326, 91324, 91322, 91320, 91318, 91316, 91314, 91312, 91310, 91308, 91306, 91304, 91302, 91300, 91298, 91296, 91294, 91292, 91290, 91288, 91286, 91284, 91282, 91280, 91278, 91276, 91274, 91272, 91270, 91268, 91266, 91264, 91262, 91260, 91258, 91256, 91254, 91252, 91250, 91248, 91246, 91244, 91242, 91240, 91238, 91236, 91234, 91232, 91230, 91228, 91226, 91224, 91222, 91220, 91218, 91216, 91214, 91212, 91210, 91208, 91206, 91204, 91202, 91200, 91198, 91196, 91194, 91192, 91190, 91188, 91186, 91184, 91182, 91180, 91178, 91176, 91174, 91172, 91170, 91168, 91166, 91164, 91162, 91160, 91158, 91156, 91154, 91152, 91150, 91148, 91146, 91144, 91142, 91140, 91138, 91136, 91134, 91132, 91130, 91128, 91126, 91124, 91122, 91120, 91118, 91116, 91114, 91112, 91110, 91108, 91106, 91104, 91102, 91100, 91098, 91096, 91094, 91092, 91090, 91088, 91086, 91084, 91082, 91080, 91078, 91076, 91074, 91072, 91070, 91068, 91066, 91064, 91062, 91060, 91058, 91056, 91054, 91052, 91050, 91048, 91046, 91044, 91042, 91040, 91038, 91036, 91034, 91032, 91030, 91028, 91026, 91024, 91022, 91020, 91018, 91016, 91014, 91012, 91010, 91008, 91006, 91004, 91002, 91000, 90998, 90996, 90994, 90992, 90990, 90988, 90986, 90984, 90982, 90980, 90978, 90976, 90974, 90972, 90970, 90968, 90966, 90964, 90962, 90960, 90958, 90956, 90954, 90952, 90950, 90948, 90946, 90944, 90942, 90940, 90938, 90936, 90934, 90932, 90930, 90928, 90926, 90924, 90922, 90920, 90918, 90916, 90914, 90912, 90910, 90908, 90906, 90904, 90902, 90900, 90898, 90896, 90894, 90892, 90890, 90888, 90886, 90884, 90882, 90880, 90878, 90876, 90874, 90872, 90870, 90868, 90866, 90864, 90862, 90860, 90858, 90856, 90854, 90852, 90850, 90848, 90846, 90844, 90842, 90840, 90838, 90836, 90834, 90832, 90830, 90828, 90826, 90824, 90822, 90820, 90818, 90816, 90814, 90812, 90810, 90808, 90806, 90804, 90802, 90800, 90798, 90796, 90794, 90792, 90790, 90788, 90786, 90784, 90782, 90780, 90778, 90776, 90774, 90772, 90770, 90768, 90766, 90764, 90762, 90760, 90758, 90756, 90754, 90752, 90750, 90748, 90746, 90744, 90742, 90740, 90738, 90736, 90734, 90732, 90730, 90728, 90726, 90724, 90722, 90720, 90718, 90716, 90714, 90712, 90710, 90708, 90706, 90704, 90702, 90700, 90698, 90696, 90694, 90692, 90690, 90688, 90686, 90684, 90682, 90680, 90678, 90676, 90674, 90672, 90670, 90668, 90666, 90664, 90662, 90660, 90658, 90656, 90654, 90652, 90650, 90648, 90646, 90644, 90642, 90640, 90638, 90636, 90634, 90632, 90630, 90628, 90626, 90624, 90622, 90620, 90618, 90616, 90614, 90612, 90610, 90608, 90606, 90604, 90602, 90600, 90598, 90596, 90594, 90592, 90590, 90588, 90586, 90584, 90582, 90580, 90578, 90576, 90574, 90572, 90570, 90568, 90566, 90564, 90562, 90560, 90558, 90556, 90554, 90552, 90550, 90548, 90546, 90544, 90542, 90540, 90538, 90536, 90534, 90532, 90530, 90528, 90526, 90524, 90522, 90520, 90518, 90516, 90514, 90512, 90510, 90508, 90506, 90504, 90502, 90500, 90498, 90496, 90494, 90492, 90490, 90488, 90486, 90484, 90482, 90480, 90478, 90476, 90474, 90472, 90470, 90468, 90466, 90464, 90462, 90460, 90458, 90456, 90454, 90452, 90450, 90448, 90446, 90444, 90442, 90440, 90438, 90436, 90434, 90432, 90430, 90428, 90426, 90424, 90422, 90420, 90418, 90416, 90414, 90412, 90410, 90408, 90406, 90404, 90402, 90400, 90398, 90396, 90394, 90392, 90390, 90388, 90386, 90384, 90382, 90380, 90378, 90376, 90374, 90372, 90370, 90368, 90366, 90364, 90362, 90360, 90358, 90356, 90354, 90352, 90350, 90348, 90346, 90344, 90342, 90340, 90338, 90336, 90334, 90332, 90330, 90328, 90326, 90324, 90322, 90320, 90318, 90316, 90314, 90312, 90310, 90308, 90306, 90304, 90302, 90300, 90298, 90296, 90294, 90292, 90290, 90288, 90286, 90284, 90282, 90280, 90278, 90276, 90274, 90272, 90270, 90268, 90266, 90264, 90262, 90260, 90258, 90256, 90254, 90252, 90250, 90248, 90246, 90244, 90242, 90240, 90238, 90236, 90234, 90232, 90230, 90228, 90226, 90224, 90222, 90220, 90218, 90216, 90214, 90212, 90210, 90208, 90206, 90204, 90202, 90200, 90198, 90196, 90194, 90192, 90190, 90188, 90186, 90184, 90182, 90180, 90178, 90176, 90174, 90172, 90170, 90168, 90166, 90164, 90162, 90160, 90158, 90156, 90154, 90152, 90150, 90148, 90146, 90144, 90142, 90140, 90138, 90136, 90134, 90132, 90130, 90128, 90126, 90124, 90122, 90120, 90118, 90116, 90114, 90112, 90110, 90108, 90106, 90104, 90102, 90100, 90098, 90096, 90094, 90092, 90090, 90088, 90086, 90084, 90082, 90080, 90078, 90076, 90074, 90072, 90070, 90068, 90066, 90064, 90062, 90060, 90058, 90056, 90054, 90052, 90050, 90048, 90046, 90044, 90042, 90040, 90038, 90036, 90034, 90032, 90030, 90028, 90026, 90024, 90022, 90020, 90018, 90016, 90014, 90012, 90010, 90008, 90006, 90004, 90002, 90000, 89998, 89996, 89994, 89992, 89990, 89988, 89986, 89984, 89982, 89980, 89978, 89976, 89974, 89972, 89970, 89968, 89966, 89964, 89962, 89960, 89958, 89956, 89954, 89952, 89950, 89948, 89946, 89944, 89942, 89940, 89938, 89936, 89934, 89932, 89930, 89928, 89926, 89924, 89922, 89920, 89918, 89916, 89914, 89912, 89910, 89908, 89906, 89904, 89902, 89900, 89898, 89896, 89894, 89892, 89890, 89888, 89886, 89884, 89882, 89880, 89878, 89876, 89874, 89872, 89870, 89868, 89866, 89864, 89862, 89860, 89858, 89856, 89854, 89852, 89850, 89848, 89846, 89844, 89842, 89840, 89838, 89836, 89834, 89832, 89830, 89828, 89826, 89824, 89822, 89820, 89818, 89816, 89814, 89812, 89810, 89808, 89806, 89804, 89802, 89800, 89798, 89796, 89794, 89792, 89790, 89788, 89786, 89784, 89782, 89780, 89778, 89776, 89774, 89772, 89770, 89768, 89766, 89764, 89762, 89760, 89758, 89756, 89754, 89752, 89750, 89748, 89746, 89744, 89742, 89740, 89738, 89736, 89734, 89732, 89730, 89728, 89726, 89724, 89722, 89720, 89718, 89716, 89714, 89712, 89710, 89708, 89706, 89704, 89702, 89700, 89698, 89696, 89694, 89692, 89690, 89688, 89686, 89684, 89682, 89680, 89678, 89676, 89674, 89672, 89670, 89668, 89666, 89664, 89662, 89660, 89658, 89656, 89654, 89652, 89650, 89648, 89646, 89644, 89642, 89640, 89638, 89636, 89634, 89632, 89630, 89628, 89626, 89624, 89622, 89620, 89618, 89616, 89614, 89612, 89610, 89608, 89606, 89604, 89602, 89600, 89598, 89596, 89594, 89592, 89590, 89588, 89586, 89584, 89582, 89580, 89578, 89576, 89574, 89572, 89570, 89568, 89566, 89564, 89562, 89560, 89558, 89556, 89554, 89552, 89550, 89548, 89546, 89544, 89542, 89540, 89538, 89536, 89534, 89532, 89530, 89528, 89526, 89524, 89522, 89520, 89518, 89516, 89514, 89512, 89510, 89508, 89506, 89504, 89502, 89500, 89498, 89496, 89494, 89492, 89490, 89488, 89486, 89484, 89482, 89480, 89478, 89476, 89474, 89472, 89470, 89468, 89466, 89464, 89462, 89460, 89458, 89456, 89454, 89452, 89450, 89448, 89446, 89444, 89442, 89440, 89438, 89436, 89434, 89432, 89430, 89428, 89426, 89424, 89422, 89420, 89418, 89416, 89414, 89412, 89410, 89408, 89406, 89404, 89402, 89400, 89398, 89396, 89394, 89392, 89390, 89388, 89386, 89384, 89382, 89380, 89378, 89376, 89374, 89372, 89370, 89368, 89366, 89364, 89362, 89360, 89358, 89356, 89354, 89352, 89350, 89348, 89346, 89344, 89342, 89340, 89338, 89336, 89334, 89332, 89330, 89328, 89326, 89324, 89322, 89320, 89318, 89316, 89314, 89312, 89310, 89308, 89306, 89304, 89302, 89300, 89298, 89296, 89294, 89292, 89290, 89288, 89286, 89284, 89282, 89280, 89278, 89276, 89274, 89272, 89270, 89268, 89266, 89264, 89262, 89260, 89258, 89256, 89254, 89252, 89250, 89248, 89246, 89244, 89242, 89240, 89238, 89236, 89234, 89232, 89230, 89228, 89226, 89224, 89222, 89220, 89218, 89216, 89214, 89212, 89210, 89208, 89206, 89204, 89202, 89200, 89198, 89196, 89194, 89192, 89190, 89188, 89186, 89184, 89182, 89180, 89178, 89176, 89174, 89172, 89170, 89168, 89166, 89164, 89162, 89160, 89158, 89156, 89154, 89152, 89150, 89148, 89146, 89144, 89142, 89140, 89138, 89136, 89134, 89132, 89130, 89128, 89126, 89124, 89122, 89120, 89118, 89116, 89114, 89112, 89110, 89108, 89106, 89104, 89102, 89100, 89098, 89096, 89094, 89092, 89090, 89088, 89086, 89084, 89082, 89080, 89078, 89076, 89074, 89072, 89070, 89068, 89066, 89064, 89062, 89060, 89058, 89056, 89054, 89052, 89050, 89048, 89046, 89044, 89042, 89040, 89038, 89036, 89034, 89032, 89030, 89028, 89026, 89024, 89022, 89020, 89018, 89016, 89014, 89012, 89010, 89008, 89006, 89004, 89002, 89000, 88998, 88996, 88994, 88992, 88990, 88988, 88986, 88984, 88982, 88980, 88978, 88976, 88974, 88972, 88970, 88968, 88966, 88964, 88962, 88960, 88958, 88956, 88954, 88952, 88950, 88948, 88946, 88944, 88942, 88940, 88938, 88936, 88934, 88932, 88930, 88928, 88926, 88924, 88922, 88920, 88918, 88916, 88914, 88912, 88910, 88908, 88906, 88904, 88902, 88900, 88898, 88896, 88894, 88892, 88890, 88888, 88886, 88884, 88882, 88880, 88878, 88876, 88874, 88872, 88870, 88868, 88866, 88864, 88862, 88860, 88858, 88856, 88854, 88852, 88850, 88848, 88846, 88844, 88842, 88840, 88838, 88836, 88834, 88832, 88830, 88828, 88826, 88824, 88822, 88820, 88818, 88816, 88814, 88812, 88810, 88808, 88806, 88804, 88802, 88800, 88798, 88796, 88794, 88792, 88790, 88788, 88786, 88784, 88782, 88780, 88778, 88776, 88774, 88772, 88770, 88768, 88766, 88764, 88762, 88760, 88758, 88756, 88754, 88752, 88750, 88748, 88746, 88744, 88742, 88740, 88738, 88736, 88734, 88732, 88730, 88728, 88726, 88724, 88722, 88720, 88718, 88716, 88714, 88712, 88710, 88708, 88706, 88704, 88702, 88700, 88698, 88696, 88694, 88692, 88690, 88688, 88686, 88684, 88682, 88680, 88678, 88676, 88674, 88672, 88670, 88668, 88666, 88664, 88662, 88660, 88658, 88656, 88654, 88652, 88650, 88648, 88646, 88644, 88642, 88640, 88638, 88636, 88634, 88632, 88630, 88628, 88626, 88624, 88622, 88620, 88618, 88616, 88614, 88612, 88610, 88608, 88606, 88604, 88602, 88600, 88598, 88596, 88594, 88592, 88590, 88588, 88586, 88584, 88582, 88580, 88578, 88576, 88574, 88572, 88570, 88568, 88566, 88564, 88562, 88560, 88558, 88556, 88554, 88552, 88550, 88548, 88546, 88544, 88542, 88540, 88538, 88536, 88534, 88532, 88530, 88528, 88526, 88524, 88522, 88520, 88518, 88516, 88514, 88512, 88510, 88508, 88506, 88504, 88502, 88500, 88498, 88496, 88494, 88492, 88490, 88488, 88486, 88484, 88482, 88480, 88478, 88476, 88474, 88472, 88470, 88468, 88466, 88464, 88462, 88460, 88458, 88456, 88454, 88452, 88450, 88448, 88446, 88444, 88442, 88440, 88438, 88436, 88434, 88432, 88430, 88428, 88426, 88424, 88422, 88420, 88418, 88416, 88414, 88412, 88410, 88408, 88406, 88404, 88402, 88400, 88398, 88396, 88394, 88392, 88390, 88388, 88386, 88384, 88382, 88380, 88378, 88376, 88374, 88372, 88370, 88368, 88366, 88364, 88362, 88360, 88358, 88356, 88354, 88352, 88350, 88348, 88346, 88344, 88342, 88340, 88338, 88336, 88334, 88332, 88330, 88328, 88326, 88324, 88322, 88320, 88318, 88316, 88314, 88312, 88310, 88308, 88306, 88304, 88302, 88300, 88298, 88296, 88294, 88292, 88290, 88288, 88286, 88284, 88282, 88280, 88278, 88276, 88274, 88272, 88270, 88268, 88266, 88264, 88262, 88260, 88258, 88256, 88254, 88252, 88250, 88248, 88246, 88244, 88242, 88240, 88238, 88236, 88234, 88232, 88230, 88228, 88226, 88224, 88222, 88220, 88218, 88216, 88214, 88212, 88210, 88208, 88206, 88204, 88202, 88200, 88198, 88196, 88194, 88192, 88190, 88188, 88186, 88184, 88182, 88180, 88178, 88176, 88174, 88172, 88170, 88168, 88166, 88164, 88162, 88160, 88158, 88156, 88154, 88152, 88150, 88148, 88146, 88144, 88142, 88140, 88138, 88136, 88134, 88132, 88130, 88128, 88126, 88124, 88122, 88120, 88118, 88116, 88114, 88112, 88110, 88108, 88106, 88104, 88102, 88100, 88098, 88096, 88094, 88092, 88090, 88088, 88086, 88084, 88082, 88080, 88078, 88076, 88074, 88072, 88070, 88068, 88066, 88064, 88062, 88060, 88058, 88056, 88054, 88052, 88050, 88048, 88046, 88044, 88042, 88040, 88038, 88036, 88034, 88032, 88030, 88028, 88026, 88024, 88022, 88020, 88018, 88016, 88014, 88012, 88010, 88008, 88006, 88004, 88002, 88000, 87998, 87996, 87994, 87992, 87990, 87988, 87986, 87984, 87982, 87980, 87978, 87976, 87974, 87972, 87970, 87968, 87966, 87964, 87962, 87960, 87958, 87956, 87954, 87952, 87950, 87948, 87946, 87944, 87942, 87940, 87938, 87936, 87934, 87932, 87930, 87928, 87926, 87924, 87922, 87920, 87918, 87916, 87914, 87912, 87910, 87908, 87906, 87904, 87902, 87900, 87898, 87896, 87894, 87892, 87890, 87888, 87886, 87884, 87882, 87880, 87878, 87876, 87874, 87872, 87870, 87868, 87866, 87864, 87862, 87860, 87858, 87856, 87854, 87852, 87850, 87848, 87846, 87844, 87842, 87840, 87838, 87836, 87834, 87832, 87830, 87828, 87826, 87824, 87822, 87820, 87818, 87816, 87814, 87812, 87810, 87808, 87806, 87804, 87802, 87800, 87798, 87796, 87794, 87792, 87790, 87788, 87786, 87784, 87782, 87780, 87778, 87776, 87774, 87772, 87770, 87768, 87766, 87764, 87762, 87760, 87758, 87756, 87754, 87752, 87750, 87748, 87746, 87744, 87742, 87740, 87738, 87736, 87734, 87732, 87730, 87728, 87726, 87724, 87722, 87720, 87718, 87716, 87714, 87712, 87710, 87708, 87706, 87704, 87702, 87700, 87698, 87696, 87694, 87692, 87690, 87688, 87686, 87684, 87682, 87680, 87678, 87676, 87674, 87672, 87670, 87668, 87666, 87664, 87662, 87660, 87658, 87656, 87654, 87652, 87650, 87648, 87646, 87644, 87642, 87640, 87638, 87636, 87634, 87632, 87630, 87628, 87626, 87624, 87622, 87620, 87618, 87616, 87614, 87612, 87610, 87608, 87606, 87604, 87602, 87600, 87598, 87596, 87594, 87592, 87590, 87588, 87586, 87584, 87582, 87580, 87578, 87576, 87574, 87572, 87570, 87568, 87566, 87564, 87562, 87560, 87558, 87556, 87554, 87552, 87550, 87548, 87546, 87544, 87542, 87540, 87538, 87536, 87534, 87532, 87530, 87528, 87526, 87524, 87522, 87520, 87518, 87516, 87514, 87512, 87510, 87508, 87506, 87504, 87502, 87500, 87498, 87496, 87494, 87492, 87490, 87488, 87486, 87484, 87482, 87480, 87478, 87476, 87474, 87472, 87470, 87468, 87466, 87464, 87462, 87460, 87458, 87456, 87454, 87452, 87450, 87448, 87446, 87444, 87442, 87440, 87438, 87436, 87434, 87432, 87430, 87428, 87426, 87424, 87422, 87420, 87418, 87416, 87414, 87412, 87410, 87408, 87406, 87404, 87402, 87400, 87398, 87396, 87394, 87392, 87390, 87388, 87386, 87384, 87382, 87380, 87378, 87376, 87374, 87372, 87370, 87368, 87366, 87364, 87362, 87360, 87358, 87356, 87354, 87352, 87350, 87348, 87346, 87344, 87342, 87340, 87338, 87336, 87334, 87332, 87330, 87328, 87326, 87324, 87322, 87320, 87318, 87316, 87314, 87312, 87310, 87308, 87306, 87304, 87302, 87300, 87298, 87296, 87294, 87292, 87290, 87288, 87286, 87284, 87282, 87280, 87278, 87276, 87274, 87272, 87270, 87268, 87266, 87264, 87262, 87260, 87258, 87256, 87254, 87252, 87250, 87248, 87246, 87244, 87242, 87240, 87238, 87236, 87234, 87232, 87230, 87228, 87226, 87224, 87222, 87220, 87218, 87216, 87214, 87212, 87210, 87208, 87206, 87204, 87202, 87200, 87198, 87196, 87194, 87192, 87190, 87188, 87186, 87184, 87182, 87180, 87178, 87176, 87174, 87172, 87170, 87168, 87166, 87164, 87162, 87160, 87158, 87156, 87154, 87152, 87150, 87148, 87146, 87144, 87142, 87140, 87138, 87136, 87134, 87132, 87130, 87128, 87126, 87124, 87122, 87120, 87118, 87116, 87114, 87112, 87110, 87108, 87106, 87104, 87102, 87100, 87098, 87096, 87094, 87092, 87090, 87088, 87086, 87084, 87082, 87080, 87078, 87076, 87074, 87072, 87070, 87068, 87066, 87064, 87062, 87060, 87058, 87056, 87054, 87052, 87050, 87048, 87046, 87044, 87042, 87040, 87038, 87036, 87034, 87032, 87030, 87028, 87026, 87024, 87022, 87020, 87018, 87016, 87014, 87012, 87010, 87008, 87006, 87004, 87002, 87000, 86998, 86996, 86994, 86992, 86990, 86988, 86986, 86984, 86982, 86980, 86978, 86976, 86974, 86972, 86970, 86968, 86966, 86964, 86962, 86960, 86958, 86956, 86954, 86952, 86950, 86948, 86946, 86944, 86942, 86940, 86938, 86936, 86934, 86932, 86930, 86928, 86926, 86924, 86922, 86920, 86918, 86916, 86914, 86912, 86910, 86908, 86906, 86904, 86902, 86900, 86898, 86896, 86894, 86892, 86890, 86888, 86886, 86884, 86882, 86880, 86878, 86876, 86874, 86872, 86870, 86868, 86866, 86864, 86862, 86860, 86858, 86856, 86854, 86852, 86850, 86848, 86846, 86844, 86842, 86840, 86838, 86836, 86834, 86832, 86830, 86828, 86826, 86824, 86822, 86820, 86818, 86816, 86814, 86812, 86810, 86808, 86806, 86804, 86802, 86800, 86798, 86796, 86794, 86792, 86790, 86788, 86786, 86784, 86782, 86780, 86778, 86776, 86774, 86772, 86770, 86768, 86766, 86764, 86762, 86760, 86758, 86756, 86754, 86752, 86750, 86748, 86746, 86744, 86742, 86740, 86738, 86736, 86734, 86732, 86730, 86728, 86726, 86724, 86722, 86720, 86718, 86716, 86714, 86712, 86710, 86708, 86706, 86704, 86702, 86700, 86698, 86696, 86694, 86692, 86690, 86688, 86686, 86684, 86682, 86680, 86678, 86676, 86674, 86672, 86670, 86668, 86666, 86664, 86662, 86660, 86658, 86656, 86654, 86652, 86650, 86648, 86646, 86644, 86642, 86640, 86638, 86636, 86634, 86632, 86630, 86628, 86626, 86624, 86622, 86620, 86618, 86616, 86614, 86612, 86610, 86608, 86606, 86604, 86602, 86600, 86598, 86596, 86594, 86592, 86590, 86588, 86586, 86584, 86582, 86580, 86578, 86576, 86574, 86572, 86570, 86568, 86566, 86564, 86562, 86560, 86558, 86556, 86554, 86552, 86550, 86548, 86546, 86544, 86542, 86540, 86538, 86536, 86534, 86532, 86530, 86528, 86526, 86524, 86522, 86520, 86518, 86516, 86514, 86512, 86510, 86508, 86506, 86504, 86502, 86500, 86498, 86496, 86494, 86492, 86490, 86488, 86486, 86484, 86482, 86480, 86478, 86476, 86474, 86472, 86470, 86468, 86466, 86464, 86462, 86460, 86458, 86456, 86454, 86452, 86450, 86448, 86446, 86444, 86442, 86440, 86438, 86436, 86434, 86432, 86430, 86428, 86426, 86424, 86422, 86420, 86418, 86416, 86414, 86412, 86410, 86408, 86406, 86404, 86402, 86400, 86398, 86396, 86394, 86392, 86390, 86388, 86386, 86384, 86382, 86380, 86378, 86376, 86374, 86372, 86370, 86368, 86366, 86364, 86362, 86360, 86358, 86356, 86354, 86352, 86350, 86348, 86346, 86344, 86342, 86340, 86338, 86336, 86334, 86332, 86330, 86328, 86326, 86324, 86322, 86320, 86318, 86316, 86314, 86312, 86310, 86308, 86306, 86304, 86302, 86300, 86298, 86296, 86294, 86292, 86290, 86288, 86286, 86284, 86282, 86280, 86278, 86276, 86274, 86272, 86270, 86268, 86266, 86264, 86262, 86260, 86258, 86256, 86254, 86252, 86250, 86248, 86246, 86244, 86242, 86240, 86238, 86236, 86234, 86232, 86230, 86228, 86226, 86224, 86222, 86220, 86218, 86216, 86214, 86212, 86210, 86208, 86206, 86204, 86202, 86200, 86198, 86196, 86194, 86192, 86190, 86188, 86186, 86184, 86182, 86180, 86178, 86176, 86174, 86172, 86170, 86168, 86166, 86164, 86162, 86160, 86158, 86156, 86154, 86152, 86150, 86148, 86146, 86144, 86142, 86140, 86138, 86136, 86134, 86132, 86130, 86128, 86126, 86124, 86122, 86120, 86118, 86116, 86114, 86112, 86110, 86108, 86106, 86104, 86102, 86100, 86098, 86096, 86094, 86092, 86090, 86088, 86086, 86084, 86082, 86080, 86078, 86076, 86074, 86072, 86070, 86068, 86066, 86064, 86062, 86060, 86058, 86056, 86054, 86052, 86050, 86048, 86046, 86044, 86042, 86040, 86038, 86036, 86034, 86032, 86030, 86028, 86026, 86024, 86022, 86020, 86018, 86016, 86014, 86012, 86010, 86008, 86006, 86004, 86002, 86000, 85998, 85996, 85994, 85992, 85990, 85988, 85986, 85984, 85982, 85980, 85978, 85976, 85974, 85972, 85970, 85968, 85966, 85964, 85962, 85960, 85958, 85956, 85954, 85952, 85950, 85948, 85946, 85944, 85942, 85940, 85938, 85936, 85934, 85932, 85930, 85928, 85926, 85924, 85922, 85920, 85918, 85916, 85914, 85912, 85910, 85908, 85906, 85904, 85902, 85900, 85898, 85896, 85894, 85892, 85890, 85888, 85886, 85884, 85882, 85880, 85878, 85876, 85874, 85872, 85870, 85868, 85866, 85864, 85862, 85860, 85858, 85856, 85854, 85852, 85850, 85848, 85846, 85844, 85842, 85840, 85838, 85836, 85834, 85832, 85830, 85828, 85826, 85824, 85822, 85820, 85818, 85816, 85814, 85812, 85810, 85808, 85806, 85804, 85802, 85800, 85798, 85796, 85794, 85792, 85790, 85788, 85786, 85784, 85782, 85780, 85778, 85776, 85774, 85772, 85770, 85768, 85766, 85764, 85762, 85760, 85758, 85756, 85754, 85752, 85750, 85748, 85746, 85744, 85742, 85740, 85738, 85736, 85734, 85732, 85730, 85728, 85726, 85724, 85722, 85720, 85718, 85716, 85714, 85712, 85710, 85708, 85706, 85704, 85702, 85700, 85698, 85696, 85694, 85692, 85690, 85688, 85686, 85684, 85682, 85680, 85678, 85676, 85674, 85672, 85670, 85668, 85666, 85664, 85662, 85660, 85658, 85656, 85654, 85652, 85650, 85648, 85646, 85644, 85642, 85640, 85638, 85636, 85634, 85632, 85630, 85628, 85626, 85624, 85622, 85620, 85618, 85616, 85614, 85612, 85610, 85608, 85606, 85604, 85602, 85600, 85598, 85596, 85594, 85592, 85590, 85588, 85586, 85584, 85582, 85580, 85578, 85576, 85574, 85572, 85570, 85568, 85566, 85564, 85562, 85560, 85558, 85556, 85554, 85552, 85550, 85548, 85546, 85544, 85542, 85540, 85538, 85536, 85534, 85532, 85530, 85528, 85526, 85524, 85522, 85520, 85518, 85516, 85514, 85512, 85510, 85508, 85506, 85504, 85502, 85500, 85498, 85496, 85494, 85492, 85490, 85488, 85486, 85484, 85482, 85480, 85478, 85476, 85474, 85472, 85470, 85468, 85466, 85464, 85462, 85460, 85458, 85456, 85454, 85452, 85450, 85448, 85446, 85444, 85442, 85440, 85438, 85436, 85434, 85432, 85430, 85428, 85426, 85424, 85422, 85420, 85418, 85416, 85414, 85412, 85410, 85408, 85406, 85404, 85402, 85400, 85398, 85396, 85394, 85392, 85390, 85388, 85386, 85384, 85382, 85380, 85378, 85376, 85374, 85372, 85370, 85368, 85366, 85364, 85362, 85360, 85358, 85356, 85354, 85352, 85350, 85348, 85346, 85344, 85342, 85340, 85338, 85336, 85334, 85332, 85330, 85328, 85326, 85324, 85322, 85320, 85318, 85316, 85314, 85312, 85310, 85308, 85306, 85304, 85302, 85300, 85298, 85296, 85294, 85292, 85290, 85288, 85286, 85284, 85282, 85280, 85278, 85276, 85274, 85272, 85270, 85268, 85266, 85264, 85262, 85260, 85258, 85256, 85254, 85252, 85250, 85248, 85246, 85244, 85242, 85240, 85238, 85236, 85234, 85232, 85230, 85228, 85226, 85224, 85222, 85220, 85218, 85216, 85214, 85212, 85210, 85208, 85206, 85204, 85202, 85200, 85198, 85196, 85194, 85192, 85190, 85188, 85186, 85184, 85182, 85180, 85178, 85176, 85174, 85172, 85170, 85168, 85166, 85164, 85162, 85160, 85158, 85156, 85154, 85152, 85150, 85148, 85146, 85144, 85142, 85140, 85138, 85136, 85134, 85132, 85130, 85128, 85126, 85124, 85122, 85120, 85118, 85116, 85114, 85112, 85110, 85108, 85106, 85104, 85102, 85100, 85098, 85096, 85094, 85092, 85090, 85088, 85086, 85084, 85082, 85080, 85078, 85076, 85074, 85072, 85070, 85068, 85066, 85064, 85062, 85060, 85058, 85056, 85054, 85052, 85050, 85048, 85046, 85044, 85042, 85040, 85038, 85036, 85034, 85032, 85030, 85028, 85026, 85024, 85022, 85020, 85018, 85016, 85014, 85012, 85010, 85008, 85006, 85004, 85002, 85000, 84998, 84996, 84994, 84992, 84990, 84988, 84986, 84984, 84982, 84980, 84978, 84976, 84974, 84972, 84970, 84968, 84966, 84964, 84962, 84960, 84958, 84956, 84954, 84952, 84950, 84948, 84946, 84944, 84942, 84940, 84938, 84936, 84934, 84932, 84930, 84928, 84926, 84924, 84922, 84920, 84918, 84916, 84914, 84912, 84910, 84908, 84906, 84904, 84902, 84900, 84898, 84896, 84894, 84892, 84890, 84888, 84886, 84884, 84882, 84880, 84878, 84876, 84874, 84872, 84870, 84868, 84866, 84864, 84862, 84860, 84858, 84856, 84854, 84852, 84850, 84848, 84846, 84844, 84842, 84840, 84838, 84836, 84834, 84832, 84830, 84828, 84826, 84824, 84822, 84820, 84818, 84816, 84814, 84812, 84810, 84808, 84806, 84804, 84802, 84800, 84798, 84796, 84794, 84792, 84790, 84788, 84786, 84784, 84782, 84780, 84778, 84776, 84774, 84772, 84770, 84768, 84766, 84764, 84762, 84760, 84758, 84756, 84754, 84752, 84750, 84748, 84746, 84744, 84742, 84740, 84738, 84736, 84734, 84732, 84730, 84728, 84726, 84724, 84722, 84720, 84718, 84716, 84714, 84712, 84710, 84708, 84706, 84704, 84702, 84700, 84698, 84696, 84694, 84692, 84690, 84688, 84686, 84684, 84682, 84680, 84678, 84676, 84674, 84672, 84670, 84668, 84666, 84664, 84662, 84660, 84658, 84656, 84654, 84652, 84650, 84648, 84646, 84644, 84642, 84640, 84638, 84636, 84634, 84632, 84630, 84628, 84626, 84624, 84622, 84620, 84618, 84616, 84614, 84612, 84610, 84608, 84606, 84604, 84602, 84600, 84598, 84596, 84594, 84592, 84590, 84588, 84586, 84584, 84582, 84580, 84578, 84576, 84574, 84572, 84570, 84568, 84566, 84564, 84562, 84560, 84558, 84556, 84554, 84552, 84550, 84548, 84546, 84544, 84542, 84540, 84538, 84536, 84534, 84532, 84530, 84528, 84526, 84524, 84522, 84520, 84518, 84516, 84514, 84512, 84510, 84508, 84506, 84504, 84502, 84500, 84498, 84496, 84494, 84492, 84490, 84488, 84486, 84484, 84482, 84480, 84478, 84476, 84474, 84472, 84470, 84468, 84466, 84464, 84462, 84460, 84458, 84456, 84454, 84452, 84450, 84448, 84446, 84444, 84442, 84440, 84438, 84436, 84434, 84432, 84430, 84428, 84426, 84424, 84422, 84420, 84418, 84416, 84414, 84412, 84410, 84408, 84406, 84404, 84402, 84400, 84398, 84396, 84394, 84392, 84390, 84388, 84386, 84384, 84382, 84380, 84378, 84376, 84374, 84372, 84370, 84368, 84366, 84364, 84362, 84360, 84358, 84356, 84354, 84352, 84350, 84348, 84346, 84344, 84342, 84340, 84338, 84336, 84334, 84332, 84330, 84328, 84326, 84324, 84322, 84320, 84318, 84316, 84314, 84312, 84310, 84308, 84306, 84304, 84302, 84300, 84298, 84296, 84294, 84292, 84290, 84288, 84286, 84284, 84282, 84280, 84278, 84276, 84274, 84272, 84270, 84268, 84266, 84264, 84262, 84260, 84258, 84256, 84254, 84252, 84250, 84248, 84246, 84244, 84242, 84240, 84238, 84236, 84234, 84232, 84230, 84228, 84226, 84224, 84222, 84220, 84218, 84216, 84214, 84212, 84210, 84208, 84206, 84204, 84202, 84200, 84198, 84196, 84194, 84192, 84190, 84188, 84186, 84184, 84182, 84180, 84178, 84176, 84174, 84172, 84170, 84168, 84166, 84164, 84162, 84160, 84158, 84156, 84154, 84152, 84150, 84148, 84146, 84144, 84142, 84140, 84138, 84136, 84134, 84132, 84130, 84128, 84126, 84124, 84122, 84120, 84118, 84116, 84114, 84112, 84110, 84108, 84106, 84104, 84102, 84100, 84098, 84096, 84094, 84092, 84090, 84088, 84086, 84084, 84082, 84080, 84078, 84076, 84074, 84072, 84070, 84068, 84066, 84064, 84062, 84060, 84058, 84056, 84054, 84052, 84050, 84048, 84046, 84044, 84042, 84040, 84038, 84036, 84034, 84032, 84030, 84028, 84026, 84024, 84022, 84020, 84018, 84016, 84014, 84012, 84010, 84008, 84006, 84004, 84002, 84000, 83998, 83996, 83994, 83992, 83990, 83988, 83986, 83984, 83982, 83980, 83978, 83976, 83974, 83972, 83970, 83968, 83966, 83964, 83962, 83960, 83958, 83956, 83954, 83952, 83950, 83948, 83946, 83944, 83942, 83940, 83938, 83936, 83934, 83932, 83930, 83928, 83926, 83924, 83922, 83920, 83918, 83916, 83914, 83912, 83910, 83908, 83906, 83904, 83902, 83900, 83898, 83896, 83894, 83892, 83890, 83888, 83886, 83884, 83882, 83880, 83878, 83876, 83874, 83872, 83870, 83868, 83866, 83864, 83862, 83860, 83858, 83856, 83854, 83852, 83850, 83848, 83846, 83844, 83842, 83840, 83838, 83836, 83834, 83832, 83830, 83828, 83826, 83824, 83822, 83820, 83818, 83816, 83814, 83812, 83810, 83808, 83806, 83804, 83802, 83800, 83798, 83796, 83794, 83792, 83790, 83788, 83786, 83784, 83782, 83780, 83778, 83776, 83774, 83772, 83770, 83768, 83766, 83764, 83762, 83760, 83758, 83756, 83754, 83752, 83750, 83748, 83746, 83744, 83742, 83740, 83738, 83736, 83734, 83732, 83730, 83728, 83726, 83724, 83722, 83720, 83718, 83716, 83714, 83712, 83710, 83708, 83706, 83704, 83702, 83700, 83698, 83696, 83694, 83692, 83690, 83688, 83686, 83684, 83682, 83680, 83678, 83676, 83674, 83672, 83670, 83668, 83666, 83664, 83662, 83660, 83658, 83656, 83654, 83652, 83650, 83648, 83646, 83644, 83642, 83640, 83638, 83636, 83634, 83632, 83630, 83628, 83626, 83624, 83622, 83620, 83618, 83616, 83614, 83612, 83610, 83608, 83606, 83604, 83602, 83600, 83598, 83596, 83594, 83592, 83590, 83588, 83586, 83584, 83582, 83580, 83578, 83576, 83574, 83572, 83570, 83568, 83566, 83564, 83562, 83560, 83558, 83556, 83554, 83552, 83550, 83548, 83546, 83544, 83542, 83540, 83538, 83536, 83534, 83532, 83530, 83528, 83526, 83524, 83522, 83520, 83518, 83516, 83514, 83512, 83510, 83508, 83506, 83504, 83502, 83500, 83498, 83496, 83494, 83492, 83490, 83488, 83486, 83484, 83482, 83480, 83478, 83476, 83474, 83472, 83470, 83468, 83466, 83464, 83462, 83460, 83458, 83456, 83454, 83452, 83450, 83448, 83446, 83444, 83442, 83440, 83438, 83436, 83434, 83432, 83430, 83428, 83426, 83424, 83422, 83420, 83418, 83416, 83414, 83412, 83410, 83408, 83406, 83404, 83402, 83400, 83398, 83396, 83394, 83392, 83390, 83388, 83386, 83384, 83382, 83380, 83378, 83376, 83374, 83372, 83370, 83368, 83366, 83364, 83362, 83360, 83358, 83356, 83354, 83352, 83350, 83348, 83346, 83344, 83342, 83340, 83338, 83336, 83334, 83332, 83330, 83328, 83326, 83324, 83322, 83320, 83318, 83316, 83314, 83312, 83310, 83308, 83306, 83304, 83302, 83300, 83298, 83296, 83294, 83292, 83290, 83288, 83286, 83284, 83282, 83280, 83278, 83276, 83274, 83272, 83270, 83268, 83266, 83264, 83262, 83260, 83258, 83256, 83254, 83252, 83250, 83248, 83246, 83244, 83242, 83240, 83238, 83236, 83234, 83232, 83230, 83228, 83226, 83224, 83222, 83220, 83218, 83216, 83214, 83212, 83210, 83208, 83206, 83204, 83202, 83200, 83198, 83196, 83194, 83192, 83190, 83188, 83186, 83184, 83182, 83180, 83178, 83176, 83174, 83172, 83170, 83168, 83166, 83164, 83162, 83160, 83158, 83156, 83154, 83152, 83150, 83148, 83146, 83144, 83142, 83140, 83138, 83136, 83134, 83132, 83130, 83128, 83126, 83124, 83122, 83120, 83118, 83116, 83114, 83112, 83110, 83108, 83106, 83104, 83102, 83100, 83098, 83096, 83094, 83092, 83090, 83088, 83086, 83084, 83082, 83080, 83078, 83076, 83074, 83072, 83070, 83068, 83066, 83064, 83062, 83060, 83058, 83056, 83054, 83052, 83050, 83048, 83046, 83044, 83042, 83040, 83038, 83036, 83034, 83032, 83030, 83028, 83026, 83024, 83022, 83020, 83018, 83016, 83014, 83012, 83010, 83008, 83006, 83004, 83002, 83000, 82998, 82996, 82994, 82992, 82990, 82988, 82986, 82984, 82982, 82980, 82978, 82976, 82974, 82972, 82970, 82968, 82966, 82964, 82962, 82960, 82958, 82956, 82954, 82952, 82950, 82948, 82946, 82944, 82942, 82940, 82938, 82936, 82934, 82932, 82930, 82928, 82926, 82924, 82922, 82920, 82918, 82916, 82914, 82912, 82910, 82908, 82906, 82904, 82902, 82900, 82898, 82896, 82894, 82892, 82890, 82888, 82886, 82884, 82882, 82880, 82878, 82876, 82874, 82872, 82870, 82868, 82866, 82864, 82862, 82860, 82858, 82856, 82854, 82852, 82850, 82848, 82846, 82844, 82842, 82840, 82838, 82836, 82834, 82832, 82830, 82828, 82826, 82824, 82822, 82820, 82818, 82816, 82814, 82812, 82810, 82808, 82806, 82804, 82802, 82800, 82798, 82796, 82794, 82792, 82790, 82788, 82786, 82784, 82782, 82780, 82778, 82776, 82774, 82772, 82770, 82768, 82766, 82764, 82762, 82760, 82758, 82756, 82754, 82752, 82750, 82748, 82746, 82744, 82742, 82740, 82738, 82736, 82734, 82732, 82730, 82728, 82726, 82724, 82722, 82720, 82718, 82716, 82714, 82712, 82710, 82708, 82706, 82704, 82702, 82700, 82698, 82696, 82694, 82692, 82690, 82688, 82686, 82684, 82682, 82680, 82678, 82676, 82674, 82672, 82670, 82668, 82666, 82664, 82662, 82660, 82658, 82656, 82654, 82652, 82650, 82648, 82646, 82644, 82642, 82640, 82638, 82636, 82634, 82632, 82630, 82628, 82626, 82624, 82622, 82620, 82618, 82616, 82614, 82612, 82610, 82608, 82606, 82604, 82602, 82600, 82598, 82596, 82594, 82592, 82590, 82588, 82586, 82584, 82582, 82580, 82578, 82576, 82574, 82572, 82570, 82568, 82566, 82564, 82562, 82560, 82558, 82556, 82554, 82552, 82550, 82548, 82546, 82544, 82542, 82540, 82538, 82536, 82534, 82532, 82530, 82528, 82526, 82524, 82522, 82520, 82518, 82516, 82514, 82512, 82510, 82508, 82506, 82504, 82502, 82500, 82498, 82496, 82494, 82492, 82490, 82488, 82486, 82484, 82482, 82480, 82478, 82476, 82474, 82472, 82470, 82468, 82466, 82464, 82462, 82460, 82458, 82456, 82454, 82452, 82450, 82448, 82446, 82444, 82442, 82440, 82438, 82436, 82434, 82432, 82430, 82428, 82426, 82424, 82422, 82420, 82418, 82416, 82414, 82412, 82410, 82408, 82406, 82404, 82402, 82400, 82398, 82396, 82394, 82392, 82390, 82388, 82386, 82384, 82382, 82380, 82378, 82376, 82374, 82372, 82370, 82368, 82366, 82364, 82362, 82360, 82358, 82356, 82354, 82352, 82350, 82348, 82346, 82344, 82342, 82340, 82338, 82336, 82334, 82332, 82330, 82328, 82326, 82324, 82322, 82320, 82318, 82316, 82314, 82312, 82310, 82308, 82306, 82304, 82302, 82300, 82298, 82296, 82294, 82292, 82290, 82288, 82286, 82284, 82282, 82280, 82278, 82276, 82274, 82272, 82270, 82268, 82266, 82264, 82262, 82260, 82258, 82256, 82254, 82252, 82250, 82248, 82246, 82244, 82242, 82240, 82238, 82236, 82234, 82232, 82230, 82228, 82226, 82224, 82222, 82220, 82218, 82216, 82214, 82212, 82210, 82208, 82206, 82204, 82202, 82200, 82198, 82196, 82194, 82192, 82190, 82188, 82186, 82184, 82182, 82180, 82178, 82176, 82174, 82172, 82170, 82168, 82166, 82164, 82162, 82160, 82158, 82156, 82154, 82152, 82150, 82148, 82146, 82144, 82142, 82140, 82138, 82136, 82134, 82132, 82130, 82128, 82126, 82124, 82122, 82120, 82118, 82116, 82114, 82112, 82110, 82108, 82106, 82104, 82102, 82100, 82098, 82096, 82094, 82092, 82090, 82088, 82086, 82084, 82082, 82080, 82078, 82076, 82074, 82072, 82070, 82068, 82066, 82064, 82062, 82060, 82058, 82056, 82054, 82052, 82050, 82048, 82046, 82044, 82042, 82040, 82038, 82036, 82034, 82032, 82030, 82028, 82026, 82024, 82022, 82020, 82018, 82016, 82014, 82012, 82010, 82008, 82006, 82004, 82002, 82000, 81998, 81996, 81994, 81992, 81990, 81988, 81986, 81984, 81982, 81980, 81978, 81976, 81974, 81972, 81970, 81968, 81966, 81964, 81962, 81960, 81958, 81956, 81954, 81952, 81950, 81948, 81946, 81944, 81942, 81940, 81938, 81936, 81934, 81932, 81930, 81928, 81926, 81924, 81922, 81920, 81918, 81916, 81914, 81912, 81910, 81908, 81906, 81904, 81902, 81900, 81898, 81896, 81894, 81892, 81890, 81888, 81886, 81884, 81882, 81880, 81878, 81876, 81874, 81872, 81870, 81868, 81866, 81864, 81862, 81860, 81858, 81856, 81854, 81852, 81850, 81848, 81846, 81844, 81842, 81840, 81838, 81836, 81834, 81832, 81830, 81828, 81826, 81824, 81822, 81820, 81818, 81816, 81814, 81812, 81810, 81808, 81806, 81804, 81802, 81800, 81798, 81796, 81794, 81792, 81790, 81788, 81786, 81784, 81782, 81780, 81778, 81776, 81774, 81772, 81770, 81768, 81766, 81764, 81762, 81760, 81758, 81756, 81754, 81752, 81750, 81748, 81746, 81744, 81742, 81740, 81738, 81736, 81734, 81732, 81730, 81728, 81726, 81724, 81722, 81720, 81718, 81716, 81714, 81712, 81710, 81708, 81706, 81704, 81702, 81700, 81698, 81696, 81694, 81692, 81690, 81688, 81686, 81684, 81682, 81680, 81678, 81676, 81674, 81672, 81670, 81668, 81666, 81664, 81662, 81660, 81658, 81656, 81654, 81652, 81650, 81648, 81646, 81644, 81642, 81640, 81638, 81636, 81634, 81632, 81630, 81628, 81626, 81624, 81622, 81620, 81618, 81616, 81614, 81612, 81610, 81608, 81606, 81604, 81602, 81600, 81598, 81596, 81594, 81592, 81590, 81588, 81586, 81584, 81582, 81580, 81578, 81576, 81574, 81572, 81570, 81568, 81566, 81564, 81562, 81560, 81558, 81556, 81554, 81552, 81550, 81548, 81546, 81544, 81542, 81540, 81538, 81536, 81534, 81532, 81530, 81528, 81526, 81524, 81522, 81520, 81518, 81516, 81514, 81512, 81510, 81508, 81506, 81504, 81502, 81500, 81498, 81496, 81494, 81492, 81490, 81488, 81486, 81484, 81482, 81480, 81478, 81476, 81474, 81472, 81470, 81468, 81466, 81464, 81462, 81460, 81458, 81456, 81454, 81452, 81450, 81448, 81446, 81444, 81442, 81440, 81438, 81436, 81434, 81432, 81430, 81428, 81426, 81424, 81422, 81420, 81418, 81416, 81414, 81412, 81410, 81408, 81406, 81404, 81402, 81400, 81398, 81396, 81394, 81392, 81390, 81388, 81386, 81384, 81382, 81380, 81378, 81376, 81374, 81372, 81370, 81368, 81366, 81364, 81362, 81360, 81358, 81356, 81354, 81352, 81350, 81348, 81346, 81344, 81342, 81340, 81338, 81336, 81334, 81332, 81330, 81328, 81326, 81324, 81322, 81320, 81318, 81316, 81314, 81312, 81310, 81308, 81306, 81304, 81302, 81300, 81298, 81296, 81294, 81292, 81290, 81288, 81286, 81284, 81282, 81280, 81278, 81276, 81274, 81272, 81270, 81268, 81266, 81264, 81262, 81260, 81258, 81256, 81254, 81252, 81250, 81248, 81246, 81244, 81242, 81240, 81238, 81236, 81234, 81232, 81230, 81228, 81226, 81224, 81222, 81220, 81218, 81216, 81214, 81212, 81210, 81208, 81206, 81204, 81202, 81200, 81198, 81196, 81194, 81192, 81190, 81188, 81186, 81184, 81182, 81180, 81178, 81176, 81174, 81172, 81170, 81168, 81166, 81164, 81162, 81160, 81158, 81156, 81154, 81152, 81150, 81148, 81146, 81144, 81142, 81140, 81138, 81136, 81134, 81132, 81130, 81128, 81126, 81124, 81122, 81120, 81118, 81116, 81114, 81112, 81110, 81108, 81106, 81104, 81102, 81100, 81098, 81096, 81094, 81092, 81090, 81088, 81086, 81084, 81082, 81080, 81078, 81076, 81074, 81072, 81070, 81068, 81066, 81064, 81062, 81060, 81058, 81056, 81054, 81052, 81050, 81048, 81046, 81044, 81042, 81040, 81038, 81036, 81034, 81032, 81030, 81028, 81026, 81024, 81022, 81020, 81018, 81016, 81014, 81012, 81010, 81008, 81006, 81004, 81002, 81000, 80998, 80996, 80994, 80992, 80990, 80988, 80986, 80984, 80982, 80980, 80978, 80976, 80974, 80972, 80970, 80968, 80966, 80964, 80962, 80960, 80958, 80956, 80954, 80952, 80950, 80948, 80946, 80944, 80942, 80940, 80938, 80936, 80934, 80932, 80930, 80928, 80926, 80924, 80922, 80920, 80918, 80916, 80914, 80912, 80910, 80908, 80906, 80904, 80902, 80900, 80898, 80896, 80894, 80892, 80890, 80888, 80886, 80884, 80882, 80880, 80878, 80876, 80874, 80872, 80870, 80868, 80866, 80864, 80862, 80860, 80858, 80856, 80854, 80852, 80850, 80848, 80846, 80844, 80842, 80840, 80838, 80836, 80834, 80832, 80830, 80828, 80826, 80824, 80822, 80820, 80818, 80816, 80814, 80812, 80810, 80808, 80806, 80804, 80802, 80800, 80798, 80796, 80794, 80792, 80790, 80788, 80786, 80784, 80782, 80780, 80778, 80776, 80774, 80772, 80770, 80768, 80766, 80764, 80762, 80760, 80758, 80756, 80754, 80752, 80750, 80748, 80746, 80744, 80742, 80740, 80738, 80736, 80734, 80732, 80730, 80728, 80726, 80724, 80722, 80720, 80718, 80716, 80714, 80712, 80710, 80708, 80706, 80704, 80702, 80700, 80698, 80696, 80694, 80692, 80690, 80688, 80686, 80684, 80682, 80680, 80678, 80676, 80674, 80672, 80670, 80668, 80666, 80664, 80662, 80660, 80658, 80656, 80654, 80652, 80650, 80648, 80646, 80644, 80642, 80640, 80638, 80636, 80634, 80632, 80630, 80628, 80626, 80624, 80622, 80620, 80618, 80616, 80614, 80612, 80610, 80608, 80606, 80604, 80602, 80600, 80598, 80596, 80594, 80592, 80590, 80588, 80586, 80584, 80582, 80580, 80578, 80576, 80574, 80572, 80570, 80568, 80566, 80564, 80562, 80560, 80558, 80556, 80554, 80552, 80550, 80548, 80546, 80544, 80542, 80540, 80538, 80536, 80534, 80532, 80530, 80528, 80526, 80524, 80522, 80520, 80518, 80516, 80514, 80512, 80510, 80508, 80506, 80504, 80502, 80500, 80498, 80496, 80494, 80492, 80490, 80488, 80486, 80484, 80482, 80480, 80478, 80476, 80474, 80472, 80470, 80468, 80466, 80464, 80462, 80460, 80458, 80456, 80454, 80452, 80450, 80448, 80446, 80444, 80442, 80440, 80438, 80436, 80434, 80432, 80430, 80428, 80426, 80424, 80422, 80420, 80418, 80416, 80414, 80412, 80410, 80408, 80406, 80404, 80402, 80400, 80398, 80396, 80394, 80392, 80390, 80388, 80386, 80384, 80382, 80380, 80378, 80376, 80374, 80372, 80370, 80368, 80366, 80364, 80362, 80360, 80358, 80356, 80354, 80352, 80350, 80348, 80346, 80344, 80342, 80340, 80338, 80336, 80334, 80332, 80330, 80328, 80326, 80324, 80322, 80320, 80318, 80316, 80314, 80312, 80310, 80308, 80306, 80304, 80302, 80300, 80298, 80296, 80294, 80292, 80290, 80288, 80286, 80284, 80282, 80280, 80278, 80276, 80274, 80272, 80270, 80268, 80266, 80264, 80262, 80260, 80258, 80256, 80254, 80252, 80250, 80248, 80246, 80244, 80242, 80240, 80238, 80236, 80234, 80232, 80230, 80228, 80226, 80224, 80222, 80220, 80218, 80216, 80214, 80212, 80210, 80208, 80206, 80204, 80202, 80200, 80198, 80196, 80194, 80192, 80190, 80188, 80186, 80184, 80182, 80180, 80178, 80176, 80174, 80172, 80170, 80168, 80166, 80164, 80162, 80160, 80158, 80156, 80154, 80152, 80150, 80148, 80146, 80144, 80142, 80140, 80138, 80136, 80134, 80132, 80130, 80128, 80126, 80124, 80122, 80120, 80118, 80116, 80114, 80112, 80110, 80108, 80106, 80104, 80102, 80100, 80098, 80096, 80094, 80092, 80090, 80088, 80086, 80084, 80082, 80080, 80078, 80076, 80074, 80072, 80070, 80068, 80066, 80064, 80062, 80060, 80058, 80056, 80054, 80052, 80050, 80048, 80046, 80044, 80042, 80040, 80038, 80036, 80034, 80032, 80030, 80028, 80026, 80024, 80022, 80020, 80018, 80016, 80014, 80012, 80010, 80008, 80006, 80004], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7058, 7059, 7060, 7061, 7062, 7063, 7064, 7065, 7066, 7067, 7068, 7069, 7070, 7071, 7072, 7073, 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, 7087, 7088, 7089, 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, 7131, 7132, 7133, 7134, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142, 7143, 7144, 7145, 7146, 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7163, 7164, 7165, 7166, 7167, 7168, 7169, 7170, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7242, 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371, 7372, 7373, 7374, 7375, 7376, 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, 7395, 7396, 7397, 7398, 7399, 7400, 7401, 7402, 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420, 7421, 7422, 7423, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7614, 7615, 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629, 7630, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961, 7962, 7963, 7964, 7965, 7966, 7967, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987, 7988, 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 8062, 8063, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8117, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8125, 8126, 8127, 8128, 8129, 8130, 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8179, 8180, 8181, 8182, 8183, 8184, 8185, 8186, 8187, 8188, 8189, 8190, 8191, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8207, 8208, 8209, 8210, 8211, 8212, 8213, 8214, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8223, 8224, 8225, 8226, 8227, 8228, 8229, 8230, 8231, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8240, 8241, 8242, 8243, 8244, 8245, 8246, 8247, 8248, 8249, 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8257, 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8267, 8268, 8269, 8270, 8271, 8272, 8273, 8274, 8275, 8276, 8277, 8278, 8279, 8280, 8281, 8282, 8283, 8284, 8285, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297, 8298, 8299, 8300, 8301, 8302, 8303, 8304, 8305, 8306, 8307, 8308, 8309, 8310, 8311, 8312, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8340, 8341, 8342, 8343, 8344, 8345, 8346, 8347, 8348, 8349, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8364, 8365, 8366, 8367, 8368, 8369, 8370, 8371, 8372, 8373, 8374, 8375, 8376, 8377, 8378, 8379, 8380, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, 8444, 8445, 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, 8459, 8460, 8461, 8462, 8463, 8464, 8465, 8466, 8467, 8468, 8469, 8470, 8471, 8472, 8473, 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8491, 8492, 8493, 8494, 8495, 8496, 8497, 8498, 8499, 8500, 8501, 8502, 8503, 8504, 8505, 8506, 8507, 8508, 8509, 8510, 8511, 8512, 8513, 8514, 8515, 8516, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542, 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574, 8575, 8576, 8577, 8578, 8579, 8580, 8581, 8582, 8583, 8584, 8585, 8586, 8587, 8588, 8589, 8590, 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8598, 8599, 8600, 8601, 8602, 8603, 8604, 8605, 8606, 8607, 8608, 8609, 8610, 8611, 8612, 8613, 8614, 8615, 8616, 8617, 8618, 8619, 8620, 8621, 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631, 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8641, 8642, 8643, 8644, 8645, 8646, 8647, 8648, 8649, 8650, 8651, 8652, 8653, 8654, 8655, 8656, 8657, 8658, 8659, 8660, 8661, 8662, 8663, 8664, 8665, 8666, 8667, 8668, 8669, 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, 8680, 8681, 8682, 8683, 8684, 8685, 8686, 8687, 8688, 8689, 8690, 8691, 8692, 8693, 8694, 8695, 8696, 8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704, 8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712, 8713, 8714, 8715, 8716, 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727, 8728, 8729, 8730, 8731, 8732, 8733, 8734, 8735, 8736, 8737, 8738, 8739, 8740, 8741, 8742, 8743, 8744, 8745, 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756, 8757, 8758, 8759, 8760, 8761, 8762, 8763, 8764, 8765, 8766, 8767, 8768, 8769, 8770, 8771, 8772, 8773, 8774, 8775, 8776, 8777, 8778, 8779, 8780, 8781, 8782, 8783, 8784, 8785, 8786, 8787, 8788, 8789, 8790, 8791, 8792, 8793, 8794, 8795, 8796, 8797, 8798, 8799, 8800, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811, 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824, 8825, 8826, 8827, 8828, 8829, 8830, 8831, 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, 8846, 8847, 8848, 8849, 8850, 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8861, 8862, 8863, 8864, 8865, 8866, 8867, 8868, 8869, 8870, 8871, 8872, 8873, 8874, 8875, 8876, 8877, 8878, 8879, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901, 8902, 8903, 8904, 8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 8921, 8922, 8923, 8924, 8925, 8926, 8927, 8928, 8929, 8930, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 8938, 8939, 8940, 8941, 8942, 8943, 8944, 8945, 8946, 8947, 8948, 8949, 8950, 8951, 8952, 8953, 8954, 8955, 8956, 8957, 8958, 8959, 8960, 8961, 8962, 8963, 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971, 8972, 8973, 8974, 8975, 8976, 8977, 8978, 8979, 8980, 8981, 8982, 8983, 8984, 8985, 8986, 8987, 8988, 8989, 8990, 8991, 8992, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, 9081, 9082, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, 9126, 9127, 9128, 9129, 9130, 9131, 9132, 9133, 9134, 9135, 9136, 9137, 9138, 9139, 9140, 9141, 9142, 9143, 9144, 9145, 9146, 9147, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 9155, 9156, 9157, 9158, 9159, 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172, 9173, 9174, 9175, 9176, 9177, 9178, 9179, 9180, 9181, 9182, 9183, 9184, 9185, 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9194, 9195, 9196, 9197, 9198, 9199, 9200, 9201, 9202, 9203, 9204, 9205, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9263, 9264, 9265, 9266, 9267, 9268, 9269, 9270, 9271, 9272, 9273, 9274, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9283, 9284, 9285, 9286, 9287, 9288, 9289, 9290, 9291, 9292, 9293, 9294, 9295, 9296, 9297, 9298, 9299, 9300, 9301, 9302, 9303, 9304, 9305, 9306, 9307, 9308, 9309, 9310, 9311, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381, 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 9400, 9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, 9411, 9412, 9413, 9414, 9415, 9416, 9417, 9418, 9419, 9420, 9421, 9422, 9423, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 9450, 9451, 9452, 9453, 9454, 9455, 9456, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9464, 9465, 9466, 9467, 9468, 9469, 9470, 9471, 9472, 9473, 9474, 9475, 9476, 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532, 9533, 9534, 9535, 9536, 9537, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 9547, 9548, 9549, 9550, 9551, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586, 9587, 9588, 9589, 9590, 9591, 9592, 9593, 9594, 9595, 9596, 9597, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626, 9627, 9628, 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, 9640, 9641, 9642, 9643, 9644, 9645, 9646, 9647, 9648, 9649, 9650, 9651, 9652, 9653, 9654, 9655, 9656, 9657, 9658, 9659, 9660, 9661, 9662, 9663, 9664, 9665, 9666, 9667, 9668, 9669, 9670, 9671, 9672, 9673, 9674, 9675, 9676, 9677, 9678, 9679, 9680, 9681, 9682, 9683, 9684, 9685, 9686, 9687, 9688, 9689, 9690, 9691, 9692, 9693, 9694, 9695, 9696, 9697, 9698, 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9712, 9713, 9714, 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9727, 9728, 9729, 9730, 9731, 9732, 9733, 9734, 9735, 9736, 9737, 9738, 9739, 9740, 9741, 9742, 9743, 9744, 9745, 9746, 9747, 9748, 9749, 9750, 9751, 9752, 9753, 9754, 9755, 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 9765, 9766, 9767, 9768, 9769, 9770, 9771, 9772, 9773, 9774, 9775, 9776, 9777, 9778, 9779, 9780, 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, 9789, 9790, 9791, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9837, 9838, 9839, 9840, 9841, 9842, 9843, 9844, 9845, 9846, 9847, 9848, 9849, 9850, 9851, 9852, 9853, 9854, 9855, 9856, 9857, 9858, 9859, 9860, 9861, 9862, 9863, 9864, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9872, 9873, 9874, 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9944, 9945, 9946, 9947, 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9958, 9959, 9960, 9961, 9962, 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9973, 9974, 9975, 9976, 9977, 9978, 9979, 9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998]], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "838", "slug": "magic-squares-in-grid", "id": 838, "title": "Magic Squares In Grid", "difficulty": "Medium", "category": "matrix", "link": "https://leetcode.com/problems/magic-squares-in-grid/", "examples": [{"input": "grid = [[4,3,8,4],[9,5,1,9],[2,7,6,2]]", "output": "1", "explanation": "Only the top-left 3x3 window is magic."}, {"input": "grid = [[8]]", "output": "0", "explanation": "Too small for any window."}, {"input": "grid = [[5,5,5],[5,5,5],[5,5,5]]", "output": "0", "explanation": "Repeated values fail distinctness."}], "hints": ["The centre of any 3x3 magic square using 1..9 must be 5; skip windows whose centre differs.", "Check distinctness of 1..9 first with a boolean set, then verify the eight line sums equal 15.", "Slide the window over all (rows-2) * (cols-2) positions."], "statement": "Count the 3 by 3 magic blocks hidden inside a number grid.\n\nA 3 by 3 block is magic when it holds each integer from 1 through 9 exactly once, and every row, every column, and both long diagonals add to the same total (which must be 15). Scan every contiguous 3 by 3 window of `grid` and return how many of them are magic.\n\n**Constraints:**\n- `1 <= grid.length, grid[i].length <= 50`\n- `0 <= grid[i][j] <= 15`\n", "solution": "## Approach\n\nSlide every 3 by 3 window across the grid. For each window first confirm it contains 1 through 9 exactly once, then confirm the three rows, three columns, and two diagonals each total 15. Count windows passing both screens.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(R * C), where R and C are grid dimensions, with constant work per window.\n- **Space Complexity:** O(1) besides the input.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def numMagicSquaresInside(self, grid: List[List[int]]) -> int:\n R, C = len(grid), len(grid[0]) if grid else 0\n if R < 3 or C < 3:\n return 0\n def magic(r, c):\n vals = [grid[r+i][c+j] for i in range(3) for j in range(3)]\n if sorted(vals) != list(range(1, 10)):\n return False\n for i in range(3):\n if sum(grid[r+i][c:c+3]) != 15:\n return False\n if grid[r][c+i] + grid[r+1][c+i] + grid[r+2][c+i] != 15:\n return False\n if grid[r][c] + grid[r+1][c+1] + grid[r+2][c+2] != 15:\n return False\n if grid[r][c+2] + grid[r+1][c+1] + grid[r+2][c] != 15:\n return False\n return True\n ans = 0\n for i in range(R - 2):\n for j in range(C - 2):\n if magic(i, j):\n ans += 1\n return ans\n```\n", "starter": {"go": "package main\n\nfunc NumMagicSquaresInside(grid [][]int) int {\n return 0\n}", "python": "from typing import List\nclass Solution:\n def numMagicSquaresInside(self, grid: List[List[int]]) -> int:\n return 0\n", "cpp": "#include <vector>\nusing namespace std;\nclass Solution {\npublic:\n int numMagicSquaresInside(vector<vector<int>>& grid) {\n return 0;\n }\n};"}, "fn": "numMagicSquaresInside", "params": [{"name": "grid", "type": "int_array_2d"}], "outputType": "int", "tests": [["[[4,3,8,4],[9,5,1,9],[2,7,6,2]]"], ["[[8]]"], ["[[5,5,5],[5,5,5],[5,5,5]]"], ["[[8,1,6],[3,5,7],[4,9,2]]"], ["[[8,1,6,8,1,6],[3,5,7,3,5,7],[4,9,2,4,9,2]]"], ["[[1,2,3],[4,5,6],[7,8,9]]"], ["[[2,7,6],[9,5,1],[4,3,8]]"], ["[[0,0,0],[0,0,0],[0,0,0]]"], ["[[8,1,6],[3,5,7],[4,9,2],[8,1,6],[3,5,7],[4,9,2]]"], ["[[4,3,8],[9,5,1],[2,7,6]]"], ["[[1,1,1],[1,1,1],[1,1,1]]"], ["[[10,10],[10,10]]"], ["[[8,1,6,3],[3,5,7,4],[4,9,2,1],[0,0,0,0]]"], ["[[2,7,6,2,7,6],[9,5,1,9,5,1],[4,3,8,4,3,8],[2,7,6,2,7,6]]"], ["[[1,2],[3,4]]"], ["[[8,1,6],[3,5,7],[4,9,1]]"], ["[[6,1,8],[7,5,3],[2,9,4]]"], ["[[4,9,2],[3,5,7],[8,1,6]]"], ["[[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]]"], ["[[8,1,6],[3,5,7],[4,9,2],[1,2,3],[4,5,6],[7,8,9]]"], ["[[7,7,7,7],[7,7,7,7],[7,7,7,7],[7,7,7,7]]"], ["[[8,1,6,8],[3,5,7,3],[4,9,2,4],[7,7,7,7]]"], ["[[15,15,15],[15,15,15],[15,15,15]]"], ["[[1,8,6],[3,5,7],[4,9,2]]"], ["[[8,1,6],[3,5,7],[4,9,2],[8,1,6]]"], ["[[2,7,6],[9,5,1],[4,3,8],[2,7,6],[9,5,1],[4,3,8]]"], ["[[4,3,8,4,3,8],[9,5,1,9,5,1],[2,7,6,2,7,6]]"], ["[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]"]], "expected": [1, 0, 0, 1, 2, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 2, 2, 0], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "545", "slug": "magical-string", "id": 545, "title": "Magical String", "difficulty": "Medium", "category": "string", "link": "https://leetcode.com/problems/magical-string/", "examples": [{"input": "n = 6", "output": "3", "explanation": "Prefix 122112 holds three 1s."}, {"input": "n = 1", "output": "1", "explanation": "Single prefix 1 holds one 1."}, {"input": "n = 10", "output": "5", "explanation": "First ten characters hold five 1s."}], "hints": ["Grow the string with a read pointer that says how many copies of the next digit to append.", "Alternate the digit between 1 and 2 each time the pointer advances.", "Stop once length reaches n, then count 1s in the prefix."], "statement": "Consider an endless string that uses only the digits `1` and `2`. It starts `1, 2, 2, ...` and has a self-describing trait: reading the lengths of its blocks of equal digits, in order, reproduces the string itself. For instance the block sizes `1, 2, 2, 1, 1, 2, ...` spell out the same digit sequence.\n\nGiven `n`, look at the first `n` characters of this string and count how many of them are `1`.\n\n**Constraints:**\n\n- `1 <= n <= 10^5`\n", "solution": "## Approach\n\nSeed the list with `[1, 2, 2]` and keep a read index pointing at the run-length source. Repeatedly append the alternating digit (`1` then `2`) as many times as the current run length demands, flipping the digit and advancing the pointer each round until the length reaches `n`. Finally tally the `1`s in the first `n` slots.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n) to build and count.\n- **Space Complexity:** O(n) for the generated prefix.\n\n## Implementation\n\n```python\nclass Solution:\n def magicalString(self, n: int) -> int:\n if n <= 0:\n return 0\n if n <= 3:\n return 1\n s = [1, 2, 2]\n idx = 2\n nxt = 1\n while len(s) < n:\n s.extend([nxt] * s[idx])\n nxt = 3 - nxt\n idx += 1\n return s[:n].count(1)\n```\n", "starter": {"go": "package main\n\nfunc MagicalString(n int) int {\n return 0\n}", "python": "class Solution:\n def magicalString(self, n: int) -> int:\n return 0\n", "cpp": "class Solution {\npublic:\n int magicalString(int n) {\n return 0;\n }\n};"}, "fn": "magicalString", "params": [{"name": "n", "type": "int"}], "outputType": "int", "tests": [["6"], ["1"], ["10"], ["2"], ["3"], ["4"], ["5"], ["7"], ["8"], ["15"], ["20"], ["50"], ["100"], ["1000"], ["10000"], ["50000"], ["99999"], ["12"], ["30"], ["200"], ["9"], ["11"], ["25"], ["40"], ["75"], ["150"], ["500"], ["2000"], ["5000"], ["75000"]], "expected": [3, 1, 5, 1, 1, 2, 3, 4, 4, 7, 10, 25, 49, 502, 4996, 24985, 49972, 5, 15, 100, 4, 5, 13, 20, 37, 75, 249, 1002, 2500, 37487], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "162", "slug": "majority-element-ii", "id": 162, "title": "Majority Element II", "difficulty": "Medium", "category": "array", "link": "https://leetcode.com/problems/majority-element-ii/", "examples": [{"input": "nums = [3,2,3]", "output": "[3]", "explanation": "3 appears twice, which is more than 3/3 = 1."}, {"input": "nums = [1]", "output": "[1]", "explanation": "A single element trivially appears more than 1/3 times."}, {"input": "nums = [1,2]", "output": "[1,2]", "explanation": "Both 1 and 2 appear once, which is more than 2/3."}], "hints": ["At most two elements can appear more than n/3 times.", "Extended Boyer-Moore with two candidates and counts finds them in O(n) time and O(1) space, followed by a verification pass."], "statement": "Consider an integer array `nums` holding `n` entries. List each distinct number whose total frequency is strictly larger than `n / 3`.\n\nThe qualifying values may be presented in any sequence.\n\n**Constraints:**\n\n- 1 \u2264 nums.length \u2264 5 * 10^4\n- -10^9 \u2264 nums[i] \u2264 10^9\n", "solution": "## Approach\n\nAt most two values can exceed `n/3` occurrences. Run extended Boyer-Moore with two candidates and counters: match a candidate to increment, fill an empty slot (count zero) with a new candidate, else decrement both. Then verify each candidate with a counting pass and keep those strictly above `n/3`.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n), two passes over `nums`.\n- **Space Complexity:** O(1) extra (excluding the output of at most two elements).\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def majorityElement(self, nums: List[int]) -> List[int]:\n c1 = c2 = None\n n1 = n2 = 0\n for x in nums:\n if c1 == x:\n n1 += 1\n elif c2 == x:\n n2 += 1\n elif n1 == 0:\n c1, n1 = x, 1\n elif n2 == 0:\n c2, n2 = x, 1\n else:\n n1 -= 1\n n2 -= 1\n res = []\n th = len(nums) // 3\n for c in (c1, c2):\n if c is not None and nums.count(c) > th and c not in res:\n res.append(c)\n return res\n```\n", "starter": {"go": "package main\n\nfunc MajorityElement(nums []int) []int {\n \n}", "python": "from typing import List\nclass Solution:\n def majorityElement(self, nums: List[int]) -> List[int]:\n ", "cpp": "#include <vector>\nusing namespace std;\n\nclass Solution {\npublic:\n vector<int> majorityElement(vector<int>& nums) {\n return {};\n }\n};"}, "fn": "majorityElement", "params": [{"name": "nums", "type": "int_array"}], "outputType": "int_array", "tests": [["[3,2,3]"], ["[1]"], ["[1,2]"], ["[1,1,1,3,3,2,2,2]"], ["[0,0,0]"], ["[1,2,3]"], ["[2,2]"], ["[-1,-1,-1,2,2,2,3]"], ["[1,1,2,2,3,3,1,2]"], ["[4,4,4,1,2,3]"], ["[1,2,3,4,5,6,1,1,1]"], ["@javascript:JSON.stringify([...Array(20000).fill(7),...Array(15000).fill(8),...Array(15000).fill(9)])"], ["[1,1,1,2,2]"], ["[5,5,5,5]"], ["[1,2,3,4]"], ["[1,1,2,3,1]"], ["[2,1,2,1,2,1]"], ["[0]"], ["[-1,-2,-1]"], ["[1000000000,1000000000,1000000000,-1000000000,-1000000000]"], ["[4,5,6,4,5,4]"], ["[7,7,8,8,9]"], ["[3,3,1,1,2,2,3]"], ["[9,9,9,1,2,3,4,5]"], ["[1,1,1,1,2,3]"], ["[2,3,2,3,2,3,4]"], ["[-1000000000,5,5,5,6]"], ["[1,2,1,2,3,3,3,1,1]"], ["[8,8,1,1,8,1]"], ["[6]"], ["[2,2,3,3,4,4,5]"], ["[0,0,1,1,0]"]], "expected": [[3], [1], [1, 2], [1, 2], [0], [], [2], [-1, 2], [1, 2], [4], [1], [7], [1, 2], [5], [], [1], [2, 1], [0], [-1], [1000000000, -1000000000], [4], [7, 8], [3], [9], [1], [2, 3], [5], [1], [8, 1], [6], [], [0, 1]], "loose": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "155", "slug": "majority-element", "id": 155, "title": "Majority Element", "difficulty": "Easy", "category": "array", "link": "https://leetcode.com/problems/majority-element/", "examples": [{"input": "nums = [3,2,3]", "output": "3", "explanation": "3 appears 2 times out of 3, which is more than 3/2 = 1."}, {"input": "nums = [2,2,1,1,1,2,2]", "output": "2", "explanation": "2 appears 4 times out of 7, which is more than 7/2 = 3."}], "hints": ["The Boyer-Moore voting algorithm finds the majority in O(n) time and O(1) space: keep a candidate and count, incrementing on match and decrementing otherwise.", "Alternatively, sorting puts the majority element at index n/2, or a hash map can count frequencies."], "statement": "You receive an array `nums` holding `n` entries. Identify the majority element.\n\nThat means the value showing up strictly more than `n / 2` times. The input is guaranteed to hold such a value.\n\n**Constraints:**\n\n- n == nums.length\n- 1 \u2264 n \u2264 5 * 10^4\n- -10^9 \u2264 nums[i] \u2264 10^9\n", "solution": "## Approach\n\nUse the Boyer-Moore voting algorithm: maintain a candidate and a count. For each element, if the count is zero take the element as the new candidate; else increment the count on a match and decrement otherwise. Since the majority appears more than half the time, the surviving candidate is the majority.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n), single pass over `nums`.\n- **Space Complexity:** O(1) extra.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def majorityElement(self, nums: List[int]) -> int:\n cand = nums[0]\n cnt = 0\n for x in nums:\n if cnt == 0:\n cand = x\n cnt = 1\n elif x == cand:\n cnt += 1\n else:\n cnt -= 1\n return cand\n```\n", "starter": {"go": "package main\n\nfunc MajorityElement(nums []int) int {\n return 0\n}", "python": "from typing import List\nclass Solution:\n def majorityElement(self, nums: List[int]) -> int:\n ", "cpp": "#include <vector>\nusing namespace std;\nclass Solution {\npublic:\n int majorityElement(vector<int>& nums) {\n return 0;\n }\n};"}, "fn": "majorityElement", "params": [{"name": "nums", "type": "int_array"}], "outputType": "int", "tests": [["[3,2,3]"], ["[2,2,1,1,1,2,2]"], ["[1]"], ["[1,1]"], ["[1,2,1]"], ["[6,5,5]"], ["[-1,-1,-2]"], ["[1,1,1,2,2]"], ["[3,3,4]"], ["[2,2,3,3,3]"], ["[1,2,3,4,5,5,5,5,5]"], ["@javascript:JSON.stringify([...Array(25000).fill(1),...Array(24999).fill(2).map((_,i)=>i%2?1:2)])"], ["[5]"], ["[7,7]"], ["[4,4,4,1,2]"], ["[9,1,9,1,9]"], ["[0,0,0,0,1,2,3]"], ["[-5,-5,2,-5,8]"], ["[1000000000,1000000000,-1000000000]"], ["[-1000000000,-1000000000,-1000000000,5]"], ["[2,1,2,3,2,4,2]"], ["[6,6,1,6,2,6,3,6]"], ["[1,2,1,2,1,2,1]"], ["[3,3,3,3]"], ["[8,9,8,9,8]"], ["[1,1,2,2,2,2,2]"], ["[5,5,5,1,1]"], ["[-2,-2,1,1,-2]"], ["[10,20,10,20,10,20,10]"], ["[0,1,0]"], ["[42,42,42,42,42,1,2,3,4]"], ["[7,8,7]"]], "expected": [3, 2, 1, 1, 1, 5, -1, 1, 3, 3, 5, 1, 5, 7, 4, 9, 0, -5, 1000000000, -1000000000, 2, 6, 1, 3, 8, 2, 5, -2, 10, 0, 42, 7], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "825", "slug": "making-a-large-island", "id": 825, "title": "Making A Large Island", "difficulty": "Hard", "category": "matrix", "link": "https://leetcode.com/problems/making-a-large-island/", "examples": [{"input": "grid = [[1,0],[0,1]]", "output": "3", "explanation": "One flip connects both ones plus the flipped cell."}, {"input": "grid = [[1,1],[1,0]]", "output": "4", "explanation": "The flip completes the square."}, {"input": "grid = [[1,1],[1,1]]", "output": "4", "explanation": "No flip is needed."}], "hints": ["Label each existing island with a unique id and record its cell count first.", "For every zero, gather the distinct neighbouring island ids and add their sizes plus one for the flip.", "Handle the all-ones grid separately since no zero exists to flip."], "statement": "You are given a square grid of zeros and ones. An island is a group of ones connected up, down, left, or right. You may flip at most one zero cell to one (or flip nothing). Return the largest island size achievable.\n\n**Constraints:**\n- `n == grid.length == grid[i].length`\n- `1 <= n <= 500`\n- `grid[i][j]` is `0` or `1`\n", "solution": "## Approach\n\nFlood-fill the grid once, stamping every connected group of ones with its own id while storing each group's cell count. Then examine each zero cell, collect the distinct island ids touching it on four sides, and compute one plus the sum of those islands' sizes. The maximum over all zeros (or the full grid area when no zero exists) is the answer.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n^2) where n is the grid side length; each cell is visited a constant number of times.\n- **Space Complexity:** O(n^2) for the id grid and the explicit stack.\n\n## Implementation\n\n```python\nfrom typing import List\nfrom collections import deque\n\nclass Solution:\n def largestIsland(self, grid: List[List[int]]) -> int:\n n = len(grid)\n comp = [[0] * n for _ in range(n)]\n size = {}\n cur = 2\n best = 0\n dirs = ((1, 0), (-1, 0), (0, 1), (0, -1))\n for i in range(n):\n for j in range(n):\n if grid[i][j] == 1 and comp[i][j] == 0:\n q = deque([(i, j)])\n comp[i][j] = cur\n s = 0\n while q:\n x, y = q.popleft()\n s += 1\n for dx, dy in dirs:\n nx, ny = x + dx, y + dy\n if 0 <= nx < n and 0 <= ny < n and grid[nx][ny] == 1 and comp[nx][ny] == 0:\n comp[nx][ny] = cur\n q.append((nx, ny))\n size[cur] = s\n best = max(best, s)\n cur += 1\n has_zero = False\n for i in range(n):\n for j in range(n):\n if grid[i][j] == 0:\n has_zero = True\n seen = set()\n for dx, dy in dirs:\n ni, nj = i + dx, j + dy\n if 0 <= ni < n and 0 <= nj < n and comp[ni][nj] != 0:\n seen.add(comp[ni][nj])\n best = max(best, 1 + sum(size[k] for k in seen))\n return best if has_zero else n * n\n```\n", "starter": {"go": "package main\n\nfunc LargestIsland(grid [][]int) int {\n return 0\n}", "python": "from typing import List\nclass Solution:\n def largestIsland(self, grid: List[List[int]]) -> int:\n pass", "cpp": "#include <vector>\nusing namespace std;\nclass Solution {\npublic:\n int largestIsland(vector<vector<int>>& grid) {\n return 0;\n }\n};"}, "fn": "largestIsland", "params": [{"name": "grid", "type": "int_array_2d"}], "outputType": "int", "tests": [["[[1, 0], [0, 1]]"], ["[[1, 1], [1, 0]]"], ["[[1, 1], [1, 1]]"], ["[[0, 0], [0, 0]]"], ["[[0]]"], ["[[1]]"], ["[[1, 0, 1], [0, 0, 0], [1, 0, 1]]"], ["[[1, 1, 0], [1, 0, 1], [0, 1, 1]]"], ["[[0, 1, 1], [1, 0, 1], [1, 1, 0]]"], ["[[1, 0, 0], [0, 1, 0], [0, 0, 1]]"], ["[[0, 0, 0], [0, 1, 0], [0, 0, 0]]"], ["[[1, 1, 1], [1, 0, 1], [1, 1, 1]]"], ["[[1, 0, 1, 0], [0, 1, 0, 1], [1, 0, 1, 0], [0, 1, 0, 1]]"], ["[[1, 1, 1, 1], [1, 0, 0, 1], [1, 0, 0, 1], [1, 1, 1, 1]]"], ["[[0, 1, 0], [1, 0, 1], [0, 1, 0]]"], ["[[1, 1, 0, 0], [1, 1, 0, 0], [0, 0, 1, 1], [0, 0, 1, 0]]"], ["[[1, 0, 0, 1], [1, 1, 0, 0], [0, 0, 1, 1], [0, 0, 1, 1]]"], ["[[0, 0, 1], [0, 1, 1], [1, 1, 0]]"], ["[[1]]"], ["[[1, 1, 1, 0], [1, 1, 1, 0], [0, 0, 0, 1], [0, 0, 1, 1]]"], ["[[0, 1], [1, 0]]"], ["[[1, 0], [1, 0]]"], ["[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]]"], ["[[1, 1, 1], [0, 0, 0], [1, 1, 1]]"], ["[[1, 0, 1, 1, 0], [0, 1, 0, 1, 0], [1, 0, 1, 0, 1], [0, 1, 0, 1, 1]]"], ["[[0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0], [1, 1, 0, 0]]"], ["[[1, 1, 0, 1, 1], [1, 1, 0, 1, 1], [0, 0, 1, 0, 0], [1, 1, 0, 1, 1]]"], ["[[1, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [1, 0, 0, 0, 1]]"]], "expected": [3, 4, 4, 1, 1, 1, 3, 7, 7, 3, 2, 9, 5, 13, 5, 8, 8, 6, 1, 10, 3, 3, 2, 7, 6, 7, 8, 2], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "696", "slug": "map-sum-pairs", "id": 696, "title": "Map Sum Pairs", "difficulty": "Medium", "category": "hash-table", "link": "https://leetcode.com/problems/map-sum-pairs/", "examples": [{"input": "operations = [\"insert\",\"sum\",\"insert\",\"sum\"], keys = [\"apple\",\"ap\",\"app\",\"ap\"], vals = [3,0,2,0]", "output": "[3,5]", "explanation": "After apple=3, prefix ap sums to 3. After app=2, prefix ap sums to 3+2=5."}, {"input": "operations = [\"insert\",\"insert\",\"sum\"], keys = [\"aa\",\"aa\",\"a\"], vals = [2,3,0]", "output": "[3]", "explanation": "The second insert overwrites aa to 3, so prefix a sums to 3."}], "hints": ["Design adaptation: implement runMapSum(operations, keys, vals); insert uses keys[i]/vals[i], sum uses keys[i] as the prefix and ignores vals[i].", "Keep a map from full key to its current value; overwrites replace the old value.", "A sum scans all stored keys with the given prefix and adds their values."], "statement": "Maintain a string-to-integer store with prefix sums. Design adaptation: instead of a class, implement `runMapSum(operations, keys, vals)`.\n\nConvention per index `i`:\n\n- `operations[i]` is `\"insert\"` or `\"sum\"`.\n- For `\"insert\"`, insert `keys[i]` with value `vals[i]`, overwriting any prior value for that key. No output entry is produced.\n- For `\"sum\"`, `keys[i]` is a prefix (vals[i] is ignored). Append the total of all stored values whose key starts with that prefix.\n\nReturn the list of sums for the sum calls in order.\n\n**Constraints:**\n- Operation count per test is between 1 and 20.\n- Keys use lowercase letters; insert values lie in [1, 1000].\n", "solution": "## Approach\n\nStore each full key with its latest value in a hash map; inserts overwrite. To answer a prefix sum, scan all entries and add values whose key starts with the prefix. With tiny test sizes this direct scan is clear and fast enough.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(N * L) per sum, where N is stored keys and L prefix length; O(1) per insert.\n- **Space Complexity:** O(N * L) for the map.\n\n## Implementation\n\n```python\nfrom typing import List\nclass Solution:\n def runMapSum(self, operations: List[str], keys: List[str], vals: List[int]) -> List[int]:\n store = {}\n ans = []\n for op, k, v in zip(operations, keys, vals):\n if op == \"insert\":\n store[k] = v\n else:\n ans.append(sum(val for key, val in store.items() if key.startswith(k)))\n return ans\n```\n", "starter": {"go": "package main\n\nfunc RunMapSum(operations []string, keys []string, vals []int) []int {\n return nil\n}", "python": "from typing import List\nclass Solution:\n def runMapSum(self, operations: List[str], keys: List[str], vals: List[int]) -> List[int]:\n pass", "cpp": "#include <vector>\n#include <string>\nusing namespace std;\nclass Solution {\npublic:\n vector<int> runMapSum(vector<string>& operations, vector<string>& keys, vector<int>& vals) {\n return {};\n }\n};"}, "fn": "runMapSum", "params": [{"name": "operations", "type": "string_array"}, {"name": "keys", "type": "string_array"}, {"name": "vals", "type": "int_array"}], "outputType": "int_array", "tests": [["[\"insert\",\"sum\",\"insert\",\"sum\"]", "[\"apple\",\"ap\",\"app\",\"ap\"]", "[3,0,2,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"aa\",\"aa\",\"a\"]", "[2,3,0]"], ["[\"insert\",\"sum\"]", "[\"a\",\"a\"]", "[5,0]"], ["[\"insert\",\"sum\"]", "[\"apple\",\"a\"]", "[3,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"apple\",\"apple\",\"apple\"]", "[2,3,0]"], ["[\"insert\",\"insert\",\"insert\",\"sum\"]", "[\"a\",\"b\",\"c\",\"\"]", "[1,2,3,0]"], ["[\"insert\",\"sum\",\"sum\"]", "[\"abcd\",\"ab\",\"abc\"]", "[4,0,0]"], ["[\"sum\"]", "[\"a\"]", "[0]"], ["[\"insert\",\"sum\"]", "[\"x\",\"y\"]", "[10,0]"], ["[\"insert\",\"insert\",\"sum\",\"sum\"]", "[\"aa\",\"ab\",\"a\",\"aa\"]", "[1,2,0,0]"], ["[\"insert\",\"sum\",\"insert\",\"sum\",\"insert\",\"sum\"]", "[\"a\",\"a\",\"aa\",\"a\",\"aaa\",\"a\"]", "[1,0,2,0,3,0]"], ["[\"insert\",\"sum\"]", "[\"hello\",\"hell\"]", "[5,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"test\",\"testing\",\"test\"]", "[1,2,0]"], ["[\"insert\",\"sum\",\"sum\"]", "[\"a\",\"\",\"a\"]", "[7,0,0]"], ["[\"insert\",\"insert\",\"insert\",\"sum\"]", "[\"apple\",\"app\",\"ap\",\"ap\"]", "[3,2,1,0]"], ["[\"insert\",\"sum\"]", "[\"z\",\"z\"]", "[1000,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"ab\",\"bc\",\"b\"]", "[5,6,0]"], ["[\"insert\",\"sum\",\"insert\",\"sum\"]", "[\"aa\",\"a\",\"aa\",\"a\"]", "[5,0,10,0]"], ["[\"insert\",\"insert\",\"sum\",\"insert\",\"sum\"]", "[\"one\",\"two\",\"t\",\"three\",\"th\"]", "[1,2,0,3,0]"], ["[\"insert\",\"sum\"]", "[\"abc\",\"abcd\"]", "[5,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"a\",\"aa\",\"aaa\"]", "[1,1,0]"], ["[\"insert\",\"sum\",\"sum\",\"sum\"]", "[\"apple\",\"ap\",\"app\",\"apple\"]", "[3,0,0,0]"], ["[\"insert\",\"insert\",\"insert\",\"sum\",\"sum\"]", "[\"x\",\"xy\",\"xyz\",\"x\",\"xy\"]", "[1,2,3,0,0]"], ["[\"insert\",\"sum\"]", "[\"prefix\",\"pre\"]", "[42,0]"], ["[\"insert\",\"insert\",\"sum\"]", "[\"key\",\"keyboard\",\"key\"]", "[10,20,0]"], ["[\"insert\",\"sum\",\"insert\",\"sum\"]", "[\"a\",\"b\",\"b\",\"b\"]", "[1,0,2,0]"], ["[\"insert\",\"insert\",\"insert\",\"sum\"]", "[\"aa\",\"aaa\",\"aaaa\",\"aa\"]", "[1,2,3,0]"], ["[\"insert\",\"sum\"]", "[\"m\",\"n\"]", "[9,0]"]], "expected": [[3, 5], [3], [5], [3], [3], [6], [4, 4], [0], [0], [3, 1], [1, 3, 6], [5], [3], [7, 7], [6], [1000], [6], [5, 10], [2, 3], [0], [0], [3, 3, 3], [6, 5], [42], [30], [0, 2], [6], [0]], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "829", "slug": "masking-personal-information", "id": 829, "title": "Masking Personal Information", "difficulty": "Medium", "category": "string", "link": "https://leetcode.com/problems/masking-personal-information/", "examples": [{"input": "s = \"LeetCode@LeetCode.com\"", "output": "\"l*****e@leetcode.com\"", "explanation": "Name keeps first and last letters with five stars inside."}, {"input": "s = \"AB@qq.com\"", "output": "\"a*****b@qq.com\""}, {"input": "s = \"1(234)567-890\"", "output": "\"***-***-7890\""}, {"input": "s = \"86-(10)12345678\"", "output": "\"+**-***-***-5678\""}], "hints": ["Decide the branch by checking whether the string contains '@'; emails and phones share no formatting.", "For emails, lowercase everything first and only then pick the first and last name characters.", "For phones, strip every non-digit and let the digit count (10-13) dictate how many country stars appear."], "statement": "You are given a string `s` that is either an email address or a phone number. Mask it as follows and return the result.\n\nIf `s` contains `@`, it is an email with a name part, an `@` sign, and a domain part:\n- Convert the entire address to lowercase.\n- Keep the first and last characters of the name part, replacing everything between them with exactly five `*` characters (the name always has at least two characters).\n\nIf `s` has no `@`, it is a phone number holding 10 to 13 digits mixed with separators such as spaces, `+`, `-`, `(`, and `)`:\n- Keep only the last four digits; mask the first six significant digits as `***-***-`.\n- When there are more than 10 digits, the leading extra digits form a country block: output `+`, then one `*` per extra digit, then `-`, followed by the masked local part. So 10 digits give `***-***-1234`, 11 digits give `+*-***-***-1234`, 12 digits give `+**-***-***-1234`, and 13 digits give `+***-***-***-1234`.\n\n**Constraints:**\n- `s` is a valid email or phone number as described above\n- Emails contain exactly one `@`, a name of length at least 2, and a domain with at least one `.`\n- Phone numbers contain 10 to 13 digits\n", "solution": "## Approach\n\nBranch on the presence of '@'. Emails are lowercased, then rebuilt from the first name character, five stars, the last name character, and the unchanged (lowercased) domain. Phone numbers are reduced to their digits; the last four stay visible behind a fixed \"***-***-\" mask, with a '+' plus one star per digit beyond ten prepended for country codes.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(n) where n is the input length.\n- **Space Complexity:** O(n) for the digit buffer and the result.\n\n## Implementation\n\n```python\nclass Solution:\n def maskPII(self, s: str) -> str:\n if \"@\" in s:\n low = s.lower()\n name, domain = low.split(\"@\")\n return name[0] + \"*****\" + name[-1] + \"@\" + domain\n digits = \"\".join(c for c in s if c.isdigit())\n last4 = digits[-4:]\n if len(digits) == 10:\n return \"***-***-\" + last4\n return \"+\" + \"*\" * (len(digits) - 10) + \"-***-***-\" + last4\n```\n", "starter": {"go": "package main\n\nfunc MaskPII(s string) string {\n return \"\"\n}", "python": "class Solution:\n def maskPII(self, s: str) -> str:\n return \"\"\n", "cpp": "#include <string>\nusing namespace std;\nclass Solution {\npublic:\n string maskPII(string s) {\n return \"\";\n }\n};"}, "fn": "maskPII", "params": [{"name": "s", "type": "string"}], "outputType": "string", "tests": [["LeetCode@LeetCode.com"], ["AB@qq.com"], ["1(234)567-890"], ["86-(10)12345678"], ["a@b.com"], ["AB@CD.EF"], ["Test.User@Example.ORG"], ["x@y.zz"], ["JohnDoe@Company.COM"], ["aB@ab.ab"], ["123-456-7890"], ["(123) 456-7890"], ["1234567890"], ["+1-234-567-8901"], ["1-234-567-8901"], ["+86 10 1234 5678"], ["+111 123 456 7890"], ["086-(10)12345678"], ["+1 (234) 567-8901"], ["2345678901"], ["0-234-567-8901"], ["MiXeD@MiXeD.MiXeD"], ["longername@domain.io"], ["+49-152-12345678"], [" 234 567 8901 "], ["Zz@Zz.zz"], ["user@sub.domain.com"], ["+861012345678"]], "expected": ["l*****e@leetcode.com", "a*****b@qq.com", "***-***-7890", "+**-***-***-5678", "a*****a@b.com", "a*****b@cd.ef", "t*****r@example.org", "x*****x@y.zz", "j*****e@company.com", "a*****b@ab.ab", "***-***-7890", "***-***-7890", "***-***-7890", "+*-***-***-8901", "+*-***-***-8901", "+**-***-***-5678", "+***-***-***-7890", "+***-***-***-5678", "+*-***-***-8901", "***-***-8901", "+*-***-***-8901", "m*****d@mixed.mixed", "l*****e@domain.io", "+***-***-***-5678", "***-***-8901", "z*****z@zz.zz", "u*****r@sub.domain.com", "+**-***-***-5678"], "loose": false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"basic": false, "label": "210", "slug": "matchsticks-to-square", "id": 210, "title": "Matchsticks to Square", "difficulty": "Medium", "category": "backtracking", "link": "https://leetcode.com/problems/matchsticks-to-square/", "examples": [{"input": "matchsticks = [1,1,2,2,2]", "output": "true", "explanation": "You can form a square with side length 2: three sides use a single stick of length 2 each, and the fourth side uses two sticks of length 1."}, {"input": "matchsticks = [3,3,3,3,4]", "output": "false", "explanation": "You cannot find a way to form a square with all the matchsticks."}], "hints": ["The total length must be divisible by 4 for a square to exist.", "Treat each matchstick as belonging to one of 4 buckets (the sides). The choice of which bucket a stick joins can be shared with bitmask DP to avoid re-searching repeated partial states.", "Sort the sticks descending so that large sticks are placed first and prune the search early."], "statement": "A collection of sticks is described by the integer array `matchsticks`, where the entry `matchsticks[i]` records how long the `ith` stick is. The goal is to arrange every single stick into the border of one square: sticks may be joined end to end, but none may be snapped or shortened, and each stick has to appear in the construction precisely once.\n\nDecide whether such an arrangement exists: produce `true` when the whole set can form a square, and `false` when it cannot.\n\n**Constraints:**\n\n- `1 <= matchsticks.length <= 15`\n- `1 <= matchsticks[i] <= 10^8`\n", "solution": "## Approach\n\nIf the total length of all matchsticks is not divisible by 4, a square is impossible. Otherwise each side must have length `target = total / 4`. Sort the sticks in descending order and place them greedily one at a time into one of four side buckets, backtracking when a bucket would overflow the target. Two optimizations make this fast: since large sticks are placed first, impossible configurations are pruned early; and skipping a bucket when it has the same current length as the previous bucket avoids trying symmetric arrangements of identical sides.\n\n## Complexity Analysis\n\n- **Time Complexity:** O(4^n) in the worst case before pruning, where n is the number of matchsticks; the descending-order sort and bucket-symmetry pruning keep it practical for n \u2264 15.\n- **Space Complexity:** O(n) for the recursion stack.\n\n## Implementation\n\n```python\nfrom typing import List\n\n\nclass Solution:\n def makesquare(self, matchsticks: List[int]) -> bool:\n total = sum(matchsticks)\n if total % 4 != 0:\n return False\n target = total // 4\n sticks = sorted(matchsticks, reverse=True)\n sides = [0] * 4\n\n def place(index: int) -> bool:\n if index == len(sticks):\n return sides[0] == sides[1] == sides[2] == sides[3] == target\n stick = sticks[index]\n for i in range(4):\n if sides[i] + stick > target:\n continue\n if i > 0 and sides[i] == sides[i - 1]:\n continue\n sides[i] += stick\n if place(index + 1):\n return True\n sides[i] -= stick\n return False\n\n return place(0)\n```", "starter": {"go": "package main\n\nfunc Makesquare(matchsticks []int) bool {\n \n}", "python": "from typing import List\nclass Solution:\n def makesquare(self, matchsticks: List[int]) -> bool:\n ", "cpp": "#include <vector>\nusing namespace std;\n\nclass Solution {\npublic:\n bool makesquare(vector<int>& matchsticks) {\n \n }\n};"}, "fn": "makesquare", "params": [{"name": "matchsticks", "type": "int_array"}], "outputType": "boolean", "tests": [["[1,1,1]"], ["[1,1,2,2,2]"], ["[3,3,3,3,4]"], ["[5,5,5,5,5,5,5,5]"], ["[1,1,1,1]"], ["[1,1,1,1,1]"], ["[2,2,2,2]"], ["[1,2,3,4,5,6,7,8]"], ["[13,11,1,8,6,7,8,8,6,7,8,9,8]"], ["[1,1,1,1,1,1,2,2,2,2,3,3]"], ["[12,12,12,12]"], ["[1,1,1,3,3,3,4,4]"], ["[4,4,4,4]"], ["[1,1,1,1,1,1,1,1]"], ["[3,3,3,3]"], ["[1,2,2,2,1,1,1,2]"], ["[5,5,5,5]"], ["[1,1,1,1,2,2,2,2]"], ["[10,10,10,10]"], ["[6,6,6,6,6,6,6,6]"], ["[1,1,1,2]"], ["[1,2,3]"], ["[5]"], ["[2,2,2,3]"], ["[1,1,1,1,1,1,1]"], ["[4,4,4,4,4]"], ["[3,3,3,3,3,3,3,3,3]"], ["[2,2,2,2,2]"], ["[7,7,7,7,1,1,1,1]"], ["[8,8,8,8,4,4,4,4]"], ["[5,5,5,5,5,5,5,5,5,5,5,5]"], ["[9,1,1,1,1,1,1,1]"]], "expected": [false, true, false, true, true, false, true, true, true, true, true, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, false], "loose": false}
|